@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-cms.min.js","sources":["../esm/scaffolding/types.js","../esm/scaffolding/element-picker.js","../esm/scaffolding/expression.js","../esm/widgets/types.js","../esm/widgets/helpers/data.js","../esm/widgets/helpers/fetcher.js","../esm/widgets/helpers/types.js","../esm/widgets/helpers/translator.js","../esm/widgets/helpers/clock.js","../esm/openapi/swagger-cms.js","../esm/widgets/helpers/apimanifest.js","../esm/widgets/ui/types.js","../esm/widgets/ui/text.js","../esm/widgets/ui/composite/picker.js","../esm/widgets/ui/composite/grid.js","../esm/widgets/scaffolding/datacolumns.js","../esm/widgets/ui/dataviz/datagrid.js","../esm/types.js","../esm/index-iife.js"],"sourcesContent":["import { PropertyChangeEventName, Utils, CustomElementUtils, P } from '@pacem/pacem-core';\n//namespace Pacem.Components.Cms {\n/** Function container proxy (used in metadata) */\nexport const Functions = {\n 'dismiss': (...args) => {\n for (let name of args || []) {\n delete Functions[name];\n }\n },\n 'handleExpressionValueChange': (evt, prop, entity) => {\n if (evt.detail.propertyName === 'value' && !Utils.isNull(entity)) {\n const value = evt.detail.currentValue;\n if (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 entity.removeAttribute(attr);\n }\n else {\n entity.setAttribute(attr, value.toString());\n }\n }\n else {\n entity[prop] = value;\n }\n }\n }\n};\n/** Default metadata ('expression' field) 'type' factory. */\nexport const EXPRESSION_METADATA_TYPE = (host, hostRef = ':host', hostEntityRef = ':host.entity') => {\n const attrs = {}, meta = host.metadata, fns = Functions, fnKeys = [];\n attrs['value'] = `{{ ${hostEntityRef} instanceof HTMLElement && ${hostEntityRef}.getAttribute('${CustomElementUtils.camelToKebab(meta.prop)}') }}`;\n attrs['on-' + PropertyChangeEventName] = `Pacem.Components.Cms.Functions.handleExpressionValueChange($event, '${meta.prop}', ${hostEntityRef})`;\n attrs['converter'] = `{{ Pacem.CustomElementUtils.getWatchedProperty(${hostEntityRef}, '${meta.prop}').config.converter }}`;\n const tagName = P + '-expression';\n let extra = (meta.extra || {});\n // selector\n if (!Utils.isNullOrEmpty(extra.selector)) {\n attrs['selector'] = extra.selector;\n }\n // filters to the selector\n if (!Utils.isNullOrEmpty(extra.filter)) {\n switch (typeof extra.filter) {\n case 'string':\n attrs['filter'] = `{{ (e) => e.constructor.name === \"${extra.filter}\" || e.localName === \"${extra.filter.toLowerCase()}\" }}`;\n break;\n case 'function':\n const fnKey = 'fn' + Utils.uniqueCode();\n fns[fnKey] = extra.filter;\n attrs['filter'] = `{{ Pacem.Components.Cms.Functions.${fnKey}, once }}`;\n // tidy-up memento\n fnKeys.push(fnKey);\n break;\n }\n }\n // labeler\n if (typeof extra.labeler === 'function') {\n const fnKey = 'fn' + Utils.uniqueCode();\n fns[fnKey] = extra.labeler;\n attrs['labeler'] = `{{ Pacem.Components.Cms.Functions.${fnKey}, once }}`;\n // tidy-up memento\n fnKeys.push(fnKey);\n }\n if (fnKeys.length > 0) {\n // tidy-up\n attrs['on-unload'] = `{{ Pacem.Components.Cms.Functions.dismiss('${fnKeys.join('\\',\\'')}') }}`;\n }\n return { tagName: tagName, attrs: attrs };\n};\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Defaults, Watch, PropertyConverters, ViewChild, Debounce, Utils } from '@pacem/pacem-core';\nimport { Components as ScaffoldingComponents } from '@pacem/pacem-scaffolding';\n//namespace Pacem.Components.Cms {\nexport class PacemElementPickerElementBase extends ScaffoldingComponents.Scaffolding.PacemBaseElement {\n}\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemElementPickerElementBase.prototype, \"selector\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemElementPickerElementBase.prototype, \"filter\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemElementPickerElementBase.prototype, \"labeler\", void 0);\nlet PacemElementPickerElement = class PacemElementPickerElement extends PacemElementPickerElementBase {\n get inputFields() {\n return [this._select];\n }\n toggleReadonlyView(readonly) {\n this._select.readonly = readonly;\n }\n onChange(_) {\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 'selector':\n case 'filter':\n case 'labeler':\n this._databind();\n break;\n }\n }\n }\n _databind() {\n const project = this.labeler || (e => {\n let label = e.constructor.name;\n if (e.id) {\n label += '#' + e.id;\n }\n return label;\n });\n const retval = [];\n document.querySelectorAll(this.selector || '[pacem]').forEach((e, i, arr) => {\n if ((Utils.isNull(this.filter) || this.filter(e) === true)\n // let' say 'id' is a must-have...\n && !Utils.isNullOrEmpty(e.id)) {\n retval.push({ element: e, label: project(e) });\n }\n });\n this._select.valueProperty = 'element';\n this._select.textProperty = 'label';\n this._select.datasource = retval;\n }\n};\n__decorate([\n ViewChild(P + '-select')\n], PacemElementPickerElement.prototype, \"_select\", void 0);\n__decorate([\n Debounce(50)\n], PacemElementPickerElement.prototype, \"_databind\", null);\nPacemElementPickerElement = __decorate([\n CustomElement({\n tagName: P + '-element-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-select></${P}-select>`\n })\n], PacemElementPickerElement);\nexport { PacemElementPickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Defaults, Watch, PropertyConverters, ViewChild, Debounce, Utils, CustomElementUtils, RepeaterItem } from '@pacem/pacem-core';\nimport { Components as ScaffoldingComponents } from '@pacem/pacem-scaffolding';\nimport { PacemElementPickerElementBase } from './element-picker';\n//namespace Pacem.Components.Cms {\nexport var ExpressionSource;\n(function (ExpressionSource) {\n ExpressionSource[\"Constant\"] = \"const\";\n ExpressionSource[\"PropertyReference\"] = \"property\";\n ExpressionSource[\"Expression\"] = \"expr\";\n})(ExpressionSource || (ExpressionSource = {}));\nlet PacemExpressionElement = class PacemExpressionElement extends PacemElementPickerElementBase {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'converter') {\n this._setFeedbackText(this.value);\n }\n else if (!first) {\n if (this._editing) {\n switch (name) {\n case '_source':\n switch (val) {\n case ExpressionSource.PropertyReference:\n this._picker.focus();\n break;\n default:\n this._editor.focus();\n break;\n }\n break;\n case '_propRef':\n if (!Utils.isNullOrEmpty(val)) {\n this._editor.focus();\n this._editor.value = '{{ #' + this._sourceRef.id + '.' + val + ' }}';\n }\n this.changeHandler(new Event('change'));\n break;\n }\n }\n }\n }\n get inputFields() {\n return [this._editor];\n }\n toggleReadonlyView(readonly) {\n if (readonly) {\n // ensure not editing\n this._editing = false;\n }\n }\n setPristine() {\n super.setPristine();\n this._editing = false;\n }\n onChange(_) {\n return Utils.fromResult(this.value = this._editor.value);\n }\n acceptValue(val) {\n this._view.textContent = val || '...';\n this._setFeedbackText(val);\n this._reverseStructure();\n if (val !== this._editor.value) {\n this._editor.value = val;\n }\n }\n _setFeedbackText(val = this.value) {\n const converter = this.converter;\n if (CustomElementUtils.isBindingAttribute(val) || typeof (converter && converter.convert) !== 'function') {\n this._eval.setAttribute('text', val);\n }\n else if (val === undefined) {\n this._eval.text = '<undefined>';\n }\n else {\n this._eval.text = converter.convert(val);\n }\n }\n getViewValue(value) {\n return value;\n }\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n _reverseStructure() {\n let cleanup = () => {\n this._source = this._sourceRef = this._propRef = /*this.value =*/ undefined;\n };\n // dependencies?\n let expr = this.value;\n if (!Utils.isNullOrEmpty(expr)) {\n // setup the most likely form fields\n if (CustomElementUtils.isBindingAttribute(expr)) {\n const expression = CustomElementUtils.parseBindingAttribute(expr, this), deps = expression.dependencies;\n // complex or simple (one dependency) expression\n if (Utils.isNullOrEmpty(deps) || deps.length > 1 || RepeaterItem.isRepeaterItem(deps[0].element)) {\n this._source = ExpressionSource.Expression;\n }\n else {\n const dep = deps[0];\n this._source = ExpressionSource.PropertyReference;\n this._sourceRef = document.querySelector('#' + dep.element.id);\n this._propRef = dep.path;\n }\n }\n else {\n this._source = ExpressionSource.Constant;\n }\n //\n }\n else {\n cleanup();\n }\n }\n};\n__decorate([\n Watch({ emit: false })\n], PacemExpressionElement.prototype, \"converter\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemExpressionElement.prototype, \"_editing\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemExpressionElement.prototype, \"_source\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemExpressionElement.prototype, \"_sourceRef\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemExpressionElement.prototype, \"_propRef\", void 0);\n__decorate([\n ViewChild(P + '-element-picker')\n], PacemExpressionElement.prototype, \"_picker\", void 0);\n__decorate([\n ViewChild(P + '-textarea')\n], PacemExpressionElement.prototype, \"_editor\", void 0);\n__decorate([\n ViewChild('span.' + PCSS + '-viewfinder')\n], PacemExpressionElement.prototype, \"_view\", void 0);\n__decorate([\n ViewChild(P + '-text')\n], PacemExpressionElement.prototype, \"_eval\", void 0);\n__decorate([\n Debounce(50)\n], PacemExpressionElement.prototype, \"_reverseStructure\", null);\nPacemExpressionElement = __decorate([\n CustomElement({\n tagName: P + '-expression', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-collapse class=\"${PCSS}-expression\" collapse=\"{{ !:host._editing }}\">\r\n <div class=\"expression-builder ${PCSS}-grid grid-tiny-rowgap grid-tiny-colgap ${PCSS}-pad pad-bottom-2\">\r\n <div class=\"${PCSS}-cell\">\r\n <${P}-select value=\"{{ :host._source, twoway }}\" class=\"display-block\">\r\n <${P}-data-item value=\"${ExpressionSource.Constant}\" label=\"constant value\"></${P}-data-item>\r\n <${P}-data-item value=\"${ExpressionSource.PropertyReference}\" label=\"property reference\"></${P}-data-item>\r\n <${P}-data-item value=\"${ExpressionSource.Expression}\" label=\"complex expression\"></${P}-data-item>\r\n </${P}-select>\r\n </div>\r\n\r\n <${P}-panel class=\"${PCSS}-cell cols-hd-6\" hide=\"{{ :host._source !== '${ExpressionSource.PropertyReference}' }}\">\r\n <${P}-element-picker value=\"{{ :host._sourceRef, twoway }}\" selector=\"{{ :host.selector }}\" filter=\"{{ :host.filter }}\" labeler=\"{{ :host.labeler }}\" class=\"display-block\"></${P}-element-picker>\r\n </${P}-panel>\r\n <${P}-panel class=\"${PCSS}-cell cols-hd-6\" hide=\"{{ :host._source !== '${ExpressionSource.PropertyReference}' }}\">\r\n <${P}-property-picker value=\"{{ :host._propRef, twoway }}\" disabled=\"{{ !:host._sourceRef }}\" target=\"{{ :host._sourceRef }}\" on-change=\"::_editor.focus()\" class=\"display-block\"></${P}-property-picker>\r\n </${P}-panel>\r\n\r\n <${P}-panel class=\"${PCSS}-cell\">\r\n <${P}-textarea class=\"display-block\" placeholder=\"{{ '{{ '+ (:host._source || '') +'... }}' }}\" change-policy=\"${ScaffoldingComponents.Scaffolding.ChangePolicy.Blur}\"></${P}-textarea>\r\n </${P}-panel>\r\n </div>\r\n</${P}-collapse>\r\n<div class=\"${PCSS}-fieldset\">\r\n <div class=\"fieldset-left\">\r\n <div class=\"${PCSS}-fieldgroup ${PCSS}-viewfinder\">\r\n <div class=\"text-truncate ${PCSS}-pad pad-x-1\"><span class=\"${PCSS}-viewfinder text-tech\">{{ :host.value || '...' }}</span></div>\r\n <${P}-panel class=\"fieldgroup-prepend\">\r\n <${P}-button class=\"flat edit ${PCSS}-pad pad-left-1\" on-click=\":host._editing = !:host._editing\" hide=\"{{ :host.readonly }}\"></${P}-button>\r\n </${P}-panel>\r\n <${P}-panel class=\"fieldgroup-append text-tech display-flex flex-middle flex-nowrap\" hide=\"{{ $pacem.isNullOrEmpty(:host.value) }}\">\r\n <i class=\"${PCSS}-icon text-primary\">keyboard_arrow_right</i>\r\n <${P}-text text=\"?\" class=\"bg-primary ${PCSS}-pad pad-left-1 pad-right-1 ${PCSS}-margin margin-right-1 text-truncate\" eval></${P}-text>\r\n </${P}-panel>\r\n </div>\r\n </div>\r\n</div>`\n })\n], PacemExpressionElement);\nexport { PacemExpressionElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Defaults, Watch, PropertyConverters, ViewChild, Utils, CustomElementUtils, Components } from '@pacem/pacem-core';\nimport { Components as UIComponents } from '@pacem/pacem-ui';\nconst UI = UIComponents.UI;\n//namespace Pacem.Components.Cms {\nconst DEFAULT_PERMISSION_METADATA = {\n props: [\n {\n prop: 'permissions',\n // child form-fields\n type: 'array',\n display: { name: 'Permissions' },\n props: {\n display: { cssClass: [PCSS + '-cell', PCSS + '-grid', 'grid-novgap', 'grid-tiny-colgap', 'grid-nospace'], name: 'Permission' },\n props: Array.prototype.concat.apply([\n {\n prop: 'claimType', type: 'string',\n display: { cssClass: [PCSS + '-cell', 'cols-hd-4', 'cols-lg-6', 'field-stretch', 'field-minimal'], name: 'Claim type' },\n validators: [{ type: 'required', errorMessage: '!' }]\n },\n {\n prop: 'claimValue', type: 'string',\n display: { cssClass: [PCSS + '-cell', 'cols-hd-4', 'cols-lg-6', 'field-stretch', 'field-minimal'], name: 'Claim value' },\n validators: [{ type: 'required', errorMessage: '!' }]\n },\n ], ['read', 'update', 'create', 'delete'].map((p, j) => {\n return {\n prop: p,\n type: 'boolean',\n display: { cssClass: [PCSS + '-cell', 'cols-hd-1', 'cols-3', 'field-minimal', PCSS + '-pad pad-left-2'], name: p.charAt(0).toUpperCase() + p.substr(1) }\n };\n }))\n }\n }\n ]\n};\nexport const DEFAULT_METADATA = {\n display: { name: 'Widget', cssClass: [PCSS + '-grid', 'grid-novgap', 'grid-tiny-colgap', 'grid-nospace'] },\n props: [\n { prop: 'tag', type: 'string', display: { name: 'Tag', cssClass: [PCSS + '-cell'] } }\n ]\n};\nfunction cellifyMetadata(p) {\n // ensure pacem-cell cssClass\n p.display = p.display || { name: p.prop, cssClass: [] };\n const css = p.display.cssClass = Utils.isArray(p.display.cssClass) && p.display.cssClass || [];\n css.push(PCSS + '-cell');\n}\nexport function gridifyMetadata(metadata) {\n var props = metadata && metadata.props || [];\n var display = metadata && metadata.display || { name: 'Element' };\n if (!Utils.isNull(display)) {\n const css = display.cssClass = display.cssClass || [];\n Array.prototype.push.apply(css, DEFAULT_METADATA.display.cssClass);\n }\n props.forEach(cellifyMetadata);\n return { display: display, props: props };\n}\nexport function buildWidgetMetadata(metadata) {\n var display = Utils.extend({}, DEFAULT_METADATA.display, metadata && metadata.display || {});\n var props = Utils.clone(DEFAULT_METADATA.props);\n Array.prototype.push.apply(props, (metadata && metadata.props || []).filter(p => {\n if (p.prop === 'tag') {\n return false;\n }\n cellifyMetadata(p);\n return true;\n }));\n return { display: display, props: props };\n}\nconst WIDGET_CSS_CLASS = PCSS + '-widget';\n/** Default metadata ('expression' field) 'extra' object. */\nexport const EXPRESSION_WIDGET_METADATA_EXTRA = {\n selector: '.' + WIDGET_CSS_CLASS,\n labeler: (e) => {\n if (!Utils.isNullOrEmpty(e.tag)) {\n return e.tag;\n }\n return (e.metadata && e.metadata.display && e.metadata.display.name || '') + '#' + e.id;\n }\n};\nexport class Widget {\n /**\n * Utility method for widget gathering.\n * @param predicate Predicate for filtering\n */\n static findAll(predicate) {\n return CustomElementUtils.findAll('.' + WIDGET_CSS_CLASS, (widget) => widget instanceof PacemWidgetElement && !Utils.isNullOrEmpty(widget.id) && (Utils.isNull(predicate) || predicate(widget)));\n }\n}\nlet PacemWidgetToolbarElement = class PacemWidgetToolbarElement extends Components.PacemElement {\n /** Gets the toolbar's edit button. */\n get editButton() {\n return this._btnEdit;\n }\n /** Gets the toolbar's permimssions button. */\n get permissionsButton() {\n return this._btnPerms;\n }\n /** Gets the toolbar's remove button. */\n get removeButton() {\n return this._btnRemove;\n }\n _edit(evt) {\n const form = this._proxy.dom.find(e => 'core' in e.attributes);\n form.open(this.target, true);\n form.metadata = this.target.metadata;\n // popout\n this._popoutJustInCase();\n }\n _editPermissions(evt) {\n const form = this._proxy.dom.find(e => 'permissions' in e.attributes);\n form.open(this.target);\n form.metadata = this.target.permissionMetadata;\n // popout\n this._popoutJustInCase();\n }\n _popoutJustInCase() {\n const balloon = CustomElementUtils.findAncestorOfType(this, UI.PacemBalloonElement);\n if (!Utils.isNullOrEmpty(balloon)) {\n balloon.popout();\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemWidgetToolbarElement.prototype, \"target\", void 0);\n__decorate([\n ViewChild('.buttons > div')\n], PacemWidgetToolbarElement.prototype, \"_toolbar\", void 0);\n__decorate([\n ViewChild(P + '-button[edit]')\n], PacemWidgetToolbarElement.prototype, \"_btnEdit\", void 0);\n__decorate([\n ViewChild(P + '-button[permissions]')\n], PacemWidgetToolbarElement.prototype, \"_btnPerms\", void 0);\n__decorate([\n ViewChild(P + '-button[remove]')\n], PacemWidgetToolbarElement.prototype, \"_btnRemove\", void 0);\n__decorate([\n ViewChild(P + '-shell-proxy')\n], PacemWidgetToolbarElement.prototype, \"_proxy\", void 0);\nPacemWidgetToolbarElement = __decorate([\n CustomElement({\n tagName: P + '-widget-toolbar', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-span class=\"toolbar-text\" content=\"{{ '<i class=&quot;${PCSS}-icon&quot;>'+ (::target.metadata && ::target.metadata.display && ::target.metadata.display.icon || 'widgets') +'</i> '+ (::target.tag || (::target.metadata && ::target.metadata.display && ::target.metadata.display.name || ::target.localName) +'#'+ ::target.id) }}\"></${P}-span>\r\n<div class=\"buttons ${PCSS}-buttonset ${PCSS}-pad ${PCSS}-margin pad-0 margin-left-2\">\r\n <div class=\"buttonset-left\">\r\n <${P}-button edit class=\"button edit\" on-click=\":host._edit($event)\"></${P}-button>\r\n <${P}-button permissions class=\"button\" on-click=\":host._editPermissions($event)\" css-class=\"{{ {'button-success': ::target.permissions.length > 0} }}\" icon-glyph=\"verified_user\"></${P}-button>\r\n <${P}-button remove class=\"button button-danger delete\"></${P}-button>\r\n </div>\r\n<div>\r\n<${P}-shell-proxy>\r\n <${P}-modal-form core></${P}-modal-form>\r\n <${P}-modal-form permissions></${P}-modal-form>\r\n</${P}-shell-proxy>`\n })\n], PacemWidgetToolbarElement);\nexport { PacemWidgetToolbarElement };\nexport class PacemWidgetElement extends Components.PacemElement {\n constructor(metadata, role = 'widget') {\n super(role);\n this.permissionMetadata = DEFAULT_PERMISSION_METADATA;\n this.metadata = metadata;\n }\n connectedCallback() {\n super.connectedCallback();\n // ensure an explicit id for each widget\n if (Utils.isNullOrEmpty(this.id)) {\n this.id = 'wdg' + Utils.uniqueCode();\n }\n Utils.addClass(this, WIDGET_CSS_CLASS);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'editable':\n if (!val) {\n this._disposeBalloon();\n }\n else if (this.isReady) {\n this._ensureBalloon();\n }\n break;\n case 'editing':\n if (!Utils.isNull(this._balloon)) {\n this._balloon.disabled = !val;\n }\n (val ? Utils.addClass : Utils.removeClass).apply(this, [this, 'widget-' + name]);\n break;\n case 'metadata':\n this._assignIcon(val);\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._assignIcon();\n this._ensureBalloon();\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n _assignIcon(val = this.metadata) {\n this.dataset['icon'] = (val && val.display && val.display.icon) || 'widgets';\n }\n _ensureBalloon() {\n if (Utils.isNull(this._balloon)) {\n const balloon = this._balloon = document.createElement(P + '-balloon');\n balloon.target = this;\n balloon.disabled = !this.editing;\n balloon.options = {\n behavior: UI.BalloonBehavior.Menu,\n trigger: UI.BalloonTrigger.Hover\n };\n // innerHTML before appending the balloon to the DOM.\n balloon.innerHTML = `<${P}-widget-toolbar target=\"{{ #${this.id} }}\"><${P}-widget-toolbar>`;\n // append to trigger connected/viewActivated callbacks\n CustomElementUtils.findAncestorShell(this).appendChild(balloon);\n }\n }\n _disposeBalloon() {\n if (!Utils.isNull(this._balloon)) {\n this._balloon.remove();\n this._balloon = null;\n }\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemWidgetElement.prototype, \"editing\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemWidgetElement.prototype, \"editable\", void 0);\n__decorate([\n Watch({ emit: true, reflectBack: true, converter: PropertyConverters.String })\n], PacemWidgetElement.prototype, \"tag\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Json })\n], PacemWidgetElement.prototype, \"permissions\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemWidgetElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemWidgetElement.prototype, \"permissionMetadata\", 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 { CustomElement, P, PCSS, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemWidgetElement, buildWidgetMetadata } from '../types';\nimport { EXPRESSION_METADATA_TYPE } from '../../scaffolding/types';\n//namespace Pacem.Components.Cms {\nconst DATA_METADATA = {\n display: { icon: 'storage', name: 'Data', description: 'Data object widget.' },\n props: [\n {\n prop: 'model', type: EXPRESSION_METADATA_TYPE, display: {\n name: 'Model'\n }, extra: {\n selector: '.' + PCSS + '-widget'\n }\n }\n ]\n};\nlet PacemWidgetDataElement = class PacemWidgetDataElement extends PacemWidgetElement {\n constructor() {\n super(buildWidgetMetadata(DATA_METADATA));\n }\n};\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Json })\n], PacemWidgetDataElement.prototype, \"model\", void 0);\nPacemWidgetDataElement = __decorate([\n CustomElement({\n tagName: P + '-widget-data'\n })\n], PacemWidgetDataElement);\nexport { PacemWidgetDataElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Defaults, Watch, PropertyConverters, ViewChild, Utils, CustomElementUtils, PacemEventTarget, Net } from '@pacem/pacem-core';\nimport { EXPRESSION_METADATA_TYPE } from '../../scaffolding/types';\nimport { buildWidgetMetadata, gridifyMetadata } from '../types';\nimport { PacemBearerWidgetElement, ACCESS_TOKEN_METADATA } from './types';\n//namespace Pacem.Components.Cms {\nconst FETCH_PARAMETER_METADATA = {\n props: [\n { prop: 'name', type: 'string', isReadOnly: true, display: { name: 'Name', cssClass: ['cols-md-4', 'cols-lg-3', 'cols-hd-2'] } },\n { prop: 'value', type: EXPRESSION_METADATA_TYPE, display: { name: 'Value', cssClass: ['cols-md-8', 'cols-lg-9', 'cols-hd-10'] } }\n ]\n};\nconst FETCH_METADATA = {\n display: {\n icon: 'wifi', name: 'Api Fetcher', description: 'Fetching widget that retrieves data from a REST endpoint.'\n }, props: [\n {\n prop: 'manifest', type: EXPRESSION_METADATA_TYPE, isComplexType: true, display: {\n name: 'Api Manifest'\n }, extra: {\n selector: P + '-widget-apimanifest'\n }, validators: [{ type: 'required', errorMessage: 'Api Manifest is a required field.' }]\n },\n {\n prop: 'endpoint', type: 'object', isComplexType: true, display: {\n name: 'Endpoint', ui: 'oneToMany'\n }, validators: [{ type: 'required', errorMessage: 'Api Manifest is a required field.' }],\n extra: {\n source: (manifest) => manifest.endpoints.map(e => Utils.extend(e, { 'fullPath': `[${e.method.toUpperCase()}] ${e.path}` })).sort(),\n textProperty: 'fullPath', valueProperty: 'fullPath',\n dependsOn: [{ prop: 'manifest', hide: true }]\n }\n },\n {\n prop: 'parameters', type: 'array', display: {\n name: 'Parameters'\n },\n props: gridifyMetadata(FETCH_PARAMETER_METADATA),\n extra: {\n lockItems: true,\n dependsOn: [{ prop: 'endpoint', hide: true }]\n }\n },\n ACCESS_TOKEN_METADATA\n ]\n};\nconst PARAMETER_TAGNAME = P + '-widget-fetch-parameter';\nlet PacemWidgetFetchParameterElement = class PacemWidgetFetchParameterElement extends PacemEventTarget {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val.first);\n if (name === 'value' && !Utils.isNull(this._fetcher)) {\n this._fetcher.fetch();\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const fetcher = this._fetcher = CustomElementUtils.findAncestorOfType(this, PacemWidgetFetchElement);\n if (!Utils.isNull(this._fetcher) && !Utils.isNull(this.value)) {\n this._fetcher.fetch();\n }\n }\n};\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemWidgetFetchParameterElement.prototype, \"required\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemWidgetFetchParameterElement.prototype, \"name\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemWidgetFetchParameterElement.prototype, \"value\", void 0);\nPacemWidgetFetchParameterElement = __decorate([\n CustomElement({ tagName: PARAMETER_TAGNAME })\n], PacemWidgetFetchParameterElement);\nexport { PacemWidgetFetchParameterElement };\nlet PacemWidgetFetchElement = class PacemWidgetFetchElement extends PacemBearerWidgetElement {\n constructor() {\n super(buildWidgetMetadata(FETCH_METADATA));\n this._onerror = (e) => {\n this.failure = !(this.success = false);\n };\n this._onsuccess = (e) => {\n this.failure = !(this.success = true);\n };\n this._onresult = (e) => {\n this.result = e.detail;\n };\n }\n get _parameters() {\n return Array.from(this._itemsElement.children).filter(e => e.localName === PARAMETER_TAGNAME);\n }\n fetch() {\n const fetcher = this._fetcher, parameters = this._parameters || [], endpoint = this.endpoint;\n if (!Utils.isNull(endpoint)) {\n for (let param of endpoint.parameters) {\n if (param.required && Utils.isNull(parameters.find(p => p.name === param.name))) {\n // parameters not yet aligned with the ref endpoint:\n // not all the required parameters are attached => exit\n return;\n }\n }\n }\n // build-up fetch params\n const params = {};\n for (let parameter of parameters) {\n if (!Utils.isNullOrEmpty(parameter.value)) {\n params[parameter.name] = parameter.value;\n }\n else if (parameter.required) {\n // found an empty (required) parameter => exit\n return;\n }\n }\n fetcher.url = this.url;\n fetcher.method = this.method;\n fetcher.credentials = this.fetchCredentials;\n fetcher.headers = this.fetchHeaders;\n fetcher.parameters = params;\n return fetcher.fetch();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.fetch();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'endpoint' && !Utils.isNullOrEmpty(val)) {\n this._mergeEndpoint(val);\n }\n else\n switch (name) {\n case 'parameters':\n case 'fetchHeaders':\n case 'fetchCredentials':\n case 'url':\n case 'method':\n this.fetch();\n break;\n }\n }\n _mergeEndpoint(endpoint = this.endpoint) {\n this.url = this.manifest.baseUrl + endpoint.path;\n this.method = endpoint.method;\n this.fields = endpoint.response.fields;\n const itemsElement = this._itemsElement, parameters = this._parameters;\n // remove exceeding\n for (let j = parameters.length - 1; j >= 0; j--) {\n let item = parameters[j];\n let matching = endpoint.parameters.find(p => p.name === item.name);\n if (Utils.isNull(matching)) {\n item.remove();\n }\n }\n // add missing\n for (let param of endpoint.parameters) {\n let existing = parameters.find(p => p.name === param.name);\n if (Utils.isNull(existing)) {\n let item = existing = document.createElement(PARAMETER_TAGNAME);\n item.name = param.name;\n itemsElement.appendChild(item);\n }\n existing.required = param.required;\n }\n // for editing sake\n this.parameters = parameters;\n }\n};\n__decorate([\n Watch({ reflectBack: true, emit: true /* < due to metadata 'dependsOn' */, converter: PropertyConverters.Json })\n], PacemWidgetFetchElement.prototype, \"manifest\", void 0);\n__decorate([\n Watch({ reflectBack: true, emit: true /* < due to metadata 'dependsOn' */, converter: PropertyConverters.Json })\n], PacemWidgetFetchElement.prototype, \"endpoint\", void 0);\n__decorate([\n Watch({ reflectBack: true, emit: false, converter: PropertyConverters.String })\n], PacemWidgetFetchElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ reflectBack: true, emit: false, converter: PropertyConverters.String })\n], PacemWidgetFetchElement.prototype, \"method\", void 0);\n__decorate([\n Watch({ reflectBack: true, emit: false, converter: PropertyConverters.Json })\n], PacemWidgetFetchElement.prototype, \"fields\", void 0);\n__decorate([\n Watch( /* just for editing sake */)\n], PacemWidgetFetchElement.prototype, \"parameters\", void 0);\n__decorate([\n Watch( /* can only be databound or assigned at runtime */)\n], PacemWidgetFetchElement.prototype, \"result\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemWidgetFetchElement.prototype, \"fetching\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemWidgetFetchElement.prototype, \"success\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemWidgetFetchElement.prototype, \"failure\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemWidgetFetchElement.prototype, \"_fetcher\", void 0);\n__decorate([\n ViewChild('div[hidden]')\n], PacemWidgetFetchElement.prototype, \"_itemsElement\", void 0);\nPacemWidgetFetchElement = __decorate([\n CustomElement({\n tagName: P + '-widget-fetch', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-fetch autofetch=\"false\" fetching=\"{{ :host.fetching, twoway }}\" debounce=\"100\"\r\non-${Net.FetchResultEventName}=\":host._onresult($event)\" on-${Net.FetchErrorEventName}=\":host._onerror($event)\" on-${Net.FetchSuccessEventName}=\":host._onsuccess($event)\"></${P}-fetch><div hidden><${P}-content></${P}-content></div>`\n })\n], PacemWidgetFetchElement);\nexport { PacemWidgetFetchElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { PacemWidgetElement, EXPRESSION_WIDGET_METADATA_EXTRA } from '../types';\nimport { EXPRESSION_METADATA_TYPE } from '../../scaffolding/types';\nimport { PacemWidgetDataElement } from './data';\nimport { PacemWidgetFetchElement } from './fetcher';\n//namespace Pacem.Components.Cms {\nexport const FETCH_CREDENTIALS_METADATA = {\n prop: 'fetchCredentials', type: 'string', dataType: 'enumeration', display: { name: 'Fetch Credentials' }, extra: {\n enum: ['same-origin', 'omit', 'include']\n }\n};\nexport const ACCESS_TOKEN_METADATA = {\n prop: 'accessToken', type: EXPRESSION_METADATA_TYPE, display: { name: 'Access Token' },\n extra: Utils.extend({}, EXPRESSION_WIDGET_METADATA_EXTRA, { filter: (e) => e instanceof PacemWidgetDataElement || e instanceof PacemWidgetFetchElement })\n};\nexport class PacemBearerWidgetElement extends PacemWidgetElement {\n constructor() {\n super(...arguments);\n this.fetchCredentials = 'same-origin';\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'accessToken') {\n if (!Utils.isNullOrEmpty(val)) {\n this.fetchHeaders = { 'Authorization': 'Bearer ' + val };\n }\n else {\n this.fetchHeaders = {};\n }\n }\n }\n}\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemBearerWidgetElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemBearerWidgetElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemBearerWidgetElement.prototype, \"accessToken\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBearerWidgetElement.prototype, \"fetching\", 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 { CustomElement, P } from '@pacem/pacem-core';\nimport { PacemWidgetElement } from '../types';\n//namespace Pacem.Components.Cms {\nlet PacemWidgetTranslatorElement = class PacemWidgetTranslatorElement extends PacemWidgetElement {\n};\nPacemWidgetTranslatorElement = __decorate([\n CustomElement({\n tagName: P + '-widget-translator'\n })\n], PacemWidgetTranslatorElement);\nexport { PacemWidgetTranslatorElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemWidgetElement, buildWidgetMetadata } from '../types';\nimport { EXPRESSION_METADATA_TYPE } from '../../scaffolding/types';\n//namespace Pacem.Components.Cms {\nconst DATA_METADATA = {\n display: { icon: 'timer', name: 'Clock', description: 'Timer widget.' },\n props: [\n {\n prop: 'interval', type: EXPRESSION_METADATA_TYPE, display: {\n name: 'Interval (msec)'\n }, extra: {\n selector: '.' + PCSS + '-widget', step: 1000\n },\n validators: [{\n type: 'range', errorMessage: 'Negative numbers not allowed', params: { min: 0 }\n }]\n }\n ]\n};\nlet PacemWidgetClockElement = class PacemWidgetClockElement extends PacemWidgetElement {\n constructor() {\n super(buildWidgetMetadata(DATA_METADATA));\n this.interval = 0;\n }\n};\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Number })\n], PacemWidgetClockElement.prototype, \"interval\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemWidgetClockElement.prototype, \"time\", void 0);\nPacemWidgetClockElement = __decorate([\n CustomElement({\n tagName: P + '-widget-clock', template: `<${P}-timer interval=\"{{ :host.interval }}\" on-tick=\"{{ :host.time = Date.now() }}\"></${P}-timer>`\n })\n], PacemWidgetClockElement);\nexport { PacemWidgetClockElement };\n","/// <reference path=\"./swagger-types.d.ts\" />\nimport { Scaffolding } from '@pacem/pacem-scaffolding';\n//namespace Pacem.Cms.OpenApi {\nconst BAG = 'pacem:metadatabag';\nexport class SwaggerCmsParser {\n constructor(_openApi = new Scaffolding.OpenApi.OpenApiParser()) {\n this._openApi = _openApi;\n this._cachedMetadataUrls = [];\n }\n async load(url, headers) {\n let api = await this._openApi.load(url, headers);\n if (api != null) {\n api[BAG] = {};\n // greedy load of datafields\n for (let endpoint of api.endpoints) {\n await this._enrichSchemas(api, endpoint, headers);\n }\n }\n return api;\n }\n async _enrichSchemas(api, endpoint, headers) {\n const response = endpoint.response;\n if (response && response.meta) {\n response.fields = await this._fetchMetadata(api, { name: response.fullType, schema: response.meta }, headers);\n }\n // parameters?\n const parameters = endpoint.parameters;\n for (let parameter of (parameters || [])) {\n if (parameter.meta && parameter.fullType) {\n let fields = await this._fetchMetadata(api, { name: parameter.fullType, schema: parameter.meta }, headers);\n parameter.fields = fields;\n }\n }\n }\n clearCache() {\n const cache = this.cache, keys = this._cachedMetadataUrls;\n if (cache) {\n for (let key of keys) {\n cache.removeProperty(key);\n }\n // clear keys\n keys.splice(0);\n }\n }\n /**\n *\n * @param def1\n * @param headers HTTP headers for API fetching\n */\n async _fetchMetadata(api, def0, headers) {\n let _fetch = async (def1) => {\n let cols = [];\n if (def1 && def1.name) {\n // short-circuit if already in the bag\n if (api[BAG][def1.name]) {\n return api[BAG][def1.name];\n }\n /* reserve a place for this type so that it gets not fetched again if aggressive recursion occurs */ api[BAG][def1.name] = cols;\n let meta = { props: [] }, metadataUrl;\n if (/^https?:\\/\\//.test(def1.name)) {\n // name is url? then it's the endpoint for type metadata, fetch it!\n metadataUrl = def1.name;\n }\n else {\n console.warn(`Swagger entity definition keys must appear in form of absolute url. Their response to a GET request needs to be the entity metadata itself.\\nNo other options are currently supported.`);\n return;\n }\n if (metadataUrl) {\n let retrieveFn = async () => {\n let response = await fetch(metadataUrl, { credentials: 'omit', mode: 'cors', headers: headers });\n if (response.ok) {\n return await response.json();\n }\n };\n if (this.cache) {\n // check for session cache\n meta = this.cache.getPropertyValue(metadataUrl);\n if (!meta) {\n // no cache available? then fetch...\n meta = await retrieveFn();\n this._cachedMetadataUrls.push(metadataUrl);\n this.cache.setPropertyValue(metadataUrl, meta, /* persist in session not on location */ false);\n }\n }\n else {\n // do fetch\n meta = await retrieveFn();\n }\n }\n let schema = def1.schema;\n for (let col in schema.properties) {\n let column = schema.properties[col], field = meta && meta.props.find(p => p.prop === col);\n let datafield = Object.assign({\n prop: col, type: column.type || 'text', props: undefined\n }, field || /* if there's no match, then read-only */ { isReadOnly: true });\n if (field) {\n let $ref = (column.items && column.items.$ref) || column.$ref;\n if ($ref) {\n let ref = Scaffolding.OpenApi.getOpenApiDefinition(api, $ref), key = ref.name;\n if (api[BAG][key]) {\n datafield.props = api[BAG][key];\n }\n else {\n // recursion here\n datafield.props = await _fetch(ref);\n }\n }\n }\n cols.push(datafield);\n }\n }\n return cols;\n };\n return await _fetch(def0);\n }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils, Storage } from '@pacem/pacem-core';\nimport { buildWidgetMetadata } from '../types';\nimport { PacemBearerWidgetElement, ACCESS_TOKEN_METADATA } from './types';\nimport { SwaggerCmsParser } from '../../openapi/swagger-cms';\n//namespace Pacem.Components.Cms {\nconst APIMANIFEST_METADATA = {\n display: { icon: 'cloud_circle', name: 'Api Manifest', description: 'OpenApi parser for WebApi scaffolding.' },\n props: [\n {\n prop: 'url', type: 'text', display: {\n name: 'Url', description: 'Insert the url of the OpenApi json configuration.', cssClass: ['cols-lg-8'],\n watermark: 'https://domain.com/swagger/v1/swagger.json'\n },\n extra: { tooltip: true },\n validators: [{\n type: 'required', errorMessage: 'Url field is required.'\n }]\n },\n {\n prop: 'usecache', type: 'boolean', display: {\n name: 'Cache results', description: 'Whether to cache the manifest per-url.', cssClass: ['cols-lg-4'],\n ui: 'switcher'\n },\n extra: { tooltip: true }\n },\n ACCESS_TOKEN_METADATA\n ]\n};\nlet PacemWidgetApiManifestElement = class PacemWidgetApiManifestElement extends PacemBearerWidgetElement {\n constructor(_openapi = new SwaggerCmsParser(), _cache = new Storage()) {\n super(buildWidgetMetadata(APIMANIFEST_METADATA));\n this._openapi = _openapi;\n this._cache = _cache;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'url':\n case 'editing':\n case 'editable':\n this._scaffold();\n break;\n case 'usecache':\n this._openapi.cache = val ? this._cache : null;\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (this.usecache) {\n this._openapi.cache = this._cache;\n }\n this._scaffold();\n }\n _scaffold() {\n if (this.editing && this.editable && !Utils.isNullOrEmpty(this.url)) {\n this.fetching = true;\n this._openapi.load(this.url).then(s => {\n this.manifest = s;\n this.fetching = false;\n }, _ => {\n this.fetching = false;\n });\n }\n }\n};\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemWidgetApiManifestElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemWidgetApiManifestElement.prototype, \"usecache\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemWidgetApiManifestElement.prototype, \"manifest\", void 0);\nPacemWidgetApiManifestElement = __decorate([\n CustomElement({ tagName: P + '-widget-apimanifest' })\n], PacemWidgetApiManifestElement);\nexport { PacemWidgetApiManifestElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, PropertyConverters, Utils, CustomElementUtils, Logging, PCSS } from '@pacem/pacem-core';\nimport { PacemWidgetElement } from '../types';\n//namespace Pacem.Components.Cms {\nexport class PacemUiWidgetElement extends PacemWidgetElement {\n constructor(metadata, colspan = 1, role) {\n super(metadata, role);\n this.colspan = colspan;\n this.rowspan = 1;\n }\n // just a flag class\n connectedCallback() {\n super.connectedCallback();\n Utils.addClass(this, 'ui-widget ' + PCSS + '-cell cols-xs-start-1 cols-xs-12 rows-xs-start-auto');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'row':\n Utils.removeClass(this, `rows-start-${old + 1}`);\n Utils.addClass(this, `rows-start-${val + 1}`);\n break;\n case 'rowspan':\n Utils.removeClass(this, `rows-${old}`);\n Utils.addClass(this, `rows-${val}`);\n break;\n case 'column':\n Utils.removeClass(this, `cols-start-${old + 1}`);\n Utils.addClass(this, `cols-start-${val + 1}`);\n break;\n case 'colspan':\n Utils.removeClass(this, `cols-${old}`);\n Utils.addClass(this, `cols-${val}`);\n break;\n case 'borders':\n (this.borders ? Utils.addClass : Utils.removeClass).apply(this, [this, PCSS + '-border']);\n break;\n case 'corners':\n (this.borders ? Utils.addClass : Utils.removeClass).apply(this, [this, PCSS + '-corners']);\n break;\n }\n }\n get container() {\n return this._container;\n }\n /** @overridable */\n findContainer() {\n return CustomElementUtils.findAncestor(this, n => n instanceof PacemCompositeWidgetElement);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n let iter = this._container = this.findContainer();\n if (!Utils.isNull(iter)) {\n iter.register(this);\n }\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._container)) {\n this._container.unregister(this);\n }\n super.disconnectedCallback();\n }\n}\n__decorate([\n Watch({ emit: true, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUiWidgetElement.prototype, \"column\", void 0);\n__decorate([\n Watch({ emit: true, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUiWidgetElement.prototype, \"row\", void 0);\n__decorate([\n Watch({ emit: true, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUiWidgetElement.prototype, \"colspan\", void 0);\n__decorate([\n Watch({ emit: true, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUiWidgetElement.prototype, \"rowspan\", void 0);\n__decorate([\n Watch({ emit: true, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemUiWidgetElement.prototype, \"borders\", void 0);\n__decorate([\n Watch({ emit: true, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemUiWidgetElement.prototype, \"corners\", void 0);\nexport const WidgetRegisterEventName = \"widgetregister\";\nexport const WidgetUnregisterEventName = \"widgetunregister\";\nexport const LayoutChangeEventName = \"layoutchange\";\nexport class WidgetRegisterEvent extends CustomEvent {\n constructor(item, eventInit) {\n super(WidgetRegisterEventName, Utils.extend(eventInit || {}, { detail: item }));\n }\n}\nexport class WidgetUnregisterEvent extends CustomEvent {\n constructor(item, eventInit) {\n super(WidgetUnregisterEventName, Utils.extend(eventInit || {}, { detail: item }));\n }\n}\nexport class PacemCompositeWidgetElement extends PacemUiWidgetElement {\n get itemsElement() {\n return this;\n }\n validate(item) {\n return item instanceof PacemUiWidgetElement;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n Utils.addClass(this.itemsElement, PCSS + '-items-element');\n }\n /**\n * Appends a child Element to this CompositeWidget's itemsElement.\n * @param item New child element\n */\n appendItem(item) {\n this.itemsElement.appendChild(item);\n }\n /**\n * Registers a new item among the items.\n * @param item {PacemUiWidgetElement} Item to be enrolled\n */\n register(item) {\n if (!this.validate(item)) {\n this.log(Logging.LogLevel.Debug, `${(item && item.localName)} element couldn't be registered in a ${this.localName} element.`);\n return false;\n }\n let retval = false;\n const items = this.items = this.items || [];\n if (Utils.isNullOrEmpty(items)) {\n this.items = [item];\n retval = true;\n }\n else if (items.indexOf(item) === -1) {\n items.push(item);\n retval = true;\n }\n //\n if (retval) {\n this.dispatchEvent(new WidgetRegisterEvent(item));\n }\n return retval;\n }\n /**\n * Removes an existing element from the items.\n * @param item {PacemUiWidgetElement} Item to be removed\n */\n unregister(item) {\n const items = this.items, ndx = !Utils.isNullOrEmpty(items) && items.indexOf(item);\n if (ndx >= 0) {\n let item = items.splice(ndx, 1);\n this.dispatchEvent(new WidgetUnregisterEvent(item[0]));\n return true;\n }\n return false;\n }\n}\n__decorate([\n Watch( /* can only be databound or assigned at runtime */)\n], PacemCompositeWidgetElement.prototype, \"items\", void 0);\n// #endregion COMPOSITE\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Defaults, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { buildWidgetMetadata, EXPRESSION_WIDGET_METADATA_EXTRA } from '../types';\nimport { EXPRESSION_METADATA_TYPE } from '../../scaffolding/types';\nimport { PacemUiWidgetElement } from './types';\n//namespace Pacem.Components.Cms {\nconst TEXT_METADATA = buildWidgetMetadata({\n display: { icon: 'font_download', name: 'Text', description: 'Plain text widget.' },\n props: [{\n prop: 'text', type: EXPRESSION_METADATA_TYPE, display: { name: 'Text' }, extra: EXPRESSION_WIDGET_METADATA_EXTRA\n }]\n});\nlet PacemWidgetTextElement = class PacemWidgetTextElement extends PacemUiWidgetElement {\n constructor() {\n super(TEXT_METADATA);\n }\n};\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemWidgetTextElement.prototype, \"text\", void 0);\nPacemWidgetTextElement = __decorate([\n CustomElement({\n tagName: P + '-widget-text', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-text text=\"{{ :host.text }}\"></${P}-text>`\n })\n], PacemWidgetTextElement);\nexport { PacemWidgetTextElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemCompositeWidgetElement } from '../types';\n//namespace Pacem.Components.Cms {\n/**\n * UI widget container that eases dragdrop-based enrollment into composite widgets.\n */\nlet PacemWidgetPickerElement = class PacemWidgetPickerElement extends PacemCompositeWidgetElement {\n register(item) {\n const retval = super.register(item);\n if (retval) {\n item.hide = true;\n }\n return retval;\n }\n};\n__decorate([\n ViewChild(P + '-drag-drop')\n], PacemWidgetPickerElement.prototype, \"_dragDrop\", void 0);\nPacemWidgetPickerElement = __decorate([\n CustomElement({\n tagName: P + '-widget-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater datasource=\"{{ :host.items }}\">\r\n <template>\r\n <${P}-panel behaviors=\"{{ [::_dragDrop] }}\" class=\"${PCSS}-widget-itempicker display-flex flex-fill flex-middle flex-nowrap\">\r\n <i class=\"${PCSS}-icon flex-auto\" dragger>drag_indicator</i>\r\n <${P}-icon icon=\"{{ ^item.metadata.display.icon }}\" class=\"flex-auto ${PCSS}-margin margin-x-1\"></${P}-icon>\r\n <${P}-text text=\"{{ ^item.metadata.display.name }}\"></${P}-text>\r\n </${P}-panel>\r\n </template>\r\n</${P}-repeater>\r\n<${P}-drag-drop handle-selector=\"i.${PCSS}-icon[dragger]\"></${P}-drag-drop>\r\n<${P}-content></${P}-content>`\n })\n], PacemWidgetPickerElement);\nexport { PacemWidgetPickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Watch, PropertyConverters, Debounce, Utils, UI, PropertyChangeEventName } from '@pacem/pacem-core';\nimport { buildWidgetMetadata } from '../../types';\nimport { PacemCompositeWidgetElement } from '../types';\n//namespace Pacem.Components.Cms {\nfunction createSvgGridBox() {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.style.pointerEvents = 'none';\n svg.style.zIndex = '1000';\n svg.setAttribute('height', '100%');\n svg.setAttribute('width', '100%');\n svg.setAttribute('preserveAspectRatio', 'none');\n svg.setAttribute('class', 'grid-cell-wrapper');\n //svg.style.padding = '2px';\n //svg.style.boxSizing = 'border-box';\n svg.innerHTML = `<rect class=\"grid-cell\" width=\"100%\" height=\"100%\"></rect>`;\n return svg;\n}\nexport const GRID_COLUMNS = 12;\nconst FALLBACK_COLUMNS = GRID_COLUMNS;\nconst FALLBACK_ROWS = 1;\nconst GRID_METADATA = {\n display: {\n icon: 'grid_on',\n name: 'Grid',\n description: 'Composition Widget that lays out child-widgets in a grid container.'\n },\n props: [\n {\n prop: 'rows', type: 'int', display: {\n name: 'Rows', cssClass: ['cols-lg-4']\n }, validators: [\n { type: 'required', errorMessage: '' },\n {\n type: 'range', errorMessage: '', params: {\n min: 1, max: 24\n }\n }\n ]\n }, {\n prop: 'rowGap', type: 'int', display: {\n //ui: 'slider',\n name: 'Row gap', cssClass: ['cols-lg-4']\n }, validators: [\n // { type: 'required', errorMessage: '' },\n {\n type: 'range', errorMessage: '', params: {\n min: 0, max: 3, step: .25\n }\n }\n ]\n }, {\n prop: 'columnGap', type: 'int', display: {\n //ui: 'slider',\n name: 'Column gap', cssClass: ['cols-lg-4']\n }, validators: [\n // { type: 'required', errorMessage: '' },\n {\n type: 'range', errorMessage: '', params: {\n min: 0, max: 3, step: .25\n }\n }\n ]\n }\n ]\n};\nlet PacemGridWidgetElement = class PacemGridWidgetElement extends PacemCompositeWidgetElement {\n constructor() {\n super(buildWidgetMetadata(GRID_METADATA), FALLBACK_COLUMNS, \"grid\");\n this._widgetPropertyChange = (evt) => {\n if (evt.detail.propertyName === 'row' || evt.detail.propertyName === 'rowspan') {\n const widget = evt.target;\n this.rows = Math.max(this.rows, widget.row + widget.rowspan);\n }\n };\n this._dragDropHandler = (evt) => {\n const args = evt.detail, el = args.element;\n switch (evt.type) {\n case UI.DragDropEventType.Start:\n this._gridBoxes.forEach(svg => { svg.style.pointerEvents = 'auto'; });\n this._initState = {\n colspan: el.colspan,\n rowspan: el.rowspan,\n col: el.column,\n row: el.row\n };\n break;\n case UI.DragDropEventType.End:\n this._gridBoxes.forEach(svg => { svg.style.pointerEvents = 'none'; });\n break;\n case UI.DragDropEventType.Over:\n var dropTarget = args.target;\n var col = +dropTarget.style.gridColumnStart - 1;\n var row = +dropTarget.style.gridRowStart - 1;\n const farRight = col + this._initState.colspan, farBottom = row + this._initState.rowspan;\n // check overlap\n if (!this._intersects(el, col, row, el.colspan, el.rowspan)) {\n let fireLayoutChange = false;\n //\n if (farRight <= (this.columns || FALLBACK_COLUMNS)) {\n fireLayoutChange = el.column !== col;\n el.column = col; // + '/' + (col + this._initState.colspan);\n }\n if (farBottom <= (this.rows || FALLBACK_ROWS)) {\n fireLayoutChange = fireLayoutChange || (el.row !== row);\n el.row = row; // + '/' + (row + this._initState.rowspan);\n }\n if (fireLayoutChange) {\n // attributechange should suffice\n // this.dispatchLayoutChangeEvent();\n }\n }\n break;\n }\n ;\n };\n this._resizeHandler = (evt) => {\n switch (evt.type) {\n case UI.RescaleEventType.Start:\n Utils.addClass(evt.detail.element, PCSS + '-rescaling');\n this._gridBoxes.forEach(svg => { svg.style.pointerEvents = 'auto'; });\n break;\n case UI.RescaleEventType.End:\n this._gridBoxes.forEach(svg => { svg.style.pointerEvents = 'none'; });\n Utils.removeClass(evt.detail.element, PCSS + '-rescaling');\n break;\n case UI.RescaleEventType.Rescale:\n evt.preventDefault();\n // check pos\n const pos = { x: evt.clientX, y: evt.clientY }, handle = evt.detail.handle;\n const dropTarget = document.elementsFromPoint(pos.x, pos.y).find(e => this._dragDrop.dropTargets.indexOf(e) >= 0);\n if (dropTarget) {\n var col = +dropTarget.style.gridColumnStart;\n var row = +dropTarget.style.gridRowStart;\n const widget = evt.detail.element, startcol = widget.column + 1, startrow = widget.row + 1;\n const colspan = 1 + col - startcol, rowspan = 1 + row - startrow;\n if (!this._intersects(widget, widget.column, widget.row, colspan, rowspan)) {\n let fireLayoutChange = false;\n //\n if (col >= startcol && handle.endsWith('right')) {\n fireLayoutChange = widget.colspan !== colspan;\n widget.colspan = colspan;\n }\n if (row >= startrow && handle.startsWith('bottom')) {\n fireLayoutChange = fireLayoutChange || widget.rowspan !== rowspan;\n widget.rowspan = rowspan;\n }\n if (fireLayoutChange) {\n // attributechange should suffice\n // this.dispatchLayoutChangeEvent();\n }\n }\n }\n break;\n }\n };\n this._gridBoxes = [];\n }\n register(item) {\n let retval = super.register(item);\n if (retval) {\n const row = item.row || 0, column = item.column || 0, colspan = item.colspan || 2, rowspan = item.rowspan || 1;\n let foundspot = !this._intersects(item, column, row, colspan, rowspan);\n if (foundspot) {\n item.row = row;\n item.column = column;\n item.colspan = colspan;\n item.rowspan = rowspan;\n }\n else {\n if (!foundspot) {\n // select a spot or create a new row\n let check = (elasticOnColspan = false) => {\n let maxColIndex = this.columns - 1;\n if (!elasticOnColspan) {\n maxColIndex = maxColIndex - colspan + 1;\n }\n for (let j = 0; j < this.rows; j++) {\n for (let i = 0; i <= maxColIndex; i++) {\n if (!this._intersects(item, i, j, colspan, rowspan)) {\n item.column = i;\n item.row = j;\n item.colspan = Math.min(maxColIndex + 1 - i, colspan);\n item.rowspan = rowspan;\n foundspot = true;\n break;\n }\n }\n if (foundspot)\n break;\n }\n };\n check();\n if (!foundspot && colspan > 1) {\n // find first avail slot conceding less colspan\n check(true);\n }\n }\n // okay, surrender and create a new row\n if (!foundspot) {\n this.rows++;\n item.row = this.rows - 1;\n item.column = 0;\n }\n }\n //\n // item.behaviors.push(this._dragDrop, this._rescaler);\n item.behaviors = [this._dragDrop, this._rescaler];\n item.addEventListener(PropertyChangeEventName, this._widgetPropertyChange, false);\n }\n //\n return retval;\n }\n unregister(item) {\n let retval = super.unregister(item);\n if (retval) {\n item.removeEventListener(PropertyChangeEventName, this._widgetPropertyChange, false);\n const ndx = item.behaviors.indexOf(this._dragDrop);\n if (ndx >= 0)\n item.behaviors.splice(ndx, 1);\n const ndx1 = item.behaviors.indexOf(this._rescaler);\n if (ndx1 >= 0)\n item.behaviors.splice(ndx1, 1);\n }\n return retval;\n }\n _intersects(who, col, row, colspan, rowspan) {\n for (let item of this.items) {\n let widget = item;\n if (widget === who) {\n continue;\n }\n if ((widget.column < (col + colspan) && (widget.column + widget.colspan) > col)\n && (widget.row < (row + rowspan) && (widget.row + widget.rowspan) > row)) {\n return true;\n }\n }\n return false;\n }\n connectedCallback() {\n super.connectedCallback();\n Utils.addClass(this, PCSS + '-grid');\n // drag-drop\n let dragDrop = this._dragDrop = document.createElement(P + '-drag-drop');\n let floater = document.createElement('div');\n document.body.appendChild(floater);\n dragDrop.floater = floater;\n dragDrop.mode = UI.DragDataMode.Alias;\n dragDrop.dropBehavior = UI.DropBehavior.None;\n dragDrop.addEventListener(UI.DragDropEventType.Start, this._dragDropHandler, false);\n dragDrop.addEventListener(UI.DragDropEventType.Over, this._dragDropHandler, false);\n dragDrop.addEventListener(UI.DragDropEventType.End, this._dragDropHandler, false);\n document.body.appendChild(dragDrop);\n // rescale\n let rescale = this._rescaler = document.createElement(P + '-rescale');\n rescale.handles = [UI.RescaleHandle.Right, UI.RescaleHandle.Bottom];\n rescale.addEventListener(UI.RescaleEventType.Start, this._resizeHandler, false);\n rescale.addEventListener(UI.RescaleEventType.Rescale, this._resizeHandler, false);\n rescale.addEventListener(UI.RescaleEventType.End, this._resizeHandler, false);\n document.body.appendChild(rescale);\n // editor\n // default configuration\n if (Utils.isNullOrEmpty(this.columns)) {\n this.columns = GRID_COLUMNS;\n }\n if (Utils.isNullOrEmpty(this.rows)) {\n this.rows = 1;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.adapt();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n this.adapt();\n }\n disconnectedCallback() {\n var dragDrop = this._dragDrop, rescale = this._rescaler;\n if (!Utils.isNull(dragDrop)) {\n dragDrop.floater.remove();\n dragDrop.removeEventListener(UI.DragDropEventType.Start, this._dragDropHandler, false);\n dragDrop.removeEventListener(UI.DragDropEventType.Over, this._dragDropHandler, false);\n dragDrop.removeEventListener(UI.DragDropEventType.End, this._dragDropHandler, false);\n dragDrop.remove();\n this._dragDrop = null;\n }\n if (!Utils.isNull(rescale)) {\n rescale.removeEventListener(UI.RescaleEventType.Start, this._resizeHandler, false);\n rescale.removeEventListener(UI.RescaleEventType.Rescale, this._resizeHandler, false);\n rescale.removeEventListener(UI.RescaleEventType.End, this._resizeHandler, false);\n rescale.remove();\n this._rescaler = null;\n }\n super.disconnectedCallback();\n }\n _normalize(measure, defaultValue = 1) {\n if (typeof measure === 'string') {\n return measure;\n }\n else if (measure == null) {\n measure = defaultValue;\n }\n return this.unitPixels(measure) + 'px';\n }\n unitPixels(qty) {\n return qty * (this.unit || 8);\n }\n adapt() {\n this.style.marginTop = this.unitPixels(this.marginTop || 0) + 'px';\n this.style.marginBottom = this.unitPixels(this.marginBottom || 0) + 'px';\n //\n this.style.gridTemplateColumns = `repeat(${(this.columns || FALLBACK_COLUMNS)}, 1fr)`;\n //this.style.gridAutoRows = `minmax(${(this.minRowheight || 24)}, ${(this.rowheight || 'auto')})`;\n let minrowheight = this._normalize(this.minRowheight, 3), rowheight = this._normalize(this.rowheight || 'auto');\n this.style.gridTemplateRows = `repeat(${(this.rows || FALLBACK_ROWS)}, minmax(${minrowheight}, ${rowheight}))`;\n this.style.gridRowGap = this._normalize(this.rowGap, 1);\n this.style.gridColumnGap = this._normalize(this.columnGap, 1);\n //\n this._setGridLines();\n }\n _setGridLines() {\n var splice = 0;\n const editing = this.editing;\n if (editing) {\n const cols = this.columns || FALLBACK_COLUMNS, rows = this.rows || FALLBACK_ROWS, total = cols * rows;\n splice = total;\n for (let k = 0; k < total; k++) {\n while (this._gridBoxes.length <= k) {\n let s = createSvgGridBox();\n this.appendChild(s);\n this._gridBoxes.push(s);\n }\n let svg = this._gridBoxes[k];\n const i = k % cols, j = Math.floor(k / cols);\n svg.style.gridColumn = (i + 1).toString();\n svg.style.gridRow = (j + 1).toString();\n }\n }\n for (let svg of this._gridBoxes.splice(splice)) {\n svg.remove();\n }\n // behaviors to be synchronized\n if (!Utils.isNull(this._dragDrop) && !Utils.isNull(this._rescaler)) {\n this._dragDrop.disabled = this._rescaler.disabled\n = !editing;\n this._dragDrop.dropTargets = this._gridBoxes;\n }\n }\n};\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemGridWidgetElement.prototype, \"unit\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemGridWidgetElement.prototype, \"marginTop\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemGridWidgetElement.prototype, \"marginBottom\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemGridWidgetElement.prototype, \"columns\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemGridWidgetElement.prototype, \"rows\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemGridWidgetElement.prototype, \"minRowheight\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemGridWidgetElement.prototype, \"rowheight\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemGridWidgetElement.prototype, \"rowGap\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemGridWidgetElement.prototype, \"columnGap\", void 0);\n__decorate([\n Debounce(100)\n], PacemGridWidgetElement.prototype, \"adapt\", null);\nPacemGridWidgetElement = __decorate([\n CustomElement({ tagName: P + '-widget-grid' })\n], PacemGridWidgetElement);\nexport { PacemGridWidgetElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Defaults, Watch, PropertyConverters, ViewChild, Utils, Components, UI } from '@pacem/pacem-core';\nimport { Components as ScaffoldingComponents } from '@pacem/pacem-scaffolding';\nimport { Functions, EXPRESSION_METADATA_TYPE } from '../../scaffolding/types';\nimport { EXPRESSION_WIDGET_METADATA_EXTRA, gridifyMetadata } from '../types';\n//namespace Pacem.Components.Cms {\n/** Default metadata ('expression' field) 'type' factory. */\nexport const DATACOLUMNS_METADATA_TYPE = (host, hostRef = ':host', hostEntityRef = ':host.entity') => {\n const attrs = {}, meta = host.metadata, fns = Functions, fnKeys = [];\n attrs['properties'] = `{{ Pacem.CustomElementUtils.getWatchedProperty(${hostEntityRef}, '${meta.prop}').config.converter }}`;\n const tagName = P + '-datacolumns';\n let extra = (meta.extra || {});\n // properties\n if (!Utils.isNullOrEmpty(extra.properties)) {\n switch (typeof extra.properties) {\n case 'string':\n attrs['properties'] = `{{ ${hostEntityRef}.${extra.properties} }}`;\n break;\n case 'function':\n const fnKey = 'fn' + Utils.uniqueCode();\n fns[fnKey] = extra.properties;\n attrs['properties'] = `{{ Pacem.Components.Cms.Functions.${fnKey}(${hostRef}), once }}`;\n // tidy-up memento\n fnKeys.push(fnKey);\n break;\n }\n }\n if (fnKeys.length > 0) {\n // tidy-up\n attrs['on-unload'] = `{{ Pacem.Components.Cms.Functions.dismiss('${fnKeys.join('\\',\\'')}') }}`;\n }\n return { tagName: tagName, attrs: attrs };\n};\nconst DATACOLUMN_METADATA = {\n display: { name: 'Columns' },\n props: [\n { prop: 'header', type: 'string', display: { cssClass: ['form-minimal'], name: 'Header' } },\n {\n prop: 'content', type: EXPRESSION_METADATA_TYPE, display: { name: 'Content' },\n extra: EXPRESSION_WIDGET_METADATA_EXTRA\n }\n ]\n};\nlet PacemDataColumnElement = class PacemDataColumnElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'content':\n this.contentExpression = val;\n break;\n case 'contentExpression':\n this.setAttribute('content', val || '');\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._form.entity = this;\n this._form.metadata = gridifyMetadata(DATACOLUMN_METADATA);\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDataColumnElement.prototype, \"header\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDataColumnElement.prototype, \"content\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDataColumnElement.prototype, \"contentExpression\", void 0);\n__decorate([\n ViewChild(P + '-form')\n], PacemDataColumnElement.prototype, \"_form\", void 0);\nPacemDataColumnElement = __decorate([\n CustomElement({\n tagName: P + '-widget-datacolumn', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-form class=\"panel-body\" autogenerate=\"true\"></${P}-form>`\n })\n], PacemDataColumnElement);\nexport { PacemDataColumnElement };\nlet PacemDataColumnsElement = class PacemDataColumnsElement extends ScaffoldingComponents.Scaffolding.PacemBaseElement {\n constructor() {\n super(...arguments);\n this._dropHandler = (e) => {\n this.changeHandler(e);\n };\n this._columnifyMetadata = (props = this.properties) => {\n return (props || []).map(p => {\n const header = typeof p.display?.name === 'function' ? /* NOT supported */ p.prop : (p.display?.name || p.prop);\n const c = {\n header,\n content: `{{ ^item.${p.prop} }}`\n };\n return c;\n }).sort((a, b) => a.header > b.header ? 1 : -1);\n };\n }\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n // leave it all to the template bindings\n }\n onChange(evt) {\n return Utils.fromResult(this.value = this._repeater.datasource);\n }\n acceptValue(val) {\n if (!Utils.isNull(this._repeater)) {\n this._repeater.datasource = Utils.clone(val || []);\n }\n }\n getViewValue(value) {\n return /* dummy */ '[DataColumns]';\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Json.convert(attr, this);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._propDragger.addEventListener(UI.DragDropEventType.End, this._dropHandler, false);\n this._colDragger.addEventListener(UI.DragDropEventType.End, this._dropHandler, false);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._propDragger)) {\n this._propDragger.removeEventListener(UI.DragDropEventType.End, this._dropHandler, false);\n }\n if (!Utils.isNull(this._colDragger)) {\n this._colDragger.removeEventListener(UI.DragDropEventType.End, this._dropHandler, false);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n ViewChild(`${P}-repeater[columns]`)\n], PacemDataColumnsElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(`${P}-drag-drop[properties]`)\n], PacemDataColumnsElement.prototype, \"_propDragger\", void 0);\n__decorate([\n ViewChild(`${P}-drag-drop[columns]`)\n], PacemDataColumnsElement.prototype, \"_colDragger\", void 0);\n__decorate([\n ViewChild('div[drop-target]')\n], PacemDataColumnsElement.prototype, \"_dropTarget\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemDataColumnsElement.prototype, \"properties\", void 0);\nPacemDataColumnsElement = __decorate([\n CustomElement({\n tagName: P + '-widget-datacolumns', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-datacolumns\">\r\n <div class=\"datacolumns-main display-flex flex-fill\">\r\n\r\n <${P}-drag-drop mode=\"${UI.DragDataMode.Alias}\" disabled=\"{{ :host.readonly }}\" handle-selector=\"*[handle]\"\r\n drop-behavior=\"${UI.DropBehavior.InsertChild}\" drop-targets=\"{{ [::_dropTarget] }}\" columns></${P}-drag-drop>\r\n <${P}-repeater class=\"display-flex flex-fill\" columns>\r\n <!-- columns -->\r\n <div class=\"display-flex flex-nowrap\" drop-target>\r\n <template>\r\n <${P}-panel behaviors=\"{{ [::_colDragger] }}\">\r\n <div class=\"${PCSS}-panel panel-side-left side-auto\">\r\n <div class=\"panel-side\">\r\n <${P}-button class=\"display-block button-flat icon-glyph-small\" icon-glyph=\"drag_indicator\" handle></${P}-button>\r\n <${P}-button class=\"display-block button-flat icon-glyph-small\" on-click=\":host.value.splice(^index, 1)\" icon-glyph=\"clear\"></${P}-button>\r\n </div>\r\n <div class=\"panel-heading\">\r\n <${P}-text text=\"{{ ^item.header }}\"></${P}-text>\r\n </div>\r\n <${P}-widget-datacolumn class=\"panel-body\" header=\"{{ ^item.header, twoway }}\" content-expression=\"{{ ^item.content, twoway }}\"></${P}-widget-datacolumn>\r\n </div>\r\n </${P}-panel>\r\n </template>\r\n </div>\r\n </${P}-repeater>\r\n\r\n </div>\r\n <${P}-panel class=\"datacolumns-props\" hide=\"{{ :host.readonly }}\">\r\n <${P}-drag-drop mode=\"${UI.DragDataMode.Copy}\" disabled=\"{{ :host.readonly }}\" handle-selector=\"*[handle]\"\r\n drop-behavior=\"${UI.DropBehavior.InsertChild}\" drop-targets=\"{{ [::_dropTarget] }}\" properties></${P}-drag-drop>\r\n <${P}-repeater datasource=\"{{ :host._columnifyMetadata(:host.properties) }}\">\r\n <!-- properties -->\r\n <template>\r\n <${P}-panel behaviors=\"{{ [::_propDragger] }}\" class=\"${PCSS}-panel panel-side-left side-auto panel-primary panel-filled ${PCSS}-margin margin-bottom-1\">\r\n <div class=\"panel-side\">\r\n <${P}-button class=\"display-block button-flat icon-glyph-small\" icon-glyph=\"drag_indicator\" handle></${P}-button>\r\n </div>\r\n <div class=\"text-truncate panel-body\">\r\n <${P}-span text=\"{{ ^item.header }}\"></${P}-span>\r\n </div>\r\n </${P}-panel>\r\n </template>\r\n </${P}-repeater>\r\n </${P}-panel>\r\n</div>`\n })\n], PacemDataColumnsElement);\nexport { PacemDataColumnsElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Watch, PropertyConverters, ViewChild, Utils, Components } from '@pacem/pacem-core';\nimport { EXPRESSION_METADATA_TYPE } from '../../../scaffolding/types';\nimport { EXPRESSION_WIDGET_METADATA_EXTRA, buildWidgetMetadata, gridifyMetadata } from '../../types';\nimport { PacemWidgetDataElement } from '../../helpers/data';\nimport { PacemWidgetFetchElement } from '../../helpers/fetcher';\nimport { DATACOLUMNS_METADATA_TYPE } from '../../scaffolding/datacolumns';\nimport { PacemUiWidgetElement } from '../types';\n//namespace Pacem.Components.Cms {\nconst DATACOLUMN_METADATA = {\n display: { name: 'DataColumn' },\n props: [\n { prop: \"header\", type: \"string\", display: { name: \"Header\" } },\n { prop: \"content\", type: EXPRESSION_METADATA_TYPE, display: { name: \"Content\" }, extra: EXPRESSION_WIDGET_METADATA_EXTRA },\n ]\n};\nconst DATAGRID_METADATA = buildWidgetMetadata({\n display: { icon: 'table_chart', name: 'DataGrid', description: 'DataGrid widget.' },\n props: [{\n prop: 'datasource', type: EXPRESSION_METADATA_TYPE, display: { name: 'Datasource' },\n extra: Utils.extend({}, EXPRESSION_WIDGET_METADATA_EXTRA, { filter: (e) => e instanceof PacemWidgetDataElement || e instanceof PacemWidgetFetchElement })\n },\n {\n prop: 'columns', type: DATACOLUMNS_METADATA_TYPE, display: { name: 'Columns' },\n // this will include 'datasource' as argument in the oneToMany source fn\n extra: { properties: 'datarowMetadata' },\n props: gridifyMetadata(DATACOLUMN_METADATA)\n }]\n});\nconst DATAGRID_HEADING_SEPARATOR = 'pacem-widget-datagrid-heading';\nfunction gridify(columns = []) {\n var output = '';\n for (let column of columns || []) {\n // if empty then 1fr\n const col = column.width || 1;\n if (typeof col === 'number') {\n output += col + 'fr ';\n }\n else {\n output += 'auto ';\n }\n }\n return output;\n}\nfunction datagridFragments(columns = []) {\n const fragHeading = document.createDocumentFragment(), fragBody = document.createDocumentFragment();\n let j = 1;\n for (let col of columns) {\n // heading\n const headcell = document.createElement('div');\n headcell.classList.add(PCSS + '-headcell');\n headcell.textContent = col.header;\n fragHeading.appendChild(headcell);\n // body\n const datacell = new Components.PacemSpanElement();\n datacell.classList.add(PCSS + '-datacell', 'datacell-corners');\n datacell.style.gridColumn = j.toString();\n datacell.setAttribute('css', \"{{ {'grid-row': ^index+2} }}\");\n datacell.setAttribute('content', col.content);\n fragBody.appendChild(datacell);\n j++;\n }\n const datarow = new Components.PacemPanelElement();\n datarow.classList.add(PCSS + '-datarow');\n datarow.setAttribute('css', \"{{ {'grid-row': ^index+2} }}\");\n datarow.setAttribute('css-class', \"{{ {'datarow-alt': ^index % 2 === 1} }}\");\n datarow.style.gridColumn = \"1/\" + (columns.length + 1);\n fragBody.appendChild(datarow);\n return { head: fragHeading, body: fragBody };\n}\nfunction datagridInnerHTML(id, columns = []) {\n const { head, body } = datagridFragments(columns);\n const head0 = document.createElement('div');\n head0.appendChild(head);\n const body0 = document.createElement('div');\n body0.appendChild(body);\n return `<${P}-repeater datasource=\"{{ #${id}.datasource }}\">\r\n <div class=\"${PCSS}-datatable\" style=\"grid-template-columns: ${gridify(columns)}\">\r\n ${head0.innerHTML}\r\n <template>${body0.innerHTML}</template>\r\n</div></${P}-repeater>`;\n}\nlet PacemWidgetDataGridElement = class PacemWidgetDataGridElement extends PacemUiWidgetElement {\n constructor() {\n super(DATAGRID_METADATA);\n this.columns = [];\n this.datasource = [];\n this.datarowMetadata = [];\n this._builtUponDatasource = false;\n }\n _gridify(columns = this.columns) {\n var output = '';\n for (let column of columns || []) {\n // if empty then 1fr\n const col = column.width || 1;\n if (typeof col === 'number') {\n output += col + 'fr ';\n }\n else {\n output += 'auto ';\n }\n }\n return output;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'columns':\n /*\n *\n * TODO: manage columns separately!\n * Create an ad-hoc editor/formfield and a dedicated form\n *\n * */\n this.innerHTML = datagridInnerHTML(this.id, val);\n break;\n case 'datasource':\n this._extractMetadataJustInCase(val);\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.innerHTML = datagridInnerHTML(this.id, this.columns);\n }\n _seekArray(ds) {\n if (Utils.isArray(ds)) {\n return ds;\n }\n if (typeof ds === 'object') {\n for (let prop in ds) {\n const arr = this._seekArray(ds[prop]);\n if (!Utils.isNull(arr)) {\n return arr;\n }\n }\n }\n return null;\n }\n _extractMetadataJustInCase(ds = this.datasource) {\n if ((Utils.isNullOrEmpty(this.datarowMetadata) || this._builtUponDatasource) && !Utils.isNullOrEmpty(ds)) {\n const arr = this._seekArray(ds);\n if (!Utils.isNullOrEmpty(arr)) {\n const props = [];\n const item = arr[0];\n for (let prop in item) {\n props.push({ prop, type: typeof item[prop] });\n }\n this.datarowMetadata = props;\n this._builtUponDatasource = true;\n }\n }\n }\n};\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Json })\n], PacemWidgetDataGridElement.prototype, \"columns\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemWidgetDataGridElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemWidgetDataGridElement.prototype, \"datarowMetadata\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-datatable`)\n], PacemWidgetDataGridElement.prototype, \"_datatable\", void 0);\n__decorate([\n ViewChild('template')\n], PacemWidgetDataGridElement.prototype, \"_template\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemWidgetDataGridElement.prototype, \"_repeater\", void 0);\nPacemWidgetDataGridElement = __decorate([\n CustomElement({\n tagName: P + '-widget-datagrid'\n })\n], PacemWidgetDataGridElement);\nexport { PacemWidgetDataGridElement };\n","import { Utils } from '@pacem/pacem-core';\nexport const PermissionEditEventName = 'permissionedit';\nexport class PermissionEditEvent extends CustomEvent {\n constructor(permissible) {\n super(PermissionEditEventName, { detail: permissible, cancelable: false, bubbles: true });\n }\n}\nexport class Permissible {\n static canEdit(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.update); }\n static canRead(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.read); }\n static canAdd(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.create); }\n static canDelete(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.delete); }\n static canTranslate(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.translate); }\n static _canDoSomethingToResource(claims, resource, predicate) {\n if (Utils.isNullOrEmpty(claims) || Utils.isNull(resource)) {\n return false;\n }\n // if no permissions are set, then you're free to go!\n var editable = true;\n if (resource.permissions && resource.permissions.length > 0) {\n // check correspondence otherwise\n editable = false;\n for (let permission of resource.permissions) {\n if (predicate(permission) && claims[permission.claimType] && claims[permission.claimType].indexOf(permission.claimValue) >= 0) {\n return true;\n }\n }\n }\n // return\n return editable;\n }\n}\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["Functions","dismiss","args","name","handleExpressionValueChange","evt","prop","entity","detail","propertyName","Utils","isNull","value","currentValue","HTMLElement","attr","CustomElementUtils","camelToKebab","isNullOrEmpty","removeAttribute","setAttribute","toString","EXPRESSION_METADATA_TYPE","host","hostRef","hostEntityRef","attrs","meta","metadata","fns","fnKeys","PropertyChangeEventName","tagName","P","extra","selector","filter","toLowerCase","fnKey","uniqueCode","push","labeler","length","join","__decorate","decorators","target","key","desc","d","c","arguments","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","PacemElementPickerElementBase","ScaffoldingComponents","Scaffolding","PacemBaseElement","Watch","converter","PropertyConverters","String","prototype","Eval","PacemElementPickerElement","inputFields","this","_select","toggleReadonlyView","readonly","onChange","_","fromResult","acceptValue","val","getViewValue","viewValue","convertValueAttributeToProperty","Element","convert","viewActivatedCallback","super","_databind","propertyChangedCallback","old","first","project","e","label","constructor","id","retval","document","querySelectorAll","forEach","arr","element","valueProperty","textProperty","datasource","ViewChild","Debounce","CustomElement","shadow","Defaults","USE_SHADOW_ROOT","template","ExpressionSource","PacemExpressionElement","_setFeedbackText","_editing","PropertyReference","_picker","focus","_editor","_sourceRef","changeHandler","Event","setPristine","_view","textContent","_reverseStructure","isBindingAttribute","_eval","text","undefined","cleanup","_source","_propRef","expr","deps","parseBindingAttribute","dependencies","RepeaterItem","isRepeaterItem","Expression","dep","querySelector","path","Constant","emit","Boolean","PCSS","ChangePolicy","Blur","UI","UIComponents","DEFAULT_PERMISSION_METADATA","props","type","display","cssClass","Array","concat","apply","validators","errorMessage","map","p","j","charAt","toUpperCase","substr","DEFAULT_METADATA","cellifyMetadata","isArray","gridifyMetadata","css","buildWidgetMetadata","extend","clone","WIDGET_CSS_CLASS","EXPRESSION_WIDGET_METADATA_EXTRA","tag","PacemWidgetToolbarElement","Components","PacemElement","editButton","_btnEdit","permissionsButton","_btnPerms","removeButton","_btnRemove","_edit","form","_proxy","dom","find","attributes","open","_popoutJustInCase","_editPermissions","permissionMetadata","balloon","findAncestorOfType","PacemBalloonElement","popout","PacemWidgetElement","role","connectedCallback","addClass","isReady","_ensureBalloon","_disposeBalloon","_balloon","disabled","removeClass","_assignIcon","disconnectedCallback","dataset","icon","createElement","editing","options","behavior","BalloonBehavior","Menu","trigger","BalloonTrigger","Hover","innerHTML","findAncestorShell","appendChild","remove","reflectBack","Json","DATA_METADATA","description","PacemWidgetDataElement","FETCH_PARAMETER_METADATA","isReadOnly","FETCH_METADATA","isComplexType","ui","source","manifest","endpoints","fullPath","method","sort","dependsOn","hide","lockItems","ACCESS_TOKEN_METADATA","PARAMETER_TAGNAME","PacemWidgetFetchParameterElement","PacemEventTarget","_fetcher","fetch","PacemWidgetFetchElement","PacemBearerWidgetElement","_onerror","failure","success","_onsuccess","_onresult","result","_parameters","from","_itemsElement","children","localName","fetcher","parameters","endpoint","param","required","params","parameter","url","credentials","fetchCredentials","headers","fetchHeaders","_mergeEndpoint","baseUrl","fields","response","itemsElement","item","matching","existing","Net","FetchResultEventName","FetchErrorEventName","FetchSuccessEventName","Authorization","PacemWidgetTranslatorElement","step","min","PacemWidgetClockElement","interval","Number","BAG","SwaggerCmsParser","_openApi","OpenApi","OpenApiParser","_cachedMetadataUrls","load","api","_enrichSchemas","_fetchMetadata","fullType","schema","clearCache","cache","keys","removeProperty","splice","def0","_fetch","async","def1","cols","metadataUrl","test","console","warn","retrieveFn","mode","ok","json","getPropertyValue","setPropertyValue","col","properties","column","field","datafield","assign","$ref","items","ref","getOpenApiDefinition","APIMANIFEST_METADATA","watermark","tooltip","PacemWidgetApiManifestElement","_openapi","_cache","Storage","_scaffold","usecache","editable","fetching","then","s","PacemUiWidgetElement","colspan","rowspan","borders","container","_container","findContainer","findAncestor","n","PacemCompositeWidgetElement","iter","register","unregister","WidgetRegisterEventName","WidgetUnregisterEventName","WidgetRegisterEvent","CustomEvent","eventInit","WidgetUnregisterEvent","validate","appendItem","log","Logging","LogLevel","Debug","indexOf","dispatchEvent","ndx","TEXT_METADATA","PacemWidgetTextElement","PacemWidgetPickerElement","createSvgGridBox","svg","createElementNS","style","pointerEvents","zIndex","GRID_METADATA","max","PacemGridWidgetElement","_widgetPropertyChange","widget","rows","Math","row","_dragDropHandler","el","DragDropEventType","Start","_gridBoxes","_initState","End","Over","dropTarget","gridColumnStart","gridRowStart","farRight","farBottom","_intersects","fireLayoutChange","columns","_resizeHandler","RescaleEventType","Rescale","preventDefault","pos","x","clientX","y","clientY","handle","elementsFromPoint","_dragDrop","dropTargets","startcol","startrow","endsWith","startsWith","foundspot","check","elasticOnColspan","maxColIndex","behaviors","_rescaler","addEventListener","removeEventListener","ndx1","who","dragDrop","floater","body","DragDataMode","Alias","dropBehavior","DropBehavior","None","rescale","handles","RescaleHandle","Right","Bottom","adapt","_normalize","measure","defaultValue","unitPixels","qty","unit","marginTop","marginBottom","gridTemplateColumns","minrowheight","minRowheight","rowheight","gridTemplateRows","gridRowGap","rowGap","gridColumnGap","columnGap","_setGridLines","total","k","floor","gridColumn","gridRow","DATACOLUMNS_METADATA_TYPE","DATACOLUMN_METADATA","PacemDataColumnElement","contentExpression","_form","PacemDataColumnsElement","_dropHandler","_columnifyMetadata","header","content","a","b","_repeater","_propDragger","_colDragger","InsertChild","Copy","DATAGRID_METADATA","datagridInnerHTML","head","fragHeading","createDocumentFragment","fragBody","headcell","classList","add","datacell","PacemSpanElement","datarow","PacemPanelElement","datagridFragments","head0","body0","output","width","gridify","PacemWidgetDataGridElement","datarowMetadata","_builtUponDatasource","_gridify","_extractMetadataJustInCase","_seekArray","ds","dataType","enum","findAll","predicate","PermissionEditEventName","PermissionEditEvent","permissible","cancelable","bubbles","canEdit","claims","resource","_canDoSomethingToResource","update","canRead","read","canAdd","create","canDelete","delete","canTranslate","translate","permissions","permission","claimType","claimValue","DeepMerger","merge","Output"],"mappings":"gCAGO,MAAMA,EAAY,CACrBC,QAAW,IAAIC,KACX,IAAK,IAAIC,KAAQD,GAAQ,UACdF,EAAUG,IAGzBC,4BAA+B,CAACC,EAAKC,EAAMC,KACvC,GAAgC,UAA5BF,EAAIG,OAAOC,eAA6BC,QAAMC,OAAOJ,GAAS,CAC9D,MAAMK,EAAQP,EAAIG,OAAOK,aACzB,GAAIN,aAAkBO,YAAa,CAE/B,IAAIC,EAAOC,EAAAA,mBAAmBC,aAAaX,GACvCI,EAAAA,MAAMQ,cAAcN,GACpBL,EAAOY,gBAAgBJ,GAGvBR,EAAOa,aAAaL,EAAMH,EAAMS,WAExC,MAEId,EAAOD,GAAQM,CAEvB,IAIKU,EAA2B,CAACC,EAAMC,EAAU,QAASC,EAAgB,kBAC9E,MAAMC,EAAQ,CAAA,EAAIC,EAAOJ,EAAKK,SAAUC,EAAM7B,EAAW8B,EAAS,GAClEJ,EAAa,MAAI,MAAMD,+BAA2CA,mBAA+BT,EAAAA,mBAAmBC,aAAaU,EAAKrB,aACtIoB,EAAM,MAAQK,EAAAA,yBAA2B,uEAAuEJ,EAAKrB,UAAUmB,KAC/HC,EAAiB,UAAI,kDAAkDD,OAAmBE,EAAKrB,6BAC/F,MAAM0B,EAAUC,EAAAA,EAAI,cACpB,IAAIC,EAASP,EAAKO,OAAS,GAM3B,GAJKxB,EAAAA,MAAMQ,cAAcgB,EAAMC,YAC3BT,EAAgB,SAAIQ,EAAMC,WAGzBzB,EAAAA,MAAMQ,cAAcgB,EAAME,QAC3B,cAAeF,EAAME,QACjB,IAAK,SACDV,EAAc,OAAI,qCAAqCQ,EAAME,+BAA+BF,EAAME,OAAOC,oBACzG,MACJ,IAAK,WACD,MAAMC,EAAQ,KAAO5B,EAAAA,MAAM6B,aAC3BV,EAAIS,GAASJ,EAAME,OACnBV,EAAc,OAAI,qCAAqCY,aAEvDR,EAAOU,KAAKF,GAKxB,GAA6B,mBAAlBJ,EAAMO,QAAwB,CACrC,MAAMH,EAAQ,KAAO5B,EAAAA,MAAM6B,aAC3BV,EAAIS,GAASJ,EAAMO,QACnBf,EAAe,QAAI,qCAAqCY,aAExDR,EAAOU,KAAKF,EAChB,CAKA,OAJIR,EAAOY,OAAS,IAEhBhB,EAAM,aAAe,8CAA8CI,EAAOa,KAAK,eAE5E,CAAEX,QAASA,EAASN,MAAOA,ICnEtC,IAAIkB,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUT,OAAQU,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWH,OAAS,EAAGe,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,CAChE,EAIO,MAAMO,UAAsCC,EAAAA,WAAsBC,YAAYC,kBAErFlB,EAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBC,UACvCP,EAA8BQ,UAAW,mBAC5CvB,EAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBG,QACvCT,EAA8BQ,UAAW,iBAC5CvB,EAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBG,QACvCT,EAA8BQ,UAAW,kBAC5C,IAAIE,EAA4B,cAAwCV,EACpE,eAAIW,GACA,MAAO,CAACC,KAAKC,QACjB,CACA,kBAAAC,CAAmBC,GACfH,KAAKC,QAAQE,SAAWA,CAC5B,CACA,QAAAC,CAASC,GACL,OAAOlE,EAAAA,MAAMmE,WAAWN,KAAK3D,MAAQ2D,KAAKC,QAAQ5D,MACtD,CACA,WAAAkE,CAAYC,GACRR,KAAKC,QAAQ5D,MAAQmE,CACzB,CACA,YAAAC,CAAapE,GACT,OAAO2D,KAAKC,QAAQS,SACxB,CACA,+BAAAC,CAAgCnE,GAC5B,OAAOkD,qBAAmBkB,QAAQC,QAAQrE,EAC9C,CACA,qBAAAsE,GACIC,MAAMD,wBACNd,KAAKgB,WACT,CACA,uBAAAC,CAAwBrF,EAAMsF,EAAKV,EAAKW,GAEpC,GADAJ,MAAME,wBAAwBrF,EAAMsF,EAAKV,EAAKW,IACzCA,EACD,OAAQvF,GACJ,IAAK,WACL,IAAK,SACL,IAAK,UACDoE,KAAKgB,YAIrB,CACA,SAAAA,GACI,MAAMI,EAAUpB,KAAK9B,SAAO,CAAKmD,IAC7B,IAAIC,EAAQD,EAAEE,YAAY3F,KAI1B,OAHIyF,EAAEG,KACFF,GAAS,IAAMD,EAAEG,IAEdF,CACV,GACKG,EAAS,GACfC,SAASC,iBAAiB3B,KAAKpC,UAAY,WAAWgE,QAAQ,CAACP,EAAGnC,EAAG2C,MAC5D1F,EAAAA,MAAMC,OAAO4D,KAAKnC,UAA8B,IAAnBmC,KAAKnC,OAAOwD,IAEtClF,QAAMQ,cAAc0E,EAAEG,KAC1BC,EAAOxD,KAAK,CAAE6D,QAAST,EAAGC,MAAOF,EAAQC,OAGjDrB,KAAKC,QAAQ8B,cAAgB,UAC7B/B,KAAKC,QAAQ+B,aAAe,QAC5BhC,KAAKC,QAAQgC,WAAaR,CAC9B,GAEJpD,EAAW,CACP6D,EAAAA,UAAUxE,EAAAA,EAAI,YACfoC,EAA0BF,UAAW,kBACxCvB,EAAW,CACP8D,EAAAA,SAAS,KACVrC,EAA0BF,UAAW,YAAa,MACrDE,EAA4BzB,EAAW,CACnC+D,gBAAc,CACV3E,QAASC,EAAAA,EAAI,kBAAmB2E,OAAQC,EAAAA,SAASC,gBACjDC,SAAU,IAAI9E,EAAAA,cAAcA,EAAAA,eAEjCoC,GCvFH,IAUW2C,EAVPpE,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUT,OAAQU,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWH,OAAS,EAAGe,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,CAChE,GAMA,SAAW4D,GACPA,EAA2B,SAAI,QAC/BA,EAAoC,kBAAI,WACxCA,EAA6B,WAAI,MACpC,CAJD,CAIGA,IAAqBA,EAAmB,CAAA,IAC3C,IAAIC,EAAyB,cAAqCtD,EAC9D,uBAAA6B,CAAwBrF,EAAMsF,EAAKV,EAAKW,GAEpC,GADAJ,MAAME,wBAAwBrF,EAAMsF,EAAKV,EAAKW,GACjC,cAATvF,EACAoE,KAAK2C,iBAAiB3C,KAAK3D,YAE1B,IAAK8E,GACFnB,KAAK4C,SACL,OAAQhH,GACJ,IAAK,UACD,GAAQ4E,IACCiC,EAAiBI,kBAClB7C,KAAK8C,QAAQC,aAGb/C,KAAKgD,QAAQD,QAGrB,MACJ,IAAK,WACI5G,EAAAA,MAAMQ,cAAc6D,KACrBR,KAAKgD,QAAQD,QACb/C,KAAKgD,QAAQ3G,MAAQ,OAAS2D,KAAKiD,WAAWzB,GAAK,IAAMhB,EAAM,QAEnER,KAAKkD,cAAc,IAAIC,MAAM,WAKjD,CACA,eAAIpD,GACA,MAAO,CAACC,KAAKgD,QACjB,CACA,kBAAA9C,CAAmBC,GACXA,IAEAH,KAAK4C,UAAW,EAExB,CACA,WAAAQ,GACIrC,MAAMqC,cACNpD,KAAK4C,UAAW,CACpB,CACA,QAAAxC,CAASC,GACL,OAAOlE,EAAAA,MAAMmE,WAAWN,KAAK3D,MAAQ2D,KAAKgD,QAAQ3G,MACtD,CACA,WAAAkE,CAAYC,GACRR,KAAKqD,MAAMC,YAAc9C,GAAO,MAChCR,KAAK2C,iBAAiBnC,GACtBR,KAAKuD,oBACD/C,IAAQR,KAAKgD,QAAQ3G,QACrB2D,KAAKgD,QAAQ3G,MAAQmE,EAE7B,CACA,gBAAAmC,CAAiBnC,EAAMR,KAAK3D,OACxB,MAAMoD,EAAYO,KAAKP,UACnBhD,EAAAA,mBAAmB+G,mBAAmBhD,IAAoD,mBAApCf,GAAaA,EAAUoB,SAC7Eb,KAAKyD,MAAM5G,aAAa,OAAQ2D,GAGhCR,KAAKyD,MAAMC,UADEC,IAARnD,EACa,cAGAf,EAAUoB,QAAQL,EAE5C,CACA,YAAAC,CAAapE,GACT,OAAOA,CACX,CACA,+BAAAsE,CAAgCnE,GAC5B,OAAOA,CACX,CACA,iBAAA+G,GACI,IAAIK,EAAU,KACV5D,KAAK6D,QAAU7D,KAAKiD,WAAajD,KAAK8D,cAA4BH,GAGlEI,EAAO/D,KAAK3D,MAChB,GAAKF,EAAAA,MAAMQ,cAAcoH,GAqBrBH,SAnBA,GAAInH,EAAAA,mBAAmB+G,mBAAmBO,GAAO,CAC7C,MAAyEC,EAAtDvH,EAAAA,mBAAmBwH,sBAAsBF,EAAM/D,MAAyBkE,aAE3F,GAAI/H,EAAAA,MAAMQ,cAAcqH,IAASA,EAAK7F,OAAS,GAAKgG,EAAAA,aAAaC,eAAeJ,EAAK,GAAGlC,SACpF9B,KAAK6D,QAAUpB,EAAiB4B,eAE/B,CACD,MAAMC,EAAMN,EAAK,GACjBhE,KAAK6D,QAAUpB,EAAiBI,kBAChC7C,KAAKiD,WAAavB,SAAS6C,cAAc,IAAMD,EAAIxC,QAAQN,IAC3DxB,KAAK8D,SAAWQ,EAAIE,IACxB,CACJ,MAEIxE,KAAK6D,QAAUpB,EAAiBgC,QAO5C,GAEJpG,EAAW,CACPmB,QAAM,CAAEkF,MAAM,KACfhC,EAAuB9C,UAAW,oBACrCvB,EAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBiF,WACvCjC,EAAuB9C,UAAW,mBACrCvB,EAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBC,UACvC+C,EAAuB9C,UAAW,kBACrCvB,EAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBkB,WACvC8B,EAAuB9C,UAAW,qBACrCvB,EAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBC,UACvC+C,EAAuB9C,UAAW,mBACrCvB,EAAW,CACP6D,EAAAA,UAAUxE,EAAAA,EAAI,oBACfgF,EAAuB9C,UAAW,kBACrCvB,EAAW,CACP6D,EAAAA,UAAUxE,EAAAA,EAAI,cACfgF,EAAuB9C,UAAW,kBACrCvB,EAAW,CACP6D,YAAU,QAAU0C,EAAAA,KAAO,gBAC5BlC,EAAuB9C,UAAW,gBACrCvB,EAAW,CACP6D,EAAAA,UAAUxE,EAAAA,EAAI,UACfgF,EAAuB9C,UAAW,gBACrCvB,EAAW,CACP8D,EAAAA,SAAS,KACVO,EAAuB9C,UAAW,oBAAqB,MAC1D8C,EAAyBrE,EAAW,CAChC+D,gBAAc,CACV3E,QAASC,EAAAA,EAAI,cAAe2E,OAAQC,EAAAA,SAASC,gBAC7CC,SAAU,IAAI9E,uBAAqBkH,EAAAA,0FACNA,EAAAA,+CAA+CA,kDAC9DA,+BACPlH,2FACIA,EAAAA,sBAAsB+E,EAAiBgC,sCAAsC/G,EAAAA,kCAC7EA,EAAAA,sBAAsB+E,EAAiBI,mDAAmDnF,EAAAA,kCAC1FA,EAAAA,sBAAsB+E,EAAiB4B,4CAA4C3G,EAAAA,+BACtFA,2CAGLA,EAAAA,kBAAkBkH,EAAAA,oDAAoDnC,EAAiBI,yCACnFnF,EAAAA,6KAA6KA,kCAChLA,wBACDA,EAAAA,kBAAkBkH,EAAAA,oDAAoDnC,EAAiBI,yCACnFnF,EAAAA,mLAAmLA,mCACtLA,0BAEDA,EAAAA,kBAAkBkH,+BACdlH,EAAAA,8GAA8G2B,aAAsBC,YAAYuF,aAAaC,WAAWpH,4BAC3KA,6BAERA,8BACUkH,2EAEQA,EAAAA,mBAAmBA,8DACDA,EAAAA,kCAAkCA,sFAC3DlH,2DACIA,EAAAA,6BAA6BkH,oGAAkGlH,EAAAA,4BAClIA,4BACDA,iKACakH,wEACTlH,EAAAA,qCAAqCkH,EAAAA,mCAAmCA,EAAAA,oDAAoDlH,4BAC/HA,oDAKbgF,GC7LH,IAAIrE,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUT,OAAQU,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWH,OAAS,EAAGe,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,CAChE,EAGA,MAAMkG,EAAKC,EAAAA,WAAaD,GAElBE,EAA8B,CAChCC,MAAO,CACH,CACInJ,KAAM,cAENoJ,KAAM,QACNC,QAAS,CAAExJ,KAAM,eACjBsJ,MAAO,CACHE,QAAS,CAAEC,SAAU,CAACT,EAAAA,KAAO,QAASA,EAAAA,KAAO,QAAS,cAAe,mBAAoB,gBAAiBhJ,KAAM,cAChHsJ,MAAOI,MAAM1F,UAAU2F,OAAOC,MAAM,CAChC,CACIzJ,KAAM,YAAaoJ,KAAM,SACzBC,QAAS,CAAEC,SAAU,CAACT,EAAAA,KAAO,QAAS,YAAa,YAAa,gBAAiB,iBAAkBhJ,KAAM,cACzG6J,WAAY,CAAC,CAAEN,KAAM,WAAYO,aAAc,OAEnD,CACI3J,KAAM,aAAcoJ,KAAM,SAC1BC,QAAS,CAAEC,SAAU,CAACT,EAAAA,KAAO,QAAS,YAAa,YAAa,gBAAiB,iBAAkBhJ,KAAM,eACzG6J,WAAY,CAAC,CAAEN,KAAM,WAAYO,aAAc,QAEpD,CAAC,OAAQ,SAAU,SAAU,UAAUC,IAAI,CAACC,EAAGC,KACvC,CACH9J,KAAM6J,EACNT,KAAM,UACNC,QAAS,CAAEC,SAAU,CAACT,EAAAA,KAAO,QAAS,YAAa,SAAU,gBAAiBA,OAAO,mBAAoBhJ,KAAMgK,EAAEE,OAAO,GAAGC,cAAgBH,EAAEI,OAAO,YAO/JC,EAAmB,CAC5Bb,QAAS,CAAExJ,KAAM,SAAUyJ,SAAU,CAACT,OAAO,QAAS,cAAe,mBAAoB,iBACzFM,MAAO,CACH,CAAEnJ,KAAM,MAAOoJ,KAAM,SAAUC,QAAS,CAAExJ,KAAM,MAAOyJ,SAAU,CAACT,EAAAA,KAAO,aAGjF,SAASsB,EAAgBN,GAErBA,EAAER,QAAUQ,EAAER,SAAW,CAAExJ,KAAMgK,EAAE7J,KAAMsJ,SAAU,KACvCO,EAAER,QAAQC,SAAWlJ,EAAAA,MAAMgK,QAAQP,EAAER,QAAQC,WAAaO,EAAER,QAAQC,UAAY,IACxFpH,KAAK2G,EAAAA,KAAO,QACpB,CACO,SAASwB,EAAgB/I,GAC5B,IAAI6H,EAAQ7H,GAAYA,EAAS6H,OAAS,GACtCE,EAAU/H,GAAYA,EAAS+H,SAAW,CAAExJ,KAAM,WACtD,IAAKO,EAAAA,MAAMC,OAAOgJ,GAAU,CACxB,MAAMiB,EAAMjB,EAAQC,SAAWD,EAAQC,UAAY,GACnDC,MAAM1F,UAAU3B,KAAKuH,MAAMa,EAAKJ,EAAiBb,QAAQC,SAC7D,CAEA,OADAH,EAAMtD,QAAQsE,GACP,CAAEd,QAASA,EAASF,MAAOA,EACtC,CACO,SAASoB,EAAoBjJ,GAChC,IAAI+H,EAAUjJ,EAAAA,MAAMoK,OAAO,GAAIN,EAAiBb,QAAS/H,GAAYA,EAAS+H,SAAW,IACrFF,EAAQ/I,EAAAA,MAAMqK,MAAMP,EAAiBf,OAQzC,OAPAI,MAAM1F,UAAU3B,KAAKuH,MAAMN,GAAQ7H,GAAYA,EAAS6H,OAAS,IAAIrH,OAAO+H,GACzD,QAAXA,EAAE7J,OAGNmK,EAAgBN,IACT,KAEJ,CAAER,QAASA,EAASF,MAAOA,EACtC,CACA,MAAMuB,EAAmB7B,EAAAA,KAAO,UAEnB8B,EAAmC,CAC5C9I,SAAU,IAAM6I,EAChBvI,QAAUmD,GACDlF,EAAAA,MAAMQ,cAAc0E,EAAEsF,MAGnBtF,EAAEhE,UAAYgE,EAAEhE,SAAS+H,SAAW/D,EAAEhE,SAAS+H,QAAQxJ,MAAQ,IAAM,IAAMyF,EAAEG,GAF1EH,EAAEsF,KAcrB,IAAIC,EAA4B,cAAwCC,EAAAA,WAAWC,aAE/E,cAAIC,GACA,OAAO/G,KAAKgH,QAChB,CAEA,qBAAIC,GACA,OAAOjH,KAAKkH,SAChB,CAEA,gBAAIC,GACA,OAAOnH,KAAKoH,UAChB,CACA,KAAAC,CAAMvL,GACF,MAAMwL,EAAOtH,KAAKuH,OAAOC,IAAIC,KAAKpG,GAAK,SAAUA,EAAEqG,YACnDJ,EAAKK,KAAK3H,KAAKzB,QAAQ,GACvB+I,EAAKjK,SAAW2C,KAAKzB,OAAOlB,SAE5B2C,KAAK4H,mBACT,CACA,gBAAAC,CAAiB/L,GACb,MAAMwL,EAAOtH,KAAKuH,OAAOC,IAAIC,KAAKpG,GAAK,gBAAiBA,EAAEqG,YAC1DJ,EAAKK,KAAK3H,KAAKzB,QACf+I,EAAKjK,SAAW2C,KAAKzB,OAAOuJ,mBAE5B9H,KAAK4H,mBACT,CACA,iBAAAA,GACI,MAAMG,EAAUtL,EAAAA,mBAAmBuL,mBAAmBhI,KAAM+E,EAAGkD,qBAC1D9L,EAAAA,MAAMQ,cAAcoL,IACrBA,EAAQG,QAEhB,GAEJ7J,EAAW,CACPmB,EAAAA,MAAM,CAAEkF,MAAM,EAAOjF,UAAWC,EAAAA,mBAAmBkB,WACpDgG,EAA0BhH,UAAW,iBACxCvB,EAAW,CACP6D,EAAAA,UAAU,mBACX0E,EAA0BhH,UAAW,mBACxCvB,EAAW,CACP6D,EAAAA,UAAUxE,EAAAA,EAAI,kBACfkJ,EAA0BhH,UAAW,mBACxCvB,EAAW,CACP6D,EAAAA,UAAUxE,EAAAA,EAAI,yBACfkJ,EAA0BhH,UAAW,oBACxCvB,EAAW,CACP6D,EAAAA,UAAUxE,EAAAA,EAAI,oBACfkJ,EAA0BhH,UAAW,qBACxCvB,EAAW,CACP6D,EAAAA,UAAUxE,EAAAA,EAAI,iBACfkJ,EAA0BhH,UAAW,iBACxCgH,EAA4BvI,EAAW,CACnC+D,gBAAc,CACV3E,QAASC,EAAAA,EAAI,kBAAmB2E,OAAQC,EAAAA,SAASC,gBACjDC,SAAU,IAAI9E,EAAAA,2DAA2DkH,EAAAA,mRAAmRlH,kCAC9UkH,EAAAA,kBAAkBA,cAAYA,EAAAA,iFAEzClH,EAAAA,sEAAsEA,yBACtEA,EAAAA,oLAAoLA,yBACpLA,EAAAA,yDAAyDA,oCAGjEA,0BACIA,EAAAA,uBAAuBA,yBACvBA,EAAAA,8BAA8BA,sBACjCA,EAAAA,oBAEDkJ,GAEI,MAAMuB,UAA2BtB,EAAAA,WAAWC,aAC/C,WAAAvF,CAAYlE,EAAU+K,EAAO,UACzBrH,MAAMqH,GACNpI,KAAK8H,mBAAqB7C,EAC1BjF,KAAK3C,SAAWA,CACpB,CACA,iBAAAgL,GACItH,MAAMsH,oBAEFlM,QAAMQ,cAAcqD,KAAKwB,MACzBxB,KAAKwB,GAAK,MAAQrF,EAAAA,MAAM6B,cAE5B7B,QAAMmM,SAAStI,KAAMyG,EACzB,CACA,uBAAAxF,CAAwBrF,EAAMsF,EAAKV,EAAKW,GAEpC,OADAJ,MAAME,wBAAwBrF,EAAMsF,EAAKV,EAAKW,GACtCvF,GACJ,IAAK,WACI4E,EAGIR,KAAKuI,SACVvI,KAAKwI,iBAHLxI,KAAKyI,kBAKT,MACJ,IAAK,UACItM,EAAAA,MAAMC,OAAO4D,KAAK0I,YACnB1I,KAAK0I,SAASC,UAAYnI,IAE7BA,EAAMrE,EAAAA,MAAMmM,SAAWnM,EAAAA,MAAMyM,aAAapD,MAAMxF,KAAM,CAACA,KAAM,UAAYpE,IAC1E,MACJ,IAAK,WACDoE,KAAK6I,YAAYrI,GAG7B,CACA,qBAAAM,GACIC,MAAMD,wBACNd,KAAK6I,cACL7I,KAAKwI,gBACT,CACA,oBAAAM,GACI/H,MAAM+H,sBACV,CACA,WAAAD,CAAYrI,EAAMR,KAAK3C,UACnB2C,KAAK+I,QAAc,KAAKvI,GAAOA,EAAI4E,SAAW5E,EAAI4E,QAAQ4D,MAAS,SACvE,CACA,cAAAR,GACI,GAAIrM,QAAMC,OAAO4D,KAAK0I,UAAW,CAC7B,MAAMX,EAAU/H,KAAK0I,SAAWhH,SAASuH,cAAcvL,EAAAA,EAAI,YAC3DqK,EAAQxJ,OAASyB,KACjB+H,EAAQY,UAAY3I,KAAKkJ,QACzBnB,EAAQoB,QAAU,CACdC,SAAUrE,EAAGsE,gBAAgBC,KAC7BC,QAASxE,EAAGyE,eAAeC,OAG/B1B,EAAQ2B,UAAY,IAAIhM,kCAAgCsC,KAAKwB,WAAW9D,EAAAA,oBAExEjB,EAAAA,mBAAmBkN,kBAAkB3J,MAAM4J,YAAY7B,EAC3D,CACJ,CACA,eAAAU,GACStM,EAAAA,MAAMC,OAAO4D,KAAK0I,YACnB1I,KAAK0I,SAASmB,SACd7J,KAAK0I,SAAW,KAExB,EAEJrK,EAAW,CACPmB,EAAAA,MAAM,CAAEkF,MAAM,EAAOjF,UAAWC,EAAAA,mBAAmBiF,WACpDwD,EAAmBvI,UAAW,kBACjCvB,EAAW,CACPmB,EAAAA,MAAM,CAAEkF,MAAM,EAAOjF,UAAWC,EAAAA,mBAAmBiF,WACpDwD,EAAmBvI,UAAW,mBACjCvB,EAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAMoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBC,UACtEwI,EAAmBvI,UAAW,cACjCvB,EAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAOoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBqK,QACvE5B,EAAmBvI,UAAW,sBACjCvB,EAAW,CACPmB,EAAAA,MAAM,CAAEkF,MAAM,EAAOjF,UAAWC,EAAAA,mBAAmBqK,QACpD5B,EAAmBvI,UAAW,mBACjCvB,EAAW,CACPmB,EAAAA,MAAM,CAAEkF,MAAM,EAAOjF,UAAWC,EAAAA,mBAAmBqK,QACpD5B,EAAmBvI,UAAW,6BC3PjC,IAAIvB,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUT,OAAQU,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWH,OAAS,EAAGe,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,CAChE,EAKA,MAAMmL,EAAgB,CAClB5E,QAAS,CAAE4D,KAAM,UAAWpN,KAAM,OAAQqO,YAAa,uBACvD/E,MAAO,CACH,CACInJ,KAAM,QAASoJ,KAAMpI,EAA0BqI,QAAS,CACpDxJ,KAAM,SACP+B,MAAO,CACNC,SAAU,IAAMgH,OAAO,cAKvC,IAAIsF,EAAyB,cAAqC/B,EAC9D,WAAA5G,GACIR,MAAMuF,EAAoB0D,GAC9B,GAEJ3L,EAAW,CACPmB,EAAAA,MAAM,CAAEsK,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBqK,QAC1DG,EAAuBtK,UAAW,gBACrCsK,EAAyB7L,EAAW,CAChC+D,gBAAc,CACV3E,QAASC,EAAAA,EAAI,kBAElBwM,GClCH,IAAI7L,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUT,OAAQU,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWH,OAAS,EAAGe,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,CAChE,EAMA,MAAMsL,EAA2B,CAC7BjF,MAAO,CACH,CAAEnJ,KAAM,OAAQoJ,KAAM,SAAUiF,YAAY,EAAMhF,QAAS,CAAExJ,KAAM,OAAQyJ,SAAU,CAAC,YAAa,YAAa,eAChH,CAAEtJ,KAAM,QAASoJ,KAAMpI,EAA0BqI,QAAS,CAAExJ,KAAM,QAASyJ,SAAU,CAAC,YAAa,YAAa,kBAGlHgF,EAAiB,CACnBjF,QAAS,CACL4D,KAAM,OAAQpN,KAAM,cAAeqO,YAAa,6DACjD/E,MAAO,CACN,CACInJ,KAAM,WAAYoJ,KAAMpI,EAA0BuN,eAAe,EAAMlF,QAAS,CAC5ExJ,KAAM,gBACP+B,MAAO,CACNC,SAAUF,EAAAA,EAAI,uBACf+H,WAAY,CAAC,CAAEN,KAAM,WAAYO,aAAc,uCAEtD,CACI3J,KAAM,WAAYoJ,KAAM,SAAUmF,eAAe,EAAMlF,QAAS,CAC5DxJ,KAAM,WAAY2O,GAAI,aACvB9E,WAAY,CAAC,CAAEN,KAAM,WAAYO,aAAc,sCAClD/H,MAAO,CACH6M,OAASC,GAAaA,EAASC,UAAU/E,IAAItE,GAAKlF,QAAMoK,OAAOlF,EAAG,CAAEsJ,SAAY,IAAItJ,EAAEuJ,OAAO7E,kBAAkB1E,EAAEmD,UAAWqG,OAC5H7I,aAAc,WAAYD,cAAe,WACzC+I,UAAW,CAAC,CAAE/O,KAAM,WAAYgP,MAAM,MAG9C,CACIhP,KAAM,aAAcoJ,KAAM,QAASC,QAAS,CACxCxJ,KAAM,cAEVsJ,MAAOkB,EAAgB+D,GACvBxM,MAAO,CACHqN,WAAW,EACXF,UAAW,CAAC,CAAE/O,KAAM,WAAYgP,MAAM,MAG9CE,IAGFC,EAAoBxN,EAAAA,EAAI,0BAC9B,IAAIyN,EAAmC,cAA+CC,mBAClF,uBAAAnK,CAAwBrF,EAAMsF,EAAKV,EAAKW,GACpCJ,MAAME,wBAAwBrF,EAAMsF,EAAKV,EAAIW,OAChC,UAATvF,GAAqBO,EAAAA,MAAMC,OAAO4D,KAAKqL,WACvCrL,KAAKqL,SAASC,OAEtB,CACA,qBAAAxK,GACIC,MAAMD,wBACUd,KAAKqL,SAAW5O,EAAAA,mBAAmBuL,mBAAmBhI,KAAMuL,GACvEpP,EAAAA,MAAMC,OAAO4D,KAAKqL,WAAclP,EAAAA,MAAMC,OAAO4D,KAAK3D,QACnD2D,KAAKqL,SAASC,OAEtB,GAEJjN,EAAW,CACPmB,EAAAA,MAAM,CAAEsK,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBiF,WAC1DwG,EAAiCvL,UAAW,mBAC/CvB,EAAW,CACPmB,EAAAA,MAAM,CAAEsK,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBC,UAC1DwL,EAAiCvL,UAAW,eAC/CvB,EAAW,CACPmB,EAAAA,MAAM,CAAEsK,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBC,UAC1DwL,EAAiCvL,UAAW,gBAC/CuL,EAAmC9M,EAAW,CAC1C+D,gBAAc,CAAE3E,QAASyN,KAC1BC,GAEH,IAAII,EAA0B,cAAsCC,EAChE,WAAAjK,GACIR,MAAMuF,EAAoB+D,IAC1BrK,KAAKyL,SAAYpK,IACbrB,KAAK0L,UAAY1L,KAAK2L,SAAU,IAEpC3L,KAAK4L,WAAcvK,IACfrB,KAAK0L,UAAY1L,KAAK2L,SAAU,IAEpC3L,KAAK6L,UAAaxK,IACdrB,KAAK8L,OAASzK,EAAEpF,OAExB,CACA,eAAI8P,GACA,OAAOzG,MAAM0G,KAAKhM,KAAKiM,cAAcC,UAAUrO,OAAOwD,GAAKA,EAAE8K,YAAcjB,EAC/E,CACA,KAAAI,GACI,MAAMc,EAAUpM,KAAKqL,SAAUgB,EAAarM,KAAK+L,aAAe,GAAIO,EAAWtM,KAAKsM,SACpF,IAAKnQ,EAAAA,MAAMC,OAAOkQ,GACd,IAAK,IAAIC,KAASD,EAASD,WACvB,GAAIE,EAAMC,UAAYrQ,QAAMC,OAAOiQ,EAAW5E,KAAK7B,GAAKA,EAAEhK,OAAS2Q,EAAM3Q,OAGrE,OAKZ,MAAM6Q,EAAS,CAAA,EACf,IAAK,IAAIC,KAAaL,EAClB,GAAKlQ,EAAAA,MAAMQ,cAAc+P,EAAUrQ,QAG9B,GAAIqQ,EAAUF,SAEf,YAJAC,EAAOC,EAAU9Q,MAAQ8Q,EAAUrQ,MAY3C,OALA+P,EAAQO,IAAM3M,KAAK2M,IACnBP,EAAQxB,OAAS5K,KAAK4K,OACtBwB,EAAQQ,YAAc5M,KAAK6M,iBAC3BT,EAAQU,QAAU9M,KAAK+M,aACvBX,EAAQC,WAAaI,EACdL,EAAQd,OACnB,CACA,qBAAAxK,GACIC,MAAMD,wBACNd,KAAKsL,OACT,CACA,uBAAArK,CAAwBrF,EAAMsF,EAAKV,EAAKW,GAEpC,GADAJ,MAAME,wBAAwBrF,EAAMsF,EAAKV,EAAKW,GACjC,aAATvF,GAAwBO,EAAAA,MAAMQ,cAAc6D,GAI5C,OAAQ5E,GACJ,IAAK,aACL,IAAK,eACL,IAAK,mBACL,IAAK,MACL,IAAK,SACDoE,KAAKsL,aATbtL,KAAKgN,eAAexM,EAY5B,CACA,cAAAwM,CAAeV,EAAWtM,KAAKsM,UAC3BtM,KAAK2M,IAAM3M,KAAKyK,SAASwC,QAAUX,EAAS9H,KAC5CxE,KAAK4K,OAAS0B,EAAS1B,OACvB5K,KAAKkN,OAASZ,EAASa,SAASD,OAChC,MAAME,EAAepN,KAAKiM,cAAeI,EAAarM,KAAK+L,YAE3D,IAAK,IAAIlG,EAAIwG,EAAWlO,OAAS,EAAG0H,GAAK,EAAGA,IAAK,CAC7C,IAAIwH,EAAOhB,EAAWxG,GAClByH,EAAWhB,EAASD,WAAW5E,KAAK7B,GAAKA,EAAEhK,OAASyR,EAAKzR,MACzDO,EAAAA,MAAMC,OAAOkR,IACbD,EAAKxD,QAEb,CAEA,IAAK,IAAI0C,KAASD,EAASD,WAAY,CACnC,IAAIkB,EAAWlB,EAAW5E,KAAK7B,GAAKA,EAAEhK,OAAS2Q,EAAM3Q,MACrD,GAAIO,EAAAA,MAAMC,OAAOmR,GAAW,CACxB,IAAIF,EAAOE,EAAW7L,SAASuH,cAAciC,GAC7CmC,EAAKzR,KAAO2Q,EAAM3Q,KAClBwR,EAAaxD,YAAYyD,EAC7B,CACAE,EAASf,SAAWD,EAAMC,QAC9B,CAEAxM,KAAKqM,WAAaA,CACtB,GAEJhO,EAAW,CACPmB,QAAM,CAAEsK,aAAa,EAAMpF,MAAM,EAA0CjF,UAAWC,EAAAA,mBAAmBqK,QAC1GwB,EAAwB3L,UAAW,mBACtCvB,EAAW,CACPmB,QAAM,CAAEsK,aAAa,EAAMpF,MAAM,EAA0CjF,UAAWC,EAAAA,mBAAmBqK,QAC1GwB,EAAwB3L,UAAW,mBACtCvB,EAAW,CACPmB,QAAM,CAAEsK,aAAa,EAAMpF,MAAM,EAAOjF,UAAWC,EAAAA,mBAAmBC,UACvE4L,EAAwB3L,UAAW,cACtCvB,EAAW,CACPmB,QAAM,CAAEsK,aAAa,EAAMpF,MAAM,EAAOjF,UAAWC,EAAAA,mBAAmBC,UACvE4L,EAAwB3L,UAAW,iBACtCvB,EAAW,CACPmB,QAAM,CAAEsK,aAAa,EAAMpF,MAAM,EAAOjF,UAAWC,EAAAA,mBAAmBqK,QACvEwB,EAAwB3L,UAAW,iBACtCvB,EAAW,CACPmB,EAAAA,SACD+L,EAAwB3L,UAAW,qBACtCvB,EAAW,CACPmB,EAAAA,SACD+L,EAAwB3L,UAAW,iBACtCvB,EAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBiF,WACvC4G,EAAwB3L,UAAW,mBACtCvB,EAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBiF,WACvC4G,EAAwB3L,UAAW,kBACtCvB,EAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBiF,WACvC4G,EAAwB3L,UAAW,kBACtCvB,EAAW,CACP6D,EAAAA,UAAUxE,EAAAA,EAAI,WACf6N,EAAwB3L,UAAW,mBACtCvB,EAAW,CACP6D,EAAAA,UAAU,gBACXqJ,EAAwB3L,UAAW,wBACtC2L,EAA0BlN,EAAW,CACjC+D,gBAAc,CACV3E,QAASC,EAAAA,EAAI,gBAAiB2E,OAAQC,EAAAA,SAASC,gBAC/CC,SAAU,IAAI9E,0FACjB8P,EAAAA,IAAIC,qDAAqDD,EAAAA,IAAIE,mDAAmDF,EAAAA,IAAIG,sDAAsDjQ,EAAAA,wBAAwBA,EAAAA,eAAeA,EAAAA,sBAEnN6N,GCtNH,IAAIlN,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUT,OAAQU,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWH,OAAS,EAAGe,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,CAChE,EAOO,MAKMoM,EAAwB,CACjClP,KAAM,cAAeoJ,KAAMpI,EAA0BqI,QAAS,CAAExJ,KAAM,gBACtE+B,MAAOxB,EAAAA,MAAMoK,OAAO,CAAA,EAAIG,EAAkC,CAAE7I,OAASwD,GAAMA,aAAa6I,GAA0B7I,aAAakK,KAE5H,MAAMC,UAAiCrD,EAC1C,WAAA5G,GACIR,SAASnC,WACToB,KAAK6M,iBAAmB,aAC5B,CACA,uBAAA5L,CAAwBrF,EAAMsF,EAAKV,EAAKW,GACpCJ,MAAME,wBAAwBrF,EAAMsF,EAAKV,EAAKW,GACjC,gBAATvF,IACKO,EAAAA,MAAMQ,cAAc6D,GAIrBR,KAAK+M,aAAe,CAAA,EAHpB/M,KAAK+M,aAAe,CAAEa,cAAiB,UAAYpN,GAM/D,EAEJnC,EAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAOoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBC,UACvE6L,EAAyB5L,UAAW,2BACvCvB,EAAW,CACPmB,EAAAA,MAAM,CAAEkF,MAAM,EAAOjF,UAAWC,EAAAA,mBAAmBqK,QACpDyB,EAAyB5L,UAAW,uBACvCvB,EAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAOoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBC,UACvE6L,EAAyB5L,UAAW,sBACvCvB,EAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBiF,WACvC6G,EAAyB5L,UAAW,mBCjDvC,IAAIvB,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUT,OAAQU,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWH,OAAS,EAAGe,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,CAChE,EAIA,IAAIgP,EAA+B,cAA2C1F,IAE9E0F,EAA+BxP,EAAW,CACtC+D,gBAAc,CACV3E,QAASC,EAAAA,EAAI,wBAElBmQ,GCfH,IAAIxP,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUT,OAAQU,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWH,OAAS,EAAGe,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,CAChE,EAKA,MAAMmL,EAAgB,CAClB5E,QAAS,CAAE4D,KAAM,QAASpN,KAAM,QAASqO,YAAa,iBACtD/E,MAAO,CACH,CACInJ,KAAM,WAAYoJ,KAAMpI,EAA0BqI,QAAS,CACvDxJ,KAAM,mBACP+B,MAAO,CACNC,SAAU,IAAMgH,OAAO,UAAWkJ,KAAM,KAE5CrI,WAAY,CAAC,CACLN,KAAM,QAASO,aAAc,+BAAgC+G,OAAQ,CAAEsB,IAAK,QAKhG,IAAIC,EAA0B,cAAsC7F,EAChE,WAAA5G,GACIR,MAAMuF,EAAoB0D,IAC1BhK,KAAKiO,SAAW,CACpB,GAEJ5P,EAAW,CACPmB,EAAAA,MAAM,CAAEsK,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBwO,UAC1DF,EAAwBpO,UAAW,mBACtCvB,EAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBwO,UACvCF,EAAwBpO,UAAW,eACtCoO,EAA0B3P,EAAW,CACjC+D,gBAAc,CACV3E,QAASC,EAAAA,EAAI,gBAAiB8E,SAAU,IAAI9E,EAAAA,qFAAqFA,EAAAA,cAEtIsQ,GCtCH,MAAMG,EAAM,oBACL,MAAMC,EACT,WAAA7M,CAAY8M,EAAW,IAAI/O,EAAAA,YAAYgP,QAAQC,eAC3CvO,KAAKqO,SAAWA,EAChBrO,KAAKwO,oBAAsB,EAC/B,CACA,UAAMC,CAAK9B,EAAKG,GACZ,IAAI4B,QAAY1O,KAAKqO,SAASI,KAAK9B,EAAKG,GACxC,GAAW,MAAP4B,EAAa,CACbA,EAAIP,GAAO,CAAA,EAEX,IAAK,IAAI7B,KAAYoC,EAAIhE,gBACf1K,KAAK2O,eAAeD,EAAKpC,EAAUQ,EAEjD,CACA,OAAO4B,CACX,CACA,oBAAMC,CAAeD,EAAKpC,EAAUQ,GAChC,MAAMK,EAAWb,EAASa,SACtBA,GAAYA,EAAS/P,OACrB+P,EAASD,aAAelN,KAAK4O,eAAeF,EAAK,CAAE9S,KAAMuR,EAAS0B,SAAUC,OAAQ3B,EAAS/P,MAAQ0P,IAGzG,MAAMT,EAAaC,EAASD,WAC5B,IAAK,IAAIK,KAAcL,GAAc,GACjC,GAAIK,EAAUtP,MAAQsP,EAAUmC,SAAU,CACtC,IAAI3B,QAAelN,KAAK4O,eAAeF,EAAK,CAAE9S,KAAM8Q,EAAUmC,SAAUC,OAAQpC,EAAUtP,MAAQ0P,GAClGJ,EAAUQ,OAASA,CACvB,CAER,CACA,UAAA6B,GACI,MAAMC,EAAQhP,KAAKgP,MAAOC,EAAOjP,KAAKwO,oBACtC,GAAIQ,EAAO,CACP,IAAK,IAAIxQ,KAAOyQ,EACZD,EAAME,eAAe1Q,GAGzByQ,EAAKE,OAAO,EAChB,CACJ,CAMA,oBAAMP,CAAeF,EAAKU,EAAMtC,GAC5B,IAAIuC,EAASC,MAAOC,IAChB,IAAIC,EAAO,GACX,GAAID,GAAQA,EAAK3T,KAAM,CAEnB,GAAI8S,EAAIP,GAAKoB,EAAK3T,MACd,OAAO8S,EAAIP,GAAKoB,EAAK3T,MAE4E8S,EAAIP,GAAKoB,EAAK3T,MAAQ4T,EAC3H,IAA0BC,EAAtBrS,EAAO,CAAE8H,MAAO,IACpB,IAAI,eAAewK,KAAKH,EAAK3T,MAMzB,YADA+T,QAAQC,KAAK,0LAGjB,GANIH,EAAcF,EAAK3T,KAMnB6T,EAAa,CACb,IAAII,EAAaP,UACb,IAAInC,QAAiB7B,MAAMmE,EAAa,CAAE7C,YAAa,OAAQkD,KAAM,OAAQhD,QAASA,IACtF,GAAIK,EAAS4C,GACT,aAAa5C,EAAS6C,QAG1BhQ,KAAKgP,OAEL5R,EAAO4C,KAAKgP,MAAMiB,iBAAiBR,GAC9BrS,IAEDA,QAAayS,IACb7P,KAAKwO,oBAAoBvQ,KAAKwR,GAC9BzP,KAAKgP,MAAMkB,iBAAiBT,EAAarS,GAA+C,KAK5FA,QAAayS,GAErB,CACA,IAAIf,EAASS,EAAKT,OAClB,IAAK,IAAIqB,KAAOrB,EAAOsB,WAAY,CAC/B,IAAIC,EAASvB,EAAOsB,WAAWD,GAAMG,EAAQlT,GAAQA,EAAK8H,MAAMuC,KAAK7B,GAAKA,EAAE7J,OAASoU,GACjFI,EAAYzR,OAAO0R,OAAO,CAC1BzU,KAAMoU,EAAKhL,KAAMkL,EAAOlL,MAAQ,OAAQD,WAAOvB,GAChD2M,GAAmD,CAAElG,YAAY,IACpE,GAAIkG,EAAO,CACP,IAAIG,EAAQJ,EAAOK,OAASL,EAAOK,MAAMD,MAASJ,EAAOI,KACzD,GAAIA,EAAM,CACN,IAAIE,EAAMrR,cAAYgP,QAAQsC,qBAAqBlC,EAAK+B,GAAOjS,EAAMmS,EAAI/U,KACrE8S,EAAIP,GAAK3P,GACT+R,EAAUrL,MAAQwJ,EAAIP,GAAK3P,GAI3B+R,EAAUrL,YAAcmK,EAAOsB,EAEvC,CACJ,CACAnB,EAAKvR,KAAKsS,EACd,CACJ,CACA,OAAOf,GAEX,aAAaH,EAAOD,EACxB,2DClHA/Q,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUT,OAAQU,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWH,OAAS,EAAGe,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,CAChE,EAMA,MAAMgS,EAAuB,CACzBzL,QAAS,CAAE4D,KAAM,eAAgBpN,KAAM,eAAgBqO,YAAa,0CACpE/E,MAAO,CACH,CACInJ,KAAM,MAAOoJ,KAAM,OAAQC,QAAS,CAChCxJ,KAAM,MAAOqO,YAAa,oDAAqD5E,SAAU,CAAC,aAC1FyL,UAAW,8CAEfnT,MAAO,CAAEoT,SAAS,GAClBtL,WAAY,CAAC,CACLN,KAAM,WAAYO,aAAc,4BAG5C,CACI3J,KAAM,WAAYoJ,KAAM,UAAWC,QAAS,CACxCxJ,KAAM,gBAAiBqO,YAAa,yCAA0C5E,SAAU,CAAC,aACzFkF,GAAI,YAER5M,MAAO,CAAEoT,SAAS,IAEtB9F,IAGR,IAAI+F,EAAgC,cAA4CxF,EAC5E,WAAAjK,CAAY0P,EAAW,IAAI7C,EAAoB8C,EAAS,IAAIC,EAAAA,SACxDpQ,MAAMuF,EAAoBuK,IAC1B7Q,KAAKiR,SAAWA,EAChBjR,KAAKkR,OAASA,CAClB,CACA,uBAAAjQ,CAAwBrF,EAAMsF,EAAKV,EAAKW,GAEpC,OADAJ,MAAME,wBAAwBrF,EAAMsF,EAAKV,EAAKW,GACtCvF,GACJ,IAAK,MACL,IAAK,UACL,IAAK,WACDoE,KAAKoR,YACL,MACJ,IAAK,WACDpR,KAAKiR,SAASjC,MAAQxO,EAAMR,KAAKkR,OAAS,KAGtD,CACA,qBAAApQ,GACIC,MAAMD,wBACFd,KAAKqR,WACLrR,KAAKiR,SAASjC,MAAQhP,KAAKkR,QAE/BlR,KAAKoR,WACT,CACA,SAAAA,GACQpR,KAAKkJ,SAAWlJ,KAAKsR,WAAanV,EAAAA,MAAMQ,cAAcqD,KAAK2M,OAC3D3M,KAAKuR,UAAW,EAChBvR,KAAKiR,SAASxC,KAAKzO,KAAK2M,KAAK6E,KAAKC,IAC9BzR,KAAKyK,SAAWgH,EAChBzR,KAAKuR,UAAW,GACjBlR,IACCL,KAAKuR,UAAW,IAG5B,GAEJlT,EAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAOoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBC,UACvEqR,EAA8BpR,UAAW,cAC5CvB,EAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAOoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBiF,WACvEqM,EAA8BpR,UAAW,mBAC5CvB,EAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBqK,QACvCiH,EAA8BpR,UAAW,mBAC5CoR,EAAgC3S,EAAW,CACvC+D,EAAAA,cAAc,CAAE3E,QAASC,EAAAA,EAAI,yBAC9BsT,GCnFH,IAAI3S,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUT,OAAQU,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWH,OAAS,EAAGe,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,CAChE,EAIO,MAAM6S,UAA6BvJ,EACtC,WAAA5G,CAAYlE,EAAUsU,EAAU,EAAGvJ,GAC/BrH,MAAM1D,EAAU+K,GAChBpI,KAAK2R,QAAUA,EACf3R,KAAK4R,QAAU,CACnB,CAEA,iBAAAvJ,GACItH,MAAMsH,oBACNlM,EAAAA,MAAMmM,SAAStI,KAAM,aAAe4E,EAAAA,KAAO,sDAC/C,CACA,uBAAA3D,CAAwBrF,EAAMsF,EAAKV,EAAKW,GAEpC,OADAJ,MAAME,wBAAwBrF,EAAMsF,EAAKV,EAAKW,GACtCvF,GACJ,IAAK,MACDO,EAAAA,MAAMyM,YAAY5I,KAAM,cAAckB,EAAM,KAC5C/E,EAAAA,MAAMmM,SAAStI,KAAM,cAAcQ,EAAM,KACzC,MACJ,IAAK,UACDrE,EAAAA,MAAMyM,YAAY5I,KAAM,QAAQkB,KAChC/E,EAAAA,MAAMmM,SAAStI,KAAM,QAAQQ,KAC7B,MACJ,IAAK,SACDrE,EAAAA,MAAMyM,YAAY5I,KAAM,cAAckB,EAAM,KAC5C/E,EAAAA,MAAMmM,SAAStI,KAAM,cAAcQ,EAAM,KACzC,MACJ,IAAK,UACDrE,EAAAA,MAAMyM,YAAY5I,KAAM,QAAQkB,KAChC/E,EAAAA,MAAMmM,SAAStI,KAAM,QAAQQ,KAC7B,MACJ,IAAK,WACAR,KAAK6R,QAAU1V,QAAMmM,SAAWnM,EAAAA,MAAMyM,aAAapD,MAAMxF,KAAM,CAACA,KAAM4E,EAAAA,KAAO,YAC9E,MACJ,IAAK,WACA5E,KAAK6R,QAAU1V,QAAMmM,SAAWnM,EAAAA,MAAMyM,aAAapD,MAAMxF,KAAM,CAACA,KAAM4E,EAAAA,KAAO,aAG1F,CACA,aAAIkN,GACA,OAAO9R,KAAK+R,UAChB,CAEA,aAAAC,GACI,OAAOvV,EAAAA,mBAAmBwV,aAAajS,KAAMkS,GAAKA,aAAaC,EACnE,CACA,qBAAArR,GACIC,MAAMD,wBACN,IAAIsR,EAAOpS,KAAK+R,WAAa/R,KAAKgS,gBAC7B7V,EAAAA,MAAMC,OAAOgW,IACdA,EAAKC,SAASrS,KAEtB,CACA,oBAAA8I,GACS3M,EAAAA,MAAMC,OAAO4D,KAAK+R,aACnB/R,KAAK+R,WAAWO,WAAWtS,MAE/Be,MAAM+H,sBACV,EAEJzK,EAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAMoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBwO,UACtEwD,EAAqB9R,UAAW,iBACnCvB,EAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAMoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBwO,UACtEwD,EAAqB9R,UAAW,cACnCvB,EAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAMoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBwO,UACtEwD,EAAqB9R,UAAW,kBACnCvB,EAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAMoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBwO,UACtEwD,EAAqB9R,UAAW,kBACnCvB,EAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAMoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBiF,WACtE+M,EAAqB9R,UAAW,kBACnCvB,EAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAMoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBiF,WACtE+M,EAAqB9R,UAAW,kBAC5B,MAAM2S,EAA0B,iBAC1BC,EAA4B,mBAElC,MAAMC,UAA4BC,YACrC,WAAAnR,CAAY8L,EAAMsF,GACd5R,MAAMwR,EAAyBpW,EAAAA,MAAMoK,OAAOoM,GAAa,CAAA,EAAI,CAAE1W,OAAQoR,IAC3E,EAEG,MAAMuF,UAA8BF,YACvC,WAAAnR,CAAY8L,EAAMsF,GACd5R,MAAMyR,EAA2BrW,EAAAA,MAAMoK,OAAOoM,GAAa,CAAA,EAAI,CAAE1W,OAAQoR,IAC7E,EAEG,MAAM8E,UAAoCT,EAC7C,gBAAItE,GACA,OAAOpN,IACX,CACA,QAAA6S,CAASxF,GACL,OAAOA,aAAgBqE,CAC3B,CACA,qBAAA5Q,GACIC,MAAMD,wBACN3E,EAAAA,MAAMmM,SAAStI,KAAKoN,aAAcxI,EAAAA,KAAO,iBAC7C,CAKA,UAAAkO,CAAWzF,GACPrN,KAAKoN,aAAaxD,YAAYyD,EAClC,CAKA,QAAAgF,CAAShF,GACL,IAAKrN,KAAK6S,SAASxF,GAEf,OADArN,KAAK+S,IAAIC,EAAAA,QAAQC,SAASC,MAAO,GAAI7F,GAAQA,EAAKlB,iDAAkDnM,KAAKmM,uBAClG,EAEX,IAAI1K,GAAS,EACb,MAAMiP,EAAQ1Q,KAAK0Q,MAAQ1Q,KAAK0Q,OAAS,GAazC,OAZIvU,EAAAA,MAAMQ,cAAc+T,IACpB1Q,KAAK0Q,MAAQ,CAACrD,GACd5L,GAAS,IAEoB,IAAxBiP,EAAMyC,QAAQ9F,KACnBqD,EAAMzS,KAAKoP,GACX5L,GAAS,GAGTA,GACAzB,KAAKoT,cAAc,IAAIX,EAAoBpF,IAExC5L,CACX,CAKA,UAAA6Q,CAAWjF,GACP,MAAMqD,EAAQ1Q,KAAK0Q,MAAO2C,GAAOlX,EAAAA,MAAMQ,cAAc+T,IAAUA,EAAMyC,QAAQ9F,GAC7E,GAAIgG,GAAO,EAAG,CACV,IAAIhG,EAAOqD,EAAMvB,OAAOkE,EAAK,GAE7B,OADArT,KAAKoT,cAAc,IAAIR,EAAsBvF,EAAK,MAC3C,CACX,CACA,OAAO,CACX,EAEJhP,EAAW,CACPmB,EAAAA,SACD2S,EAA4BvS,UAAW,gBC9J1C,IAAIvB,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUT,OAAQU,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWH,OAAS,EAAGe,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,CAChE,EAMA,MAAMyU,GAAgBhN,EAAoB,CACtClB,QAAS,CAAE4D,KAAM,gBAAiBpN,KAAM,OAAQqO,YAAa,sBAC7D/E,MAAO,CAAC,CACAnJ,KAAM,OAAQoJ,KAAMpI,EAA0BqI,QAAS,CAAExJ,KAAM,QAAU+B,MAAO+I,MAG5F,IAAI6M,GAAyB,cAAqC7B,EAC9D,WAAAnQ,GACIR,MAAMuS,GACV,GAEJjV,EAAW,CACPmB,EAAAA,MAAM,CAAEsK,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBC,UAC1D4T,GAAuB3T,UAAW,eACrC2T,GAAyBlV,EAAW,CAChC+D,gBAAc,CACV3E,QAASC,EAAAA,EAAI,eAAgB2E,OAAQC,EAAAA,SAASC,gBAC9CC,SAAU,IAAI9E,EAAAA,oCAAoCA,EAAAA,aAEvD6V,IC9BH,IAAIlV,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUT,OAAQU,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWH,OAAS,EAAGe,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,CAChE,EAOA,IAAI2U,GAA2B,cAAuCrB,EAClE,QAAAE,CAAShF,GACL,MAAM5L,EAASV,MAAMsR,SAAShF,GAI9B,OAHI5L,IACA4L,EAAKtC,MAAO,GAETtJ,CACX,GAEJpD,GAAW,CACP6D,EAAAA,UAAUxE,EAAAA,EAAI,eACf8V,GAAyB5T,UAAW,oBACvC4T,GAA2BnV,GAAW,CAClC+D,gBAAc,CACV3E,QAASC,EAAAA,EAAI,iBAAkB2E,OAAQC,EAAAA,SAASC,gBAChDC,SAAU,IAAI9E,0EAEXA,EAAAA,kDAAkDkH,oGACrCA,mEACTlH,EAAAA,oEAAoEkH,+BAA6BlH,EAAAA,yBACjGA,EAAAA,qDAAqDA,wBACxDA,kCAERA,mBACDA,EAAAA,kCAAkCkH,2BAAyBlH,EAAAA,kBAC3DA,EAAAA,eAAeA,EAAAA,gBAEf8V,ICvCH,IAAInV,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUT,OAAQU,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWH,OAAS,EAAGe,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,CAChE,EAKA,SAAS4U,KACL,MAAMC,EAAMhS,SAASiS,gBAAgB,6BAA8B,OAUnE,OATAD,EAAIE,MAAMC,cAAgB,OAC1BH,EAAIE,MAAME,OAAS,OACnBJ,EAAI7W,aAAa,SAAU,QAC3B6W,EAAI7W,aAAa,QAAS,QAC1B6W,EAAI7W,aAAa,sBAAuB,QACxC6W,EAAI7W,aAAa,QAAS,qBAG1B6W,EAAIhK,UAAY,6DACTgK,CACX,CACO,MAGDK,GAAgB,CAClB3O,QAAS,CACL4D,KAAM,UACNpN,KAAM,OACNqO,YAAa,uEAEjB/E,MAAO,CACH,CACInJ,KAAM,OAAQoJ,KAAM,MAAOC,QAAS,CAChCxJ,KAAM,OAAQyJ,SAAU,CAAC,cAC1BI,WAAY,CACX,CAAEN,KAAM,WAAYO,aAAc,IAClC,CACIP,KAAM,QAASO,aAAc,GAAI+G,OAAQ,CACrCsB,IAAK,EAAGiG,IAAK,OAI1B,CACCjY,KAAM,SAAUoJ,KAAM,MAAOC,QAAS,CAElCxJ,KAAM,UAAWyJ,SAAU,CAAC,cAC7BI,WAAY,CAEX,CACIN,KAAM,QAASO,aAAc,GAAI+G,OAAQ,CACrCsB,IAAK,EAAGiG,IAAK,EAAGlG,KAAM,QAInC,CACC/R,KAAM,YAAaoJ,KAAM,MAAOC,QAAS,CAErCxJ,KAAM,aAAcyJ,SAAU,CAAC,cAChCI,WAAY,CAEX,CACIN,KAAM,QAASO,aAAc,GAAI+G,OAAQ,CACrCsB,IAAK,EAAGiG,IAAK,EAAGlG,KAAM,UAO9C,IAAImG,GAAyB,cAAqC9B,EAC9D,WAAA5Q,GACIR,MAAMuF,EAAoByN,IAlDN,GAkDwC,QAC5D/T,KAAKkU,sBAAyBpY,IAC1B,GAAgC,QAA5BA,EAAIG,OAAOC,cAAsD,YAA5BJ,EAAIG,OAAOC,aAA4B,CAC5E,MAAMiY,EAASrY,EAAIyC,OACnByB,KAAKoU,KAAOC,KAAKL,IAAIhU,KAAKoU,KAAMD,EAAOG,IAAMH,EAAOvC,QACxD,GAEJ5R,KAAKuU,iBAAoBzY,IACrB,MAAMH,EAAOG,EAAIG,OAAQuY,EAAK7Y,EAAKmG,QACnC,OAAQhG,EAAIqJ,MACR,KAAKJ,EAAAA,GAAG0P,kBAAkBC,MACtB1U,KAAK2U,WAAW/S,QAAQ8R,IAASA,EAAIE,MAAMC,cAAgB,SAC3D7T,KAAK4U,WAAa,CACdjD,QAAS6C,EAAG7C,QACZC,QAAS4C,EAAG5C,QACZzB,IAAKqE,EAAGnE,OACRiE,IAAKE,EAAGF,KAEZ,MACJ,KAAKvP,EAAAA,GAAG0P,kBAAkBI,IACtB7U,KAAK2U,WAAW/S,QAAQ8R,IAASA,EAAIE,MAAMC,cAAgB,SAC3D,MACJ,KAAK9O,EAAAA,GAAG0P,kBAAkBK,KACtB,IAAIC,EAAapZ,EAAK4C,OAClB4R,GAAO4E,EAAWnB,MAAMoB,gBAAkB,EAC1CV,GAAOS,EAAWnB,MAAMqB,aAAe,EAC3C,MAAMC,EAAW/E,EAAMnQ,KAAK4U,WAAWjD,QAASwD,EAAYb,EAAMtU,KAAK4U,WAAWhD,QAElF,IAAK5R,KAAKoV,YAAYZ,EAAIrE,EAAKmE,EAAKE,EAAG7C,QAAS6C,EAAG5C,SAAU,CACzD,IAAIyD,GAAmB,EAEnBH,IAAalV,KAAKsV,SAjFlB,MAkFAD,EAAmBb,EAAGnE,SAAWF,EACjCqE,EAAGnE,OAASF,GAEZgF,IAAcnV,KAAKoU,MAnFzB,KAoFMiB,EAAmBA,GAAqBb,EAAGF,MAAQA,EACnDE,EAAGF,IAAMA,EAMjB,IAKZtU,KAAKuV,eAAkBzZ,IACnB,OAAQA,EAAIqJ,MACR,KAAKJ,EAAAA,GAAGyQ,iBAAiBd,MACrBvY,EAAAA,MAAMmM,SAASxM,EAAIG,OAAO6F,QAAS8C,EAAAA,KAAO,cAC1C5E,KAAK2U,WAAW/S,QAAQ8R,IAASA,EAAIE,MAAMC,cAAgB,SAC3D,MACJ,KAAK9O,EAAAA,GAAGyQ,iBAAiBX,IACrB7U,KAAK2U,WAAW/S,QAAQ8R,IAASA,EAAIE,MAAMC,cAAgB,SAC3D1X,EAAAA,MAAMyM,YAAY9M,EAAIG,OAAO6F,QAAS8C,EAAAA,KAAO,cAC7C,MACJ,KAAKG,EAAAA,GAAGyQ,iBAAiBC,QACrB3Z,EAAI4Z,iBAEJ,MAAMC,EAAM,CAAEC,EAAG9Z,EAAI+Z,QAASC,EAAGha,EAAIia,SAAWC,EAASla,EAAIG,OAAO+Z,OAC9DjB,EAAarT,SAASuU,kBAAkBN,EAAIC,EAAGD,EAAIG,GAAGrO,KAAKpG,GAAKrB,KAAKkW,UAAUC,YAAYhD,QAAQ9R,IAAM,GAC/G,GAAI0T,EAAY,CACZ,IAAI5E,GAAO4E,EAAWnB,MAAMoB,gBACxBV,GAAOS,EAAWnB,MAAMqB,aAC5B,MAAMd,EAASrY,EAAIG,OAAO6F,QAASsU,EAAWjC,EAAO9D,OAAS,EAAGgG,EAAWlC,EAAOG,IAAM,EACnF3C,EAAU,EAAIxB,EAAMiG,EAAUxE,EAAU,EAAI0C,EAAM+B,EACxD,IAAKrW,KAAKoV,YAAYjB,EAAQA,EAAO9D,OAAQ8D,EAAOG,IAAK3C,EAASC,GAAU,CACxE,IAAIyD,GAAmB,EAEnBlF,GAAOiG,GAAYJ,EAAOM,SAAS,WACnCjB,EAAmBlB,EAAOxC,UAAYA,EACtCwC,EAAOxC,QAAUA,GAEjB2C,GAAO+B,GAAYL,EAAOO,WAAW,YACrClB,EAAmBA,GAAoBlB,EAAOvC,UAAYA,EAC1DuC,EAAOvC,QAAUA,EAMzB,CACJ,IAIZ5R,KAAK2U,WAAa,EACtB,CACA,QAAAtC,CAAShF,GACL,IAAI5L,EAASV,MAAMsR,SAAShF,GAC5B,GAAI5L,EAAQ,CACR,MAAM6S,EAAMjH,EAAKiH,KAAO,EAAGjE,EAAShD,EAAKgD,QAAU,EAAGsB,EAAUtE,EAAKsE,SAAW,EAAGC,EAAUvE,EAAKuE,SAAW,EAC7G,IAAI4E,GAAaxW,KAAKoV,YAAY/H,EAAMgD,EAAQiE,EAAK3C,EAASC,GAC9D,GAAI4E,EACAnJ,EAAKiH,IAAMA,EACXjH,EAAKgD,OAASA,EACdhD,EAAKsE,QAAUA,EACftE,EAAKuE,QAAUA,MAEd,CACD,IAAK4E,EAAW,CAEZ,IAAIC,EAAQ,CAACC,GAAmB,KAC5B,IAAIC,EAAc3W,KAAKsV,QAAU,EAC5BoB,IACDC,EAAcA,EAAchF,EAAU,GAE1C,IAAK,IAAI9L,EAAI,EAAGA,EAAI7F,KAAKoU,KAAMvO,IAAK,CAChC,IAAK,IAAI3G,EAAI,EAAGA,GAAKyX,EAAazX,IAC9B,IAAKc,KAAKoV,YAAY/H,EAAMnO,EAAG2G,EAAG8L,EAASC,GAAU,CACjDvE,EAAKgD,OAASnR,EACdmO,EAAKiH,IAAMzO,EACXwH,EAAKsE,QAAU0C,KAAKtG,IAAI4I,EAAc,EAAIzX,EAAGyS,GAC7CtE,EAAKuE,QAAUA,EACf4E,GAAY,EACZ,KACJ,CAEJ,GAAIA,EACA,KACR,GAEJC,KACKD,GAAa7E,EAAU,GAExB8E,GAAM,EAEd,CAEKD,IACDxW,KAAKoU,OACL/G,EAAKiH,IAAMtU,KAAKoU,KAAO,EACvB/G,EAAKgD,OAAS,EAEtB,CAGAhD,EAAKuJ,UAAY,CAAC5W,KAAKkW,UAAWlW,KAAK6W,WACvCxJ,EAAKyJ,iBAAiBtZ,EAAAA,wBAAyBwC,KAAKkU,uBAAuB,EAC/E,CAEA,OAAOzS,CACX,CACA,UAAA6Q,CAAWjF,GACP,IAAI5L,EAASV,MAAMuR,WAAWjF,GAC9B,GAAI5L,EAAQ,CACR4L,EAAK0J,oBAAoBvZ,EAAAA,wBAAyBwC,KAAKkU,uBAAuB,GAC9E,MAAMb,EAAMhG,EAAKuJ,UAAUzD,QAAQnT,KAAKkW,WACpC7C,GAAO,GACPhG,EAAKuJ,UAAUzH,OAAOkE,EAAK,GAC/B,MAAM2D,EAAO3J,EAAKuJ,UAAUzD,QAAQnT,KAAK6W,WACrCG,GAAQ,GACR3J,EAAKuJ,UAAUzH,OAAO6H,EAAM,EACpC,CACA,OAAOvV,CACX,CACA,WAAA2T,CAAY6B,EAAK9G,EAAKmE,EAAK3C,EAASC,GAChC,IAAK,IAAIvE,KAAQrN,KAAK0Q,MAAO,CACzB,IAAIyD,EAAS9G,EACb,GAAI8G,IAAW8C,IAGV9C,EAAO9D,OAAUF,EAAMwB,GAAawC,EAAO9D,OAAS8D,EAAOxC,QAAWxB,GACnEgE,EAAOG,IAAOA,EAAM1C,GAAauC,EAAOG,IAAMH,EAAOvC,QAAW0C,GACpE,OAAO,CAEf,CACA,OAAO,CACX,CACA,iBAAAjM,GACItH,MAAMsH,oBACNlM,EAAAA,MAAMmM,SAAStI,KAAM4E,EAAAA,KAAO,SAE5B,IAAIsS,EAAWlX,KAAKkW,UAAYxU,SAASuH,cAAcvL,EAAAA,EAAI,cACvDyZ,EAAUzV,SAASuH,cAAc,OACrCvH,SAAS0V,KAAKxN,YAAYuN,GAC1BD,EAASC,QAAUA,EACnBD,EAASpH,KAAO/K,KAAGsS,aAAaC,MAChCJ,EAASK,aAAexS,KAAGyS,aAAaC,KACxCP,EAASJ,iBAAiB/R,KAAG0P,kBAAkBC,MAAO1U,KAAKuU,kBAAkB,GAC7E2C,EAASJ,iBAAiB/R,KAAG0P,kBAAkBK,KAAM9U,KAAKuU,kBAAkB,GAC5E2C,EAASJ,iBAAiB/R,KAAG0P,kBAAkBI,IAAK7U,KAAKuU,kBAAkB,GAC3E7S,SAAS0V,KAAKxN,YAAYsN,GAE1B,IAAIQ,EAAU1X,KAAK6W,UAAYnV,SAASuH,cAAcvL,EAAAA,EAAI,YAC1Dga,EAAQC,QAAU,CAAC5S,KAAG6S,cAAcC,MAAO9S,EAAAA,GAAG6S,cAAcE,QAC5DJ,EAAQZ,iBAAiB/R,KAAGyQ,iBAAiBd,MAAO1U,KAAKuV,gBAAgB,GACzEmC,EAAQZ,iBAAiB/R,KAAGyQ,iBAAiBC,QAASzV,KAAKuV,gBAAgB,GAC3EmC,EAAQZ,iBAAiB/R,KAAGyQ,iBAAiBX,IAAK7U,KAAKuV,gBAAgB,GACvE7T,SAAS0V,KAAKxN,YAAY8N,GAGtBvb,QAAMQ,cAAcqD,KAAKsV,WACzBtV,KAAKsV,QArPW,IAuPhBnZ,QAAMQ,cAAcqD,KAAKoU,QACzBpU,KAAKoU,KAAO,EAEpB,CACA,qBAAAtT,GACIC,MAAMD,wBACNd,KAAK+X,OACT,CACA,uBAAA9W,CAAwBrF,EAAMsF,EAAKV,EAAKW,GACpCJ,MAAME,wBAAwBrF,EAAMsF,EAAKV,EAAKW,GAC9CnB,KAAK+X,OACT,CACA,oBAAAjP,GACI,IAAIoO,EAAWlX,KAAKkW,UAAWwB,EAAU1X,KAAK6W,UACzC1a,EAAAA,MAAMC,OAAO8a,KACdA,EAASC,QAAQtN,SACjBqN,EAASH,oBAAoBhS,KAAG0P,kBAAkBC,MAAO1U,KAAKuU,kBAAkB,GAChF2C,EAASH,oBAAoBhS,KAAG0P,kBAAkBK,KAAM9U,KAAKuU,kBAAkB,GAC/E2C,EAASH,oBAAoBhS,KAAG0P,kBAAkBI,IAAK7U,KAAKuU,kBAAkB,GAC9E2C,EAASrN,SACT7J,KAAKkW,UAAY,MAEhB/Z,EAAAA,MAAMC,OAAOsb,KACdA,EAAQX,oBAAoBhS,KAAGyQ,iBAAiBd,MAAO1U,KAAKuV,gBAAgB,GAC5EmC,EAAQX,oBAAoBhS,KAAGyQ,iBAAiBC,QAASzV,KAAKuV,gBAAgB,GAC9EmC,EAAQX,oBAAoBhS,KAAGyQ,iBAAiBX,IAAK7U,KAAKuV,gBAAgB,GAC1EmC,EAAQ7N,SACR7J,KAAK6W,UAAY,MAErB9V,MAAM+H,sBACV,CACA,UAAAkP,CAAWC,EAASC,EAAe,GAC/B,MAAuB,iBAAZD,EACAA,GAES,MAAXA,IACLA,EAAUC,GAEPlY,KAAKmY,WAAWF,GAAW,KACtC,CACA,UAAAE,CAAWC,GACP,OAAOA,GAAOpY,KAAKqY,MAAQ,EAC/B,CACA,KAAAN,GACI/X,KAAK4T,MAAM0E,UAAYtY,KAAKmY,WAAWnY,KAAKsY,WAAa,GAAK,KAC9DtY,KAAK4T,MAAM2E,aAAevY,KAAKmY,WAAWnY,KAAKuY,cAAgB,GAAK,KAEpEvY,KAAK4T,MAAM4E,oBAAsB,UAAWxY,KAAKsV,SAtS7B,WAwSpB,IAAImD,EAAezY,KAAKgY,WAAWhY,KAAK0Y,aAAc,GAAIC,EAAY3Y,KAAKgY,WAAWhY,KAAK2Y,WAAa,QACxG3Y,KAAK4T,MAAMgF,iBAAmB,UAAW5Y,KAAKoU,MAvShC,aAuSkEqE,MAAiBE,MACjG3Y,KAAK4T,MAAMiF,WAAa7Y,KAAKgY,WAAWhY,KAAK8Y,OAAQ,GACrD9Y,KAAK4T,MAAMmF,cAAgB/Y,KAAKgY,WAAWhY,KAAKgZ,UAAW,GAE3DhZ,KAAKiZ,eACT,CACA,aAAAA,GACI,IAAI9J,EAAS,EACb,MAAMjG,EAAUlJ,KAAKkJ,QACrB,GAAIA,EAAS,CACT,MAAMsG,EAAOxP,KAAKsV,SAnTF,GAmTkE4D,EAAQ1J,GAApCxP,KAAKoU,MAjTjD,GAkTVjF,EAAS+J,EACT,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAOC,IAAK,CAC5B,KAAOnZ,KAAK2U,WAAWxW,QAAUgb,GAAG,CAChC,IAAI1H,EAAIgC,KACRzT,KAAK4J,YAAY6H,GACjBzR,KAAK2U,WAAW1W,KAAKwT,EACzB,CACA,IAAIiC,EAAM1T,KAAK2U,WAAWwE,GAC1B,MAAMja,EAAIia,EAAI3J,EAAM3J,EAAIwO,KAAK+E,MAAMD,EAAI3J,GACvCkE,EAAIE,MAAMyF,YAAcna,EAAI,GAAGpC,WAC/B4W,EAAIE,MAAM0F,SAAWzT,EAAI,GAAG/I,UAChC,CACJ,CACA,IAAK,IAAI4W,KAAO1T,KAAK2U,WAAWxF,OAAOA,GACnCuE,EAAI7J,SAGH1N,EAAAA,MAAMC,OAAO4D,KAAKkW,YAAe/Z,EAAAA,MAAMC,OAAO4D,KAAK6W,aACpD7W,KAAKkW,UAAUvN,SAAW3I,KAAK6W,UAAUlO,UAClCO,EACPlJ,KAAKkW,UAAUC,YAAcnW,KAAK2U,WAE1C,GAEJtW,GAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAOoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBwO,UACvE+F,GAAuBrU,UAAW,eACrCvB,GAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAOoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBwO,UACvE+F,GAAuBrU,UAAW,oBACrCvB,GAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAOoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBwO,UACvE+F,GAAuBrU,UAAW,uBACrCvB,GAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAOoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBwO,UACvE+F,GAAuBrU,UAAW,kBACrCvB,GAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAOoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBwO,UACvE+F,GAAuBrU,UAAW,eACrCvB,GAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAOoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBC,UACvEsU,GAAuBrU,UAAW,uBACrCvB,GAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAOoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBC,UACvEsU,GAAuBrU,UAAW,oBACrCvB,GAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAOoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBwO,UACvE+F,GAAuBrU,UAAW,iBACrCvB,GAAW,CACPmB,QAAM,CAAEkF,MAAM,EAAOoF,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBwO,UACvE+F,GAAuBrU,UAAW,oBACrCvB,GAAW,CACP8D,EAAAA,SAAS,MACV8R,GAAuBrU,UAAW,QAAS,MAC9CqU,GAAyB5V,GAAW,CAChC+D,EAAAA,cAAc,CAAE3E,QAASC,EAAAA,EAAI,kBAC9BuW,ICnYH,IAAI5V,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUT,OAAQU,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWH,OAAS,EAAGe,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,CAChE,EAOO,MAAM0a,GAA4B,CAACvc,EAAMC,EAAU,QAASC,EAAgB,kBAC/E,MAAMC,EAAQ,CAAA,EAAIC,EAAOJ,EAAKK,SAAUC,EAAM7B,EAAW8B,EAAS,GAClEJ,EAAkB,WAAI,kDAAkDD,OAAmBE,EAAKrB,6BAChG,MAAM0B,EAAUC,EAAAA,EAAI,eACpB,IAAIC,EAASP,EAAKO,OAAS,GAE3B,IAAKxB,EAAAA,MAAMQ,cAAcgB,EAAMyS,YAC3B,cAAezS,EAAMyS,YACjB,IAAK,SACDjT,EAAkB,WAAI,MAAMD,KAAiBS,EAAMyS,gBACnD,MACJ,IAAK,WACD,MAAMrS,EAAQ,KAAO5B,EAAAA,MAAM6B,aAC3BV,EAAIS,GAASJ,EAAMyS,WACnBjT,EAAkB,WAAI,qCAAqCY,KAASd,cAEpEM,EAAOU,KAAKF,GAQxB,OAJIR,EAAOY,OAAS,IAEhBhB,EAAM,aAAe,8CAA8CI,EAAOa,KAAK,eAE5E,CAAEX,QAASA,EAASN,MAAOA,IAEhCqc,GAAsB,CACxBpU,QAAS,CAAExJ,KAAM,WACjBsJ,MAAO,CACH,CAAEnJ,KAAM,SAAUoJ,KAAM,SAAUC,QAAS,CAAEC,SAAU,CAAC,gBAAiBzJ,KAAM,WAC/E,CACIG,KAAM,UAAWoJ,KAAMpI,EAA0BqI,QAAS,CAAExJ,KAAM,WAClE+B,MAAO+I,KAInB,IAAI+S,GAAyB,cAAqC5S,EAAAA,WAAWC,aACzE,uBAAA7F,CAAwBrF,EAAMsF,EAAKV,EAAKW,GAEpC,OADAJ,MAAME,wBAAwBrF,EAAMsF,EAAKV,EAAKW,GACtCvF,GACJ,IAAK,UACDoE,KAAK0Z,kBAAoBlZ,EACzB,MACJ,IAAK,oBACDR,KAAKnD,aAAa,UAAW2D,GAAO,IAGhD,CACA,qBAAAM,GACIC,MAAMD,wBACNd,KAAK2Z,MAAM3d,OAASgE,KACpBA,KAAK2Z,MAAMtc,SAAW+I,EAAgBoT,GAC1C,GAEJnb,GAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBC,UACvC8Z,GAAuB7Z,UAAW,iBACrCvB,GAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBC,UACvC8Z,GAAuB7Z,UAAW,kBACrCvB,GAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBC,UACvC8Z,GAAuB7Z,UAAW,4BACrCvB,GAAW,CACP6D,EAAAA,UAAUxE,EAAAA,EAAI,UACf+b,GAAuB7Z,UAAW,gBACrC6Z,GAAyBpb,GAAW,CAChC+D,gBAAc,CACV3E,QAASC,EAAAA,EAAI,qBAAsB2E,OAAQC,EAAAA,SAASC,gBACpDC,SAAU,IAAI9E,EAAAA,mDAAmDA,EAAAA,aAEtE+b,IAEH,IAAIG,GAA0B,cAAsCva,aAAsBC,YAAYC,iBAClG,WAAAgC,GACIR,SAASnC,WACToB,KAAK6Z,aAAgBxY,IACjBrB,KAAKkD,cAAc7B,IAEvBrB,KAAK8Z,mBAAqB,CAAC5U,EAAQlF,KAAKoQ,cAC5BlL,GAAS,IAAIS,IAAIC,IAEX,CACNmU,OAFsC,mBAApBnU,EAAER,SAASxJ,KAA0CgK,EAAE7J,KAAQ6J,EAAER,SAASxJ,MAAQgK,EAAE7J,KAGtGie,QAAS,YAAYpU,EAAE7J,aAG5B8O,KAAK,CAACoP,EAAGC,IAAMD,EAAEF,OAASG,EAAEH,OAAS,GAAI,EAEpD,CACA,eAAIha,GACA,MAAO,EACX,CACA,kBAAAG,CAAmBC,GAEnB,CACA,QAAAC,CAAStE,GACL,OAAOK,EAAAA,MAAMmE,WAAWN,KAAK3D,MAAQ2D,KAAKma,UAAUlY,WACxD,CACA,WAAA1B,CAAYC,GACHrE,EAAAA,MAAMC,OAAO4D,KAAKma,aACnBna,KAAKma,UAAUlY,WAAa9F,EAAAA,MAAMqK,MAAMhG,GAAO,IAEvD,CACA,YAAAC,CAAapE,GACT,MAAmB,eACvB,CACA,+BAAAsE,CAAgCnE,GAC5B,OAAOkD,EAAAA,mBAAmBqK,KAAKlJ,QAAQrE,EAAMwD,KACjD,CACA,qBAAAc,GACIC,MAAMD,wBACNd,KAAKoa,aAAatD,iBAAiB/R,EAAAA,GAAG0P,kBAAkBI,IAAK7U,KAAK6Z,cAAc,GAChF7Z,KAAKqa,YAAYvD,iBAAiB/R,EAAAA,GAAG0P,kBAAkBI,IAAK7U,KAAK6Z,cAAc,EACnF,CACA,oBAAA/Q,GACS3M,EAAAA,MAAMC,OAAO4D,KAAKoa,eACnBpa,KAAKoa,aAAarD,oBAAoBhS,EAAAA,GAAG0P,kBAAkBI,IAAK7U,KAAK6Z,cAAc,GAElF1d,EAAAA,MAAMC,OAAO4D,KAAKqa,cACnBra,KAAKqa,YAAYtD,oBAAoBhS,EAAAA,GAAG0P,kBAAkBI,IAAK7U,KAAK6Z,cAAc,GAEtF9Y,MAAM+H,sBACV,GAEJzK,GAAW,CACP6D,YAAU,GAAGxE,EAAAA,wBACdkc,GAAwBha,UAAW,oBACtCvB,GAAW,CACP6D,YAAU,GAAGxE,EAAAA,4BACdkc,GAAwBha,UAAW,uBACtCvB,GAAW,CACP6D,YAAU,GAAGxE,EAAAA,yBACdkc,GAAwBha,UAAW,sBACtCvB,GAAW,CACP6D,EAAAA,UAAU,qBACX0X,GAAwBha,UAAW,sBACtCvB,GAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBqK,QACvC6P,GAAwBha,UAAW,qBACtCga,GAA0Bvb,GAAW,CACjC+D,gBAAc,CACV3E,QAASC,EAAAA,EAAI,sBAAuB2E,OAAQC,EAAAA,SAASC,gBACrDC,SAAU,eAAeoC,+FAGtBlH,EAAAA,qBAAqBqH,KAAGsS,aAAaC,oGACjBvS,EAAAA,GAAGyS,aAAa8C,+DAA+D5c,EAAAA,0BACnGA,8MAIYA,qFACekH,oIAEHlH,EAAAA,oGAAoGA,iDACpGA,EAAAA,6HAA6HA,8IAG7HA,EAAAA,sCAAsCA,+EAE1CA,EAAAA,iIAAiIA,iFAExIA,0EAGZA,qCAGLA,8EACIA,EAAAA,qBAAqBqH,KAAGsS,aAAakD,mGACjBxV,EAAAA,GAAGyS,aAAa8C,kEAAkE5c,EAAAA,0BACtGA,4JAGQA,EAAAA,qDAAqDkH,qEAAmEA,EAAAA,yGAEhHlH,EAAAA,oGAAoGA,iIAGpGA,EAAAA,sCAAsCA,4DAE7CA,kDAERA,wBACJA,wBAGLkc,ICxMH,IAAIvb,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUT,OAAQU,EAAIF,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWH,OAAS,EAAGe,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKF,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOF,EAAI,GAAKE,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,CAChE,EASA,MAAM2a,GAAsB,CACxBpU,QAAS,CAAExJ,KAAM,cACjBsJ,MAAO,CACH,CAAEnJ,KAAM,SAAUoJ,KAAM,SAAUC,QAAS,CAAExJ,KAAM,WACnD,CAAEG,KAAM,UAAWoJ,KAAMpI,EAA0BqI,QAAS,CAAExJ,KAAM,WAAa+B,MAAO+I,KAG1F8T,GAAoBlU,EAAoB,CAC1ClB,QAAS,CAAE4D,KAAM,cAAepN,KAAM,WAAYqO,YAAa,oBAC/D/E,MAAO,CAAC,CACAnJ,KAAM,aAAcoJ,KAAMpI,EAA0BqI,QAAS,CAAExJ,KAAM,cACrE+B,MAAOxB,EAAAA,MAAMoK,OAAO,CAAA,EAAIG,EAAkC,CAAE7I,OAASwD,GAAMA,aAAa6I,GAA0B7I,aAAakK,KAEnI,CACIxP,KAAM,UAAWoJ,KAAMoU,GAA2BnU,QAAS,CAAExJ,KAAM,WAEnE+B,MAAO,CAAEyS,WAAY,mBACrBlL,MAAOkB,EAAgBoT,QA4CnC,SAASiB,GAAkBjZ,EAAI8T,EAAU,IACrC,MAAMoF,KAAEA,EAAItD,KAAEA,GA3BlB,SAA2B9B,EAAU,IACjC,MAAMqF,EAAcjZ,SAASkZ,yBAA0BC,EAAWnZ,SAASkZ,yBAC3E,IAAI/U,EAAI,EACR,IAAK,IAAIsK,KAAOmF,EAAS,CAErB,MAAMwF,EAAWpZ,SAASuH,cAAc,OACxC6R,EAASC,UAAUC,IAAIpW,EAAAA,KAAO,aAC9BkW,EAASxX,YAAc6M,EAAI4J,OAC3BY,EAAY/Q,YAAYkR,GAExB,MAAMG,EAAW,IAAIpU,EAAAA,WAAWqU,iBAChCD,EAASF,UAAUC,IAAIpW,EAAAA,KAAO,YAAa,oBAC3CqW,EAASrH,MAAMyF,WAAaxT,EAAE/I,WAC9Bme,EAASpe,aAAa,MAAO,gCAC7Boe,EAASpe,aAAa,UAAWsT,EAAI6J,SACrCa,EAASjR,YAAYqR,GACrBpV,GACJ,CACA,MAAMsV,EAAU,IAAItU,EAAAA,WAAWuU,kBAM/B,OALAD,EAAQJ,UAAUC,IAAIpW,EAAAA,KAAO,YAC7BuW,EAAQte,aAAa,MAAO,gCAC5Bse,EAAQte,aAAa,YAAa,2CAClCse,EAAQvH,MAAMyF,WAAa,MAAQ/D,EAAQnX,OAAS,GACpD0c,EAASjR,YAAYuR,GACd,CAAET,KAAMC,EAAavD,KAAMyD,EACtC,CAE2BQ,CAAkB/F,GACnCgG,EAAQ5Z,SAASuH,cAAc,OACrCqS,EAAM1R,YAAY8Q,GAClB,MAAMa,EAAQ7Z,SAASuH,cAAc,OAErC,OADAsS,EAAM3R,YAAYwN,GACX,IAAI1Z,gCAA8B8D,sCAC3BoD,mDA/ClB,SAAiB0Q,EAAU,IACvB,IAAIkG,EAAS,GACb,IAAK,IAAInL,KAAUiF,GAAW,GAAI,CAE9B,MAAMnF,EAAME,EAAOoL,OAAS,EAExBD,GADe,iBAARrL,EACGA,EAAM,MAGN,OAElB,CACA,OAAOqL,CACX,CAkCmEE,CAAQpG,aACrEgG,EAAM5R,4BACI6R,EAAM7R,iCACZhM,EAAAA,aACV,CACA,IAAIie,GAA6B,cAAyCjK,EACtE,WAAAnQ,GACIR,MAAMyZ,IACNxa,KAAKsV,QAAU,GACftV,KAAKiC,WAAa,GAClBjC,KAAK4b,gBAAkB,GACvB5b,KAAK6b,sBAAuB,CAChC,CACA,QAAAC,CAASxG,EAAUtV,KAAKsV,SACpB,IAAIkG,EAAS,GACb,IAAK,IAAInL,KAAUiF,GAAW,GAAI,CAE9B,MAAMnF,EAAME,EAAOoL,OAAS,EAExBD,GADe,iBAARrL,EACGA,EAAM,MAGN,OAElB,CACA,OAAOqL,CACX,CACA,uBAAAva,CAAwBrF,EAAMsF,EAAKV,EAAKW,GAEpC,GADAJ,MAAME,wBAAwBrF,EAAMsF,EAAKV,EAAKW,IACzCA,EACD,OAAQvF,GACJ,IAAK,UAODoE,KAAK0J,UAAY+Q,GAAkBza,KAAKwB,GAAIhB,GAC5C,MACJ,IAAK,aACDR,KAAK+b,2BAA2Bvb,GAIhD,CACA,qBAAAM,GACIC,MAAMD,wBACNd,KAAK0J,UAAY+Q,GAAkBza,KAAKwB,GAAIxB,KAAKsV,QACrD,CACA,UAAA0G,CAAWC,GACP,GAAI9f,EAAAA,MAAMgK,QAAQ8V,GACd,OAAOA,EAEX,GAAkB,iBAAPA,EACP,IAAK,IAAIlgB,KAAQkgB,EAAI,CACjB,MAAMpa,EAAM7B,KAAKgc,WAAWC,EAAGlgB,IAC/B,IAAKI,EAAAA,MAAMC,OAAOyF,GACd,OAAOA,CAEf,CAEJ,OAAO,IACX,CACA,0BAAAka,CAA2BE,EAAKjc,KAAKiC,YACjC,IAAK9F,EAAAA,MAAMQ,cAAcqD,KAAK4b,kBAAoB5b,KAAK6b,wBAA0B1f,EAAAA,MAAMQ,cAAcsf,GAAK,CACtG,MAAMpa,EAAM7B,KAAKgc,WAAWC,GAC5B,IAAK9f,EAAAA,MAAMQ,cAAckF,GAAM,CAC3B,MAAMqD,EAAQ,GACRmI,EAAOxL,EAAI,GACjB,IAAK,IAAI9F,KAAQsR,EACbnI,EAAMjH,KAAK,CAAElC,OAAMoJ,YAAakI,EAAKtR,KAEzCiE,KAAK4b,gBAAkB1W,EACvBlF,KAAK6b,sBAAuB,CAChC,CACJ,CACJ,GAEJxd,GAAW,CACPmB,EAAAA,MAAM,CAAEsK,aAAa,EAAMrK,UAAWC,EAAAA,mBAAmBqK,QAC1D4R,GAA2B/b,UAAW,kBACzCvB,GAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBqK,QACvC4R,GAA2B/b,UAAW,qBACzCvB,GAAW,CACPmB,EAAAA,MAAM,CAAEC,UAAWC,EAAAA,mBAAmBqK,QACvC4R,GAA2B/b,UAAW,0BACzCvB,GAAW,CACP6D,EAAAA,UAAU,IAAI0C,EAAAA,mBACf+W,GAA2B/b,UAAW,qBACzCvB,GAAW,CACP6D,EAAAA,UAAU,aACXyZ,GAA2B/b,UAAW,oBACzCvB,GAAW,CACP6D,EAAAA,UAAUxE,EAAAA,EAAI,cACfie,GAA2B/b,UAAW,oBACzC+b,GAA6Btd,GAAW,CACpC+D,gBAAc,CACV3E,QAASC,EAAAA,EAAI,sBAElBie,2OV3KuC,CACtC5f,KAAM,mBAAoBoJ,KAAM,SAAU+W,SAAU,cAAe9W,QAAS,CAAExJ,KAAM,qBAAuB+B,MAAO,CAC9Gwe,KAAM,CAAC,cAAe,OAAQ,sCQSV,yBHiES,gxBRF9B,MAKH,cAAOC,CAAQC,GACX,OAAO5f,EAAAA,mBAAmB2f,QAAQ,IAAM3V,EAAmB0N,GAAWA,aAAkBhM,IAAuBhM,EAAAA,MAAMQ,cAAcwX,EAAO3S,MAAQrF,QAAMC,OAAOigB,IAAcA,EAAUlI,IAC3L,iJc5FG,MAAMmI,GAA0B,iBAChC,MAAMC,WAA4B7J,YACrC,WAAAnR,CAAYib,GACRzb,MAAMub,GAAyB,CAAErgB,OAAQugB,EAAaC,YAAY,EAAOC,SAAS,GACtF,2KAEG,MACH,cAAOC,CAAQC,EAAQC,GAAY,OAAO7c,KAAK8c,0BAA0BF,EAAQC,EAAUjX,GAAKA,EAAEmX,OAAS,CAC3G,cAAOC,CAAQJ,EAAQC,GAAY,OAAO7c,KAAK8c,0BAA0BF,EAAQC,EAAUjX,GAAKA,EAAEqX,KAAO,CACzG,aAAOC,CAAON,EAAQC,GAAY,OAAO7c,KAAK8c,0BAA0BF,EAAQC,EAAUjX,GAAKA,EAAEuX,OAAS,CAC1G,gBAAOC,CAAUR,EAAQC,GAAY,OAAO7c,KAAK8c,0BAA0BF,EAAQC,EAAUjX,GAAKA,EAAEyX,OAAS,CAC7G,mBAAOC,CAAaV,EAAQC,GAAY,OAAO7c,KAAK8c,0BAA0BF,EAAQC,EAAUjX,GAAKA,EAAE2X,UAAY,CACnH,gCAAOT,CAA0BF,EAAQC,EAAUR,GAC/C,GAAIlgB,EAAAA,MAAMQ,cAAcigB,IAAWzgB,EAAAA,MAAMC,OAAOygB,GAC5C,OAAO,EAGX,IAAIvL,GAAW,EACf,GAAIuL,EAASW,aAAeX,EAASW,YAAYrf,OAAS,EAAG,CAEzDmT,GAAW,EACX,IAAK,IAAImM,KAAcZ,EAASW,YAC5B,GAAInB,EAAUoB,IAAeb,EAAOa,EAAWC,YAAcd,EAAOa,EAAWC,WAAWvK,QAAQsK,EAAWE,aAAe,EACxH,OAAO,CAGnB,CAEA,OAAOrM,CACX,+GC5BJsM,EAAAA,WAAWC,MAAMC"}
1
+ {"version":3,"file":"pacem-cms.min.js","sources":["../esm/scaffolding/types.js","../esm/scaffolding/element-picker.js","../esm/scaffolding/expression.js","../esm/widgets/types.js","../esm/widgets/helpers/data.js","../esm/widgets/helpers/fetcher.js","../esm/widgets/helpers/types.js","../esm/widgets/helpers/translator.js","../esm/widgets/helpers/clock.js","../esm/openapi/swagger-cms.js","../esm/widgets/helpers/apimanifest.js","../esm/widgets/ui/types.js","../esm/widgets/ui/text.js","../esm/widgets/ui/composite/picker.js","../esm/widgets/ui/composite/grid.js","../esm/widgets/scaffolding/datacolumns.js","../esm/widgets/ui/dataviz/datagrid.js","../esm/types.js","../esm/index-iife.js"],"sourcesContent":["import { PropertyChangeEventName, Utils, CustomElementUtils, P } from '@pacem/pacem-core';\n//namespace Pacem.Components.Cms {\n/** Function container proxy (used in metadata) */\nexport const Functions = {\n 'dismiss': (...args) => {\n for (let name of args || []) {\n delete Functions[name];\n }\n },\n 'handleExpressionValueChange': (evt, prop, entity) => {\n if (evt.detail.propertyName === 'value' && !Utils.isNull(entity)) {\n const value = evt.detail.currentValue;\n if (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 entity.removeAttribute(attr);\n }\n else {\n entity.setAttribute(attr, value.toString());\n }\n }\n else {\n entity[prop] = value;\n }\n }\n }\n};\n/** Default metadata ('expression' field) 'type' factory. */\nexport const EXPRESSION_METADATA_TYPE = (host, hostRef = ':host', hostEntityRef = ':host.entity') => {\n const attrs = {}, meta = host.metadata, fns = Functions, fnKeys = [];\n attrs['value'] = `{{ ${hostEntityRef} instanceof HTMLElement && ${hostEntityRef}.getAttribute('${CustomElementUtils.camelToKebab(meta.prop)}') }}`;\n attrs['on-' + PropertyChangeEventName] = `Pacem.Components.Cms.Functions.handleExpressionValueChange($event, '${meta.prop}', ${hostEntityRef})`;\n attrs['converter'] = `{{ Pacem.CustomElementUtils.getWatchedProperty(${hostEntityRef}, '${meta.prop}').config.converter }}`;\n const tagName = P + '-expression';\n let extra = (meta.extra || {});\n // selector\n if (!Utils.isNullOrEmpty(extra.selector)) {\n attrs['selector'] = extra.selector;\n }\n // filters to the selector\n if (!Utils.isNullOrEmpty(extra.filter)) {\n switch (typeof extra.filter) {\n case 'string':\n attrs['filter'] = `{{ (e) => e.constructor.name === \"${extra.filter}\" || e.localName === \"${extra.filter.toLowerCase()}\" }}`;\n break;\n case 'function':\n const fnKey = 'fn' + Utils.uniqueCode();\n fns[fnKey] = extra.filter;\n attrs['filter'] = `{{ Pacem.Components.Cms.Functions.${fnKey}, once }}`;\n // tidy-up memento\n fnKeys.push(fnKey);\n break;\n }\n }\n // labeler\n if (typeof extra.labeler === 'function') {\n const fnKey = 'fn' + Utils.uniqueCode();\n fns[fnKey] = extra.labeler;\n attrs['labeler'] = `{{ Pacem.Components.Cms.Functions.${fnKey}, once }}`;\n // tidy-up memento\n fnKeys.push(fnKey);\n }\n if (fnKeys.length > 0) {\n // tidy-up\n attrs['on-unload'] = `{{ Pacem.Components.Cms.Functions.dismiss('${fnKeys.join('\\',\\'')}') }}`;\n }\n return { tagName: tagName, attrs: attrs };\n};\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Defaults, Watch, PropertyConverters, ViewChild, Debounce, Utils } from '@pacem/pacem-core';\nimport { Components as ScaffoldingComponents } from '@pacem/pacem-scaffolding';\n//namespace Pacem.Components.Cms {\nexport class PacemElementPickerElementBase extends ScaffoldingComponents.Scaffolding.PacemBaseElement {\n}\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemElementPickerElementBase.prototype, \"selector\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemElementPickerElementBase.prototype, \"filter\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Eval })\n], PacemElementPickerElementBase.prototype, \"labeler\", void 0);\nlet PacemElementPickerElement = class PacemElementPickerElement extends PacemElementPickerElementBase {\n get inputFields() {\n return [this._select];\n }\n toggleReadonlyView(readonly) {\n this._select.readonly = readonly;\n }\n onChange(_) {\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 'selector':\n case 'filter':\n case 'labeler':\n this._databind();\n break;\n }\n }\n }\n _databind() {\n const project = this.labeler || (e => {\n let label = e.constructor.name;\n if (e.id) {\n label += '#' + e.id;\n }\n return label;\n });\n const retval = [];\n document.querySelectorAll(this.selector || '[pacem]').forEach((e, i, arr) => {\n if ((Utils.isNull(this.filter) || this.filter(e) === true)\n // let' say 'id' is a must-have...\n && !Utils.isNullOrEmpty(e.id)) {\n retval.push({ element: e, label: project(e) });\n }\n });\n this._select.valueProperty = 'element';\n this._select.textProperty = 'label';\n this._select.datasource = retval;\n }\n};\n__decorate([\n ViewChild(P + '-select')\n], PacemElementPickerElement.prototype, \"_select\", void 0);\n__decorate([\n Debounce(50)\n], PacemElementPickerElement.prototype, \"_databind\", null);\nPacemElementPickerElement = __decorate([\n CustomElement({\n tagName: P + '-element-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-select></${P}-select>`\n })\n], PacemElementPickerElement);\nexport { PacemElementPickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Defaults, Watch, PropertyConverters, ViewChild, Debounce, Utils, CustomElementUtils, RepeaterItem } from '@pacem/pacem-core';\nimport { Components as ScaffoldingComponents } from '@pacem/pacem-scaffolding';\nimport { PacemElementPickerElementBase } from './element-picker';\n//namespace Pacem.Components.Cms {\nexport var ExpressionSource;\n(function (ExpressionSource) {\n ExpressionSource[\"Constant\"] = \"const\";\n ExpressionSource[\"PropertyReference\"] = \"property\";\n ExpressionSource[\"Expression\"] = \"expr\";\n})(ExpressionSource || (ExpressionSource = {}));\nlet PacemExpressionElement = class PacemExpressionElement extends PacemElementPickerElementBase {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'converter') {\n this._setFeedbackText(this.value);\n }\n else if (!first) {\n if (this._editing) {\n switch (name) {\n case '_source':\n switch (val) {\n case ExpressionSource.PropertyReference:\n this._picker.focus();\n break;\n default:\n this._editor.focus();\n break;\n }\n break;\n case '_propRef':\n if (!Utils.isNullOrEmpty(val)) {\n this._editor.focus();\n this._editor.value = '{{ #' + this._sourceRef.id + '.' + val + ' }}';\n }\n this.changeHandler(new Event('change'));\n break;\n }\n }\n }\n }\n get inputFields() {\n return [this._editor];\n }\n toggleReadonlyView(readonly) {\n if (readonly) {\n // ensure not editing\n this._editing = false;\n }\n }\n setPristine() {\n super.setPristine();\n this._editing = false;\n }\n onChange(_) {\n return Utils.fromResult(this.value = this._editor.value);\n }\n acceptValue(val) {\n this._view.textContent = val || '...';\n this._setFeedbackText(val);\n this._reverseStructure();\n if (val !== this._editor.value) {\n this._editor.value = val;\n }\n }\n _setFeedbackText(val = this.value) {\n const converter = this.converter;\n if (CustomElementUtils.isBindingAttribute(val) || typeof (converter && converter.convert) !== 'function') {\n this._eval.setAttribute('text', val);\n }\n else if (val === undefined) {\n this._eval.text = '<undefined>';\n }\n else {\n this._eval.text = converter.convert(val);\n }\n }\n getViewValue(value) {\n return value;\n }\n convertValueAttributeToProperty(attr) {\n return attr;\n }\n _reverseStructure() {\n let cleanup = () => {\n this._source = this._sourceRef = this._propRef = /*this.value =*/ undefined;\n };\n // dependencies?\n let expr = this.value;\n if (!Utils.isNullOrEmpty(expr)) {\n // setup the most likely form fields\n if (CustomElementUtils.isBindingAttribute(expr)) {\n const expression = CustomElementUtils.parseBindingAttribute(expr, this), deps = expression.dependencies;\n // complex or simple (one dependency) expression\n if (Utils.isNullOrEmpty(deps) || deps.length > 1 || RepeaterItem.isRepeaterItem(deps[0].element)) {\n this._source = ExpressionSource.Expression;\n }\n else {\n const dep = deps[0];\n this._source = ExpressionSource.PropertyReference;\n this._sourceRef = document.querySelector('#' + dep.element.id);\n this._propRef = dep.path;\n }\n }\n else {\n this._source = ExpressionSource.Constant;\n }\n //\n }\n else {\n cleanup();\n }\n }\n};\n__decorate([\n Watch({ emit: false })\n], PacemExpressionElement.prototype, \"converter\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemExpressionElement.prototype, \"_editing\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemExpressionElement.prototype, \"_source\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemExpressionElement.prototype, \"_sourceRef\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemExpressionElement.prototype, \"_propRef\", void 0);\n__decorate([\n ViewChild(P + '-element-picker')\n], PacemExpressionElement.prototype, \"_picker\", void 0);\n__decorate([\n ViewChild(P + '-textarea')\n], PacemExpressionElement.prototype, \"_editor\", void 0);\n__decorate([\n ViewChild('span.' + PCSS + '-viewfinder')\n], PacemExpressionElement.prototype, \"_view\", void 0);\n__decorate([\n ViewChild(P + '-text')\n], PacemExpressionElement.prototype, \"_eval\", void 0);\n__decorate([\n Debounce(50)\n], PacemExpressionElement.prototype, \"_reverseStructure\", null);\nPacemExpressionElement = __decorate([\n CustomElement({\n tagName: P + '-expression', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-collapse class=\"${PCSS}-expression\" collapse=\"{{ !:host._editing }}\">\r\n <div class=\"expression-builder ${PCSS}-grid grid-tiny-rowgap grid-tiny-colgap ${PCSS}-pad pad-bottom-2\">\r\n <div class=\"${PCSS}-cell\">\r\n <${P}-select value=\"{{ :host._source, twoway }}\" class=\"display-block\">\r\n <${P}-data-item value=\"${ExpressionSource.Constant}\" label=\"constant value\"></${P}-data-item>\r\n <${P}-data-item value=\"${ExpressionSource.PropertyReference}\" label=\"property reference\"></${P}-data-item>\r\n <${P}-data-item value=\"${ExpressionSource.Expression}\" label=\"complex expression\"></${P}-data-item>\r\n </${P}-select>\r\n </div>\r\n\r\n <${P}-panel class=\"${PCSS}-cell cols-hd-6\" hide=\"{{ :host._source !== '${ExpressionSource.PropertyReference}' }}\">\r\n <${P}-element-picker value=\"{{ :host._sourceRef, twoway }}\" selector=\"{{ :host.selector }}\" filter=\"{{ :host.filter }}\" labeler=\"{{ :host.labeler }}\" class=\"display-block\"></${P}-element-picker>\r\n </${P}-panel>\r\n <${P}-panel class=\"${PCSS}-cell cols-hd-6\" hide=\"{{ :host._source !== '${ExpressionSource.PropertyReference}' }}\">\r\n <${P}-property-picker value=\"{{ :host._propRef, twoway }}\" disabled=\"{{ !:host._sourceRef }}\" target=\"{{ :host._sourceRef }}\" on-change=\"::_editor.focus()\" class=\"display-block\"></${P}-property-picker>\r\n </${P}-panel>\r\n\r\n <${P}-panel class=\"${PCSS}-cell\">\r\n <${P}-textarea class=\"display-block\" placeholder=\"{{ '{{ '+ (:host._source || '') +'... }}' }}\" change-policy=\"${ScaffoldingComponents.Scaffolding.ChangePolicy.Blur}\"></${P}-textarea>\r\n </${P}-panel>\r\n </div>\r\n</${P}-collapse>\r\n<div class=\"${PCSS}-fieldset\">\r\n <div class=\"fieldset-left\">\r\n <div class=\"${PCSS}-fieldgroup ${PCSS}-viewfinder\">\r\n <div class=\"text-truncate ${PCSS}-pad pad-x-1\"><span class=\"${PCSS}-viewfinder text-tech\">{{ :host.value || '...' }}</span></div>\r\n <${P}-panel class=\"fieldgroup-prepend\">\r\n <${P}-button class=\"flat edit ${PCSS}-pad pad-left-1\" on-click=\":host._editing = !:host._editing\" hide=\"{{ :host.readonly }}\"></${P}-button>\r\n </${P}-panel>\r\n <${P}-panel class=\"fieldgroup-append text-tech display-flex flex-middle flex-nowrap\" hide=\"{{ $pacem.isNullOrEmpty(:host.value) }}\">\r\n <i class=\"${PCSS}-icon text-primary\">keyboard_arrow_right</i>\r\n <${P}-text text=\"?\" class=\"bg-primary ${PCSS}-pad pad-left-1 pad-right-1 ${PCSS}-margin margin-right-1 text-truncate\" eval></${P}-text>\r\n </${P}-panel>\r\n </div>\r\n </div>\r\n</div>`\n })\n], PacemExpressionElement);\nexport { PacemExpressionElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Defaults, Watch, PropertyConverters, ViewChild, Utils, CustomElementUtils, Components } from '@pacem/pacem-core';\nimport { Components as UIComponents } from '@pacem/pacem-ui';\nconst UI = UIComponents.UI;\n//namespace Pacem.Components.Cms {\nconst DEFAULT_PERMISSION_METADATA = {\n props: [\n {\n prop: 'permissions',\n // child form-fields\n type: 'array',\n display: { name: 'Permissions' },\n props: {\n display: { cssClass: [PCSS + '-cell', PCSS + '-grid', 'grid-novgap', 'grid-tiny-colgap', 'grid-nospace'], name: 'Permission' },\n props: Array.prototype.concat.apply([\n {\n prop: 'claimType', type: 'string',\n display: { cssClass: [PCSS + '-cell', 'cols-hd-4', 'cols-lg-6', 'field-stretch', 'field-minimal'], name: 'Claim type' },\n validators: [{ type: 'required', errorMessage: '!' }]\n },\n {\n prop: 'claimValue', type: 'string',\n display: { cssClass: [PCSS + '-cell', 'cols-hd-4', 'cols-lg-6', 'field-stretch', 'field-minimal'], name: 'Claim value' },\n validators: [{ type: 'required', errorMessage: '!' }]\n },\n ], ['read', 'update', 'create', 'delete'].map((p, j) => {\n return {\n prop: p,\n type: 'boolean',\n display: { cssClass: [PCSS + '-cell', 'cols-hd-1', 'cols-3', 'field-minimal', PCSS + '-pad pad-left-2'], name: p.charAt(0).toUpperCase() + p.substr(1) }\n };\n }))\n }\n }\n ]\n};\nexport const DEFAULT_METADATA = {\n display: { name: 'Widget', cssClass: [PCSS + '-grid', 'grid-novgap', 'grid-tiny-colgap', 'grid-nospace'] },\n props: [\n { prop: 'tag', type: 'string', display: { name: 'Tag', cssClass: [PCSS + '-cell'] } }\n ]\n};\nfunction cellifyMetadata(p) {\n // ensure pacem-cell cssClass\n p.display = p.display || { name: p.prop, cssClass: [] };\n const css = p.display.cssClass = Utils.isArray(p.display.cssClass) && p.display.cssClass || [];\n css.push(PCSS + '-cell');\n}\nexport function gridifyMetadata(metadata) {\n var props = metadata && metadata.props || [];\n var display = metadata && metadata.display || { name: 'Element' };\n if (!Utils.isNull(display)) {\n const css = display.cssClass = display.cssClass || [];\n Array.prototype.push.apply(css, DEFAULT_METADATA.display.cssClass);\n }\n props.forEach(cellifyMetadata);\n return { display: display, props: props };\n}\nexport function buildWidgetMetadata(metadata) {\n var display = Utils.extend({}, DEFAULT_METADATA.display, metadata && metadata.display || {});\n var props = Utils.clone(DEFAULT_METADATA.props);\n Array.prototype.push.apply(props, (metadata && metadata.props || []).filter(p => {\n if (p.prop === 'tag') {\n return false;\n }\n cellifyMetadata(p);\n return true;\n }));\n return { display: display, props: props };\n}\nconst WIDGET_CSS_CLASS = PCSS + '-widget';\n/** Default metadata ('expression' field) 'extra' object. */\nexport const EXPRESSION_WIDGET_METADATA_EXTRA = {\n selector: '.' + WIDGET_CSS_CLASS,\n labeler: (e) => {\n if (!Utils.isNullOrEmpty(e.tag)) {\n return e.tag;\n }\n return (e.metadata && e.metadata.display && e.metadata.display.name || '') + '#' + e.id;\n }\n};\nexport class Widget {\n /**\n * Utility method for widget gathering.\n * @param predicate Predicate for filtering\n */\n static findAll(predicate) {\n return CustomElementUtils.findAll('.' + WIDGET_CSS_CLASS, (widget) => widget instanceof PacemWidgetElement && !Utils.isNullOrEmpty(widget.id) && (Utils.isNull(predicate) || predicate(widget)));\n }\n}\nlet PacemWidgetToolbarElement = class PacemWidgetToolbarElement extends Components.PacemElement {\n /** Gets the toolbar's edit button. */\n get editButton() {\n return this._btnEdit;\n }\n /** Gets the toolbar's permimssions button. */\n get permissionsButton() {\n return this._btnPerms;\n }\n /** Gets the toolbar's remove button. */\n get removeButton() {\n return this._btnRemove;\n }\n _edit(evt) {\n const form = this._proxy.dom.find(e => 'core' in e.attributes);\n form.open(this.target, true);\n form.metadata = this.target.metadata;\n // popout\n this._popoutJustInCase();\n }\n _editPermissions(evt) {\n const form = this._proxy.dom.find(e => 'permissions' in e.attributes);\n form.open(this.target);\n form.metadata = this.target.permissionMetadata;\n // popout\n this._popoutJustInCase();\n }\n _popoutJustInCase() {\n const balloon = CustomElementUtils.findAncestorOfType(this, UI.PacemBalloonElement);\n if (!Utils.isNullOrEmpty(balloon)) {\n balloon.popout();\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemWidgetToolbarElement.prototype, \"target\", void 0);\n__decorate([\n ViewChild('.buttons > div')\n], PacemWidgetToolbarElement.prototype, \"_toolbar\", void 0);\n__decorate([\n ViewChild(P + '-button[edit]')\n], PacemWidgetToolbarElement.prototype, \"_btnEdit\", void 0);\n__decorate([\n ViewChild(P + '-button[permissions]')\n], PacemWidgetToolbarElement.prototype, \"_btnPerms\", void 0);\n__decorate([\n ViewChild(P + '-button[remove]')\n], PacemWidgetToolbarElement.prototype, \"_btnRemove\", void 0);\n__decorate([\n ViewChild(P + '-shell-proxy')\n], PacemWidgetToolbarElement.prototype, \"_proxy\", void 0);\nPacemWidgetToolbarElement = __decorate([\n CustomElement({\n tagName: P + '-widget-toolbar', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-span class=\"toolbar-text\" content=\"{{ '<i class=&quot;${PCSS}-icon&quot;>'+ (::target.metadata && ::target.metadata.display && ::target.metadata.display.icon || 'widgets') +'</i> '+ (::target.tag || (::target.metadata && ::target.metadata.display && ::target.metadata.display.name || ::target.localName) +'#'+ ::target.id) }}\"></${P}-span>\r\n<div class=\"buttons ${PCSS}-buttonset ${PCSS}-pad ${PCSS}-margin pad-0 margin-left-2\">\r\n <div class=\"buttonset-left\">\r\n <${P}-button edit class=\"button edit\" on-click=\":host._edit($event)\"></${P}-button>\r\n <${P}-button permissions class=\"button\" on-click=\":host._editPermissions($event)\" css-class=\"{{ {'button-success': ::target.permissions.length > 0} }}\" icon-glyph=\"verified_user\"></${P}-button>\r\n <${P}-button remove class=\"button button-danger delete\"></${P}-button>\r\n </div>\r\n<div>\r\n<${P}-shell-proxy>\r\n <${P}-modal-form core></${P}-modal-form>\r\n <${P}-modal-form permissions></${P}-modal-form>\r\n</${P}-shell-proxy>`\n })\n], PacemWidgetToolbarElement);\nexport { PacemWidgetToolbarElement };\nexport class PacemWidgetElement extends Components.PacemElement {\n constructor(metadata, role = 'widget') {\n super(role);\n this.permissionMetadata = DEFAULT_PERMISSION_METADATA;\n this.metadata = metadata;\n }\n connectedCallback() {\n super.connectedCallback();\n // ensure an explicit id for each widget\n if (Utils.isNullOrEmpty(this.id)) {\n this.id = 'wdg' + Utils.uniqueCode();\n }\n Utils.addClass(this, WIDGET_CSS_CLASS);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'editable':\n if (!val) {\n this._disposeBalloon();\n }\n else if (this.isReady) {\n this._ensureBalloon();\n }\n break;\n case 'editing':\n if (!Utils.isNull(this._balloon)) {\n this._balloon.disabled = !val;\n }\n (val ? Utils.addClass : Utils.removeClass).apply(this, [this, 'widget-' + name]);\n break;\n case 'metadata':\n this._assignIcon(val);\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._assignIcon();\n this._ensureBalloon();\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n _assignIcon(val = this.metadata) {\n this.dataset['icon'] = (val && val.display && val.display.icon) || 'widgets';\n }\n _ensureBalloon() {\n if (Utils.isNull(this._balloon)) {\n const balloon = this._balloon = document.createElement(P + '-balloon');\n balloon.target = this;\n balloon.disabled = !this.editing;\n balloon.options = {\n behavior: UI.BalloonBehavior.Menu,\n trigger: UI.BalloonTrigger.Hover\n };\n // innerHTML before appending the balloon to the DOM.\n balloon.innerHTML = `<${P}-widget-toolbar target=\"{{ #${this.id} }}\"><${P}-widget-toolbar>`;\n // append to trigger connected/viewActivated callbacks\n CustomElementUtils.findAncestorShell(this).appendChild(balloon);\n }\n }\n _disposeBalloon() {\n if (!Utils.isNull(this._balloon)) {\n this._balloon.remove();\n this._balloon = null;\n }\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemWidgetElement.prototype, \"editing\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemWidgetElement.prototype, \"editable\", void 0);\n__decorate([\n Watch({ emit: true, reflectBack: true, converter: PropertyConverters.String })\n], PacemWidgetElement.prototype, \"tag\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Json })\n], PacemWidgetElement.prototype, \"permissions\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemWidgetElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemWidgetElement.prototype, \"permissionMetadata\", 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 { CustomElement, P, PCSS, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemWidgetElement, buildWidgetMetadata } from '../types';\nimport { EXPRESSION_METADATA_TYPE } from '../../scaffolding/types';\n//namespace Pacem.Components.Cms {\nconst DATA_METADATA = {\n display: { icon: 'storage', name: 'Data', description: 'Data object widget.' },\n props: [\n {\n prop: 'model', type: EXPRESSION_METADATA_TYPE, display: {\n name: 'Model'\n }, extra: {\n selector: '.' + PCSS + '-widget'\n }\n }\n ]\n};\nlet PacemWidgetDataElement = class PacemWidgetDataElement extends PacemWidgetElement {\n constructor() {\n super(buildWidgetMetadata(DATA_METADATA));\n }\n};\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Json })\n], PacemWidgetDataElement.prototype, \"model\", void 0);\nPacemWidgetDataElement = __decorate([\n CustomElement({\n tagName: P + '-widget-data'\n })\n], PacemWidgetDataElement);\nexport { PacemWidgetDataElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Defaults, Watch, PropertyConverters, ViewChild, Utils, CustomElementUtils, PacemEventTarget, Net } from '@pacem/pacem-core';\nimport { EXPRESSION_METADATA_TYPE } from '../../scaffolding/types';\nimport { buildWidgetMetadata, gridifyMetadata } from '../types';\nimport { PacemBearerWidgetElement, ACCESS_TOKEN_METADATA } from './types';\n//namespace Pacem.Components.Cms {\nconst FETCH_PARAMETER_METADATA = {\n props: [\n { prop: 'name', type: 'string', isReadOnly: true, display: { name: 'Name', cssClass: ['cols-md-4', 'cols-lg-3', 'cols-hd-2'] } },\n { prop: 'value', type: EXPRESSION_METADATA_TYPE, display: { name: 'Value', cssClass: ['cols-md-8', 'cols-lg-9', 'cols-hd-10'] } }\n ]\n};\nconst FETCH_METADATA = {\n display: {\n icon: 'wifi', name: 'Api Fetcher', description: 'Fetching widget that retrieves data from a REST endpoint.'\n }, props: [\n {\n prop: 'manifest', type: EXPRESSION_METADATA_TYPE, isComplexType: true, display: {\n name: 'Api Manifest'\n }, extra: {\n selector: P + '-widget-apimanifest'\n }, validators: [{ type: 'required', errorMessage: 'Api Manifest is a required field.' }]\n },\n {\n prop: 'endpoint', type: 'object', isComplexType: true, display: {\n name: 'Endpoint', ui: 'oneToMany'\n }, validators: [{ type: 'required', errorMessage: 'Api Manifest is a required field.' }],\n extra: {\n source: (manifest) => manifest.endpoints.map(e => Utils.extend(e, { 'fullPath': `[${e.method.toUpperCase()}] ${e.path}` })).sort(),\n textProperty: 'fullPath', valueProperty: 'fullPath',\n dependsOn: [{ prop: 'manifest', hide: true }]\n }\n },\n {\n prop: 'parameters', type: 'array', display: {\n name: 'Parameters'\n },\n props: gridifyMetadata(FETCH_PARAMETER_METADATA),\n extra: {\n lockItems: true,\n dependsOn: [{ prop: 'endpoint', hide: true }]\n }\n },\n ACCESS_TOKEN_METADATA\n ]\n};\nconst PARAMETER_TAGNAME = P + '-widget-fetch-parameter';\nlet PacemWidgetFetchParameterElement = class PacemWidgetFetchParameterElement extends PacemEventTarget {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val.first);\n if (name === 'value' && !Utils.isNull(this._fetcher)) {\n this._fetcher.fetch();\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const fetcher = this._fetcher = CustomElementUtils.findAncestorOfType(this, PacemWidgetFetchElement);\n if (!Utils.isNull(this._fetcher) && !Utils.isNull(this.value)) {\n this._fetcher.fetch();\n }\n }\n};\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemWidgetFetchParameterElement.prototype, \"required\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemWidgetFetchParameterElement.prototype, \"name\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemWidgetFetchParameterElement.prototype, \"value\", void 0);\nPacemWidgetFetchParameterElement = __decorate([\n CustomElement({ tagName: PARAMETER_TAGNAME })\n], PacemWidgetFetchParameterElement);\nexport { PacemWidgetFetchParameterElement };\nlet PacemWidgetFetchElement = class PacemWidgetFetchElement extends PacemBearerWidgetElement {\n constructor() {\n super(buildWidgetMetadata(FETCH_METADATA));\n this._onerror = (e) => {\n this.failure = !(this.success = false);\n };\n this._onsuccess = (e) => {\n this.failure = !(this.success = true);\n };\n this._onresult = (e) => {\n this.result = e.detail;\n };\n }\n get _parameters() {\n return Array.from(this._itemsElement.children).filter(e => e.localName === PARAMETER_TAGNAME);\n }\n fetch() {\n const fetcher = this._fetcher, parameters = this._parameters || [], endpoint = this.endpoint;\n if (!Utils.isNull(endpoint)) {\n for (let param of endpoint.parameters) {\n if (param.required && Utils.isNull(parameters.find(p => p.name === param.name))) {\n // parameters not yet aligned with the ref endpoint:\n // not all the required parameters are attached => exit\n return;\n }\n }\n }\n // build-up fetch params\n const params = {};\n for (let parameter of parameters) {\n if (!Utils.isNullOrEmpty(parameter.value)) {\n params[parameter.name] = parameter.value;\n }\n else if (parameter.required) {\n // found an empty (required) parameter => exit\n return;\n }\n }\n fetcher.url = this.url;\n fetcher.method = this.method;\n fetcher.credentials = this.fetchCredentials;\n fetcher.headers = this.fetchHeaders;\n fetcher.parameters = params;\n return fetcher.fetch();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.fetch();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'endpoint' && !Utils.isNullOrEmpty(val)) {\n this._mergeEndpoint(val);\n }\n else\n switch (name) {\n case 'parameters':\n case 'fetchHeaders':\n case 'fetchCredentials':\n case 'url':\n case 'method':\n this.fetch();\n break;\n }\n }\n _mergeEndpoint(endpoint = this.endpoint) {\n this.url = this.manifest.baseUrl + endpoint.path;\n this.method = endpoint.method;\n this.fields = endpoint.response.fields;\n const itemsElement = this._itemsElement, parameters = this._parameters;\n // remove exceeding\n for (let j = parameters.length - 1; j >= 0; j--) {\n let item = parameters[j];\n let matching = endpoint.parameters.find(p => p.name === item.name);\n if (Utils.isNull(matching)) {\n item.remove();\n }\n }\n // add missing\n for (let param of endpoint.parameters) {\n let existing = parameters.find(p => p.name === param.name);\n if (Utils.isNull(existing)) {\n let item = existing = document.createElement(PARAMETER_TAGNAME);\n item.name = param.name;\n itemsElement.appendChild(item);\n }\n existing.required = param.required;\n }\n // for editing sake\n this.parameters = parameters;\n }\n};\n__decorate([\n Watch({ reflectBack: true, emit: true /* < due to metadata 'dependsOn' */, converter: PropertyConverters.Json })\n], PacemWidgetFetchElement.prototype, \"manifest\", void 0);\n__decorate([\n Watch({ reflectBack: true, emit: true /* < due to metadata 'dependsOn' */, converter: PropertyConverters.Json })\n], PacemWidgetFetchElement.prototype, \"endpoint\", void 0);\n__decorate([\n Watch({ reflectBack: true, emit: false, converter: PropertyConverters.String })\n], PacemWidgetFetchElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ reflectBack: true, emit: false, converter: PropertyConverters.String })\n], PacemWidgetFetchElement.prototype, \"method\", void 0);\n__decorate([\n Watch({ reflectBack: true, emit: false, converter: PropertyConverters.Json })\n], PacemWidgetFetchElement.prototype, \"fields\", void 0);\n__decorate([\n Watch( /* just for editing sake */)\n], PacemWidgetFetchElement.prototype, \"parameters\", void 0);\n__decorate([\n Watch( /* can only be databound or assigned at runtime */)\n], PacemWidgetFetchElement.prototype, \"result\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemWidgetFetchElement.prototype, \"fetching\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemWidgetFetchElement.prototype, \"success\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemWidgetFetchElement.prototype, \"failure\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemWidgetFetchElement.prototype, \"_fetcher\", void 0);\n__decorate([\n ViewChild('div[hidden]')\n], PacemWidgetFetchElement.prototype, \"_itemsElement\", void 0);\nPacemWidgetFetchElement = __decorate([\n CustomElement({\n tagName: P + '-widget-fetch', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-fetch autofetch=\"false\" fetching=\"{{ :host.fetching, twoway }}\" debounce=\"100\"\r\non-${Net.FetchResultEventName}=\":host._onresult($event)\" on-${Net.FetchErrorEventName}=\":host._onerror($event)\" on-${Net.FetchSuccessEventName}=\":host._onsuccess($event)\"></${P}-fetch><div hidden><${P}-content></${P}-content></div>`\n })\n], PacemWidgetFetchElement);\nexport { PacemWidgetFetchElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { PacemWidgetElement, EXPRESSION_WIDGET_METADATA_EXTRA } from '../types';\nimport { EXPRESSION_METADATA_TYPE } from '../../scaffolding/types';\nimport { PacemWidgetDataElement } from './data';\nimport { PacemWidgetFetchElement } from './fetcher';\n//namespace Pacem.Components.Cms {\nexport const FETCH_CREDENTIALS_METADATA = {\n prop: 'fetchCredentials', type: 'string', dataType: 'enumeration', display: { name: 'Fetch Credentials' }, extra: {\n enum: ['same-origin', 'omit', 'include']\n }\n};\nexport const ACCESS_TOKEN_METADATA = {\n prop: 'accessToken', type: EXPRESSION_METADATA_TYPE, display: { name: 'Access Token' },\n extra: Utils.extend({}, EXPRESSION_WIDGET_METADATA_EXTRA, { filter: (e) => e instanceof PacemWidgetDataElement || e instanceof PacemWidgetFetchElement })\n};\nexport class PacemBearerWidgetElement extends PacemWidgetElement {\n constructor() {\n super(...arguments);\n this.fetchCredentials = 'same-origin';\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'accessToken') {\n if (!Utils.isNullOrEmpty(val)) {\n this.fetchHeaders = { 'Authorization': 'Bearer ' + val };\n }\n else {\n this.fetchHeaders = {};\n }\n }\n }\n}\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemBearerWidgetElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemBearerWidgetElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemBearerWidgetElement.prototype, \"accessToken\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemBearerWidgetElement.prototype, \"fetching\", 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 { CustomElement, P } from '@pacem/pacem-core';\nimport { PacemWidgetElement } from '../types';\n//namespace Pacem.Components.Cms {\nlet PacemWidgetTranslatorElement = class PacemWidgetTranslatorElement extends PacemWidgetElement {\n};\nPacemWidgetTranslatorElement = __decorate([\n CustomElement({\n tagName: P + '-widget-translator'\n })\n], PacemWidgetTranslatorElement);\nexport { PacemWidgetTranslatorElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { PacemWidgetElement, buildWidgetMetadata } from '../types';\nimport { EXPRESSION_METADATA_TYPE } from '../../scaffolding/types';\n//namespace Pacem.Components.Cms {\nconst DATA_METADATA = {\n display: { icon: 'timer', name: 'Clock', description: 'Timer widget.' },\n props: [\n {\n prop: 'interval', type: EXPRESSION_METADATA_TYPE, display: {\n name: 'Interval (msec)'\n }, extra: {\n selector: '.' + PCSS + '-widget', step: 1000\n },\n validators: [{\n type: 'range', errorMessage: 'Negative numbers not allowed', params: { min: 0 }\n }]\n }\n ]\n};\nlet PacemWidgetClockElement = class PacemWidgetClockElement extends PacemWidgetElement {\n constructor() {\n super(buildWidgetMetadata(DATA_METADATA));\n this.interval = 0;\n }\n};\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Number })\n], PacemWidgetClockElement.prototype, \"interval\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemWidgetClockElement.prototype, \"time\", void 0);\nPacemWidgetClockElement = __decorate([\n CustomElement({\n tagName: P + '-widget-clock', template: `<${P}-timer interval=\"{{ :host.interval }}\" on-tick=\"{{ :host.time = Date.now() }}\"></${P}-timer>`\n })\n], PacemWidgetClockElement);\nexport { PacemWidgetClockElement };\n","/// <reference path=\"./swagger-types.d.ts\" />\nimport { Scaffolding } from '@pacem/pacem-scaffolding';\n//namespace Pacem.Cms.OpenApi {\nconst BAG = 'pacem:metadatabag';\nexport class SwaggerCmsParser {\n constructor(_openApi = new Scaffolding.OpenApi.OpenApiParser()) {\n this._openApi = _openApi;\n this._cachedMetadataUrls = [];\n }\n async load(url, headers) {\n let api = await this._openApi.load(url, headers);\n if (api != null) {\n api[BAG] = {};\n // greedy load of datafields\n for (let endpoint of api.endpoints) {\n await this._enrichSchemas(api, endpoint, headers);\n }\n }\n return api;\n }\n async _enrichSchemas(api, endpoint, headers) {\n const response = endpoint.response;\n if (response && response.meta) {\n response.fields = await this._fetchMetadata(api, { name: response.fullType, schema: response.meta }, headers);\n }\n // parameters?\n const parameters = endpoint.parameters;\n for (let parameter of (parameters || [])) {\n if (parameter.meta && parameter.fullType) {\n let fields = await this._fetchMetadata(api, { name: parameter.fullType, schema: parameter.meta }, headers);\n parameter.fields = fields;\n }\n }\n }\n clearCache() {\n const cache = this.cache, keys = this._cachedMetadataUrls;\n if (cache) {\n for (let key of keys) {\n cache.removeProperty(key);\n }\n // clear keys\n keys.splice(0);\n }\n }\n /**\n *\n * @param def1\n * @param headers HTTP headers for API fetching\n */\n async _fetchMetadata(api, def0, headers) {\n let _fetch = async (def1) => {\n let cols = [];\n if (def1 && def1.name) {\n // short-circuit if already in the bag\n if (api[BAG][def1.name]) {\n return api[BAG][def1.name];\n }\n /* reserve a place for this type so that it gets not fetched again if aggressive recursion occurs */ api[BAG][def1.name] = cols;\n let meta = { props: [] }, metadataUrl;\n if (/^https?:\\/\\//.test(def1.name)) {\n // name is url? then it's the endpoint for type metadata, fetch it!\n metadataUrl = def1.name;\n }\n else {\n console.warn(`Swagger entity definition keys must appear in form of absolute url. Their response to a GET request needs to be the entity metadata itself.\\nNo other options are currently supported.`);\n return;\n }\n if (metadataUrl) {\n let retrieveFn = async () => {\n let response = await fetch(metadataUrl, { credentials: 'omit', mode: 'cors', headers: headers });\n if (response.ok) {\n return await response.json();\n }\n };\n if (this.cache) {\n // check for session cache\n meta = this.cache.getPropertyValue(metadataUrl);\n if (!meta) {\n // no cache available? then fetch...\n meta = await retrieveFn();\n this._cachedMetadataUrls.push(metadataUrl);\n this.cache.setPropertyValue(metadataUrl, meta, /* persist in session not on location */ false);\n }\n }\n else {\n // do fetch\n meta = await retrieveFn();\n }\n }\n let schema = def1.schema;\n for (let col in schema.properties) {\n let column = schema.properties[col], field = meta && meta.props.find(p => p.prop === col);\n let datafield = Object.assign({\n prop: col, type: column.type || 'text', props: undefined\n }, field || /* if there's no match, then read-only */ { isReadOnly: true });\n if (field) {\n let $ref = (column.items && column.items.$ref) || column.$ref;\n if ($ref) {\n let ref = Scaffolding.OpenApi.getOpenApiDefinition(api, $ref), key = ref.name;\n if (api[BAG][key]) {\n datafield.props = api[BAG][key];\n }\n else {\n // recursion here\n datafield.props = await _fetch(ref);\n }\n }\n }\n cols.push(datafield);\n }\n }\n return cols;\n };\n return await _fetch(def0);\n }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils, Storage } from '@pacem/pacem-core';\nimport { buildWidgetMetadata } from '../types';\nimport { PacemBearerWidgetElement, ACCESS_TOKEN_METADATA } from './types';\nimport { SwaggerCmsParser } from '../../openapi/swagger-cms';\n//namespace Pacem.Components.Cms {\nconst APIMANIFEST_METADATA = {\n display: { icon: 'cloud_circle', name: 'Api Manifest', description: 'OpenApi parser for WebApi scaffolding.' },\n props: [\n {\n prop: 'url', type: 'text', display: {\n name: 'Url', description: 'Insert the url of the OpenApi json configuration.', cssClass: ['cols-lg-8'],\n watermark: 'https://domain.com/swagger/v1/swagger.json'\n },\n extra: { tooltip: true },\n validators: [{\n type: 'required', errorMessage: 'Url field is required.'\n }]\n },\n {\n prop: 'usecache', type: 'boolean', display: {\n name: 'Cache results', description: 'Whether to cache the manifest per-url.', cssClass: ['cols-lg-4'],\n ui: 'switcher'\n },\n extra: { tooltip: true }\n },\n ACCESS_TOKEN_METADATA\n ]\n};\nlet PacemWidgetApiManifestElement = class PacemWidgetApiManifestElement extends PacemBearerWidgetElement {\n constructor(_openapi = new SwaggerCmsParser(), _cache = new Storage()) {\n super(buildWidgetMetadata(APIMANIFEST_METADATA));\n this._openapi = _openapi;\n this._cache = _cache;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'url':\n case 'editing':\n case 'editable':\n this._scaffold();\n break;\n case 'usecache':\n this._openapi.cache = val ? this._cache : null;\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (this.usecache) {\n this._openapi.cache = this._cache;\n }\n this._scaffold();\n }\n _scaffold() {\n if (this.editing && this.editable && !Utils.isNullOrEmpty(this.url)) {\n this.fetching = true;\n this._openapi.load(this.url).then(s => {\n this.manifest = s;\n this.fetching = false;\n }, _ => {\n this.fetching = false;\n });\n }\n }\n};\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemWidgetApiManifestElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemWidgetApiManifestElement.prototype, \"usecache\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemWidgetApiManifestElement.prototype, \"manifest\", void 0);\nPacemWidgetApiManifestElement = __decorate([\n CustomElement({ tagName: P + '-widget-apimanifest' })\n], PacemWidgetApiManifestElement);\nexport { PacemWidgetApiManifestElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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, PropertyConverters, Utils, CustomElementUtils, Logging, PCSS } from '@pacem/pacem-core';\nimport { PacemWidgetElement } from '../types';\n//namespace Pacem.Components.Cms {\nexport class PacemUiWidgetElement extends PacemWidgetElement {\n constructor(metadata, colspan = 1, role) {\n super(metadata, role);\n this.colspan = colspan;\n this.rowspan = 1;\n }\n // just a flag class\n connectedCallback() {\n super.connectedCallback();\n Utils.addClass(this, 'ui-widget ' + PCSS + '-cell cols-xs-start-1 cols-xs-12 rows-xs-start-auto');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'row':\n Utils.removeClass(this, `rows-start-${old + 1}`);\n Utils.addClass(this, `rows-start-${val + 1}`);\n break;\n case 'rowspan':\n Utils.removeClass(this, `rows-${old}`);\n Utils.addClass(this, `rows-${val}`);\n break;\n case 'column':\n Utils.removeClass(this, `cols-start-${old + 1}`);\n Utils.addClass(this, `cols-start-${val + 1}`);\n break;\n case 'colspan':\n Utils.removeClass(this, `cols-${old}`);\n Utils.addClass(this, `cols-${val}`);\n break;\n case 'borders':\n (this.borders ? Utils.addClass : Utils.removeClass).apply(this, [this, PCSS + '-border']);\n break;\n case 'corners':\n (this.borders ? Utils.addClass : Utils.removeClass).apply(this, [this, PCSS + '-corners']);\n break;\n }\n }\n get container() {\n return this._container;\n }\n /** @overridable */\n findContainer() {\n return CustomElementUtils.findAncestor(this, n => n instanceof PacemCompositeWidgetElement);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n let iter = this._container = this.findContainer();\n if (!Utils.isNull(iter)) {\n iter.register(this);\n }\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._container)) {\n this._container.unregister(this);\n }\n super.disconnectedCallback();\n }\n}\n__decorate([\n Watch({ emit: true, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUiWidgetElement.prototype, \"column\", void 0);\n__decorate([\n Watch({ emit: true, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUiWidgetElement.prototype, \"row\", void 0);\n__decorate([\n Watch({ emit: true, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUiWidgetElement.prototype, \"colspan\", void 0);\n__decorate([\n Watch({ emit: true, reflectBack: true, converter: PropertyConverters.Number })\n], PacemUiWidgetElement.prototype, \"rowspan\", void 0);\n__decorate([\n Watch({ emit: true, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemUiWidgetElement.prototype, \"borders\", void 0);\n__decorate([\n Watch({ emit: true, reflectBack: true, converter: PropertyConverters.Boolean })\n], PacemUiWidgetElement.prototype, \"corners\", void 0);\nexport const WidgetRegisterEventName = \"widgetregister\";\nexport const WidgetUnregisterEventName = \"widgetunregister\";\nexport const LayoutChangeEventName = \"layoutchange\";\nexport class WidgetRegisterEvent extends CustomEvent {\n constructor(item, eventInit) {\n super(WidgetRegisterEventName, Utils.extend(eventInit || {}, { detail: item }));\n }\n}\nexport class WidgetUnregisterEvent extends CustomEvent {\n constructor(item, eventInit) {\n super(WidgetUnregisterEventName, Utils.extend(eventInit || {}, { detail: item }));\n }\n}\nexport class PacemCompositeWidgetElement extends PacemUiWidgetElement {\n get itemsElement() {\n return this;\n }\n validate(item) {\n return item instanceof PacemUiWidgetElement;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n Utils.addClass(this.itemsElement, PCSS + '-items-element');\n }\n /**\n * Appends a child Element to this CompositeWidget's itemsElement.\n * @param item New child element\n */\n appendItem(item) {\n this.itemsElement.appendChild(item);\n }\n /**\n * Registers a new item among the items.\n * @param item {PacemUiWidgetElement} Item to be enrolled\n */\n register(item) {\n if (!this.validate(item)) {\n this.log(Logging.LogLevel.Debug, `${(item && item.localName)} element couldn't be registered in a ${this.localName} element.`);\n return false;\n }\n let retval = false;\n const items = this.items = this.items || [];\n if (Utils.isNullOrEmpty(items)) {\n this.items = [item];\n retval = true;\n }\n else if (items.indexOf(item) === -1) {\n items.push(item);\n retval = true;\n }\n //\n if (retval) {\n this.dispatchEvent(new WidgetRegisterEvent(item));\n }\n return retval;\n }\n /**\n * Removes an existing element from the items.\n * @param item {PacemUiWidgetElement} Item to be removed\n */\n unregister(item) {\n const items = this.items, ndx = !Utils.isNullOrEmpty(items) && items.indexOf(item);\n if (ndx >= 0) {\n let item = items.splice(ndx, 1);\n this.dispatchEvent(new WidgetUnregisterEvent(item[0]));\n return true;\n }\n return false;\n }\n}\n__decorate([\n Watch( /* can only be databound or assigned at runtime */)\n], PacemCompositeWidgetElement.prototype, \"items\", void 0);\n// #endregion COMPOSITE\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Defaults, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { buildWidgetMetadata, EXPRESSION_WIDGET_METADATA_EXTRA } from '../types';\nimport { EXPRESSION_METADATA_TYPE } from '../../scaffolding/types';\nimport { PacemUiWidgetElement } from './types';\n//namespace Pacem.Components.Cms {\nconst TEXT_METADATA = buildWidgetMetadata({\n display: { icon: 'font_download', name: 'Text', description: 'Plain text widget.' },\n props: [{\n prop: 'text', type: EXPRESSION_METADATA_TYPE, display: { name: 'Text' }, extra: EXPRESSION_WIDGET_METADATA_EXTRA\n }]\n});\nlet PacemWidgetTextElement = class PacemWidgetTextElement extends PacemUiWidgetElement {\n constructor() {\n super(TEXT_METADATA);\n }\n};\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemWidgetTextElement.prototype, \"text\", void 0);\nPacemWidgetTextElement = __decorate([\n CustomElement({\n tagName: P + '-widget-text', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-text text=\"{{ :host.text }}\"></${P}-text>`\n })\n], PacemWidgetTextElement);\nexport { PacemWidgetTextElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Defaults, ViewChild } from '@pacem/pacem-core';\nimport { PacemCompositeWidgetElement } from '../types';\n//namespace Pacem.Components.Cms {\n/**\n * UI widget container that eases dragdrop-based enrollment into composite widgets.\n */\nlet PacemWidgetPickerElement = class PacemWidgetPickerElement extends PacemCompositeWidgetElement {\n register(item) {\n const retval = super.register(item);\n if (retval) {\n item.hide = true;\n }\n return retval;\n }\n};\n__decorate([\n ViewChild(P + '-drag-drop')\n], PacemWidgetPickerElement.prototype, \"_dragDrop\", void 0);\nPacemWidgetPickerElement = __decorate([\n CustomElement({\n tagName: P + '-widget-picker', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater datasource=\"{{ :host.items }}\">\r\n <template>\r\n <${P}-panel behaviors=\"{{ [::_dragDrop] }}\" class=\"${PCSS}-widget-itempicker display-flex flex-fill flex-middle flex-nowrap\">\r\n <i class=\"${PCSS}-icon flex-auto\" dragger>drag_indicator</i>\r\n <${P}-icon icon=\"{{ ^item.metadata.display.icon }}\" class=\"flex-auto ${PCSS}-margin margin-x-1\"></${P}-icon>\r\n <${P}-text text=\"{{ ^item.metadata.display.name }}\"></${P}-text>\r\n </${P}-panel>\r\n </template>\r\n</${P}-repeater>\r\n<${P}-drag-drop handle-selector=\"i.${PCSS}-icon[dragger]\"></${P}-drag-drop>\r\n<${P}-content></${P}-content>`\n })\n], PacemWidgetPickerElement);\nexport { PacemWidgetPickerElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Watch, PropertyConverters, Debounce, Utils, UI, PropertyChangeEventName } from '@pacem/pacem-core';\nimport { buildWidgetMetadata } from '../../types';\nimport { PacemCompositeWidgetElement } from '../types';\n//namespace Pacem.Components.Cms {\nfunction createSvgGridBox() {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.style.pointerEvents = 'none';\n svg.style.zIndex = '1000';\n svg.setAttribute('height', '100%');\n svg.setAttribute('width', '100%');\n svg.setAttribute('preserveAspectRatio', 'none');\n svg.setAttribute('class', 'grid-cell-wrapper');\n //svg.style.padding = '2px';\n //svg.style.boxSizing = 'border-box';\n svg.innerHTML = `<rect class=\"grid-cell\" width=\"100%\" height=\"100%\"></rect>`;\n return svg;\n}\nexport const GRID_COLUMNS = 12;\nconst FALLBACK_COLUMNS = GRID_COLUMNS;\nconst FALLBACK_ROWS = 1;\nconst GRID_METADATA = {\n display: {\n icon: 'grid_on',\n name: 'Grid',\n description: 'Composition Widget that lays out child-widgets in a grid container.'\n },\n props: [\n {\n prop: 'rows', type: 'int', display: {\n name: 'Rows', cssClass: ['cols-lg-4']\n }, validators: [\n { type: 'required', errorMessage: '' },\n {\n type: 'range', errorMessage: '', params: {\n min: 1, max: 24\n }\n }\n ]\n }, {\n prop: 'rowGap', type: 'int', display: {\n //ui: 'slider',\n name: 'Row gap', cssClass: ['cols-lg-4']\n }, validators: [\n // { type: 'required', errorMessage: '' },\n {\n type: 'range', errorMessage: '', params: {\n min: 0, max: 3, step: .25\n }\n }\n ]\n }, {\n prop: 'columnGap', type: 'int', display: {\n //ui: 'slider',\n name: 'Column gap', cssClass: ['cols-lg-4']\n }, validators: [\n // { type: 'required', errorMessage: '' },\n {\n type: 'range', errorMessage: '', params: {\n min: 0, max: 3, step: .25\n }\n }\n ]\n }\n ]\n};\nlet PacemGridWidgetElement = class PacemGridWidgetElement extends PacemCompositeWidgetElement {\n constructor() {\n super(buildWidgetMetadata(GRID_METADATA), FALLBACK_COLUMNS, \"grid\");\n this._widgetPropertyChange = (evt) => {\n if (evt.detail.propertyName === 'row' || evt.detail.propertyName === 'rowspan') {\n const widget = evt.target;\n this.rows = Math.max(this.rows, widget.row + widget.rowspan);\n }\n };\n this._dragDropHandler = (evt) => {\n const args = evt.detail, el = args.element;\n switch (evt.type) {\n case UI.DragDropEventType.Start:\n this._gridBoxes.forEach(svg => { svg.style.pointerEvents = 'auto'; });\n this._initState = {\n colspan: el.colspan,\n rowspan: el.rowspan,\n col: el.column,\n row: el.row\n };\n break;\n case UI.DragDropEventType.End:\n this._gridBoxes.forEach(svg => { svg.style.pointerEvents = 'none'; });\n break;\n case UI.DragDropEventType.Over:\n var dropTarget = args.target;\n var col = +dropTarget.style.gridColumnStart - 1;\n var row = +dropTarget.style.gridRowStart - 1;\n const farRight = col + this._initState.colspan, farBottom = row + this._initState.rowspan;\n // check overlap\n if (!this._intersects(el, col, row, el.colspan, el.rowspan)) {\n let fireLayoutChange = false;\n //\n if (farRight <= (this.columns || FALLBACK_COLUMNS)) {\n fireLayoutChange = el.column !== col;\n el.column = col; // + '/' + (col + this._initState.colspan);\n }\n if (farBottom <= (this.rows || FALLBACK_ROWS)) {\n fireLayoutChange = fireLayoutChange || (el.row !== row);\n el.row = row; // + '/' + (row + this._initState.rowspan);\n }\n if (fireLayoutChange) {\n // attributechange should suffice\n // this.dispatchLayoutChangeEvent();\n }\n }\n break;\n }\n ;\n };\n this._resizeHandler = (evt) => {\n switch (evt.type) {\n case UI.RescaleEventType.Start:\n Utils.addClass(evt.detail.element, PCSS + '-rescaling');\n this._gridBoxes.forEach(svg => { svg.style.pointerEvents = 'auto'; });\n break;\n case UI.RescaleEventType.End:\n this._gridBoxes.forEach(svg => { svg.style.pointerEvents = 'none'; });\n Utils.removeClass(evt.detail.element, PCSS + '-rescaling');\n break;\n case UI.RescaleEventType.Rescale:\n evt.preventDefault();\n // check pos\n const pos = { x: evt.clientX, y: evt.clientY }, handle = evt.detail.handle;\n const dropTarget = document.elementsFromPoint(pos.x, pos.y).find(e => this._dragDrop.dropTargets.indexOf(e) >= 0);\n if (dropTarget) {\n var col = +dropTarget.style.gridColumnStart;\n var row = +dropTarget.style.gridRowStart;\n const widget = evt.detail.element, startcol = widget.column + 1, startrow = widget.row + 1;\n const colspan = 1 + col - startcol, rowspan = 1 + row - startrow;\n if (!this._intersects(widget, widget.column, widget.row, colspan, rowspan)) {\n let fireLayoutChange = false;\n //\n if (col >= startcol && handle.endsWith('right')) {\n fireLayoutChange = widget.colspan !== colspan;\n widget.colspan = colspan;\n }\n if (row >= startrow && handle.startsWith('bottom')) {\n fireLayoutChange = fireLayoutChange || widget.rowspan !== rowspan;\n widget.rowspan = rowspan;\n }\n if (fireLayoutChange) {\n // attributechange should suffice\n // this.dispatchLayoutChangeEvent();\n }\n }\n }\n break;\n }\n };\n this._gridBoxes = [];\n }\n register(item) {\n let retval = super.register(item);\n if (retval) {\n const row = item.row || 0, column = item.column || 0, colspan = item.colspan || 2, rowspan = item.rowspan || 1;\n let foundspot = !this._intersects(item, column, row, colspan, rowspan);\n if (foundspot) {\n item.row = row;\n item.column = column;\n item.colspan = colspan;\n item.rowspan = rowspan;\n }\n else {\n if (!foundspot) {\n // select a spot or create a new row\n let check = (elasticOnColspan = false) => {\n let maxColIndex = this.columns - 1;\n if (!elasticOnColspan) {\n maxColIndex = maxColIndex - colspan + 1;\n }\n for (let j = 0; j < this.rows; j++) {\n for (let i = 0; i <= maxColIndex; i++) {\n if (!this._intersects(item, i, j, colspan, rowspan)) {\n item.column = i;\n item.row = j;\n item.colspan = Math.min(maxColIndex + 1 - i, colspan);\n item.rowspan = rowspan;\n foundspot = true;\n break;\n }\n }\n if (foundspot)\n break;\n }\n };\n check();\n if (!foundspot && colspan > 1) {\n // find first avail slot conceding less colspan\n check(true);\n }\n }\n // okay, surrender and create a new row\n if (!foundspot) {\n this.rows++;\n item.row = this.rows - 1;\n item.column = 0;\n }\n }\n //\n // item.behaviors.push(this._dragDrop, this._rescaler);\n item.behaviors = [this._dragDrop, this._rescaler];\n item.addEventListener(PropertyChangeEventName, this._widgetPropertyChange, false);\n }\n //\n return retval;\n }\n unregister(item) {\n let retval = super.unregister(item);\n if (retval) {\n item.removeEventListener(PropertyChangeEventName, this._widgetPropertyChange, false);\n const ndx = item.behaviors.indexOf(this._dragDrop);\n if (ndx >= 0)\n item.behaviors.splice(ndx, 1);\n const ndx1 = item.behaviors.indexOf(this._rescaler);\n if (ndx1 >= 0)\n item.behaviors.splice(ndx1, 1);\n }\n return retval;\n }\n _intersects(who, col, row, colspan, rowspan) {\n for (let item of this.items) {\n let widget = item;\n if (widget === who) {\n continue;\n }\n if ((widget.column < (col + colspan) && (widget.column + widget.colspan) > col)\n && (widget.row < (row + rowspan) && (widget.row + widget.rowspan) > row)) {\n return true;\n }\n }\n return false;\n }\n connectedCallback() {\n super.connectedCallback();\n Utils.addClass(this, PCSS + '-grid');\n // drag-drop\n let dragDrop = this._dragDrop = document.createElement(P + '-drag-drop');\n let floater = document.createElement('div');\n document.body.appendChild(floater);\n dragDrop.floater = floater;\n dragDrop.mode = UI.DragDataMode.Alias;\n dragDrop.dropBehavior = UI.DropBehavior.None;\n dragDrop.addEventListener(UI.DragDropEventType.Start, this._dragDropHandler, false);\n dragDrop.addEventListener(UI.DragDropEventType.Over, this._dragDropHandler, false);\n dragDrop.addEventListener(UI.DragDropEventType.End, this._dragDropHandler, false);\n document.body.appendChild(dragDrop);\n // rescale\n let rescale = this._rescaler = document.createElement(P + '-rescale');\n rescale.handles = [UI.RescaleHandle.Right, UI.RescaleHandle.Bottom];\n rescale.addEventListener(UI.RescaleEventType.Start, this._resizeHandler, false);\n rescale.addEventListener(UI.RescaleEventType.Rescale, this._resizeHandler, false);\n rescale.addEventListener(UI.RescaleEventType.End, this._resizeHandler, false);\n document.body.appendChild(rescale);\n // editor\n // default configuration\n if (Utils.isNullOrEmpty(this.columns)) {\n this.columns = GRID_COLUMNS;\n }\n if (Utils.isNullOrEmpty(this.rows)) {\n this.rows = 1;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.adapt();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n this.adapt();\n }\n disconnectedCallback() {\n var dragDrop = this._dragDrop, rescale = this._rescaler;\n if (!Utils.isNull(dragDrop)) {\n dragDrop.floater.remove();\n dragDrop.removeEventListener(UI.DragDropEventType.Start, this._dragDropHandler, false);\n dragDrop.removeEventListener(UI.DragDropEventType.Over, this._dragDropHandler, false);\n dragDrop.removeEventListener(UI.DragDropEventType.End, this._dragDropHandler, false);\n dragDrop.remove();\n this._dragDrop = null;\n }\n if (!Utils.isNull(rescale)) {\n rescale.removeEventListener(UI.RescaleEventType.Start, this._resizeHandler, false);\n rescale.removeEventListener(UI.RescaleEventType.Rescale, this._resizeHandler, false);\n rescale.removeEventListener(UI.RescaleEventType.End, this._resizeHandler, false);\n rescale.remove();\n this._rescaler = null;\n }\n super.disconnectedCallback();\n }\n _normalize(measure, defaultValue = 1) {\n if (typeof measure === 'string') {\n return measure;\n }\n else if (measure == null) {\n measure = defaultValue;\n }\n return this.unitPixels(measure) + 'px';\n }\n unitPixels(qty) {\n return qty * (this.unit || 8);\n }\n adapt() {\n this.style.marginTop = this.unitPixels(this.marginTop || 0) + 'px';\n this.style.marginBottom = this.unitPixels(this.marginBottom || 0) + 'px';\n //\n this.style.gridTemplateColumns = `repeat(${(this.columns || FALLBACK_COLUMNS)}, 1fr)`;\n //this.style.gridAutoRows = `minmax(${(this.minRowheight || 24)}, ${(this.rowheight || 'auto')})`;\n let minrowheight = this._normalize(this.minRowheight, 3), rowheight = this._normalize(this.rowheight || 'auto');\n this.style.gridTemplateRows = `repeat(${(this.rows || FALLBACK_ROWS)}, minmax(${minrowheight}, ${rowheight}))`;\n this.style.gridRowGap = this._normalize(this.rowGap, 1);\n this.style.gridColumnGap = this._normalize(this.columnGap, 1);\n //\n this._setGridLines();\n }\n _setGridLines() {\n var splice = 0;\n const editing = this.editing;\n if (editing) {\n const cols = this.columns || FALLBACK_COLUMNS, rows = this.rows || FALLBACK_ROWS, total = cols * rows;\n splice = total;\n for (let k = 0; k < total; k++) {\n while (this._gridBoxes.length <= k) {\n let s = createSvgGridBox();\n this.appendChild(s);\n this._gridBoxes.push(s);\n }\n let svg = this._gridBoxes[k];\n const i = k % cols, j = Math.floor(k / cols);\n svg.style.gridColumn = (i + 1).toString();\n svg.style.gridRow = (j + 1).toString();\n }\n }\n for (let svg of this._gridBoxes.splice(splice)) {\n svg.remove();\n }\n // behaviors to be synchronized\n if (!Utils.isNull(this._dragDrop) && !Utils.isNull(this._rescaler)) {\n this._dragDrop.disabled = this._rescaler.disabled\n = !editing;\n this._dragDrop.dropTargets = this._gridBoxes;\n }\n }\n};\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemGridWidgetElement.prototype, \"unit\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemGridWidgetElement.prototype, \"marginTop\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemGridWidgetElement.prototype, \"marginBottom\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemGridWidgetElement.prototype, \"columns\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemGridWidgetElement.prototype, \"rows\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemGridWidgetElement.prototype, \"minRowheight\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], PacemGridWidgetElement.prototype, \"rowheight\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemGridWidgetElement.prototype, \"rowGap\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number })\n], PacemGridWidgetElement.prototype, \"columnGap\", void 0);\n__decorate([\n Debounce(100)\n], PacemGridWidgetElement.prototype, \"adapt\", null);\nPacemGridWidgetElement = __decorate([\n CustomElement({ tagName: P + '-widget-grid' })\n], PacemGridWidgetElement);\nexport { PacemGridWidgetElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Defaults, Watch, PropertyConverters, ViewChild, Utils, Components, UI } from '@pacem/pacem-core';\nimport { Components as ScaffoldingComponents } from '@pacem/pacem-scaffolding';\nimport { Functions, EXPRESSION_METADATA_TYPE } from '../../scaffolding/types';\nimport { EXPRESSION_WIDGET_METADATA_EXTRA, gridifyMetadata } from '../types';\n//namespace Pacem.Components.Cms {\n/** Default metadata ('expression' field) 'type' factory. */\nexport const DATACOLUMNS_METADATA_TYPE = (host, hostRef = ':host', hostEntityRef = ':host.entity') => {\n const attrs = {}, meta = host.metadata, fns = Functions, fnKeys = [];\n attrs['properties'] = `{{ Pacem.CustomElementUtils.getWatchedProperty(${hostEntityRef}, '${meta.prop}').config.converter }}`;\n const tagName = P + '-datacolumns';\n let extra = (meta.extra || {});\n // properties\n if (!Utils.isNullOrEmpty(extra.properties)) {\n switch (typeof extra.properties) {\n case 'string':\n attrs['properties'] = `{{ ${hostEntityRef}.${extra.properties} }}`;\n break;\n case 'function':\n const fnKey = 'fn' + Utils.uniqueCode();\n fns[fnKey] = extra.properties;\n attrs['properties'] = `{{ Pacem.Components.Cms.Functions.${fnKey}(${hostRef}), once }}`;\n // tidy-up memento\n fnKeys.push(fnKey);\n break;\n }\n }\n if (fnKeys.length > 0) {\n // tidy-up\n attrs['on-unload'] = `{{ Pacem.Components.Cms.Functions.dismiss('${fnKeys.join('\\',\\'')}') }}`;\n }\n return { tagName: tagName, attrs: attrs };\n};\nconst DATACOLUMN_METADATA = {\n display: { name: 'Columns' },\n props: [\n { prop: 'header', type: 'string', display: { cssClass: ['form-minimal'], name: 'Header' } },\n {\n prop: 'content', type: EXPRESSION_METADATA_TYPE, display: { name: 'Content' },\n extra: EXPRESSION_WIDGET_METADATA_EXTRA\n }\n ]\n};\nlet PacemDataColumnElement = class PacemDataColumnElement extends Components.PacemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'content':\n this.contentExpression = val;\n break;\n case 'contentExpression':\n this.setAttribute('content', val || '');\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._form.entity = this;\n this._form.metadata = gridifyMetadata(DATACOLUMN_METADATA);\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDataColumnElement.prototype, \"header\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDataColumnElement.prototype, \"content\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemDataColumnElement.prototype, \"contentExpression\", void 0);\n__decorate([\n ViewChild(P + '-form')\n], PacemDataColumnElement.prototype, \"_form\", void 0);\nPacemDataColumnElement = __decorate([\n CustomElement({\n tagName: P + '-widget-datacolumn', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-form class=\"panel-body\" autogenerate=\"true\"></${P}-form>`\n })\n], PacemDataColumnElement);\nexport { PacemDataColumnElement };\nlet PacemDataColumnsElement = class PacemDataColumnsElement extends ScaffoldingComponents.Scaffolding.PacemBaseElement {\n constructor() {\n super(...arguments);\n this._dropHandler = (e) => {\n this.changeHandler(e);\n };\n this._columnifyMetadata = (props = this.properties) => {\n return (props || []).map(p => {\n const header = typeof p.display?.name === 'function' ? /* NOT supported */ p.prop : (p.display?.name || p.prop);\n const c = {\n header,\n content: `{{ ^item.${p.prop} }}`\n };\n return c;\n }).sort((a, b) => a.header > b.header ? 1 : -1);\n };\n }\n get inputFields() {\n return [];\n }\n toggleReadonlyView(readonly) {\n // leave it all to the template bindings\n }\n onChange(evt) {\n return Utils.fromResult(this.value = this._repeater.datasource);\n }\n acceptValue(val) {\n if (!Utils.isNull(this._repeater)) {\n this._repeater.datasource = Utils.clone(val || []);\n }\n }\n getViewValue(value) {\n return /* dummy */ '[DataColumns]';\n }\n convertValueAttributeToProperty(attr) {\n return PropertyConverters.Json.convert(attr, this);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._propDragger.addEventListener(UI.DragDropEventType.End, this._dropHandler, false);\n this._colDragger.addEventListener(UI.DragDropEventType.End, this._dropHandler, false);\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._propDragger)) {\n this._propDragger.removeEventListener(UI.DragDropEventType.End, this._dropHandler, false);\n }\n if (!Utils.isNull(this._colDragger)) {\n this._colDragger.removeEventListener(UI.DragDropEventType.End, this._dropHandler, false);\n }\n super.disconnectedCallback();\n }\n};\n__decorate([\n ViewChild(`${P}-repeater[columns]`)\n], PacemDataColumnsElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(`${P}-drag-drop[properties]`)\n], PacemDataColumnsElement.prototype, \"_propDragger\", void 0);\n__decorate([\n ViewChild(`${P}-drag-drop[columns]`)\n], PacemDataColumnsElement.prototype, \"_colDragger\", void 0);\n__decorate([\n ViewChild('div[drop-target]')\n], PacemDataColumnsElement.prototype, \"_dropTarget\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemDataColumnsElement.prototype, \"properties\", void 0);\nPacemDataColumnsElement = __decorate([\n CustomElement({\n tagName: P + '-widget-datacolumns', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${PCSS}-datacolumns\">\r\n <div class=\"datacolumns-main display-flex flex-fill\">\r\n\r\n <${P}-drag-drop mode=\"${UI.DragDataMode.Alias}\" disabled=\"{{ :host.readonly }}\" handle-selector=\"*[handle]\"\r\n drop-behavior=\"${UI.DropBehavior.InsertChild}\" drop-targets=\"{{ [::_dropTarget] }}\" columns></${P}-drag-drop>\r\n <${P}-repeater class=\"display-flex flex-fill\" columns>\r\n <!-- columns -->\r\n <div class=\"display-flex flex-nowrap\" drop-target>\r\n <template>\r\n <${P}-panel behaviors=\"{{ [::_colDragger] }}\">\r\n <div class=\"${PCSS}-panel panel-side-left side-auto\">\r\n <div class=\"panel-side\">\r\n <${P}-button class=\"display-block button-flat icon-glyph-small\" icon-glyph=\"drag_indicator\" handle></${P}-button>\r\n <${P}-button class=\"display-block button-flat icon-glyph-small\" on-click=\":host.value.splice(^index, 1)\" icon-glyph=\"clear\"></${P}-button>\r\n </div>\r\n <div class=\"panel-heading\">\r\n <${P}-text text=\"{{ ^item.header }}\"></${P}-text>\r\n </div>\r\n <${P}-widget-datacolumn class=\"panel-body\" header=\"{{ ^item.header, twoway }}\" content-expression=\"{{ ^item.content, twoway }}\"></${P}-widget-datacolumn>\r\n </div>\r\n </${P}-panel>\r\n </template>\r\n </div>\r\n </${P}-repeater>\r\n\r\n </div>\r\n <${P}-panel class=\"datacolumns-props\" hide=\"{{ :host.readonly }}\">\r\n <${P}-drag-drop mode=\"${UI.DragDataMode.Copy}\" disabled=\"{{ :host.readonly }}\" handle-selector=\"*[handle]\"\r\n drop-behavior=\"${UI.DropBehavior.InsertChild}\" drop-targets=\"{{ [::_dropTarget] }}\" properties></${P}-drag-drop>\r\n <${P}-repeater datasource=\"{{ :host._columnifyMetadata(:host.properties) }}\">\r\n <!-- properties -->\r\n <template>\r\n <${P}-panel behaviors=\"{{ [::_propDragger] }}\" class=\"${PCSS}-panel panel-side-left side-auto panel-primary panel-filled ${PCSS}-margin margin-bottom-1\">\r\n <div class=\"panel-side\">\r\n <${P}-button class=\"display-block button-flat icon-glyph-small\" icon-glyph=\"drag_indicator\" handle></${P}-button>\r\n </div>\r\n <div class=\"text-truncate panel-body\">\r\n <${P}-span text=\"{{ ^item.header }}\"></${P}-span>\r\n </div>\r\n </${P}-panel>\r\n </template>\r\n </${P}-repeater>\r\n </${P}-panel>\r\n</div>`\n })\n], PacemDataColumnsElement);\nexport { PacemDataColumnsElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Watch, PropertyConverters, ViewChild, Utils, Components } from '@pacem/pacem-core';\nimport { EXPRESSION_METADATA_TYPE } from '../../../scaffolding/types';\nimport { EXPRESSION_WIDGET_METADATA_EXTRA, buildWidgetMetadata, gridifyMetadata } from '../../types';\nimport { PacemWidgetDataElement } from '../../helpers/data';\nimport { PacemWidgetFetchElement } from '../../helpers/fetcher';\nimport { DATACOLUMNS_METADATA_TYPE } from '../../scaffolding/datacolumns';\nimport { PacemUiWidgetElement } from '../types';\n//namespace Pacem.Components.Cms {\nconst DATACOLUMN_METADATA = {\n display: { name: 'DataColumn' },\n props: [\n { prop: \"header\", type: \"string\", display: { name: \"Header\" } },\n { prop: \"content\", type: EXPRESSION_METADATA_TYPE, display: { name: \"Content\" }, extra: EXPRESSION_WIDGET_METADATA_EXTRA },\n ]\n};\nconst DATAGRID_METADATA = buildWidgetMetadata({\n display: { icon: 'table_chart', name: 'DataGrid', description: 'DataGrid widget.' },\n props: [{\n prop: 'datasource', type: EXPRESSION_METADATA_TYPE, display: { name: 'Datasource' },\n extra: Utils.extend({}, EXPRESSION_WIDGET_METADATA_EXTRA, { filter: (e) => e instanceof PacemWidgetDataElement || e instanceof PacemWidgetFetchElement })\n },\n {\n prop: 'columns', type: DATACOLUMNS_METADATA_TYPE, display: { name: 'Columns' },\n // this will include 'datasource' as argument in the oneToMany source fn\n extra: { properties: 'datarowMetadata' },\n props: gridifyMetadata(DATACOLUMN_METADATA)\n }]\n});\nconst DATAGRID_HEADING_SEPARATOR = 'pacem-widget-datagrid-heading';\nfunction gridify(columns = []) {\n var output = '';\n for (let column of columns || []) {\n // if empty then 1fr\n const col = column.width || 1;\n if (typeof col === 'number') {\n output += col + 'fr ';\n }\n else {\n output += 'auto ';\n }\n }\n return output;\n}\nfunction datagridFragments(columns = []) {\n const fragHeading = document.createDocumentFragment(), fragBody = document.createDocumentFragment();\n let j = 1;\n for (let col of columns) {\n // heading\n const headcell = document.createElement('div');\n headcell.classList.add(PCSS + '-headcell');\n headcell.textContent = col.header;\n fragHeading.appendChild(headcell);\n // body\n const datacell = new Components.PacemSpanElement();\n datacell.classList.add(PCSS + '-datacell', 'datacell-corners');\n datacell.style.gridColumn = j.toString();\n datacell.setAttribute('css', \"{{ {'grid-row': ^index+2} }}\");\n datacell.setAttribute('content', col.content);\n fragBody.appendChild(datacell);\n j++;\n }\n const datarow = new Components.PacemPanelElement();\n datarow.classList.add(PCSS + '-datarow');\n datarow.setAttribute('css', \"{{ {'grid-row': ^index+2} }}\");\n datarow.setAttribute('css-class', \"{{ {'datarow-alt': ^index % 2 === 1} }}\");\n datarow.style.gridColumn = \"1/\" + (columns.length + 1);\n fragBody.appendChild(datarow);\n return { head: fragHeading, body: fragBody };\n}\nfunction datagridInnerHTML(id, columns = []) {\n const { head, body } = datagridFragments(columns);\n const head0 = document.createElement('div');\n head0.appendChild(head);\n const body0 = document.createElement('div');\n body0.appendChild(body);\n return `<${P}-repeater datasource=\"{{ #${id}.datasource }}\">\r\n <div class=\"${PCSS}-datatable\" style=\"grid-template-columns: ${gridify(columns)}\">\r\n ${head0.innerHTML}\r\n <template>${body0.innerHTML}</template>\r\n</div></${P}-repeater>`;\n}\nlet PacemWidgetDataGridElement = class PacemWidgetDataGridElement extends PacemUiWidgetElement {\n constructor() {\n super(DATAGRID_METADATA);\n this.columns = [];\n this.datasource = [];\n this.datarowMetadata = [];\n this._builtUponDatasource = false;\n }\n _gridify(columns = this.columns) {\n var output = '';\n for (let column of columns || []) {\n // if empty then 1fr\n const col = column.width || 1;\n if (typeof col === 'number') {\n output += col + 'fr ';\n }\n else {\n output += 'auto ';\n }\n }\n return output;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'columns':\n /*\n *\n * TODO: manage columns separately!\n * Create an ad-hoc editor/formfield and a dedicated form\n *\n * */\n this.innerHTML = datagridInnerHTML(this.id, val);\n break;\n case 'datasource':\n this._extractMetadataJustInCase(val);\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.innerHTML = datagridInnerHTML(this.id, this.columns);\n }\n _seekArray(ds) {\n if (Utils.isArray(ds)) {\n return ds;\n }\n if (typeof ds === 'object') {\n for (let prop in ds) {\n const arr = this._seekArray(ds[prop]);\n if (!Utils.isNull(arr)) {\n return arr;\n }\n }\n }\n return null;\n }\n _extractMetadataJustInCase(ds = this.datasource) {\n if ((Utils.isNullOrEmpty(this.datarowMetadata) || this._builtUponDatasource) && !Utils.isNullOrEmpty(ds)) {\n const arr = this._seekArray(ds);\n if (!Utils.isNullOrEmpty(arr)) {\n const props = [];\n const item = arr[0];\n for (let prop in item) {\n props.push({ prop, type: typeof item[prop] });\n }\n this.datarowMetadata = props;\n this._builtUponDatasource = true;\n }\n }\n }\n};\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.Json })\n], PacemWidgetDataGridElement.prototype, \"columns\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemWidgetDataGridElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemWidgetDataGridElement.prototype, \"datarowMetadata\", void 0);\n__decorate([\n ViewChild(`.${PCSS}-datatable`)\n], PacemWidgetDataGridElement.prototype, \"_datatable\", void 0);\n__decorate([\n ViewChild('template')\n], PacemWidgetDataGridElement.prototype, \"_template\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemWidgetDataGridElement.prototype, \"_repeater\", void 0);\nPacemWidgetDataGridElement = __decorate([\n CustomElement({\n tagName: P + '-widget-datagrid'\n })\n], PacemWidgetDataGridElement);\nexport { PacemWidgetDataGridElement };\n","import { Utils } from '@pacem/pacem-core';\nexport const PermissionEditEventName = 'permissionedit';\nexport class PermissionEditEvent extends CustomEvent {\n constructor(permissible) {\n super(PermissionEditEventName, { detail: permissible, cancelable: false, bubbles: true });\n }\n}\nexport class Permissible {\n static canEdit(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.update); }\n static canRead(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.read); }\n static canAdd(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.create); }\n static canDelete(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.delete); }\n static canTranslate(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.translate); }\n static _canDoSomethingToResource(claims, resource, predicate) {\n if (Utils.isNullOrEmpty(claims) || Utils.isNull(resource)) {\n return false;\n }\n // if no permissions are set, then you're free to go!\n var editable = true;\n if (resource.permissions && resource.permissions.length > 0) {\n // check correspondence otherwise\n editable = false;\n for (let permission of resource.permissions) {\n if (predicate(permission) && claims[permission.claimType] && claims[permission.claimType].indexOf(permission.claimValue) >= 0) {\n return true;\n }\n }\n }\n // return\n return editable;\n }\n}\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["Functions","dismiss","args","name","handleExpressionValueChange","evt","prop","entity","detail","propertyName","Utils","isNull","value","currentValue","HTMLElement","attr","CustomElementUtils","camelToKebab","isNullOrEmpty","removeAttribute","setAttribute","toString","EXPRESSION_METADATA_TYPE","host","hostRef","hostEntityRef","attrs","meta","metadata","fns","fnKeys","PropertyChangeEventName","tagName","P","extra","selector","filter","toLowerCase","fnKey","uniqueCode","push","labeler","length","join","__decorate","decorators","target","key","desc","d","c","arguments","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","PacemElementPickerElementBase","ScaffoldingComponents","Scaffolding","PacemBaseElement","Watch","converter","PropertyConverters","String","prototype","Eval","PacemElementPickerElement","inputFields","this","_select","toggleReadonlyView","readonly","onChange","_","fromResult","acceptValue","val","getViewValue","viewValue","convertValueAttributeToProperty","Element","convert","viewActivatedCallback","super","_databind","propertyChangedCallback","old","first","project","e","label","constructor","id","retval","document","querySelectorAll","forEach","arr","element","valueProperty","textProperty","datasource","ViewChild","Debounce","CustomElement","shadow","Defaults","USE_SHADOW_ROOT","template","ExpressionSource","PacemExpressionElement","_setFeedbackText","_editing","PropertyReference","_picker","focus","_editor","_sourceRef","changeHandler","Event","setPristine","_view","textContent","_reverseStructure","isBindingAttribute","_eval","text","undefined","cleanup","_source","_propRef","expr","deps","parseBindingAttribute","dependencies","RepeaterItem","isRepeaterItem","Expression","dep","querySelector","path","Constant","emit","Boolean","PCSS","ChangePolicy","Blur","UI","UIComponents","DEFAULT_PERMISSION_METADATA","props","type","display","cssClass","Array","concat","apply","validators","errorMessage","map","p","j","charAt","toUpperCase","substr","DEFAULT_METADATA","cellifyMetadata","isArray","gridifyMetadata","css","buildWidgetMetadata","extend","clone","WIDGET_CSS_CLASS","EXPRESSION_WIDGET_METADATA_EXTRA","tag","PacemWidgetToolbarElement","Components","PacemElement","editButton","_btnEdit","permissionsButton","_btnPerms","removeButton","_btnRemove","_edit","form","_proxy","dom","find","attributes","open","_popoutJustInCase","_editPermissions","permissionMetadata","balloon","findAncestorOfType","PacemBalloonElement","popout","PacemWidgetElement","role","connectedCallback","addClass","isReady","_ensureBalloon","_disposeBalloon","_balloon","disabled","removeClass","_assignIcon","disconnectedCallback","dataset","icon","createElement","editing","options","behavior","BalloonBehavior","Menu","trigger","BalloonTrigger","Hover","innerHTML","findAncestorShell","appendChild","remove","reflectBack","Json","DATA_METADATA","description","PacemWidgetDataElement","FETCH_PARAMETER_METADATA","isReadOnly","FETCH_METADATA","isComplexType","ui","source","manifest","endpoints","fullPath","method","sort","dependsOn","hide","lockItems","ACCESS_TOKEN_METADATA","PARAMETER_TAGNAME","PacemWidgetFetchParameterElement","PacemEventTarget","_fetcher","fetch","PacemWidgetFetchElement","PacemBearerWidgetElement","_onerror","failure","success","_onsuccess","_onresult","result","_parameters","from","_itemsElement","children","localName","fetcher","parameters","endpoint","param","required","params","parameter","url","credentials","fetchCredentials","headers","fetchHeaders","_mergeEndpoint","baseUrl","fields","response","itemsElement","item","matching","existing","Net","FetchResultEventName","FetchErrorEventName","FetchSuccessEventName","Authorization","PacemWidgetTranslatorElement","step","min","PacemWidgetClockElement","interval","Number","BAG","SwaggerCmsParser","_openApi","OpenApi","OpenApiParser","_cachedMetadataUrls","load","api","_enrichSchemas","_fetchMetadata","fullType","schema","clearCache","cache","keys","removeProperty","splice","def0","_fetch","async","def1","cols","metadataUrl","test","console","warn","retrieveFn","mode","ok","json","getPropertyValue","setPropertyValue","col","properties","column","field","datafield","assign","$ref","items","ref","getOpenApiDefinition","APIMANIFEST_METADATA","watermark","tooltip","PacemWidgetApiManifestElement","_openapi","_cache","Storage","_scaffold","usecache","editable","fetching","then","s","PacemUiWidgetElement","colspan","rowspan","borders","container","_container","findContainer","findAncestor","n","PacemCompositeWidgetElement","iter","register","unregister","WidgetRegisterEventName","WidgetUnregisterEventName","WidgetRegisterEvent","CustomEvent","eventInit","WidgetUnregisterEvent","validate","appendItem","log","Logging","LogLevel","Debug","indexOf","dispatchEvent","ndx","TEXT_METADATA","PacemWidgetTextElement","PacemWidgetPickerElement","createSvgGridBox","svg","createElementNS","style","pointerEvents","zIndex","GRID_METADATA","max","PacemGridWidgetElement","_widgetPropertyChange","widget","rows","Math","row","_dragDropHandler","el","DragDropEventType","Start","_gridBoxes","_initState","End","Over","dropTarget","gridColumnStart","gridRowStart","farRight","farBottom","_intersects","fireLayoutChange","columns","_resizeHandler","RescaleEventType","Rescale","preventDefault","pos","x","clientX","y","clientY","handle","elementsFromPoint","_dragDrop","dropTargets","startcol","startrow","endsWith","startsWith","foundspot","check","elasticOnColspan","maxColIndex","behaviors","_rescaler","addEventListener","removeEventListener","ndx1","who","dragDrop","floater","body","DragDataMode","Alias","dropBehavior","DropBehavior","None","rescale","handles","RescaleHandle","Right","Bottom","adapt","_normalize","measure","defaultValue","unitPixels","qty","unit","marginTop","marginBottom","gridTemplateColumns","minrowheight","minRowheight","rowheight","gridTemplateRows","gridRowGap","rowGap","gridColumnGap","columnGap","_setGridLines","total","k","floor","gridColumn","gridRow","DATACOLUMNS_METADATA_TYPE","DATACOLUMN_METADATA","PacemDataColumnElement","contentExpression","_form","PacemDataColumnsElement","_dropHandler","_columnifyMetadata","header","content","a","b","_repeater","_propDragger","_colDragger","InsertChild","Copy","DATAGRID_METADATA","datagridInnerHTML","head","fragHeading","createDocumentFragment","fragBody","headcell","classList","add","datacell","PacemSpanElement","datarow","PacemPanelElement","datagridFragments","head0","body0","output","width","gridify","PacemWidgetDataGridElement","datarowMetadata","_builtUponDatasource","_gridify","_extractMetadataJustInCase","_seekArray","ds","dataType","enum","Widget","findAll","predicate","PermissionEditEventName","PermissionEditEvent","permissible","cancelable","bubbles","Permissible","canEdit","claims","resource","_canDoSomethingToResource","update","canRead","read","canAdd","create","canDelete","delete","canTranslate","translate","permissions","permission","claimType","claimValue","DeepMerger","merge","Output"],"mappings":"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"}