@pacem/pacem-cms 1.0.0-bessel → 1.0.0-binet
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/pacem-cms.js +118 -3
- package/dist/browser/pacem-cms.js.map +1 -1
- package/dist/browser/pacem-cms.min.js +1 -1
- package/dist/bundle/pacem-cms.min.mjs +1 -1
- package/dist/bundle/pacem-cms.mjs +17 -1
- package/dist/bundle/pacem-cms.mjs.map +2 -2
- package/dist/docs/pacem-cms.json +9325 -0
- package/dist/esm/index-iife.js +1 -1
- package/dist/esm/index.cms.js +1 -1
- package/dist/esm/index.components.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/types.js +9 -1
- package/package.json +2 -1
- package/typings/index.d.ts +178 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../esm/index.components.js", "../esm/scaffolding/types.js", "../esm/scaffolding/element-picker.js", "../esm/scaffolding/expression.js", "../esm/widgets/types.js", "../esm/widgets/helpers/types.js", "../esm/widgets/helpers/data.js", "../esm/widgets/helpers/fetcher.js", "../esm/widgets/helpers/translator.js", "../esm/widgets/helpers/clock.js", "../esm/widgets/helpers/apimanifest.js", "../esm/openapi/swagger-cms.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/ui/dataviz/datagrid.js", "../esm/widgets/scaffolding/datacolumns.js", "../esm/index.cms.js", "../esm/types.js"],
|
|
4
|
-
"sourcesContent": ["export * from './scaffolding/types';\nexport * from './scaffolding/element-picker';\nexport * from './scaffolding/expression';\nexport * from './widgets/types';\nexport * from './widgets/helpers/types';\nexport * from './widgets/helpers/translator';\nexport * from './widgets/helpers/data';\nexport * from './widgets/helpers/clock';\nexport * from './widgets/helpers/apimanifest';\nexport * from './widgets/helpers/fetcher';\nexport * from './widgets/ui/types';\nexport * from './widgets/ui/text';\nexport * from './widgets/ui/composite/picker';\nexport * from './widgets/ui/composite/grid';\nexport * from './widgets/ui/dataviz/datagrid';\nexport * from './widgets/scaffolding/datacolumns';\n", "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="${PCSS}-icon">'+ (::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 { 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, 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 { 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", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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", "/// <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 { 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, 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", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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", "export * from './types';\nexport * as OpenApi from './openapi/swagger-cms';\nexport * from './widgets/scaffolding/datacolumns';\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"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["export * from './scaffolding/types';\nexport * from './scaffolding/element-picker';\nexport * from './scaffolding/expression';\nexport * from './widgets/types';\nexport * from './widgets/helpers/types';\nexport * from './widgets/helpers/translator';\nexport * from './widgets/helpers/data';\nexport * from './widgets/helpers/clock';\nexport * from './widgets/helpers/apimanifest';\nexport * from './widgets/helpers/fetcher';\nexport * from './widgets/ui/types';\nexport * from './widgets/ui/text';\nexport * from './widgets/ui/composite/picker';\nexport * from './widgets/ui/composite/grid';\nexport * from './widgets/ui/dataviz/datagrid';\nexport * from './widgets/scaffolding/datacolumns';\n", "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/**\n * Default metadata ('expression' field) 'type' factory: renders a `${P}-expression` field bound to the\n * given entity's `prop` attribute (or, for plain objects, the property itself), relaying value changes back\n * through {@link Functions.handleExpressionValueChange} and honoring the field's `extra.selector`/`filter`/`labeler`.\n * @param host The form field element requesting the markup.\n * @param hostRef Binding-expression reference to `host` (defaults to `:host`).\n * @param hostEntityRef Binding-expression reference to `host.entity` (defaults to `:host.entity`).\n */\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 {\n/**\n * Base class for form fields that let the user pick an `Element` from the current document, filtered by\n * `selector`/`filter` and displayed through `labeler`. See {@link PacemElementPickerElement} for the concrete\n * `${P}-select`-backed implementation.\n */\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);\n/** Form field for picking an `Element` (identified by its `id`) among those matching `selector`/`filter`, listed in a `${P}-select`. */\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 {\n/** The kind of value a {@link PacemExpressionElement} is currently editing, as picked in its source selector. */\nexport var ExpressionSource;\n(function (ExpressionSource) {\n ExpressionSource[\"Constant\"] = \"const\";\n ExpressionSource[\"PropertyReference\"] = \"property\";\n ExpressionSource[\"Expression\"] = \"expr\";\n})(ExpressionSource || (ExpressionSource = {}));\n/**\n * Form field for building a Pacem binding-expression string, either as a plain constant, a picked\n * element/property reference (via {@link PacemElementPickerElementBase}), or a free-hand expression typed\n * into an inner `${P}-textarea`; a live preview of the evaluated `value` is shown alongside the field.\n */\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}\n/**\n * Adds the `${PCSS}-cell`/grid CSS classes to `metadata`'s display and to each of its properties' display,\n * so that a generated form lays its fields out as grid cells (used for the datacolumns/fetch-parameters\n * sub-grids editors, as opposed to {@link buildWidgetMetadata} which is used for a widget's own root metadata).\n * @param metadata The metadata to adapt; defaults to an empty `{ props: [] }`-like metadata when omitted.\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}\n/**\n * Merges `metadata` on top of {@link DEFAULT_METADATA} (the common `tag` property/display), cellifying every\n * resulting property's display (see `cellifyMetadata`); used by widget constructors to build their `metadata`.\n * @param metadata Widget-specific metadata to merge on top of the defaults.\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};\n/** Static lookup helper for {@link PacemWidgetElement} instances in the current document. */\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}\n/** Floating toolbar (edit/permissions/remove buttons), shown by a {@link PacemWidgetElement}'s balloon while `editing`, that opens the widget's core/permissions edit forms. */\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="${PCSS}-icon">'+ (::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 };\n/**\n * Base class for CMS widgets: assigns each instance a stable `id`, exposes an `editing`/`editable` toggle\n * backed by a hover-triggered {@link PacemWidgetToolbarElement} balloon (edit/permissions/remove actions),\n * and carries the `metadata`/`permissionMetadata`/`permissions` used to scaffold its editing forms. See\n * {@link PacemUiWidgetElement} and {@link PacemBearerWidgetElement} for further specialized bases.\n */\nexport class PacemWidgetElement extends Components.PacemElement {\n constructor(metadata, role = 'widget') {\n super(role);\n /** Gets or sets the scaffolding metadata describing the widget's permission-editing form. */\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 { 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};\n/**\n * Base class for widgets that authenticate their own fetch requests with a bearer `accessToken` (turned into\n * an `Authorization: Bearer ...` header on `fetchHeaders`). See {@link PacemWidgetApiManifestElement} and\n * {@link PacemWidgetFetchElement} for the concrete implementations.\n */\nexport class PacemBearerWidgetElement extends PacemWidgetElement {\n constructor() {\n super(...arguments);\n /** Gets or sets the `credentials` mode used for the widget's fetch requests. */\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, 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};\n/** Non-visual helper widget exposing an arbitrary `model` object, typically referenced as a data source by other widgets/expressions. */\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';\n/** A single, named fetch parameter nested under a {@link PacemWidgetFetchElement}; setting `value` re-triggers the owning fetcher's `fetch()`. */\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 };\n/**\n * Non-visual helper widget that fetches data from a REST endpoint chosen from a {@link PacemWidgetApiManifestElement}\n * `manifest`, using its nested {@link PacemWidgetFetchParameterElement} children (see `_parameters`) as request\n * parameters; the response is exposed as `result`.\n */\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 /** Triggers the request against `endpoint`/`url`, provided all of the endpoint's required parameters are attached and populated; otherwise does nothing. */\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 { CustomElement, P } from '@pacem/pacem-core';\nimport { PacemWidgetElement } from '../types';\n//namespace Pacem.Components.Cms {\n/** Non-visual helper widget, reserved for translation-related composition (no widget-specific behavior beyond {@link PacemWidgetElement}). */\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};\n/** Non-visual helper widget exposing the current timestamp (`time`), refreshed every `interval` milliseconds by an internal `${P}-timer`. */\nlet PacemWidgetClockElement = class PacemWidgetClockElement extends PacemWidgetElement {\n constructor() {\n super(buildWidgetMetadata(DATA_METADATA));\n /** Gets or sets the tick interval, in milliseconds, at which `time` is refreshed. */\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", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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};\n/** Non-visual helper widget that parses an OpenApi document at `url` (via {@link SwaggerCmsParser}) into a `manifest`, typically referenced by a {@link PacemWidgetFetchElement}. */\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", "/// <reference path=\"./swagger-types.d.ts\" />\nimport { Scaffolding } from '@pacem/pacem-scaffolding';\n//namespace Pacem.Cms.OpenApi {\nconst BAG = 'pacem:metadatabag';\n/**\n * Loads an OpenApi manifest (via the underlying {@link Scaffolding.OpenApi.OpenApiParser}) and eagerly\n * enriches every endpoint's request/response schemas into scaffolding-ready {@link Scaffolding.OpenApi.DataField}\n * metadata (fetched from each schema's absolute-url definition key, recursively for nested `$ref`s), optionally\n * caching the per-url metadata fetches through `cache`.\n */\nexport class SwaggerCmsParser {\n constructor(_openApi = new Scaffolding.OpenApi.OpenApiParser()) {\n this._openApi = _openApi;\n this._cachedMetadataUrls = [];\n }\n /**\n * Loads the OpenApi manifest at `url` and enriches every endpoint's request/response schemas with their\n * fetched field metadata (see `_enrichSchemas`).\n * @param url The OpenApi (swagger) json configuration's url.\n * @param headers Optional HTTP headers for both the manifest and the per-schema metadata fetches.\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 /** Removes from `cache` every metadata entry fetched by this parser so far. */\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 { Watch, PropertyConverters, Utils, CustomElementUtils, Logging, PCSS } from '@pacem/pacem-core';\nimport { PacemWidgetElement } from '../types';\n//namespace Pacem.Components.Cms {\n/**\n * Base class for widgets that occupy a cell of a CSS grid-based layout (`column`/`row`/`colspan`/`rowspan`),\n * self-registering into the nearest ancestor {@link PacemCompositeWidgetElement} container (see `findContainer`).\n */\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\";\n/** Dispatched by a {@link PacemCompositeWidgetElement} right after a child widget is successfully registered into it. */\nexport class WidgetRegisterEvent extends CustomEvent {\n constructor(item, eventInit) {\n super(WidgetRegisterEventName, Utils.extend(eventInit || {}, { detail: item }));\n }\n}\n/** Dispatched by a {@link PacemCompositeWidgetElement} right after a child widget is unregistered from it. */\nexport class WidgetUnregisterEvent extends CustomEvent {\n constructor(item, eventInit) {\n super(WidgetUnregisterEventName, Utils.extend(eventInit || {}, { detail: item }));\n }\n}\n/** Base class for widgets that act as a container ({@link CompositeWidget}) for other {@link PacemUiWidgetElement} widgets. See {@link PacemGridWidgetElement} and `PacemWidgetPickerElement` for concrete implementations. */\nexport class PacemCompositeWidgetElement extends PacemUiWidgetElement {\n /** Gets the `Element` new items are appended to; defaults to this widget itself. */\n get itemsElement() {\n return this;\n }\n /** Gets whether `item` is an acceptable child of this container; overridable by subclasses to narrow the accepted item type. */\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});\n/** UI widget rendering a plain (optionally expression-bound) piece of text via an inner `${P}-text`. */\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};\n/**\n * Composition widget that lays out child {@link PacemUiWidgetElement} widgets in a CSS grid: on `register`\n * it finds a free spot (or grows the grid) for the new item's `column`/`row`/`colspan`/`rowspan`, and while\n * `editing` it enables drag-move/resize behaviors (backed by internal `${P}-drag-drop`/`${P}-rescale`\n * elements) plus an overlay of selectable grid-cell boxes.\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, 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}\n/**\n * UI widget rendering `datasource` as a CSS-grid-based data table: one `${P}-repeater`-driven row per item,\n * one head/data cell pair per `columns` entry, with `datarowMetadata` auto-extracted from the first bound\n * item (see `_extractMetadataJustInCase`) whenever it isn't supplied. Its markup is entirely (re)generated\n * as plain `innerHTML` (see `datagridInnerHTML`) whenever `columns` changes.\n */\nlet PacemWidgetDataGridElement = class PacemWidgetDataGridElement extends PacemUiWidgetElement {\n constructor() {\n super(DATAGRID_METADATA);\n /** Gets or sets the rendered columns (header + per-row content expression); reassigning rebuilds the widget's markup. */\n this.columns = [];\n /** Gets or sets the rows rendered by the grid. */\n this.datasource = [];\n /** Gets or sets the field metadata describing a `datasource` row; auto-extracted from the first bound item when left unset. */\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", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(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/**\n * Default metadata ('expression' field) 'type' factory: renders a `${P}-datacolumns` field bound to the\n * given entity's `prop` (via `extra.properties`, either a property name or a factory function), used to\n * edit the field's underlying {@link DataColumn}[] value.\n * @param host The form field element requesting the markup.\n * @param hostRef Binding-expression reference to `host` (defaults to `:host`).\n * @param hostEntityRef Binding-expression reference to `host.entity` (defaults to `:host.entity`).\n */\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};\n/** Single-column editor (header/content) used by {@link PacemDataColumnsElement}, self-scaffolding its inner `${P}-form` against `DATACOLUMN_METADATA`. */\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 };\n/**\n * Form field for authoring a list of {@link DataColumn}s (`value`) by drag-dropping entries from the\n * available `properties` onto the columns strip, each rendered/edited through a nested {@link PacemDataColumnElement}.\n */\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", "export * from './types';\nexport * as OpenApi from './openapi/swagger-cms';\nexport * from './widgets/scaffolding/datacolumns';\n", "import { Utils } from '@pacem/pacem-core';\nexport const PermissionEditEventName = 'permissionedit';\n/** Dispatched to request permission-editing UI for the given {@link Permissible} resource. */\nexport class PermissionEditEvent extends CustomEvent {\n constructor(permissible) {\n super(PermissionEditEventName, { detail: permissible, cancelable: false, bubbles: true });\n }\n}\n/** Static, claim-based authorization checks (edit/read/add/delete/translate) against a {@link Permissible} resource's {@link Permission} list. */\nexport class Permissible {\n /** Gets whether `claims` grants edit (update) permission on `resource`. */\n static canEdit(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.update); }\n /** Gets whether `claims` grants read permission on `resource`. */\n static canRead(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.read); }\n /** Gets whether `claims` grants add (create) permission on `resource`. */\n static canAdd(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.create); }\n /** Gets whether `claims` grants delete permission on `resource`. */\n static canDelete(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.delete); }\n /** Gets whether `claims` grants translate permission on `resource`. */\n static canTranslate(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.translate); }\n /** Returns whether `claims` satisfies `predicate` for at least one of `resource.permissions`; when `resource.permissions` is empty, access is unrestricted (returns `true`). */\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"],
|
|
5
|
+
"mappings": ";;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,SAAS,yBAAyB,OAAO,oBAAoB,SAAS;AAG/D,IAAM,YAAY;AAAA,EACrB,WAAW,IAAI,SAAS;AACpB,aAAS,QAAQ,QAAQ,CAAC,GAAG;AACzB,aAAO,UAAU,IAAI;AAAA,IACzB;AAAA,EACJ;AAAA,EACA,+BAA+B,CAAC,KAAK,MAAM,WAAW;AAClD,QAAI,IAAI,OAAO,iBAAiB,WAAW,CAAC,MAAM,OAAO,MAAM,GAAG;AAC9D,YAAM,QAAQ,IAAI,OAAO;AACzB,UAAI,kBAAkB,aAAa;AAE/B,YAAI,OAAO,mBAAmB,aAAa,IAAI;AAC/C,YAAI,MAAM,cAAc,KAAK,GAAG;AAC5B,iBAAO,gBAAgB,IAAI;AAAA,QAC/B,OACK;AACD,iBAAO,aAAa,MAAM,MAAM,SAAS,CAAC;AAAA,QAC9C;AAAA,MACJ,OACK;AACD,eAAO,IAAI,IAAI;AAAA,MACnB;AAAA,IACJ;AAAA,EACJ;AACJ;AASO,IAAM,2BAA2B,CAAC,MAAM,UAAU,SAAS,gBAAgB,mBAAmB;AACjG,QAAM,QAAQ,CAAC,GAAG,OAAO,KAAK,UAAU,MAAM,WAAW,SAAS,CAAC;AACnE,QAAM,OAAO,IAAI,MAAM,aAAa,8BAA8B,aAAa,kBAAkB,mBAAmB,aAAa,KAAK,IAAI,CAAC;AAC3I,QAAM,QAAQ,uBAAuB,IAAI,uEAAuE,KAAK,IAAI,MAAM,aAAa;AAC5I,QAAM,WAAW,IAAI,kDAAkD,aAAa,MAAM,KAAK,IAAI;AACnG,QAAM,UAAU,IAAI;AACpB,MAAI,QAAS,KAAK,SAAS,CAAC;AAE5B,MAAI,CAAC,MAAM,cAAc,MAAM,QAAQ,GAAG;AACtC,UAAM,UAAU,IAAI,MAAM;AAAA,EAC9B;AAEA,MAAI,CAAC,MAAM,cAAc,MAAM,MAAM,GAAG;AACpC,YAAQ,OAAO,MAAM,QAAQ;AAAA,MACzB,KAAK;AACD,cAAM,QAAQ,IAAI,qCAAqC,MAAM,MAAM,yBAAyB,MAAM,OAAO,YAAY,CAAC;AACtH;AAAA,MACJ,KAAK;AACD,cAAM,QAAQ,OAAO,MAAM,WAAW;AACtC,YAAI,KAAK,IAAI,MAAM;AACnB,cAAM,QAAQ,IAAI,qCAAqC,KAAK;AAE5D,eAAO,KAAK,KAAK;AACjB;AAAA,IACR;AAAA,EACJ;AAEA,MAAI,OAAO,MAAM,YAAY,YAAY;AACrC,UAAM,QAAQ,OAAO,MAAM,WAAW;AACtC,QAAI,KAAK,IAAI,MAAM;AACnB,UAAM,SAAS,IAAI,qCAAqC,KAAK;AAE7D,WAAO,KAAK,KAAK;AAAA,EACrB;AACA,MAAI,OAAO,SAAS,GAAG;AAEnB,UAAM,WAAW,IAAI,8CAA8C,OAAO,KAAK,KAAO,CAAC;AAAA,EAC3F;AACA,SAAO,EAAE,SAAkB,MAAa;AAC5C;;;ACrEA,SAAS,eAAe,KAAAA,IAAG,UAAU,OAAO,oBAAoB,WAAW,UAAU,SAAAC,cAAa;AAClG,SAAS,cAAc,6BAA6B;AAPpD,IAAI,aAA0C,SAAU,YAAY,QAAQ,KAAK,MAAM;AACnF,MAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,OAAO,OAAO,yBAAyB,QAAQ,GAAG,IAAI,MAAM;AAC3H,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,WAAY,KAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,IAAI;AAAA,MACxH,UAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,IAAI,WAAW,CAAC,EAAG,MAAK,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;AAChJ,SAAO,IAAI,KAAK,KAAK,OAAO,eAAe,QAAQ,KAAK,CAAC,GAAG;AAChE;AASO,IAAM,gCAAN,cAA4C,sBAAsB,YAAY,iBAAiB;AACtG;AACA,WAAW;AAAA,EACP,MAAM,EAAE,WAAW,mBAAmB,OAAO,CAAC;AAClD,GAAG,8BAA8B,WAAW,YAAY,MAAM;AAC9D,WAAW;AAAA,EACP,MAAM,EAAE,WAAW,mBAAmB,KAAK,CAAC;AAChD,GAAG,8BAA8B,WAAW,UAAU,MAAM;AAC5D,WAAW;AAAA,EACP,MAAM,EAAE,WAAW,mBAAmB,KAAK,CAAC;AAChD,GAAG,8BAA8B,WAAW,WAAW,MAAM;AAE7D,IAAI,4BAA4B,MAAMC,mCAAkC,8BAA8B;AAAA,EAClG,IAAI,cAAc;AACd,WAAO,CAAC,KAAK,OAAO;AAAA,EACxB;AAAA,EACA,mBAAmB,UAAU;AACzB,SAAK,QAAQ,WAAW;AAAA,EAC5B;AAAA,EACA,SAAS,GAAG;AACR,WAAOD,OAAM,WAAW,KAAK,QAAQ,KAAK,QAAQ,KAAK;AAAA,EAC3D;AAAA,EACA,YAAY,KAAK;AACb,SAAK,QAAQ,QAAQ;AAAA,EACzB;AAAA,EACA,aAAa,OAAO;AAChB,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA,EACA,gCAAgC,MAAM;AAClC,WAAO,mBAAmB,QAAQ,QAAQ,IAAI;AAAA,EAClD;AAAA,EACA,wBAAwB;AACpB,UAAM,sBAAsB;AAC5B,SAAK,UAAU;AAAA,EACnB;AAAA,EACA,wBAAwB,MAAM,KAAK,KAAK,OAAO;AAC3C,UAAM,wBAAwB,MAAM,KAAK,KAAK,KAAK;AACnD,QAAI,CAAC,OAAO;AACR,cAAQ,MAAM;AAAA,QACV,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,eAAK,UAAU;AACf;AAAA,MACR;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,YAAY;AACR,UAAM,UAAU,KAAK,YAAY,OAAK;AAClC,UAAI,QAAQ,EAAE,YAAY;AAC1B,UAAI,EAAE,IAAI;AACN,iBAAS,MAAM,EAAE;AAAA,MACrB;AACA,aAAO;AAAA,IACX;AACA,UAAM,SAAS,CAAC;AAChB,aAAS,iBAAiB,KAAK,YAAY,SAAS,EAAE,QAAQ,CAAC,GAAG,GAAG,QAAQ;AACzE,WAAKA,OAAM,OAAO,KAAK,MAAM,KAAK,KAAK,OAAO,CAAC,MAAM,SAE9C,CAACA,OAAM,cAAc,EAAE,EAAE,GAAG;AAC/B,eAAO,KAAK,EAAE,SAAS,GAAG,OAAO,QAAQ,CAAC,EAAE,CAAC;AAAA,MACjD;AAAA,IACJ,CAAC;AACD,SAAK,QAAQ,gBAAgB;AAC7B,SAAK,QAAQ,eAAe;AAC5B,SAAK,QAAQ,aAAa;AAAA,EAC9B;AACJ;AACA,WAAW;AAAA,EACP,UAAUD,KAAI,SAAS;AAC3B,GAAG,0BAA0B,WAAW,WAAW,MAAM;AACzD,WAAW;AAAA,EACP,SAAS,EAAE;AACf,GAAG,0BAA0B,WAAW,aAAa,IAAI;AACzD,4BAA4B,WAAW;AAAA,EACnC,cAAc;AAAA,IACV,SAASA,KAAI;AAAA,IAAmB,QAAQ,SAAS;AAAA,IACjD,UAAU,IAAIA,EAAC,aAAaA,EAAC;AAAA,EACjC,CAAC;AACL,GAAG,yBAAyB;;;ACvF5B,SAAS,iBAAAG,gBAAe,KAAAC,IAAG,MAAM,YAAAC,WAAU,SAAAC,QAAO,sBAAAC,qBAAoB,aAAAC,YAAW,YAAAC,WAAU,SAAAC,QAAO,sBAAAC,qBAAoB,oBAAoB;AAC1I,SAAS,cAAcC,8BAA6B;AAPpD,IAAIC,cAA0C,SAAU,YAAY,QAAQ,KAAK,MAAM;AACnF,MAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,OAAO,OAAO,yBAAyB,QAAQ,GAAG,IAAI,MAAM;AAC3H,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,WAAY,KAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,IAAI;AAAA,MACxH,UAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,IAAI,WAAW,CAAC,EAAG,MAAK,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;AAChJ,SAAO,IAAI,KAAK,KAAK,OAAO,eAAe,QAAQ,KAAK,CAAC,GAAG;AAChE;AAMO,IAAI;AAAA,CACV,SAAUC,mBAAkB;AACzB,EAAAA,kBAAiB,UAAU,IAAI;AAC/B,EAAAA,kBAAiB,mBAAmB,IAAI;AACxC,EAAAA,kBAAiB,YAAY,IAAI;AACrC,GAAG,qBAAqB,mBAAmB,CAAC,EAAE;AAM9C,IAAI,yBAAyB,MAAMC,gCAA+B,8BAA8B;AAAA,EAC5F,wBAAwB,MAAM,KAAK,KAAK,OAAO;AAC3C,UAAM,wBAAwB,MAAM,KAAK,KAAK,KAAK;AACnD,QAAI,SAAS,aAAa;AACtB,WAAK,iBAAiB,KAAK,KAAK;AAAA,IACpC,WACS,CAAC,OAAO;AACb,UAAI,KAAK,UAAU;AACf,gBAAQ,MAAM;AAAA,UACV,KAAK;AACD,oBAAQ,KAAK;AAAA,cACT,KAAK,iBAAiB;AAClB,qBAAK,QAAQ,MAAM;AACnB;AAAA,cACJ;AACI,qBAAK,QAAQ,MAAM;AACnB;AAAA,YACR;AACA;AAAA,UACJ,KAAK;AACD,gBAAI,CAACC,OAAM,cAAc,GAAG,GAAG;AAC3B,mBAAK,QAAQ,MAAM;AACnB,mBAAK,QAAQ,QAAQ,SAAS,KAAK,WAAW,KAAK,MAAM,MAAM;AAAA,YACnE;AACA,iBAAK,cAAc,IAAI,MAAM,QAAQ,CAAC;AACtC;AAAA,QACR;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,IAAI,cAAc;AACd,WAAO,CAAC,KAAK,OAAO;AAAA,EACxB;AAAA,EACA,mBAAmB,UAAU;AACzB,QAAI,UAAU;AAEV,WAAK,WAAW;AAAA,IACpB;AAAA,EACJ;AAAA,EACA,cAAc;AACV,UAAM,YAAY;AAClB,SAAK,WAAW;AAAA,EACpB;AAAA,EACA,SAAS,GAAG;AACR,WAAOA,OAAM,WAAW,KAAK,QAAQ,KAAK,QAAQ,KAAK;AAAA,EAC3D;AAAA,EACA,YAAY,KAAK;AACb,SAAK,MAAM,cAAc,OAAO;AAChC,SAAK,iBAAiB,GAAG;AACzB,SAAK,kBAAkB;AACvB,QAAI,QAAQ,KAAK,QAAQ,OAAO;AAC5B,WAAK,QAAQ,QAAQ;AAAA,IACzB;AAAA,EACJ;AAAA,EACA,iBAAiB,MAAM,KAAK,OAAO;AAC/B,UAAM,YAAY,KAAK;AACvB,QAAIC,oBAAmB,mBAAmB,GAAG,KAAK,QAAQ,aAAa,UAAU,aAAa,YAAY;AACtG,WAAK,MAAM,aAAa,QAAQ,GAAG;AAAA,IACvC,WACS,QAAQ,QAAW;AACxB,WAAK,MAAM,OAAO;AAAA,IACtB,OACK;AACD,WAAK,MAAM,OAAO,UAAU,QAAQ,GAAG;AAAA,IAC3C;AAAA,EACJ;AAAA,EACA,aAAa,OAAO;AAChB,WAAO;AAAA,EACX;AAAA,EACA,gCAAgC,MAAM;AAClC,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB;AAChB,QAAI,UAAU,MAAM;AAChB,WAAK,UAAU,KAAK,aAAa,KAAK;AAAA,MAA4B;AAAA,IACtE;AAEA,QAAI,OAAO,KAAK;AAChB,QAAI,CAACD,OAAM,cAAc,IAAI,GAAG;AAE5B,UAAIC,oBAAmB,mBAAmB,IAAI,GAAG;AAC7C,cAAM,aAAaA,oBAAmB,sBAAsB,MAAM,IAAI,GAAG,OAAO,WAAW;AAE3F,YAAID,OAAM,cAAc,IAAI,KAAK,KAAK,SAAS,KAAK,aAAa,eAAe,KAAK,CAAC,EAAE,OAAO,GAAG;AAC9F,eAAK,UAAU,iBAAiB;AAAA,QACpC,OACK;AACD,gBAAM,MAAM,KAAK,CAAC;AAClB,eAAK,UAAU,iBAAiB;AAChC,eAAK,aAAa,SAAS,cAAc,MAAM,IAAI,QAAQ,EAAE;AAC7D,eAAK,WAAW,IAAI;AAAA,QACxB;AAAA,MACJ,OACK;AACD,aAAK,UAAU,iBAAiB;AAAA,MACpC;AAAA,IAEJ,OACK;AACD,cAAQ;AAAA,IACZ;AAAA,EACJ;AACJ;AACAH,YAAW;AAAA,EACPK,OAAM,EAAE,MAAM,MAAM,CAAC;AACzB,GAAG,uBAAuB,WAAW,aAAa,MAAM;AACxDL,YAAW;AAAA,EACPK,OAAM,EAAE,WAAWC,oBAAmB,QAAQ,CAAC;AACnD,GAAG,uBAAuB,WAAW,YAAY,MAAM;AACvDN,YAAW;AAAA,EACPK,OAAM,EAAE,WAAWC,oBAAmB,OAAO,CAAC;AAClD,GAAG,uBAAuB,WAAW,WAAW,MAAM;AACtDN,YAAW;AAAA,EACPK,OAAM,EAAE,WAAWC,oBAAmB,QAAQ,CAAC;AACnD,GAAG,uBAAuB,WAAW,cAAc,MAAM;AACzDN,YAAW;AAAA,EACPK,OAAM,EAAE,WAAWC,oBAAmB,OAAO,CAAC;AAClD,GAAG,uBAAuB,WAAW,YAAY,MAAM;AACvDN,YAAW;AAAA,EACPO,WAAUC,KAAI,iBAAiB;AACnC,GAAG,uBAAuB,WAAW,WAAW,MAAM;AACtDR,YAAW;AAAA,EACPO,WAAUC,KAAI,WAAW;AAC7B,GAAG,uBAAuB,WAAW,WAAW,MAAM;AACtDR,YAAW;AAAA,EACPO,WAAU,UAAU,OAAO,aAAa;AAC5C,GAAG,uBAAuB,WAAW,SAAS,MAAM;AACpDP,YAAW;AAAA,EACPO,WAAUC,KAAI,OAAO;AACzB,GAAG,uBAAuB,WAAW,SAAS,MAAM;AACpDR,YAAW;AAAA,EACPS,UAAS,EAAE;AACf,GAAG,uBAAuB,WAAW,qBAAqB,IAAI;AAC9D,yBAAyBT,YAAW;AAAA,EAChCU,eAAc;AAAA,IACV,SAASF,KAAI;AAAA,IAAe,QAAQG,UAAS;AAAA,IAC7C,UAAU,IAAIH,EAAC,oBAAoB,IAAI;AAAA,qCACV,IAAI,2CAA2C,IAAI;AAAA,sBAClE,IAAI;AAAA,eACXA,EAAC;AAAA,mBACGA,EAAC,qBAAqB,iBAAiB,QAAQ,8BAA8BA,EAAC;AAAA,mBAC9EA,EAAC,qBAAqB,iBAAiB,iBAAiB,kCAAkCA,EAAC;AAAA,mBAC3FA,EAAC,qBAAqB,iBAAiB,UAAU,kCAAkCA,EAAC;AAAA,gBACvFA,EAAC;AAAA;AAAA;AAAA,WAGNA,EAAC,iBAAiB,IAAI,gDAAgD,iBAAiB,iBAAiB;AAAA,eACpGA,EAAC,4KAA4KA,EAAC;AAAA,YACjLA,EAAC;AAAA,WACFA,EAAC,iBAAiB,IAAI,gDAAgD,iBAAiB,iBAAiB;AAAA,eACpGA,EAAC,kLAAkLA,EAAC;AAAA,YACvLA,EAAC;AAAA;AAAA,WAEFA,EAAC,iBAAiB,IAAI;AAAA,eAClBA,EAAC,6GAA6GI,uBAAsB,YAAY,aAAa,IAAI,OAAOJ,EAAC;AAAA,YAC5KA,EAAC;AAAA;AAAA,IAETA,EAAC;AAAA,cACS,IAAI;AAAA;AAAA,sBAEI,IAAI,eAAe,IAAI;AAAA,wCACL,IAAI,8BAA8B,IAAI;AAAA,eAC/DA,EAAC;AAAA,mBACGA,EAAC,4BAA4B,IAAI,8FAA8FA,EAAC;AAAA,gBACnIA,EAAC;AAAA,eACFA,EAAC;AAAA,4BACY,IAAI;AAAA,mBACbA,EAAC,oCAAoC,IAAI,+BAA+B,IAAI,gDAAgDA,EAAC;AAAA,gBAChIA,EAAC;AAAA;AAAA;AAAA;AAAA,EAIb,CAAC;AACL,GAAG,sBAAsB;;;AC7LzB,SAAS,iBAAAK,gBAAe,KAAAC,IAAG,QAAAC,OAAM,YAAAC,WAAU,SAAAC,QAAO,sBAAAC,qBAAoB,aAAAC,YAAW,SAAAC,QAAO,sBAAAC,qBAAoB,kBAAkB;AAC9H,SAAS,cAAc,oBAAoB;AAP3C,IAAIC,cAA0C,SAAU,YAAY,QAAQ,KAAK,MAAM;AACnF,MAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,OAAO,OAAO,yBAAyB,QAAQ,GAAG,IAAI,MAAM;AAC3H,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,WAAY,KAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,IAAI;AAAA,MACxH,UAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,IAAI,WAAW,CAAC,EAAG,MAAK,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;AAChJ,SAAO,IAAI,KAAK,KAAK,OAAO,eAAe,QAAQ,KAAK,CAAC,GAAG;AAChE;AAGA,IAAM,KAAK,aAAa;AAExB,IAAM,8BAA8B;AAAA,EAChC,OAAO;AAAA,IACH;AAAA,MACI,MAAM;AAAA;AAAA,MAEN,MAAM;AAAA,MACN,SAAS,EAAE,MAAM,cAAc;AAAA,MAC/B,OAAO;AAAA,QACH,SAAS,EAAE,UAAU,CAACP,QAAO,SAASA,QAAO,SAAS,eAAe,oBAAoB,cAAc,GAAG,MAAM,aAAa;AAAA,QAC7H,OAAO,MAAM,UAAU,OAAO,MAAM;AAAA,UAChC;AAAA,YACI,MAAM;AAAA,YAAa,MAAM;AAAA,YACzB,SAAS,EAAE,UAAU,CAACA,QAAO,SAAS,aAAa,aAAa,iBAAiB,eAAe,GAAG,MAAM,aAAa;AAAA,YACtH,YAAY,CAAC,EAAE,MAAM,YAAY,cAAc,IAAI,CAAC;AAAA,UACxD;AAAA,UACA;AAAA,YACI,MAAM;AAAA,YAAc,MAAM;AAAA,YAC1B,SAAS,EAAE,UAAU,CAACA,QAAO,SAAS,aAAa,aAAa,iBAAiB,eAAe,GAAG,MAAM,cAAc;AAAA,YACvH,YAAY,CAAC,EAAE,MAAM,YAAY,cAAc,IAAI,CAAC;AAAA,UACxD;AAAA,QACJ,GAAG,CAAC,QAAQ,UAAU,UAAU,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM;AACpD,iBAAO;AAAA,YACH,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS,EAAE,UAAU,CAACA,QAAO,SAAS,aAAa,UAAU,iBAAiBA,QAAO,iBAAiB,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,IAAI,EAAE,OAAO,CAAC,EAAE;AAAA,UAC3J;AAAA,QACJ,CAAC,CAAC;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AACJ;AACO,IAAM,mBAAmB;AAAA,EAC5B,SAAS,EAAE,MAAM,UAAU,UAAU,CAACA,QAAO,SAAS,eAAe,oBAAoB,cAAc,EAAE;AAAA,EACzG,OAAO;AAAA,IACH,EAAE,MAAM,OAAO,MAAM,UAAU,SAAS,EAAE,MAAM,OAAO,UAAU,CAACA,QAAO,OAAO,EAAE,EAAE;AAAA,EACxF;AACJ;AACA,SAAS,gBAAgB,GAAG;AAExB,IAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC,EAAE;AACtD,QAAM,MAAM,EAAE,QAAQ,WAAWK,OAAM,QAAQ,EAAE,QAAQ,QAAQ,KAAK,EAAE,QAAQ,YAAY,CAAC;AAC7F,MAAI,KAAKL,QAAO,OAAO;AAC3B;AAOO,SAAS,gBAAgB,UAAU;AACtC,MAAI,QAAQ,YAAY,SAAS,SAAS,CAAC;AAC3C,MAAI,UAAU,YAAY,SAAS,WAAW,EAAE,MAAM,UAAU;AAChE,MAAI,CAACK,OAAM,OAAO,OAAO,GAAG;AACxB,UAAM,MAAM,QAAQ,WAAW,QAAQ,YAAY,CAAC;AACpD,UAAM,UAAU,KAAK,MAAM,KAAK,iBAAiB,QAAQ,QAAQ;AAAA,EACrE;AACA,QAAM,QAAQ,eAAe;AAC7B,SAAO,EAAE,SAAkB,MAAa;AAC5C;AAMO,SAAS,oBAAoB,UAAU;AAC1C,MAAI,UAAUA,OAAM,OAAO,CAAC,GAAG,iBAAiB,SAAS,YAAY,SAAS,WAAW,CAAC,CAAC;AAC3F,MAAI,QAAQA,OAAM,MAAM,iBAAiB,KAAK;AAC9C,QAAM,UAAU,KAAK,MAAM,QAAQ,YAAY,SAAS,SAAS,CAAC,GAAG,OAAO,OAAK;AAC7E,QAAI,EAAE,SAAS,OAAO;AAClB,aAAO;AAAA,IACX;AACA,oBAAgB,CAAC;AACjB,WAAO;AAAA,EACX,CAAC,CAAC;AACF,SAAO,EAAE,SAAkB,MAAa;AAC5C;AACA,IAAM,mBAAmBL,QAAO;AAEzB,IAAM,mCAAmC;AAAA,EAC5C,UAAU,MAAM;AAAA,EAChB,SAAS,CAAC,MAAM;AACZ,QAAI,CAACK,OAAM,cAAc,EAAE,GAAG,GAAG;AAC7B,aAAO,EAAE;AAAA,IACb;AACA,YAAQ,EAAE,YAAY,EAAE,SAAS,WAAW,EAAE,SAAS,QAAQ,QAAQ,MAAM,MAAM,EAAE;AAAA,EACzF;AACJ;AAEO,IAAM,SAAN,MAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKhB,OAAO,QAAQ,WAAW;AACtB,WAAOC,oBAAmB,QAAQ,MAAM,kBAAkB,CAAC,WAAW,kBAAkB,sBAAsB,CAACD,OAAM,cAAc,OAAO,EAAE,MAAMA,OAAM,OAAO,SAAS,KAAK,UAAU,MAAM,EAAE;AAAA,EACnM;AACJ;AAEA,IAAI,4BAA4B,MAAMG,mCAAkC,WAAW,aAAa;AAAA;AAAA,EAE5F,IAAI,aAAa;AACb,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAEA,IAAI,oBAAoB;AACpB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA,EACA,MAAM,KAAK;AACP,UAAM,OAAO,KAAK,OAAO,IAAI,KAAK,OAAK,UAAU,EAAE,UAAU;AAC7D,SAAK,KAAK,KAAK,QAAQ,IAAI;AAC3B,SAAK,WAAW,KAAK,OAAO;AAE5B,SAAK,kBAAkB;AAAA,EAC3B;AAAA,EACA,iBAAiB,KAAK;AAClB,UAAM,OAAO,KAAK,OAAO,IAAI,KAAK,OAAK,iBAAiB,EAAE,UAAU;AACpE,SAAK,KAAK,KAAK,MAAM;AACrB,SAAK,WAAW,KAAK,OAAO;AAE5B,SAAK,kBAAkB;AAAA,EAC3B;AAAA,EACA,oBAAoB;AAChB,UAAM,UAAUF,oBAAmB,mBAAmB,MAAM,GAAG,mBAAmB;AAClF,QAAI,CAACD,OAAM,cAAc,OAAO,GAAG;AAC/B,cAAQ,OAAO;AAAA,IACnB;AAAA,EACJ;AACJ;AACAE,YAAW;AAAA,EACPL,OAAM,EAAE,MAAM,OAAO,WAAWC,oBAAmB,QAAQ,CAAC;AAChE,GAAG,0BAA0B,WAAW,UAAU,MAAM;AACxDI,YAAW;AAAA,EACPH,WAAU,gBAAgB;AAC9B,GAAG,0BAA0B,WAAW,YAAY,MAAM;AAC1DG,YAAW;AAAA,EACPH,WAAUL,KAAI,eAAe;AACjC,GAAG,0BAA0B,WAAW,YAAY,MAAM;AAC1DQ,YAAW;AAAA,EACPH,WAAUL,KAAI,sBAAsB;AACxC,GAAG,0BAA0B,WAAW,aAAa,MAAM;AAC3DQ,YAAW;AAAA,EACPH,WAAUL,KAAI,iBAAiB;AACnC,GAAG,0BAA0B,WAAW,cAAc,MAAM;AAC5DQ,YAAW;AAAA,EACPH,WAAUL,KAAI,cAAc;AAChC,GAAG,0BAA0B,WAAW,UAAU,MAAM;AACxD,4BAA4BQ,YAAW;AAAA,EACnCT,eAAc;AAAA,IACV,SAASC,KAAI;AAAA,IAAmB,QAAQE,UAAS;AAAA,IACjD,UAAU,IAAIF,EAAC,0DAA0DC,KAAI,+QAA+QD,EAAC;AAAA,sBAC/UC,KAAI,cAAcA,KAAI,QAAQA,KAAI;AAAA;AAAA,WAE7CD,EAAC,qEAAqEA,EAAC;AAAA,WACvEA,EAAC,mLAAmLA,EAAC;AAAA,WACrLA,EAAC,wDAAwDA,EAAC;AAAA;AAAA;AAAA,GAGlEA,EAAC;AAAA,OACGA,EAAC,sBAAsBA,EAAC;AAAA,OACxBA,EAAC,6BAA6BA,EAAC;AAAA,IAClCA,EAAC;AAAA,EACD,CAAC;AACL,GAAG,yBAAyB;AAQrB,IAAM,qBAAN,cAAiC,WAAW,aAAa;AAAA,EAC5D,YAAY,UAAU,OAAO,UAAU;AACnC,UAAM,IAAI;AAEV,SAAK,qBAAqB;AAC1B,SAAK,WAAW;AAAA,EACpB;AAAA,EACA,oBAAoB;AAChB,UAAM,kBAAkB;AAExB,QAAIU,OAAM,cAAc,KAAK,EAAE,GAAG;AAC9B,WAAK,KAAK,QAAQA,OAAM,WAAW;AAAA,IACvC;AACA,IAAAA,OAAM,SAAS,MAAM,gBAAgB;AAAA,EACzC;AAAA,EACA,wBAAwB,MAAM,KAAK,KAAK,OAAO;AAC3C,UAAM,wBAAwB,MAAM,KAAK,KAAK,KAAK;AACnD,YAAQ,MAAM;AAAA,MACV,KAAK;AACD,YAAI,CAAC,KAAK;AACN,eAAK,gBAAgB;AAAA,QACzB,WACS,KAAK,SAAS;AACnB,eAAK,eAAe;AAAA,QACxB;AACA;AAAA,MACJ,KAAK;AACD,YAAI,CAACA,OAAM,OAAO,KAAK,QAAQ,GAAG;AAC9B,eAAK,SAAS,WAAW,CAAC;AAAA,QAC9B;AACA,SAAC,MAAMA,OAAM,WAAWA,OAAM,aAAa,MAAM,MAAM,CAAC,MAAM,YAAY,IAAI,CAAC;AAC/E;AAAA,MACJ,KAAK;AACD,aAAK,YAAY,GAAG;AACpB;AAAA,IACR;AAAA,EACJ;AAAA,EACA,wBAAwB;AACpB,UAAM,sBAAsB;AAC5B,SAAK,YAAY;AACjB,SAAK,eAAe;AAAA,EACxB;AAAA,EACA,uBAAuB;AACnB,UAAM,qBAAqB;AAAA,EAC/B;AAAA,EACA,YAAY,MAAM,KAAK,UAAU;AAC7B,SAAK,QAAQ,MAAM,IAAK,OAAO,IAAI,WAAW,IAAI,QAAQ,QAAS;AAAA,EACvE;AAAA,EACA,iBAAiB;AACb,QAAIA,OAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,YAAM,UAAU,KAAK,WAAW,SAAS,cAAcC,KAAI,UAAU;AACrE,cAAQ,SAAS;AACjB,cAAQ,WAAW,CAAC,KAAK;AACzB,cAAQ,UAAU;AAAA,QACd,UAAU,GAAG,gBAAgB;AAAA,QAC7B,SAAS,GAAG,eAAe;AAAA,MAC/B;AAEA,cAAQ,YAAY,IAAIA,EAAC,+BAA+B,KAAK,EAAE,SAASA,EAAC;AAEzE,MAAAC,oBAAmB,kBAAkB,IAAI,EAAE,YAAY,OAAO;AAAA,IAClE;AAAA,EACJ;AAAA,EACA,kBAAkB;AACd,QAAI,CAACF,OAAM,OAAO,KAAK,QAAQ,GAAG;AAC9B,WAAK,SAAS,OAAO;AACrB,WAAK,WAAW;AAAA,IACpB;AAAA,EACJ;AACJ;AACAG,YAAW;AAAA,EACPC,OAAM,EAAE,MAAM,OAAO,WAAWC,oBAAmB,QAAQ,CAAC;AAChE,GAAG,mBAAmB,WAAW,WAAW,MAAM;AAClDF,YAAW;AAAA,EACPC,OAAM,EAAE,MAAM,OAAO,WAAWC,oBAAmB,QAAQ,CAAC;AAChE,GAAG,mBAAmB,WAAW,YAAY,MAAM;AACnDF,YAAW;AAAA,EACPC,OAAM,EAAE,MAAM,MAAM,aAAa,MAAM,WAAWC,oBAAmB,OAAO,CAAC;AACjF,GAAG,mBAAmB,WAAW,OAAO,MAAM;AAC9CF,YAAW;AAAA,EACPC,OAAM,EAAE,MAAM,OAAO,aAAa,MAAM,WAAWC,oBAAmB,KAAK,CAAC;AAChF,GAAG,mBAAmB,WAAW,eAAe,MAAM;AACtDF,YAAW;AAAA,EACPC,OAAM,EAAE,MAAM,OAAO,WAAWC,oBAAmB,KAAK,CAAC;AAC7D,GAAG,mBAAmB,WAAW,YAAY,MAAM;AACnDF,YAAW;AAAA,EACPC,OAAM,EAAE,MAAM,OAAO,WAAWC,oBAAmB,KAAK,CAAC;AAC7D,GAAG,mBAAmB,WAAW,sBAAsB,MAAM;;;ACzQ7D,SAAS,SAAAC,QAAO,sBAAAC,qBAAoB,SAAAC,cAAa;;;ACAjD,SAAS,iBAAAC,gBAAe,KAAAC,IAAG,QAAAC,OAAM,SAAAC,QAAO,sBAAAC,2BAA0B;AANlE,IAAIC,cAA0C,SAAU,YAAY,QAAQ,KAAK,MAAM;AACnF,MAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,OAAO,OAAO,yBAAyB,QAAQ,GAAG,IAAI,MAAM;AAC3H,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,WAAY,KAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,IAAI;AAAA,MACxH,UAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,IAAI,WAAW,CAAC,EAAG,MAAK,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;AAChJ,SAAO,IAAI,KAAK,KAAK,OAAO,eAAe,QAAQ,KAAK,CAAC,GAAG;AAChE;AAKA,IAAM,gBAAgB;AAAA,EAClB,SAAS,EAAE,MAAM,WAAW,MAAM,QAAQ,aAAa,sBAAsB;AAAA,EAC7E,OAAO;AAAA,IACH;AAAA,MACI,MAAM;AAAA,MAAS,MAAM;AAAA,MAA0B,SAAS;AAAA,QACpD,MAAM;AAAA,MACV;AAAA,MAAG,OAAO;AAAA,QACN,UAAU,MAAMC,QAAO;AAAA,MAC3B;AAAA,IACJ;AAAA,EACJ;AACJ;AAEA,IAAI,yBAAyB,MAAMC,gCAA+B,mBAAmB;AAAA,EACjF,cAAc;AACV,UAAM,oBAAoB,aAAa,CAAC;AAAA,EAC5C;AACJ;AACAF,YAAW;AAAA,EACPG,OAAM,EAAE,aAAa,MAAM,WAAWC,oBAAmB,KAAK,CAAC;AACnE,GAAG,uBAAuB,WAAW,SAAS,MAAM;AACpD,yBAAyBJ,YAAW;AAAA,EAChCK,eAAc;AAAA,IACV,SAASC,KAAI;AAAA,EACjB,CAAC;AACL,GAAG,sBAAsB;;;AC7BzB,SAAS,iBAAAC,gBAAe,KAAAC,IAAG,YAAAC,WAAU,SAAAC,QAAO,sBAAAC,qBAAoB,aAAAC,YAAW,SAAAC,QAAO,sBAAAC,qBAAoB,kBAAkB,WAAW;AANnI,IAAIC,cAA0C,SAAU,YAAY,QAAQ,KAAK,MAAM;AACnF,MAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,OAAO,OAAO,yBAAyB,QAAQ,GAAG,IAAI,MAAM;AAC3H,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,WAAY,KAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,IAAI;AAAA,MACxH,UAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,IAAI,WAAW,CAAC,EAAG,MAAK,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;AAChJ,SAAO,IAAI,KAAK,KAAK,OAAO,eAAe,QAAQ,KAAK,CAAC,GAAG;AAChE;AAMA,IAAM,2BAA2B;AAAA,EAC7B,OAAO;AAAA,IACH,EAAE,MAAM,QAAQ,MAAM,UAAU,YAAY,MAAM,SAAS,EAAE,MAAM,QAAQ,UAAU,CAAC,aAAa,aAAa,WAAW,EAAE,EAAE;AAAA,IAC/H,EAAE,MAAM,SAAS,MAAM,0BAA0B,SAAS,EAAE,MAAM,SAAS,UAAU,CAAC,aAAa,aAAa,YAAY,EAAE,EAAE;AAAA,EACpI;AACJ;AACA,IAAM,iBAAiB;AAAA,EACnB,SAAS;AAAA,IACL,MAAM;AAAA,IAAQ,MAAM;AAAA,IAAe,aAAa;AAAA,EACpD;AAAA,EAAG,OAAO;AAAA,IACN;AAAA,MACI,MAAM;AAAA,MAAY,MAAM;AAAA,MAA0B,eAAe;AAAA,MAAM,SAAS;AAAA,QAC5E,MAAM;AAAA,MACV;AAAA,MAAG,OAAO;AAAA,QACN,UAAUC,KAAI;AAAA,MAClB;AAAA,MAAG,YAAY,CAAC,EAAE,MAAM,YAAY,cAAc,oCAAoC,CAAC;AAAA,IAC3F;AAAA,IACA;AAAA,MACI,MAAM;AAAA,MAAY,MAAM;AAAA,MAAU,eAAe;AAAA,MAAM,SAAS;AAAA,QAC5D,MAAM;AAAA,QAAY,IAAI;AAAA,MAC1B;AAAA,MAAG,YAAY,CAAC,EAAE,MAAM,YAAY,cAAc,oCAAoC,CAAC;AAAA,MACvF,OAAO;AAAA,QACH,QAAQ,CAAC,aAAa,SAAS,UAAU,IAAI,OAAKC,OAAM,OAAO,GAAG,EAAE,YAAY,IAAI,EAAE,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK;AAAA,QACjI,cAAc;AAAA,QAAY,eAAe;AAAA,QACzC,WAAW,CAAC,EAAE,MAAM,YAAY,MAAM,KAAK,CAAC;AAAA,MAChD;AAAA,IACJ;AAAA,IACA;AAAA,MACI,MAAM;AAAA,MAAc,MAAM;AAAA,MAAS,SAAS;AAAA,QACxC,MAAM;AAAA,MACV;AAAA,MACA,OAAO,gBAAgB,wBAAwB;AAAA,MAC/C,OAAO;AAAA,QACH,WAAW;AAAA,QACX,WAAW,CAAC,EAAE,MAAM,YAAY,MAAM,KAAK,CAAC;AAAA,MAChD;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AACJ;AACA,IAAM,oBAAoBD,KAAI;AAE9B,IAAI,mCAAmC,MAAME,0CAAyC,iBAAiB;AAAA,EACnG,wBAAwB,MAAM,KAAK,KAAK,OAAO;AAC3C,UAAM,wBAAwB,MAAM,KAAK,IAAI,KAAK;AAClD,QAAI,SAAS,WAAW,CAACD,OAAM,OAAO,KAAK,QAAQ,GAAG;AAClD,WAAK,SAAS,MAAM;AAAA,IACxB;AAAA,EACJ;AAAA,EACA,wBAAwB;AACpB,UAAM,sBAAsB;AAC5B,UAAM,UAAU,KAAK,WAAWE,oBAAmB,mBAAmB,MAAM,uBAAuB;AACnG,QAAI,CAACF,OAAM,OAAO,KAAK,QAAQ,KAAK,CAACA,OAAM,OAAO,KAAK,KAAK,GAAG;AAC3D,WAAK,SAAS,MAAM;AAAA,IACxB;AAAA,EACJ;AACJ;AACAF,YAAW;AAAA,EACPK,OAAM,EAAE,aAAa,MAAM,WAAWC,oBAAmB,QAAQ,CAAC;AACtE,GAAG,iCAAiC,WAAW,YAAY,MAAM;AACjEN,YAAW;AAAA,EACPK,OAAM,EAAE,aAAa,MAAM,WAAWC,oBAAmB,OAAO,CAAC;AACrE,GAAG,iCAAiC,WAAW,QAAQ,MAAM;AAC7DN,YAAW;AAAA,EACPK,OAAM,EAAE,aAAa,MAAM,WAAWC,oBAAmB,OAAO,CAAC;AACrE,GAAG,iCAAiC,WAAW,SAAS,MAAM;AAC9D,mCAAmCN,YAAW;AAAA,EAC1CO,eAAc,EAAE,SAAS,kBAAkB,CAAC;AAChD,GAAG,gCAAgC;AAOnC,IAAI,0BAA0B,MAAMC,iCAAgC,yBAAyB;AAAA,EACzF,cAAc;AACV,UAAM,oBAAoB,cAAc,CAAC;AACzC,SAAK,WAAW,CAAC,MAAM;AACnB,WAAK,UAAU,EAAE,KAAK,UAAU;AAAA,IACpC;AACA,SAAK,aAAa,CAAC,MAAM;AACrB,WAAK,UAAU,EAAE,KAAK,UAAU;AAAA,IACpC;AACA,SAAK,YAAY,CAAC,MAAM;AACpB,WAAK,SAAS,EAAE;AAAA,IACpB;AAAA,EACJ;AAAA,EACA,IAAI,cAAc;AACd,WAAO,MAAM,KAAK,KAAK,cAAc,QAAQ,EAAE,OAAO,OAAK,EAAE,cAAc,iBAAiB;AAAA,EAChG;AAAA;AAAA,EAEA,QAAQ;AACJ,UAAM,UAAU,KAAK,UAAU,aAAa,KAAK,eAAe,CAAC,GAAG,WAAW,KAAK;AACpF,QAAI,CAACC,OAAM,OAAO,QAAQ,GAAG;AACzB,eAAS,SAAS,SAAS,YAAY;AACnC,YAAI,MAAM,YAAYA,OAAM,OAAO,WAAW,KAAK,OAAK,EAAE,SAAS,MAAM,IAAI,CAAC,GAAG;AAG7E;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,SAAS,CAAC;AAChB,aAAS,aAAa,YAAY;AAC9B,UAAI,CAACA,OAAM,cAAc,UAAU,KAAK,GAAG;AACvC,eAAO,UAAU,IAAI,IAAI,UAAU;AAAA,MACvC,WACS,UAAU,UAAU;AAEzB;AAAA,MACJ;AAAA,IACJ;AACA,YAAQ,MAAM,KAAK;AACnB,YAAQ,SAAS,KAAK;AACtB,YAAQ,cAAc,KAAK;AAC3B,YAAQ,UAAU,KAAK;AACvB,YAAQ,aAAa;AACrB,WAAO,QAAQ,MAAM;AAAA,EACzB;AAAA,EACA,wBAAwB;AACpB,UAAM,sBAAsB;AAC5B,SAAK,MAAM;AAAA,EACf;AAAA,EACA,wBAAwB,MAAM,KAAK,KAAK,OAAO;AAC3C,UAAM,wBAAwB,MAAM,KAAK,KAAK,KAAK;AACnD,QAAI,SAAS,cAAc,CAACA,OAAM,cAAc,GAAG,GAAG;AAClD,WAAK,eAAe,GAAG;AAAA,IAC3B;AAEI,cAAQ,MAAM;AAAA,QACV,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,eAAK,MAAM;AACX;AAAA,MACR;AAAA,EACR;AAAA,EACA,eAAe,WAAW,KAAK,UAAU;AACrC,SAAK,MAAM,KAAK,SAAS,UAAU,SAAS;AAC5C,SAAK,SAAS,SAAS;AACvB,SAAK,SAAS,SAAS,SAAS;AAChC,UAAM,eAAe,KAAK,eAAe,aAAa,KAAK;AAE3D,aAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,KAAK;AAC7C,UAAI,OAAO,WAAW,CAAC;AACvB,UAAI,WAAW,SAAS,WAAW,KAAK,OAAK,EAAE,SAAS,KAAK,IAAI;AACjE,UAAIA,OAAM,OAAO,QAAQ,GAAG;AACxB,aAAK,OAAO;AAAA,MAChB;AAAA,IACJ;AAEA,aAAS,SAAS,SAAS,YAAY;AACnC,UAAI,WAAW,WAAW,KAAK,OAAK,EAAE,SAAS,MAAM,IAAI;AACzD,UAAIA,OAAM,OAAO,QAAQ,GAAG;AACxB,YAAI,OAAO,WAAW,SAAS,cAAc,iBAAiB;AAC9D,aAAK,OAAO,MAAM;AAClB,qBAAa,YAAY,IAAI;AAAA,MACjC;AACA,eAAS,WAAW,MAAM;AAAA,IAC9B;AAEA,SAAK,aAAa;AAAA,EACtB;AACJ;AACAC,YAAW;AAAA,EACPC,OAAM,EAAE,aAAa,MAAM,MAAM,MAA0C,WAAWC,oBAAmB,KAAK,CAAC;AACnH,GAAG,wBAAwB,WAAW,YAAY,MAAM;AACxDF,YAAW;AAAA,EACPC,OAAM,EAAE,aAAa,MAAM,MAAM,MAA0C,WAAWC,oBAAmB,KAAK,CAAC;AACnH,GAAG,wBAAwB,WAAW,YAAY,MAAM;AACxDF,YAAW;AAAA,EACPC,OAAM,EAAE,aAAa,MAAM,MAAM,OAAO,WAAWC,oBAAmB,OAAO,CAAC;AAClF,GAAG,wBAAwB,WAAW,OAAO,MAAM;AACnDF,YAAW;AAAA,EACPC,OAAM,EAAE,aAAa,MAAM,MAAM,OAAO,WAAWC,oBAAmB,OAAO,CAAC;AAClF,GAAG,wBAAwB,WAAW,UAAU,MAAM;AACtDF,YAAW;AAAA,EACPC,OAAM,EAAE,aAAa,MAAM,MAAM,OAAO,WAAWC,oBAAmB,KAAK,CAAC;AAChF,GAAG,wBAAwB,WAAW,UAAU,MAAM;AACtDF,YAAW;AAAA,EACPC;AAAA;AAAA,EAAkC;AACtC,GAAG,wBAAwB,WAAW,cAAc,MAAM;AAC1DD,YAAW;AAAA,EACPC;AAAA;AAAA,EAAyD;AAC7D,GAAG,wBAAwB,WAAW,UAAU,MAAM;AACtDD,YAAW;AAAA,EACPC,OAAM,EAAE,WAAWC,oBAAmB,QAAQ,CAAC;AACnD,GAAG,wBAAwB,WAAW,YAAY,MAAM;AACxDF,YAAW;AAAA,EACPC,OAAM,EAAE,WAAWC,oBAAmB,QAAQ,CAAC;AACnD,GAAG,wBAAwB,WAAW,WAAW,MAAM;AACvDF,YAAW;AAAA,EACPC,OAAM,EAAE,WAAWC,oBAAmB,QAAQ,CAAC;AACnD,GAAG,wBAAwB,WAAW,WAAW,MAAM;AACvDF,YAAW;AAAA,EACPG,WAAUC,KAAI,QAAQ;AAC1B,GAAG,wBAAwB,WAAW,YAAY,MAAM;AACxDJ,YAAW;AAAA,EACPG,WAAU,aAAa;AAC3B,GAAG,wBAAwB,WAAW,iBAAiB,MAAM;AAC7D,0BAA0BH,YAAW;AAAA,EACjCK,eAAc;AAAA,IACV,SAASD,KAAI;AAAA,IAAiB,QAAQE,UAAS;AAAA,IAC/C,UAAU,IAAIF,EAAC;AAAA,KAClB,IAAI,oBAAoB,iCAAiC,IAAI,mBAAmB,gCAAgC,IAAI,qBAAqB,iCAAiCA,EAAC,uBAAuBA,EAAC,cAAcA,EAAC;AAAA,EACnN,CAAC;AACL,GAAG,uBAAuB;;;AF7N1B,IAAIG,cAA0C,SAAU,YAAY,QAAQ,KAAK,MAAM;AACnF,MAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,OAAO,OAAO,yBAAyB,QAAQ,GAAG,IAAI,MAAM;AAC3H,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,WAAY,KAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,IAAI;AAAA,MACxH,UAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,IAAI,WAAW,CAAC,EAAG,MAAK,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;AAChJ,SAAO,IAAI,KAAK,KAAK,OAAO,eAAe,QAAQ,KAAK,CAAC,GAAG;AAChE;AAOO,IAAM,6BAA6B;AAAA,EACtC,MAAM;AAAA,EAAoB,MAAM;AAAA,EAAU,UAAU;AAAA,EAAe,SAAS,EAAE,MAAM,oBAAoB;AAAA,EAAG,OAAO;AAAA,IAC9G,MAAM,CAAC,eAAe,QAAQ,SAAS;AAAA,EAC3C;AACJ;AACO,IAAM,wBAAwB;AAAA,EACjC,MAAM;AAAA,EAAe,MAAM;AAAA,EAA0B,SAAS,EAAE,MAAM,eAAe;AAAA,EACrF,OAAOC,OAAM,OAAO,CAAC,GAAG,kCAAkC,EAAE,QAAQ,CAAC,MAAM,aAAa,0BAA0B,aAAa,wBAAwB,CAAC;AAC5J;AAMO,IAAM,2BAAN,cAAuC,mBAAmB;AAAA,EAC7D,cAAc;AACV,UAAM,GAAG,SAAS;AAElB,SAAK,mBAAmB;AAAA,EAC5B;AAAA,EACA,wBAAwB,MAAM,KAAK,KAAK,OAAO;AAC3C,UAAM,wBAAwB,MAAM,KAAK,KAAK,KAAK;AACnD,QAAI,SAAS,eAAe;AACxB,UAAI,CAACA,OAAM,cAAc,GAAG,GAAG;AAC3B,aAAK,eAAe,EAAE,iBAAiB,YAAY,IAAI;AAAA,MAC3D,OACK;AACD,aAAK,eAAe,CAAC;AAAA,MACzB;AAAA,IACJ;AAAA,EACJ;AACJ;AACAD,YAAW;AAAA,EACPE,OAAM,EAAE,MAAM,OAAO,aAAa,MAAM,WAAWC,oBAAmB,OAAO,CAAC;AAClF,GAAG,yBAAyB,WAAW,oBAAoB,MAAM;AACjEH,YAAW;AAAA,EACPE,OAAM,EAAE,MAAM,OAAO,WAAWC,oBAAmB,KAAK,CAAC;AAC7D,GAAG,yBAAyB,WAAW,gBAAgB,MAAM;AAC7DH,YAAW;AAAA,EACPE,OAAM,EAAE,MAAM,OAAO,aAAa,MAAM,WAAWC,oBAAmB,OAAO,CAAC;AAClF,GAAG,yBAAyB,WAAW,eAAe,MAAM;AAC5DH,YAAW;AAAA,EACPE,OAAM,EAAE,WAAWC,oBAAmB,QAAQ,CAAC;AACnD,GAAG,yBAAyB,WAAW,YAAY,MAAM;;;AGjDzD,SAAS,iBAAAC,gBAAe,KAAAC,UAAS;AANjC,IAAIC,cAA0C,SAAU,YAAY,QAAQ,KAAK,MAAM;AACnF,MAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,OAAO,OAAO,yBAAyB,QAAQ,GAAG,IAAI,MAAM;AAC3H,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,WAAY,KAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,IAAI;AAAA,MACxH,UAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,IAAI,WAAW,CAAC,EAAG,MAAK,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;AAChJ,SAAO,IAAI,KAAK,KAAK,OAAO,eAAe,QAAQ,KAAK,CAAC,GAAG;AAChE;AAKA,IAAI,+BAA+B,MAAMC,sCAAqC,mBAAmB;AACjG;AACA,+BAA+BD,YAAW;AAAA,EACtCE,eAAc;AAAA,IACV,SAASC,KAAI;AAAA,EACjB,CAAC;AACL,GAAG,4BAA4B;;;ACV/B,SAAS,iBAAAC,gBAAe,KAAAC,IAAG,QAAAC,OAAM,SAAAC,QAAO,sBAAAC,2BAA0B;AANlE,IAAIC,cAA0C,SAAU,YAAY,QAAQ,KAAK,MAAM;AACnF,MAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,OAAO,OAAO,yBAAyB,QAAQ,GAAG,IAAI,MAAM;AAC3H,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,WAAY,KAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,IAAI;AAAA,MACxH,UAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,IAAI,WAAW,CAAC,EAAG,MAAK,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;AAChJ,SAAO,IAAI,KAAK,KAAK,OAAO,eAAe,QAAQ,KAAK,CAAC,GAAG;AAChE;AAKA,IAAMC,iBAAgB;AAAA,EAClB,SAAS,EAAE,MAAM,SAAS,MAAM,SAAS,aAAa,gBAAgB;AAAA,EACtE,OAAO;AAAA,IACH;AAAA,MACI,MAAM;AAAA,MAAY,MAAM;AAAA,MAA0B,SAAS;AAAA,QACvD,MAAM;AAAA,MACV;AAAA,MAAG,OAAO;AAAA,QACN,UAAU,MAAMC,QAAO;AAAA,QAAW,MAAM;AAAA,MAC5C;AAAA,MACA,YAAY,CAAC;AAAA,QACL,MAAM;AAAA,QAAS,cAAc;AAAA,QAAgC,QAAQ,EAAE,KAAK,EAAE;AAAA,MAClF,CAAC;AAAA,IACT;AAAA,EACJ;AACJ;AAEA,IAAI,0BAA0B,MAAMC,iCAAgC,mBAAmB;AAAA,EACnF,cAAc;AACV,UAAM,oBAAoBF,cAAa,CAAC;AAExC,SAAK,WAAW;AAAA,EACpB;AACJ;AACAD,YAAW;AAAA,EACPI,OAAM,EAAE,aAAa,MAAM,WAAWC,oBAAmB,OAAO,CAAC;AACrE,GAAG,wBAAwB,WAAW,YAAY,MAAM;AACxDL,YAAW;AAAA,EACPI,OAAM,EAAE,WAAWC,oBAAmB,OAAO,CAAC;AAClD,GAAG,wBAAwB,WAAW,QAAQ,MAAM;AACpD,0BAA0BL,YAAW;AAAA,EACjCM,eAAc;AAAA,IACV,SAASC,KAAI;AAAA,IAAiB,UAAU,IAAIA,EAAC,oFAAoFA,EAAC;AAAA,EACtI,CAAC;AACL,GAAG,uBAAuB;;;ACrC1B,SAAS,iBAAAC,gBAAe,KAAAC,IAAG,SAAAC,QAAO,sBAAAC,qBAAoB,SAAAC,QAAO,eAAe;;;ACN5E;AAAA;AAAA;AAAA;AACA,SAAS,mBAAmB;AAE5B,IAAM,MAAM;AAOL,IAAM,mBAAN,MAAuB;AAAA,EAC1B,YAAY,WAAW,IAAI,YAAY,QAAQ,cAAc,GAAG;AAC5D,SAAK,WAAW;AAChB,SAAK,sBAAsB,CAAC;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,KAAK,KAAK,SAAS;AACrB,QAAI,MAAM,MAAM,KAAK,SAAS,KAAK,KAAK,OAAO;AAC/C,QAAI,OAAO,MAAM;AACb,UAAI,GAAG,IAAI,CAAC;AAEZ,eAAS,YAAY,IAAI,WAAW;AAChC,cAAM,KAAK,eAAe,KAAK,UAAU,OAAO;AAAA,MACpD;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,MAAM,eAAe,KAAK,UAAU,SAAS;AACzC,UAAM,WAAW,SAAS;AAC1B,QAAI,YAAY,SAAS,MAAM;AAC3B,eAAS,SAAS,MAAM,KAAK,eAAe,KAAK,EAAE,MAAM,SAAS,UAAU,QAAQ,SAAS,KAAK,GAAG,OAAO;AAAA,IAChH;AAEA,UAAM,aAAa,SAAS;AAC5B,aAAS,aAAc,cAAc,CAAC,GAAI;AACtC,UAAI,UAAU,QAAQ,UAAU,UAAU;AACtC,YAAI,SAAS,MAAM,KAAK,eAAe,KAAK,EAAE,MAAM,UAAU,UAAU,QAAQ,UAAU,KAAK,GAAG,OAAO;AACzG,kBAAU,SAAS;AAAA,MACvB;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA,EAEA,aAAa;AACT,UAAM,QAAQ,KAAK,OAAO,OAAO,KAAK;AACtC,QAAI,OAAO;AACP,eAAS,OAAO,MAAM;AAClB,cAAM,eAAe,GAAG;AAAA,MAC5B;AAEA,WAAK,OAAO,CAAC;AAAA,IACjB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,KAAK,MAAM,SAAS;AACrC,QAAI,SAAS,OAAO,SAAS;AACzB,UAAI,OAAO,CAAC;AACZ,UAAI,QAAQ,KAAK,MAAM;AAEnB,YAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG;AACrB,iBAAO,IAAI,GAAG,EAAE,KAAK,IAAI;AAAA,QAC7B;AACqG,YAAI,GAAG,EAAE,KAAK,IAAI,IAAI;AAC3H,YAAI,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG;AAC1B,YAAI,eAAe,KAAK,KAAK,IAAI,GAAG;AAEhC,wBAAc,KAAK;AAAA,QACvB,OACK;AACD,kBAAQ,KAAK;AAAA,0CAAwL;AACrM;AAAA,QACJ;AACA,YAAI,aAAa;AACb,cAAI,aAAa,YAAY;AACzB,gBAAI,WAAW,MAAM,MAAM,aAAa,EAAE,aAAa,QAAQ,MAAM,QAAQ,QAAiB,CAAC;AAC/F,gBAAI,SAAS,IAAI;AACb,qBAAO,MAAM,SAAS,KAAK;AAAA,YAC/B;AAAA,UACJ;AACA,cAAI,KAAK,OAAO;AAEZ,mBAAO,KAAK,MAAM,iBAAiB,WAAW;AAC9C,gBAAI,CAAC,MAAM;AAEP,qBAAO,MAAM,WAAW;AACxB,mBAAK,oBAAoB,KAAK,WAAW;AACzC,mBAAK,MAAM;AAAA,gBAAiB;AAAA,gBAAa;AAAA;AAAA,gBAA+C;AAAA,cAAK;AAAA,YACjG;AAAA,UACJ,OACK;AAED,mBAAO,MAAM,WAAW;AAAA,UAC5B;AAAA,QACJ;AACA,YAAI,SAAS,KAAK;AAClB,iBAAS,OAAO,OAAO,YAAY;AAC/B,cAAI,SAAS,OAAO,WAAW,GAAG,GAAG,QAAQ,QAAQ,KAAK,MAAM,KAAK,OAAK,EAAE,SAAS,GAAG;AACxF,cAAI,YAAY,OAAO,OAAO;AAAA,YAC1B,MAAM;AAAA,YAAK,MAAM,OAAO,QAAQ;AAAA,YAAQ,OAAO;AAAA,UACnD,GAAG;AAAA,UAAmD,EAAE,YAAY,KAAK,CAAC;AAC1E,cAAI,OAAO;AACP,gBAAI,OAAQ,OAAO,SAAS,OAAO,MAAM,QAAS,OAAO;AACzD,gBAAI,MAAM;AACN,kBAAI,MAAM,YAAY,QAAQ,qBAAqB,KAAK,IAAI,GAAG,MAAM,IAAI;AACzE,kBAAI,IAAI,GAAG,EAAE,GAAG,GAAG;AACf,0BAAU,QAAQ,IAAI,GAAG,EAAE,GAAG;AAAA,cAClC,OACK;AAED,0BAAU,QAAQ,MAAM,OAAO,GAAG;AAAA,cACtC;AAAA,YACJ;AAAA,UACJ;AACA,eAAK,KAAK,SAAS;AAAA,QACvB;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,WAAO,MAAM,OAAO,IAAI;AAAA,EAC5B;AACJ;;;ADhIA,IAAIC,cAA0C,SAAU,YAAY,QAAQ,KAAK,MAAM;AACnF,MAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,OAAO,OAAO,yBAAyB,QAAQ,GAAG,IAAI,MAAM;AAC3H,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,WAAY,KAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,IAAI;AAAA,MACxH,UAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,IAAI,WAAW,CAAC,EAAG,MAAK,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;AAChJ,SAAO,IAAI,KAAK,KAAK,OAAO,eAAe,QAAQ,KAAK,CAAC,GAAG;AAChE;AAMA,IAAM,uBAAuB;AAAA,EACzB,SAAS,EAAE,MAAM,gBAAgB,MAAM,gBAAgB,aAAa,yCAAyC;AAAA,EAC7G,OAAO;AAAA,IACH;AAAA,MACI,MAAM;AAAA,MAAO,MAAM;AAAA,MAAQ,SAAS;AAAA,QAChC,MAAM;AAAA,QAAO,aAAa;AAAA,QAAqD,UAAU,CAAC,WAAW;AAAA,QACrG,WAAW;AAAA,MACf;AAAA,MACA,OAAO,EAAE,SAAS,KAAK;AAAA,MACvB,YAAY,CAAC;AAAA,QACL,MAAM;AAAA,QAAY,cAAc;AAAA,MACpC,CAAC;AAAA,IACT;AAAA,IACA;AAAA,MACI,MAAM;AAAA,MAAY,MAAM;AAAA,MAAW,SAAS;AAAA,QACxC,MAAM;AAAA,QAAiB,aAAa;AAAA,QAA0C,UAAU,CAAC,WAAW;AAAA,QACpG,IAAI;AAAA,MACR;AAAA,MACA,OAAO,EAAE,SAAS,KAAK;AAAA,IAC3B;AAAA,IACA;AAAA,EACJ;AACJ;AAEA,IAAI,gCAAgC,MAAMC,uCAAsC,yBAAyB;AAAA,EACrG,YAAY,WAAW,IAAI,iBAAiB,GAAG,SAAS,IAAI,QAAQ,GAAG;AACnE,UAAM,oBAAoB,oBAAoB,CAAC;AAC/C,SAAK,WAAW;AAChB,SAAK,SAAS;AAAA,EAClB;AAAA,EACA,wBAAwB,MAAM,KAAK,KAAK,OAAO;AAC3C,UAAM,wBAAwB,MAAM,KAAK,KAAK,KAAK;AACnD,YAAQ,MAAM;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,aAAK,UAAU;AACf;AAAA,MACJ,KAAK;AACD,aAAK,SAAS,QAAQ,MAAM,KAAK,SAAS;AAC1C;AAAA,IACR;AAAA,EACJ;AAAA,EACA,wBAAwB;AACpB,UAAM,sBAAsB;AAC5B,QAAI,KAAK,UAAU;AACf,WAAK,SAAS,QAAQ,KAAK;AAAA,IAC/B;AACA,SAAK,UAAU;AAAA,EACnB;AAAA,EACA,YAAY;AACR,QAAI,KAAK,WAAW,KAAK,YAAY,CAACC,OAAM,cAAc,KAAK,GAAG,GAAG;AACjE,WAAK,WAAW;AAChB,WAAK,SAAS,KAAK,KAAK,GAAG,EAAE,KAAK,OAAK;AACnC,aAAK,WAAW;AAChB,aAAK,WAAW;AAAA,MACpB,GAAG,OAAK;AACJ,aAAK,WAAW;AAAA,MACpB,CAAC;AAAA,IACL;AAAA,EACJ;AACJ;AACAF,YAAW;AAAA,EACPG,OAAM,EAAE,MAAM,OAAO,aAAa,MAAM,WAAWC,oBAAmB,OAAO,CAAC;AAClF,GAAG,8BAA8B,WAAW,OAAO,MAAM;AACzDJ,YAAW;AAAA,EACPG,OAAM,EAAE,MAAM,OAAO,aAAa,MAAM,WAAWC,oBAAmB,QAAQ,CAAC;AACnF,GAAG,8BAA8B,WAAW,YAAY,MAAM;AAC9DJ,YAAW;AAAA,EACPG,OAAM,EAAE,WAAWC,oBAAmB,KAAK,CAAC;AAChD,GAAG,8BAA8B,WAAW,YAAY,MAAM;AAC9D,gCAAgCJ,YAAW;AAAA,EACvCK,eAAc,EAAE,SAASC,KAAI,sBAAsB,CAAC;AACxD,GAAG,6BAA6B;;;AE9EhC,SAAS,SAAAC,QAAO,sBAAAC,qBAAoB,SAAAC,QAAO,sBAAAC,qBAAoB,SAAS,QAAAC,aAAY;AANpF,IAAIC,eAA0C,SAAU,YAAY,QAAQ,KAAK,MAAM;AACnF,MAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,OAAO,OAAO,yBAAyB,QAAQ,GAAG,IAAI,MAAM;AAC3H,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,WAAY,KAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,IAAI;AAAA,MACxH,UAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,IAAI,WAAW,CAAC,EAAG,MAAK,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;AAChJ,SAAO,IAAI,KAAK,KAAK,OAAO,eAAe,QAAQ,KAAK,CAAC,GAAG;AAChE;AAQO,IAAM,uBAAN,cAAmC,mBAAmB;AAAA,EACzD,YAAY,UAAU,UAAU,GAAG,MAAM;AACrC,UAAM,UAAU,IAAI;AACpB,SAAK,UAAU;AACf,SAAK,UAAU;AAAA,EACnB;AAAA;AAAA,EAEA,oBAAoB;AAChB,UAAM,kBAAkB;AACxB,IAAAC,OAAM,SAAS,MAAM,eAAeC,QAAO,qDAAqD;AAAA,EACpG;AAAA,EACA,wBAAwB,MAAM,KAAK,KAAK,OAAO;AAC3C,UAAM,wBAAwB,MAAM,KAAK,KAAK,KAAK;AACnD,YAAQ,MAAM;AAAA,MACV,KAAK;AACD,QAAAD,OAAM,YAAY,MAAM,cAAc,MAAM,CAAC,EAAE;AAC/C,QAAAA,OAAM,SAAS,MAAM,cAAc,MAAM,CAAC,EAAE;AAC5C;AAAA,MACJ,KAAK;AACD,QAAAA,OAAM,YAAY,MAAM,QAAQ,GAAG,EAAE;AACrC,QAAAA,OAAM,SAAS,MAAM,QAAQ,GAAG,EAAE;AAClC;AAAA,MACJ,KAAK;AACD,QAAAA,OAAM,YAAY,MAAM,cAAc,MAAM,CAAC,EAAE;AAC/C,QAAAA,OAAM,SAAS,MAAM,cAAc,MAAM,CAAC,EAAE;AAC5C;AAAA,MACJ,KAAK;AACD,QAAAA,OAAM,YAAY,MAAM,QAAQ,GAAG,EAAE;AACrC,QAAAA,OAAM,SAAS,MAAM,QAAQ,GAAG,EAAE;AAClC;AAAA,MACJ,KAAK;AACD,SAAC,KAAK,UAAUA,OAAM,WAAWA,OAAM,aAAa,MAAM,MAAM,CAAC,MAAMC,QAAO,SAAS,CAAC;AACxF;AAAA,MACJ,KAAK;AACD,SAAC,KAAK,UAAUD,OAAM,WAAWA,OAAM,aAAa,MAAM,MAAM,CAAC,MAAMC,QAAO,UAAU,CAAC;AACzF;AAAA,IACR;AAAA,EACJ;AAAA,EACA,IAAI,YAAY;AACZ,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAEA,gBAAgB;AACZ,WAAOC,oBAAmB,aAAa,MAAM,OAAK,aAAa,2BAA2B;AAAA,EAC9F;AAAA,EACA,wBAAwB;AACpB,UAAM,sBAAsB;AAC5B,QAAI,OAAO,KAAK,aAAa,KAAK,cAAc;AAChD,QAAI,CAACF,OAAM,OAAO,IAAI,GAAG;AACrB,WAAK,SAAS,IAAI;AAAA,IACtB;AAAA,EACJ;AAAA,EACA,uBAAuB;AACnB,QAAI,CAACA,OAAM,OAAO,KAAK,UAAU,GAAG;AAChC,WAAK,WAAW,WAAW,IAAI;AAAA,IACnC;AACA,UAAM,qBAAqB;AAAA,EAC/B;AACJ;AACAD,aAAW;AAAA,EACPI,OAAM,EAAE,MAAM,MAAM,aAAa,MAAM,WAAWC,oBAAmB,OAAO,CAAC;AACjF,GAAG,qBAAqB,WAAW,UAAU,MAAM;AACnDL,aAAW;AAAA,EACPI,OAAM,EAAE,MAAM,MAAM,aAAa,MAAM,WAAWC,oBAAmB,OAAO,CAAC;AACjF,GAAG,qBAAqB,WAAW,OAAO,MAAM;AAChDL,aAAW;AAAA,EACPI,OAAM,EAAE,MAAM,MAAM,aAAa,MAAM,WAAWC,oBAAmB,OAAO,CAAC;AACjF,GAAG,qBAAqB,WAAW,WAAW,MAAM;AACpDL,aAAW;AAAA,EACPI,OAAM,EAAE,MAAM,MAAM,aAAa,MAAM,WAAWC,oBAAmB,OAAO,CAAC;AACjF,GAAG,qBAAqB,WAAW,WAAW,MAAM;AACpDL,aAAW;AAAA,EACPI,OAAM,EAAE,MAAM,MAAM,aAAa,MAAM,WAAWC,oBAAmB,QAAQ,CAAC;AAClF,GAAG,qBAAqB,WAAW,WAAW,MAAM;AACpDL,aAAW;AAAA,EACPI,OAAM,EAAE,MAAM,MAAM,aAAa,MAAM,WAAWC,oBAAmB,QAAQ,CAAC;AAClF,GAAG,qBAAqB,WAAW,WAAW,MAAM;AAC7C,IAAM,0BAA0B;AAChC,IAAM,4BAA4B;AAClC,IAAM,wBAAwB;AAE9B,IAAM,sBAAN,cAAkC,YAAY;AAAA,EACjD,YAAY,MAAM,WAAW;AACzB,UAAM,yBAAyBJ,OAAM,OAAO,aAAa,CAAC,GAAG,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,EAClF;AACJ;AAEO,IAAM,wBAAN,cAAoC,YAAY;AAAA,EACnD,YAAY,MAAM,WAAW;AACzB,UAAM,2BAA2BA,OAAM,OAAO,aAAa,CAAC,GAAG,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,EACpF;AACJ;AAEO,IAAM,8BAAN,cAA0C,qBAAqB;AAAA;AAAA,EAElE,IAAI,eAAe;AACf,WAAO;AAAA,EACX;AAAA;AAAA,EAEA,SAAS,MAAM;AACX,WAAO,gBAAgB;AAAA,EAC3B;AAAA,EACA,wBAAwB;AACpB,UAAM,sBAAsB;AAC5B,IAAAA,OAAM,SAAS,KAAK,cAAcC,QAAO,gBAAgB;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,MAAM;AACb,SAAK,aAAa,YAAY,IAAI;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS,MAAM;AACX,QAAI,CAAC,KAAK,SAAS,IAAI,GAAG;AACtB,WAAK,IAAI,QAAQ,SAAS,OAAO,GAAI,QAAQ,KAAK,SAAU,wCAAwC,KAAK,SAAS,WAAW;AAC7H,aAAO;AAAA,IACX;AACA,QAAI,SAAS;AACb,UAAM,QAAQ,KAAK,QAAQ,KAAK,SAAS,CAAC;AAC1C,QAAID,OAAM,cAAc,KAAK,GAAG;AAC5B,WAAK,QAAQ,CAAC,IAAI;AAClB,eAAS;AAAA,IACb,WACS,MAAM,QAAQ,IAAI,MAAM,IAAI;AACjC,YAAM,KAAK,IAAI;AACf,eAAS;AAAA,IACb;AAEA,QAAI,QAAQ;AACR,WAAK,cAAc,IAAI,oBAAoB,IAAI,CAAC;AAAA,IACpD;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,MAAM;AACb,UAAM,QAAQ,KAAK,OAAO,MAAM,CAACA,OAAM,cAAc,KAAK,KAAK,MAAM,QAAQ,IAAI;AACjF,QAAI,OAAO,GAAG;AACV,UAAIK,QAAO,MAAM,OAAO,KAAK,CAAC;AAC9B,WAAK,cAAc,IAAI,sBAAsBA,MAAK,CAAC,CAAC,CAAC;AACrD,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AACJ;AACAN,aAAW;AAAA,EACPI;AAAA;AAAA,EAAyD;AAC7D,GAAG,4BAA4B,WAAW,SAAS,MAAM;;;ACjKzD,SAAS,iBAAAG,gBAAe,KAAAC,KAAG,YAAAC,WAAU,SAAAC,SAAO,sBAAAC,4BAA0B;AANtE,IAAIC,eAA0C,SAAU,YAAY,QAAQ,KAAK,MAAM;AACnF,MAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,OAAO,OAAO,yBAAyB,QAAQ,GAAG,IAAI,MAAM;AAC3H,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,WAAY,KAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,IAAI;AAAA,MACxH,UAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,IAAI,WAAW,CAAC,EAAG,MAAK,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;AAChJ,SAAO,IAAI,KAAK,KAAK,OAAO,eAAe,QAAQ,KAAK,CAAC,GAAG;AAChE;AAMA,IAAM,gBAAgB,oBAAoB;AAAA,EACtC,SAAS,EAAE,MAAM,iBAAiB,MAAM,QAAQ,aAAa,qBAAqB;AAAA,EAClF,OAAO,CAAC;AAAA,IACA,MAAM;AAAA,IAAQ,MAAM;AAAA,IAA0B,SAAS,EAAE,MAAM,OAAO;AAAA,IAAG,OAAO;AAAA,EACpF,CAAC;AACT,CAAC;AAED,IAAI,yBAAyB,MAAMC,gCAA+B,qBAAqB;AAAA,EACnF,cAAc;AACV,UAAM,aAAa;AAAA,EACvB;AACJ;AACAD,aAAW;AAAA,EACPE,QAAM,EAAE,aAAa,MAAM,WAAWC,qBAAmB,OAAO,CAAC;AACrE,GAAG,uBAAuB,WAAW,QAAQ,MAAM;AACnD,yBAAyBH,aAAW;AAAA,EAChCI,eAAc;AAAA,IACV,SAASC,MAAI;AAAA,IAAgB,QAAQC,UAAS;AAAA,IAC9C,UAAU,IAAID,GAAC,mCAAmCA,GAAC;AAAA,EACvD,CAAC;AACL,GAAG,sBAAsB;;;ACzBzB,SAAS,iBAAAE,iBAAe,KAAAC,KAAG,QAAAC,OAAM,YAAAC,WAAU,aAAAC,kBAAiB;AAN5D,IAAIC,eAA0C,SAAU,YAAY,QAAQ,KAAK,MAAM;AACnF,MAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,OAAO,OAAO,yBAAyB,QAAQ,GAAG,IAAI,MAAM;AAC3H,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,WAAY,KAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,IAAI;AAAA,MACxH,UAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,IAAI,WAAW,CAAC,EAAG,MAAK,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;AAChJ,SAAO,IAAI,KAAK,KAAK,OAAO,eAAe,QAAQ,KAAK,CAAC,GAAG;AAChE;AAOA,IAAI,2BAA2B,MAAMC,kCAAiC,4BAA4B;AAAA,EAC9F,SAAS,MAAM;AACX,UAAM,SAAS,MAAM,SAAS,IAAI;AAClC,QAAI,QAAQ;AACR,WAAK,OAAO;AAAA,IAChB;AACA,WAAO;AAAA,EACX;AACJ;AACAD,aAAW;AAAA,EACPE,WAAUC,MAAI,YAAY;AAC9B,GAAG,yBAAyB,WAAW,aAAa,MAAM;AAC1D,2BAA2BH,aAAW;AAAA,EAClCI,gBAAc;AAAA,IACV,SAASD,MAAI;AAAA,IAAkB,QAAQE,UAAS;AAAA,IAChD,UAAU,IAAIF,GAAC;AAAA;AAAA,WAEZA,GAAC,iDAAiDG,KAAI;AAAA,wBACzCA,KAAI;AAAA,eACbH,GAAC,mEAAmEG,KAAI,yBAAyBH,GAAC;AAAA,eAClGA,GAAC,oDAAoDA,GAAC;AAAA,YACzDA,GAAC;AAAA;AAAA,IAETA,GAAC;AAAA,GACFA,GAAC,iCAAiCG,KAAI,qBAAqBH,GAAC;AAAA,GAC5DA,GAAC,cAAcA,GAAC;AAAA,EACf,CAAC;AACL,GAAG,wBAAwB;;;ACjC3B,SAAS,iBAAAI,iBAAe,KAAAC,KAAG,QAAAC,OAAM,SAAAC,SAAO,sBAAAC,sBAAoB,YAAAC,WAAU,SAAAC,QAAO,MAAAC,KAAI,2BAAAC,gCAA+B;AANhH,IAAIC,eAA0C,SAAU,YAAY,QAAQ,KAAK,MAAM;AACnF,MAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,OAAO,OAAO,yBAAyB,QAAQ,GAAG,IAAI,MAAM;AAC3H,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,WAAY,KAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,IAAI;AAAA,MACxH,UAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,IAAI,WAAW,CAAC,EAAG,MAAK,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;AAChJ,SAAO,IAAI,KAAK,KAAK,OAAO,eAAe,QAAQ,KAAK,CAAC,GAAG;AAChE;AAKA,SAAS,mBAAmB;AACxB,QAAM,MAAM,SAAS,gBAAgB,8BAA8B,KAAK;AACxE,MAAI,MAAM,gBAAgB;AAC1B,MAAI,MAAM,SAAS;AACnB,MAAI,aAAa,UAAU,MAAM;AACjC,MAAI,aAAa,SAAS,MAAM;AAChC,MAAI,aAAa,uBAAuB,MAAM;AAC9C,MAAI,aAAa,SAAS,mBAAmB;AAG7C,MAAI,YAAY;AAChB,SAAO;AACX;AACO,IAAM,eAAe;AAC5B,IAAM,mBAAmB;AACzB,IAAM,gBAAgB;AACtB,IAAM,gBAAgB;AAAA,EAClB,SAAS;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa;AAAA,EACjB;AAAA,EACA,OAAO;AAAA,IACH;AAAA,MACI,MAAM;AAAA,MAAQ,MAAM;AAAA,MAAO,SAAS;AAAA,QAChC,MAAM;AAAA,QAAQ,UAAU,CAAC,WAAW;AAAA,MACxC;AAAA,MAAG,YAAY;AAAA,QACX,EAAE,MAAM,YAAY,cAAc,GAAG;AAAA,QACrC;AAAA,UACI,MAAM;AAAA,UAAS,cAAc;AAAA,UAAI,QAAQ;AAAA,YACrC,KAAK;AAAA,YAAG,KAAK;AAAA,UACjB;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IAAG;AAAA,MACC,MAAM;AAAA,MAAU,MAAM;AAAA,MAAO,SAAS;AAAA;AAAA,QAElC,MAAM;AAAA,QAAW,UAAU,CAAC,WAAW;AAAA,MAC3C;AAAA,MAAG,YAAY;AAAA;AAAA,QAEX;AAAA,UACI,MAAM;AAAA,UAAS,cAAc;AAAA,UAAI,QAAQ;AAAA,YACrC,KAAK;AAAA,YAAG,KAAK;AAAA,YAAG,MAAM;AAAA,UAC1B;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IAAG;AAAA,MACC,MAAM;AAAA,MAAa,MAAM;AAAA,MAAO,SAAS;AAAA;AAAA,QAErC,MAAM;AAAA,QAAc,UAAU,CAAC,WAAW;AAAA,MAC9C;AAAA,MAAG,YAAY;AAAA;AAAA,QAEX;AAAA,UACI,MAAM;AAAA,UAAS,cAAc;AAAA,UAAI,QAAQ;AAAA,YACrC,KAAK;AAAA,YAAG,KAAK;AAAA,YAAG,MAAM;AAAA,UAC1B;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;AAOA,IAAI,yBAAyB,MAAMC,gCAA+B,4BAA4B;AAAA,EAC1F,cAAc;AACV,UAAM,oBAAoB,aAAa,GAAG,kBAAkB,MAAM;AAClE,SAAK,wBAAwB,CAAC,QAAQ;AAClC,UAAI,IAAI,OAAO,iBAAiB,SAAS,IAAI,OAAO,iBAAiB,WAAW;AAC5E,cAAM,SAAS,IAAI;AACnB,aAAK,OAAO,KAAK,IAAI,KAAK,MAAM,OAAO,MAAM,OAAO,OAAO;AAAA,MAC/D;AAAA,IACJ;AACA,SAAK,mBAAmB,CAAC,QAAQ;AAC7B,YAAM,OAAO,IAAI,QAAQ,KAAK,KAAK;AACnC,cAAQ,IAAI,MAAM;AAAA,QACd,KAAKC,IAAG,kBAAkB;AACtB,eAAK,WAAW,QAAQ,SAAO;AAAE,gBAAI,MAAM,gBAAgB;AAAA,UAAQ,CAAC;AACpE,eAAK,aAAa;AAAA,YACd,SAAS,GAAG;AAAA,YACZ,SAAS,GAAG;AAAA,YACZ,KAAK,GAAG;AAAA,YACR,KAAK,GAAG;AAAA,UACZ;AACA;AAAA,QACJ,KAAKA,IAAG,kBAAkB;AACtB,eAAK,WAAW,QAAQ,SAAO;AAAE,gBAAI,MAAM,gBAAgB;AAAA,UAAQ,CAAC;AACpE;AAAA,QACJ,KAAKA,IAAG,kBAAkB;AACtB,cAAI,aAAa,KAAK;AACtB,cAAI,MAAM,CAAC,WAAW,MAAM,kBAAkB;AAC9C,cAAI,MAAM,CAAC,WAAW,MAAM,eAAe;AAC3C,gBAAM,WAAW,MAAM,KAAK,WAAW,SAAS,YAAY,MAAM,KAAK,WAAW;AAElF,cAAI,CAAC,KAAK,YAAY,IAAI,KAAK,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG;AACzD,gBAAI,mBAAmB;AAEvB,gBAAI,aAAa,KAAK,WAAW,mBAAmB;AAChD,iCAAmB,GAAG,WAAW;AACjC,iBAAG,SAAS;AAAA,YAChB;AACA,gBAAI,cAAc,KAAK,QAAQ,gBAAgB;AAC3C,iCAAmB,oBAAqB,GAAG,QAAQ;AACnD,iBAAG,MAAM;AAAA,YACb;AACA,gBAAI,kBAAkB;AAAA,YAGtB;AAAA,UACJ;AACA;AAAA,MACR;AACA;AAAA,IACJ;AACA,SAAK,iBAAiB,CAAC,QAAQ;AAC3B,cAAQ,IAAI,MAAM;AAAA,QACd,KAAKA,IAAG,iBAAiB;AACrB,UAAAC,OAAM,SAAS,IAAI,OAAO,SAASC,QAAO,YAAY;AACtD,eAAK,WAAW,QAAQ,SAAO;AAAE,gBAAI,MAAM,gBAAgB;AAAA,UAAQ,CAAC;AACpE;AAAA,QACJ,KAAKF,IAAG,iBAAiB;AACrB,eAAK,WAAW,QAAQ,SAAO;AAAE,gBAAI,MAAM,gBAAgB;AAAA,UAAQ,CAAC;AACpE,UAAAC,OAAM,YAAY,IAAI,OAAO,SAASC,QAAO,YAAY;AACzD;AAAA,QACJ,KAAKF,IAAG,iBAAiB;AACrB,cAAI,eAAe;AAEnB,gBAAM,MAAM,EAAE,GAAG,IAAI,SAAS,GAAG,IAAI,QAAQ,GAAG,SAAS,IAAI,OAAO;AACpE,gBAAM,aAAa,SAAS,kBAAkB,IAAI,GAAG,IAAI,CAAC,EAAE,KAAK,OAAK,KAAK,UAAU,YAAY,QAAQ,CAAC,KAAK,CAAC;AAChH,cAAI,YAAY;AACZ,gBAAI,MAAM,CAAC,WAAW,MAAM;AAC5B,gBAAI,MAAM,CAAC,WAAW,MAAM;AAC5B,kBAAM,SAAS,IAAI,OAAO,SAAS,WAAW,OAAO,SAAS,GAAG,WAAW,OAAO,MAAM;AACzF,kBAAM,UAAU,IAAI,MAAM,UAAU,UAAU,IAAI,MAAM;AACxD,gBAAI,CAAC,KAAK,YAAY,QAAQ,OAAO,QAAQ,OAAO,KAAK,SAAS,OAAO,GAAG;AACxE,kBAAI,mBAAmB;AAEvB,kBAAI,OAAO,YAAY,OAAO,SAAS,OAAO,GAAG;AAC7C,mCAAmB,OAAO,YAAY;AACtC,uBAAO,UAAU;AAAA,cACrB;AACA,kBAAI,OAAO,YAAY,OAAO,WAAW,QAAQ,GAAG;AAChD,mCAAmB,oBAAoB,OAAO,YAAY;AAC1D,uBAAO,UAAU;AAAA,cACrB;AACA,kBAAI,kBAAkB;AAAA,cAGtB;AAAA,YACJ;AAAA,UACJ;AACA;AAAA,MACR;AAAA,IACJ;AACA,SAAK,aAAa,CAAC;AAAA,EACvB;AAAA,EACA,SAAS,MAAM;AACX,QAAI,SAAS,MAAM,SAAS,IAAI;AAChC,QAAI,QAAQ;AACR,YAAM,MAAM,KAAK,OAAO,GAAG,SAAS,KAAK,UAAU,GAAG,UAAU,KAAK,WAAW,GAAG,UAAU,KAAK,WAAW;AAC7G,UAAI,YAAY,CAAC,KAAK,YAAY,MAAM,QAAQ,KAAK,SAAS,OAAO;AACrE,UAAI,WAAW;AACX,aAAK,MAAM;AACX,aAAK,SAAS;AACd,aAAK,UAAU;AACf,aAAK,UAAU;AAAA,MACnB,OACK;AACD,YAAI,CAAC,WAAW;AAEZ,cAAI,QAAQ,CAAC,mBAAmB,UAAU;AACtC,gBAAI,cAAc,KAAK,UAAU;AACjC,gBAAI,CAAC,kBAAkB;AACnB,4BAAc,cAAc,UAAU;AAAA,YAC1C;AACA,qBAAS,IAAI,GAAG,IAAI,KAAK,MAAM,KAAK;AAChC,uBAAS,IAAI,GAAG,KAAK,aAAa,KAAK;AACnC,oBAAI,CAAC,KAAK,YAAY,MAAM,GAAG,GAAG,SAAS,OAAO,GAAG;AACjD,uBAAK,SAAS;AACd,uBAAK,MAAM;AACX,uBAAK,UAAU,KAAK,IAAI,cAAc,IAAI,GAAG,OAAO;AACpD,uBAAK,UAAU;AACf,8BAAY;AACZ;AAAA,gBACJ;AAAA,cACJ;AACA,kBAAI;AACA;AAAA,YACR;AAAA,UACJ;AACA,gBAAM;AACN,cAAI,CAAC,aAAa,UAAU,GAAG;AAE3B,kBAAM,IAAI;AAAA,UACd;AAAA,QACJ;AAEA,YAAI,CAAC,WAAW;AACZ,eAAK;AACL,eAAK,MAAM,KAAK,OAAO;AACvB,eAAK,SAAS;AAAA,QAClB;AAAA,MACJ;AAGA,WAAK,YAAY,CAAC,KAAK,WAAW,KAAK,SAAS;AAChD,WAAK,iBAAiBG,0BAAyB,KAAK,uBAAuB,KAAK;AAAA,IACpF;AAEA,WAAO;AAAA,EACX;AAAA,EACA,WAAW,MAAM;AACb,QAAI,SAAS,MAAM,WAAW,IAAI;AAClC,QAAI,QAAQ;AACR,WAAK,oBAAoBA,0BAAyB,KAAK,uBAAuB,KAAK;AACnF,YAAM,MAAM,KAAK,UAAU,QAAQ,KAAK,SAAS;AACjD,UAAI,OAAO;AACP,aAAK,UAAU,OAAO,KAAK,CAAC;AAChC,YAAM,OAAO,KAAK,UAAU,QAAQ,KAAK,SAAS;AAClD,UAAI,QAAQ;AACR,aAAK,UAAU,OAAO,MAAM,CAAC;AAAA,IACrC;AACA,WAAO;AAAA,EACX;AAAA,EACA,YAAY,KAAK,KAAK,KAAK,SAAS,SAAS;AACzC,aAAS,QAAQ,KAAK,OAAO;AACzB,UAAI,SAAS;AACb,UAAI,WAAW,KAAK;AAChB;AAAA,MACJ;AACA,UAAK,OAAO,SAAU,MAAM,WAAa,OAAO,SAAS,OAAO,UAAW,QACnE,OAAO,MAAO,MAAM,WAAa,OAAO,MAAM,OAAO,UAAW,MAAM;AAC1E,eAAO;AAAA,MACX;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB;AAChB,UAAM,kBAAkB;AACxB,IAAAF,OAAM,SAAS,MAAMC,QAAO,OAAO;AAEnC,QAAI,WAAW,KAAK,YAAY,SAAS,cAAcE,MAAI,YAAY;AACvE,QAAI,UAAU,SAAS,cAAc,KAAK;AAC1C,aAAS,KAAK,YAAY,OAAO;AACjC,aAAS,UAAU;AACnB,aAAS,OAAOJ,IAAG,aAAa;AAChC,aAAS,eAAeA,IAAG,aAAa;AACxC,aAAS,iBAAiBA,IAAG,kBAAkB,OAAO,KAAK,kBAAkB,KAAK;AAClF,aAAS,iBAAiBA,IAAG,kBAAkB,MAAM,KAAK,kBAAkB,KAAK;AACjF,aAAS,iBAAiBA,IAAG,kBAAkB,KAAK,KAAK,kBAAkB,KAAK;AAChF,aAAS,KAAK,YAAY,QAAQ;AAElC,QAAI,UAAU,KAAK,YAAY,SAAS,cAAcI,MAAI,UAAU;AACpE,YAAQ,UAAU,CAACJ,IAAG,cAAc,OAAOA,IAAG,cAAc,MAAM;AAClE,YAAQ,iBAAiBA,IAAG,iBAAiB,OAAO,KAAK,gBAAgB,KAAK;AAC9E,YAAQ,iBAAiBA,IAAG,iBAAiB,SAAS,KAAK,gBAAgB,KAAK;AAChF,YAAQ,iBAAiBA,IAAG,iBAAiB,KAAK,KAAK,gBAAgB,KAAK;AAC5E,aAAS,KAAK,YAAY,OAAO;AAGjC,QAAIC,OAAM,cAAc,KAAK,OAAO,GAAG;AACnC,WAAK,UAAU;AAAA,IACnB;AACA,QAAIA,OAAM,cAAc,KAAK,IAAI,GAAG;AAChC,WAAK,OAAO;AAAA,IAChB;AAAA,EACJ;AAAA,EACA,wBAAwB;AACpB,UAAM,sBAAsB;AAC5B,SAAK,MAAM;AAAA,EACf;AAAA,EACA,wBAAwB,MAAM,KAAK,KAAK,OAAO;AAC3C,UAAM,wBAAwB,MAAM,KAAK,KAAK,KAAK;AACnD,SAAK,MAAM;AAAA,EACf;AAAA,EACA,uBAAuB;AACnB,QAAI,WAAW,KAAK,WAAW,UAAU,KAAK;AAC9C,QAAI,CAACA,OAAM,OAAO,QAAQ,GAAG;AACzB,eAAS,QAAQ,OAAO;AACxB,eAAS,oBAAoBD,IAAG,kBAAkB,OAAO,KAAK,kBAAkB,KAAK;AACrF,eAAS,oBAAoBA,IAAG,kBAAkB,MAAM,KAAK,kBAAkB,KAAK;AACpF,eAAS,oBAAoBA,IAAG,kBAAkB,KAAK,KAAK,kBAAkB,KAAK;AACnF,eAAS,OAAO;AAChB,WAAK,YAAY;AAAA,IACrB;AACA,QAAI,CAACC,OAAM,OAAO,OAAO,GAAG;AACxB,cAAQ,oBAAoBD,IAAG,iBAAiB,OAAO,KAAK,gBAAgB,KAAK;AACjF,cAAQ,oBAAoBA,IAAG,iBAAiB,SAAS,KAAK,gBAAgB,KAAK;AACnF,cAAQ,oBAAoBA,IAAG,iBAAiB,KAAK,KAAK,gBAAgB,KAAK;AAC/E,cAAQ,OAAO;AACf,WAAK,YAAY;AAAA,IACrB;AACA,UAAM,qBAAqB;AAAA,EAC/B;AAAA,EACA,WAAW,SAAS,eAAe,GAAG;AAClC,QAAI,OAAO,YAAY,UAAU;AAC7B,aAAO;AAAA,IACX,WACS,WAAW,MAAM;AACtB,gBAAU;AAAA,IACd;AACA,WAAO,KAAK,WAAW,OAAO,IAAI;AAAA,EACtC;AAAA,EACA,WAAW,KAAK;AACZ,WAAO,OAAO,KAAK,QAAQ;AAAA,EAC/B;AAAA,EACA,QAAQ;AACJ,SAAK,MAAM,YAAY,KAAK,WAAW,KAAK,aAAa,CAAC,IAAI;AAC9D,SAAK,MAAM,eAAe,KAAK,WAAW,KAAK,gBAAgB,CAAC,IAAI;AAEpE,SAAK,MAAM,sBAAsB,UAAW,KAAK,WAAW,gBAAiB;AAE7E,QAAI,eAAe,KAAK,WAAW,KAAK,cAAc,CAAC,GAAG,YAAY,KAAK,WAAW,KAAK,aAAa,MAAM;AAC9G,SAAK,MAAM,mBAAmB,UAAW,KAAK,QAAQ,aAAc,YAAY,YAAY,KAAK,SAAS;AAC1G,SAAK,MAAM,aAAa,KAAK,WAAW,KAAK,QAAQ,CAAC;AACtD,SAAK,MAAM,gBAAgB,KAAK,WAAW,KAAK,WAAW,CAAC;AAE5D,SAAK,cAAc;AAAA,EACvB;AAAA,EACA,gBAAgB;AACZ,QAAI,SAAS;AACb,UAAM,UAAU,KAAK;AACrB,QAAI,SAAS;AACT,YAAM,OAAO,KAAK,WAAW,kBAAkB,OAAO,KAAK,QAAQ,eAAe,QAAQ,OAAO;AACjG,eAAS;AACT,eAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC5B,eAAO,KAAK,WAAW,UAAU,GAAG;AAChC,cAAI,IAAI,iBAAiB;AACzB,eAAK,YAAY,CAAC;AAClB,eAAK,WAAW,KAAK,CAAC;AAAA,QAC1B;AACA,YAAI,MAAM,KAAK,WAAW,CAAC;AAC3B,cAAM,IAAI,IAAI,MAAM,IAAI,KAAK,MAAM,IAAI,IAAI;AAC3C,YAAI,MAAM,cAAc,IAAI,GAAG,SAAS;AACxC,YAAI,MAAM,WAAW,IAAI,GAAG,SAAS;AAAA,MACzC;AAAA,IACJ;AACA,aAAS,OAAO,KAAK,WAAW,OAAO,MAAM,GAAG;AAC5C,UAAI,OAAO;AAAA,IACf;AAEA,QAAI,CAACC,OAAM,OAAO,KAAK,SAAS,KAAK,CAACA,OAAM,OAAO,KAAK,SAAS,GAAG;AAChE,WAAK,UAAU,WAAW,KAAK,UAAU,WACnC,CAAC;AACP,WAAK,UAAU,cAAc,KAAK;AAAA,IACtC;AAAA,EACJ;AACJ;AACAH,aAAW;AAAA,EACPO,QAAM,EAAE,MAAM,OAAO,aAAa,MAAM,WAAWC,qBAAmB,OAAO,CAAC;AAClF,GAAG,uBAAuB,WAAW,QAAQ,MAAM;AACnDR,aAAW;AAAA,EACPO,QAAM,EAAE,MAAM,OAAO,aAAa,MAAM,WAAWC,qBAAmB,OAAO,CAAC;AAClF,GAAG,uBAAuB,WAAW,aAAa,MAAM;AACxDR,aAAW;AAAA,EACPO,QAAM,EAAE,MAAM,OAAO,aAAa,MAAM,WAAWC,qBAAmB,OAAO,CAAC;AAClF,GAAG,uBAAuB,WAAW,gBAAgB,MAAM;AAC3DR,aAAW;AAAA,EACPO,QAAM,EAAE,MAAM,OAAO,aAAa,MAAM,WAAWC,qBAAmB,OAAO,CAAC;AAClF,GAAG,uBAAuB,WAAW,WAAW,MAAM;AACtDR,aAAW;AAAA,EACPO,QAAM,EAAE,MAAM,OAAO,aAAa,MAAM,WAAWC,qBAAmB,OAAO,CAAC;AAClF,GAAG,uBAAuB,WAAW,QAAQ,MAAM;AACnDR,aAAW;AAAA,EACPO,QAAM,EAAE,MAAM,OAAO,aAAa,MAAM,WAAWC,qBAAmB,OAAO,CAAC;AAClF,GAAG,uBAAuB,WAAW,gBAAgB,MAAM;AAC3DR,aAAW;AAAA,EACPO,QAAM,EAAE,MAAM,OAAO,aAAa,MAAM,WAAWC,qBAAmB,OAAO,CAAC;AAClF,GAAG,uBAAuB,WAAW,aAAa,MAAM;AACxDR,aAAW;AAAA,EACPO,QAAM,EAAE,MAAM,OAAO,aAAa,MAAM,WAAWC,qBAAmB,OAAO,CAAC;AAClF,GAAG,uBAAuB,WAAW,UAAU,MAAM;AACrDR,aAAW;AAAA,EACPO,QAAM,EAAE,MAAM,OAAO,aAAa,MAAM,WAAWC,qBAAmB,OAAO,CAAC;AAClF,GAAG,uBAAuB,WAAW,aAAa,MAAM;AACxDR,aAAW;AAAA,EACPS,UAAS,GAAG;AAChB,GAAG,uBAAuB,WAAW,SAAS,IAAI;AAClD,yBAAyBT,aAAW;AAAA,EAChCU,gBAAc,EAAE,SAASJ,MAAI,eAAe,CAAC;AACjD,GAAG,sBAAsB;;;ACnYzB,SAAS,iBAAAK,iBAAe,KAAAC,KAAG,QAAAC,OAAM,SAAAC,SAAO,sBAAAC,sBAAoB,aAAAC,YAAW,SAAAC,SAAO,cAAAC,mBAAkB;;;ACAhG,SAAS,iBAAAC,iBAAe,KAAAC,KAAG,QAAAC,OAAM,YAAAC,WAAU,SAAAC,SAAO,sBAAAC,sBAAoB,aAAAC,YAAW,SAAAC,SAAO,cAAAC,aAAY,MAAAC,WAAU;AAC9G,SAAS,cAAcC,8BAA6B;AAPpD,IAAIC,eAA0C,SAAU,YAAY,QAAQ,KAAK,MAAM;AACnF,MAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,OAAO,OAAO,yBAAyB,QAAQ,GAAG,IAAI,MAAM;AAC3H,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,WAAY,KAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,IAAI;AAAA,MACxH,UAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,IAAI,WAAW,CAAC,EAAG,MAAK,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;AAChJ,SAAO,IAAI,KAAK,KAAK,OAAO,eAAe,QAAQ,KAAK,CAAC,GAAG;AAChE;AAcO,IAAM,4BAA4B,CAAC,MAAM,UAAU,SAAS,gBAAgB,mBAAmB;AAClG,QAAM,QAAQ,CAAC,GAAG,OAAO,KAAK,UAAU,MAAM,WAAW,SAAS,CAAC;AACnE,QAAM,YAAY,IAAI,kDAAkD,aAAa,MAAM,KAAK,IAAI;AACpG,QAAM,UAAUC,MAAI;AACpB,MAAI,QAAS,KAAK,SAAS,CAAC;AAE5B,MAAI,CAACC,QAAM,cAAc,MAAM,UAAU,GAAG;AACxC,YAAQ,OAAO,MAAM,YAAY;AAAA,MAC7B,KAAK;AACD,cAAM,YAAY,IAAI,MAAM,aAAa,IAAI,MAAM,UAAU;AAC7D;AAAA,MACJ,KAAK;AACD,cAAM,QAAQ,OAAOA,QAAM,WAAW;AACtC,YAAI,KAAK,IAAI,MAAM;AACnB,cAAM,YAAY,IAAI,qCAAqC,KAAK,IAAI,OAAO;AAE3E,eAAO,KAAK,KAAK;AACjB;AAAA,IACR;AAAA,EACJ;AACA,MAAI,OAAO,SAAS,GAAG;AAEnB,UAAM,WAAW,IAAI,8CAA8C,OAAO,KAAK,KAAO,CAAC;AAAA,EAC3F;AACA,SAAO,EAAE,SAAkB,MAAa;AAC5C;AACA,IAAM,sBAAsB;AAAA,EACxB,SAAS,EAAE,MAAM,UAAU;AAAA,EAC3B,OAAO;AAAA,IACH,EAAE,MAAM,UAAU,MAAM,UAAU,SAAS,EAAE,UAAU,CAAC,cAAc,GAAG,MAAM,SAAS,EAAE;AAAA,IAC1F;AAAA,MACI,MAAM;AAAA,MAAW,MAAM;AAAA,MAA0B,SAAS,EAAE,MAAM,UAAU;AAAA,MAC5E,OAAO;AAAA,IACX;AAAA,EACJ;AACJ;AAEA,IAAI,yBAAyB,MAAMC,gCAA+BC,YAAW,aAAa;AAAA,EACtF,wBAAwB,MAAM,KAAK,KAAK,OAAO;AAC3C,UAAM,wBAAwB,MAAM,KAAK,KAAK,KAAK;AACnD,YAAQ,MAAM;AAAA,MACV,KAAK;AACD,aAAK,oBAAoB;AACzB;AAAA,MACJ,KAAK;AACD,aAAK,aAAa,WAAW,OAAO,EAAE;AACtC;AAAA,IACR;AAAA,EACJ;AAAA,EACA,wBAAwB;AACpB,UAAM,sBAAsB;AAC5B,SAAK,MAAM,SAAS;AACpB,SAAK,MAAM,WAAW,gBAAgB,mBAAmB;AAAA,EAC7D;AACJ;AACAJ,aAAW;AAAA,EACPK,QAAM,EAAE,WAAWC,qBAAmB,OAAO,CAAC;AAClD,GAAG,uBAAuB,WAAW,UAAU,MAAM;AACrDN,aAAW;AAAA,EACPK,QAAM,EAAE,WAAWC,qBAAmB,OAAO,CAAC;AAClD,GAAG,uBAAuB,WAAW,WAAW,MAAM;AACtDN,aAAW;AAAA,EACPK,QAAM,EAAE,WAAWC,qBAAmB,OAAO,CAAC;AAClD,GAAG,uBAAuB,WAAW,qBAAqB,MAAM;AAChEN,aAAW;AAAA,EACPO,WAAUN,MAAI,OAAO;AACzB,GAAG,uBAAuB,WAAW,SAAS,MAAM;AACpD,yBAAyBD,aAAW;AAAA,EAChCQ,gBAAc;AAAA,IACV,SAASP,MAAI;AAAA,IAAsB,QAAQQ,UAAS;AAAA,IACpD,UAAU,IAAIR,GAAC,kDAAkDA,GAAC;AAAA,EACtE,CAAC;AACL,GAAG,sBAAsB;AAMzB,IAAI,0BAA0B,MAAMS,iCAAgCC,uBAAsB,YAAY,iBAAiB;AAAA,EACnH,cAAc;AACV,UAAM,GAAG,SAAS;AAClB,SAAK,eAAe,CAAC,MAAM;AACvB,WAAK,cAAc,CAAC;AAAA,IACxB;AACA,SAAK,qBAAqB,CAAC,QAAQ,KAAK,eAAe;AACnD,cAAQ,SAAS,CAAC,GAAG,IAAI,OAAK;AAC1B,cAAM,SAAS,OAAO,EAAE,SAAS,SAAS;AAAA;AAAA,UAAiC,EAAE;AAAA,YAAQ,EAAE,SAAS,QAAQ,EAAE;AAC1G,cAAM,IAAI;AAAA,UACN;AAAA,UACA,SAAS,YAAY,EAAE,IAAI;AAAA,QAC/B;AACA,eAAO;AAAA,MACX,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE;AAAA,IAClD;AAAA,EACJ;AAAA,EACA,IAAI,cAAc;AACd,WAAO,CAAC;AAAA,EACZ;AAAA,EACA,mBAAmB,UAAU;AAAA,EAE7B;AAAA,EACA,SAAS,KAAK;AACV,WAAOC,QAAM,WAAW,KAAK,QAAQ,KAAK,UAAU,UAAU;AAAA,EAClE;AAAA,EACA,YAAY,KAAK;AACb,QAAI,CAACA,QAAM,OAAO,KAAK,SAAS,GAAG;AAC/B,WAAK,UAAU,aAAaA,QAAM,MAAM,OAAO,CAAC,CAAC;AAAA,IACrD;AAAA,EACJ;AAAA,EACA,aAAa,OAAO;AAChB;AAAA;AAAA,MAAmB;AAAA;AAAA,EACvB;AAAA,EACA,gCAAgC,MAAM;AAClC,WAAOC,qBAAmB,KAAK,QAAQ,MAAM,IAAI;AAAA,EACrD;AAAA,EACA,wBAAwB;AACpB,UAAM,sBAAsB;AAC5B,SAAK,aAAa,iBAAiBC,IAAG,kBAAkB,KAAK,KAAK,cAAc,KAAK;AACrF,SAAK,YAAY,iBAAiBA,IAAG,kBAAkB,KAAK,KAAK,cAAc,KAAK;AAAA,EACxF;AAAA,EACA,uBAAuB;AACnB,QAAI,CAACF,QAAM,OAAO,KAAK,YAAY,GAAG;AAClC,WAAK,aAAa,oBAAoBE,IAAG,kBAAkB,KAAK,KAAK,cAAc,KAAK;AAAA,IAC5F;AACA,QAAI,CAACF,QAAM,OAAO,KAAK,WAAW,GAAG;AACjC,WAAK,YAAY,oBAAoBE,IAAG,kBAAkB,KAAK,KAAK,cAAc,KAAK;AAAA,IAC3F;AACA,UAAM,qBAAqB;AAAA,EAC/B;AACJ;AACAC,aAAW;AAAA,EACPC,WAAU,GAAGC,GAAC,oBAAoB;AACtC,GAAG,wBAAwB,WAAW,aAAa,MAAM;AACzDF,aAAW;AAAA,EACPC,WAAU,GAAGC,GAAC,wBAAwB;AAC1C,GAAG,wBAAwB,WAAW,gBAAgB,MAAM;AAC5DF,aAAW;AAAA,EACPC,WAAU,GAAGC,GAAC,qBAAqB;AACvC,GAAG,wBAAwB,WAAW,eAAe,MAAM;AAC3DF,aAAW;AAAA,EACPC,WAAU,kBAAkB;AAChC,GAAG,wBAAwB,WAAW,eAAe,MAAM;AAC3DD,aAAW;AAAA,EACPG,QAAM,EAAE,WAAWL,qBAAmB,KAAK,CAAC;AAChD,GAAG,wBAAwB,WAAW,cAAc,MAAM;AAC1D,0BAA0BE,aAAW;AAAA,EACjCI,gBAAc;AAAA,IACV,SAASF,MAAI;AAAA,IAAuB,QAAQG,UAAS;AAAA,IACrD,UAAU,eAAeC,KAAI;AAAA;AAAA;AAAA,WAG1BJ,GAAC,oBAAoBH,IAAG,aAAa,KAAK;AAAA,+BACtBA,IAAG,aAAa,WAAW,oDAAoDG,GAAC;AAAA,WACpGA,GAAC;AAAA;AAAA;AAAA;AAAA,uBAIWA,GAAC;AAAA,sCACcI,KAAI;AAAA;AAAA,mCAEPJ,GAAC,mGAAmGA,GAAC;AAAA,mCACrGA,GAAC,4HAA4HA,GAAC;AAAA;AAAA;AAAA,mCAG9HA,GAAC,qCAAqCA,GAAC;AAAA;AAAA,+BAE3CA,GAAC,gIAAgIA,GAAC;AAAA;AAAA,wBAEzIA,GAAC;AAAA;AAAA;AAAA,YAGbA,GAAC;AAAA;AAAA;AAAA,OAGNA,GAAC;AAAA,WACGA,GAAC,oBAAoBH,IAAG,aAAa,IAAI;AAAA,+BACrBA,IAAG,aAAa,WAAW,uDAAuDG,GAAC;AAAA,WACvGA,GAAC;AAAA;AAAA;AAAA,mBAGOA,GAAC,oDAAoDI,KAAI,+DAA+DA,KAAI;AAAA;AAAA,2BAEpHJ,GAAC,mGAAmGA,GAAC;AAAA;AAAA;AAAA,2BAGrGA,GAAC,qCAAqCA,GAAC;AAAA;AAAA,oBAE9CA,GAAC;AAAA;AAAA,YAETA,GAAC;AAAA,QACLA,GAAC;AAAA;AAAA,EAEL,CAAC;AACL,GAAG,uBAAuB;;;ADpN1B,IAAIK,eAA0C,SAAU,YAAY,QAAQ,KAAK,MAAM;AACnF,MAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,SAAS,OAAO,OAAO,OAAO,yBAAyB,QAAQ,GAAG,IAAI,MAAM;AAC3H,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,aAAa,WAAY,KAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,IAAI;AAAA,MACxH,UAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,IAAI,WAAW,CAAC,EAAG,MAAK,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;AAChJ,SAAO,IAAI,KAAK,KAAK,OAAO,eAAe,QAAQ,KAAK,CAAC,GAAG;AAChE;AASA,IAAMC,uBAAsB;AAAA,EACxB,SAAS,EAAE,MAAM,aAAa;AAAA,EAC9B,OAAO;AAAA,IACH,EAAE,MAAM,UAAU,MAAM,UAAU,SAAS,EAAE,MAAM,SAAS,EAAE;AAAA,IAC9D,EAAE,MAAM,WAAW,MAAM,0BAA0B,SAAS,EAAE,MAAM,UAAU,GAAG,OAAO,iCAAiC;AAAA,EAC7H;AACJ;AACA,IAAM,oBAAoB,oBAAoB;AAAA,EAC1C,SAAS,EAAE,MAAM,eAAe,MAAM,YAAY,aAAa,mBAAmB;AAAA,EAClF,OAAO;AAAA,IAAC;AAAA,MACA,MAAM;AAAA,MAAc,MAAM;AAAA,MAA0B,SAAS,EAAE,MAAM,aAAa;AAAA,MAClF,OAAOC,QAAM,OAAO,CAAC,GAAG,kCAAkC,EAAE,QAAQ,CAAC,MAAM,aAAa,0BAA0B,aAAa,wBAAwB,CAAC;AAAA,IAC5J;AAAA,IACA;AAAA,MACI,MAAM;AAAA,MAAW,MAAM;AAAA,MAA2B,SAAS,EAAE,MAAM,UAAU;AAAA;AAAA,MAE7E,OAAO,EAAE,YAAY,kBAAkB;AAAA,MACvC,OAAO,gBAAgBD,oBAAmB;AAAA,IAC9C;AAAA,EAAC;AACT,CAAC;AAED,SAAS,QAAQ,UAAU,CAAC,GAAG;AAC3B,MAAI,SAAS;AACb,WAAS,UAAU,WAAW,CAAC,GAAG;AAE9B,UAAM,MAAM,OAAO,SAAS;AAC5B,QAAI,OAAO,QAAQ,UAAU;AACzB,gBAAU,MAAM;AAAA,IACpB,OACK;AACD,gBAAU;AAAA,IACd;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,kBAAkB,UAAU,CAAC,GAAG;AACrC,QAAM,cAAc,SAAS,uBAAuB,GAAG,WAAW,SAAS,uBAAuB;AAClG,MAAI,IAAI;AACR,WAAS,OAAO,SAAS;AAErB,UAAM,WAAW,SAAS,cAAc,KAAK;AAC7C,aAAS,UAAU,IAAIE,QAAO,WAAW;AACzC,aAAS,cAAc,IAAI;AAC3B,gBAAY,YAAY,QAAQ;AAEhC,UAAM,WAAW,IAAIC,YAAW,iBAAiB;AACjD,aAAS,UAAU,IAAID,QAAO,aAAa,kBAAkB;AAC7D,aAAS,MAAM,aAAa,EAAE,SAAS;AACvC,aAAS,aAAa,OAAO,8BAA8B;AAC3D,aAAS,aAAa,WAAW,IAAI,OAAO;AAC5C,aAAS,YAAY,QAAQ;AAC7B;AAAA,EACJ;AACA,QAAM,UAAU,IAAIC,YAAW,kBAAkB;AACjD,UAAQ,UAAU,IAAID,QAAO,UAAU;AACvC,UAAQ,aAAa,OAAO,8BAA8B;AAC1D,UAAQ,aAAa,aAAa,yCAAyC;AAC3E,UAAQ,MAAM,aAAa,QAAQ,QAAQ,SAAS;AACpD,WAAS,YAAY,OAAO;AAC5B,SAAO,EAAE,MAAM,aAAa,MAAM,SAAS;AAC/C;AACA,SAAS,kBAAkB,IAAI,UAAU,CAAC,GAAG;AACzC,QAAM,EAAE,MAAM,KAAK,IAAI,kBAAkB,OAAO;AAChD,QAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,QAAM,YAAY,IAAI;AACtB,QAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,QAAM,YAAY,IAAI;AACtB,SAAO,IAAIE,GAAC,6BAA6B,EAAE;AAAA,kBAC7BF,KAAI,6CAA6C,QAAQ,OAAO,CAAC;AAAA,MAC7E,MAAM,SAAS;AAAA,gBACL,MAAM,SAAS;AAAA,UACrBE,GAAC;AACX;AAOA,IAAI,6BAA6B,MAAMC,oCAAmC,qBAAqB;AAAA,EAC3F,cAAc;AACV,UAAM,iBAAiB;AAEvB,SAAK,UAAU,CAAC;AAEhB,SAAK,aAAa,CAAC;AAEnB,SAAK,kBAAkB,CAAC;AACxB,SAAK,uBAAuB;AAAA,EAChC;AAAA,EACA,SAAS,UAAU,KAAK,SAAS;AAC7B,QAAI,SAAS;AACb,aAAS,UAAU,WAAW,CAAC,GAAG;AAE9B,YAAM,MAAM,OAAO,SAAS;AAC5B,UAAI,OAAO,QAAQ,UAAU;AACzB,kBAAU,MAAM;AAAA,MACpB,OACK;AACD,kBAAU;AAAA,MACd;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,wBAAwB,MAAM,KAAK,KAAK,OAAO;AAC3C,UAAM,wBAAwB,MAAM,KAAK,KAAK,KAAK;AACnD,QAAI,CAAC,OAAO;AACR,cAAQ,MAAM;AAAA,QACV,KAAK;AAOD,eAAK,YAAY,kBAAkB,KAAK,IAAI,GAAG;AAC/C;AAAA,QACJ,KAAK;AACD,eAAK,2BAA2B,GAAG;AACnC;AAAA,MACR;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,wBAAwB;AACpB,UAAM,sBAAsB;AAC5B,SAAK,YAAY,kBAAkB,KAAK,IAAI,KAAK,OAAO;AAAA,EAC5D;AAAA,EACA,WAAW,IAAI;AACX,QAAIC,QAAM,QAAQ,EAAE,GAAG;AACnB,aAAO;AAAA,IACX;AACA,QAAI,OAAO,OAAO,UAAU;AACxB,eAAS,QAAQ,IAAI;AACjB,cAAM,MAAM,KAAK,WAAW,GAAG,IAAI,CAAC;AACpC,YAAI,CAACA,QAAM,OAAO,GAAG,GAAG;AACpB,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,2BAA2B,KAAK,KAAK,YAAY;AAC7C,SAAKA,QAAM,cAAc,KAAK,eAAe,KAAK,KAAK,yBAAyB,CAACA,QAAM,cAAc,EAAE,GAAG;AACtG,YAAM,MAAM,KAAK,WAAW,EAAE;AAC9B,UAAI,CAACA,QAAM,cAAc,GAAG,GAAG;AAC3B,cAAM,QAAQ,CAAC;AACf,cAAM,OAAO,IAAI,CAAC;AAClB,iBAAS,QAAQ,MAAM;AACnB,gBAAM,KAAK,EAAE,MAAM,MAAM,OAAO,KAAK,IAAI,EAAE,CAAC;AAAA,QAChD;AACA,aAAK,kBAAkB;AACvB,aAAK,uBAAuB;AAAA,MAChC;AAAA,IACJ;AAAA,EACJ;AACJ;AACAC,aAAW;AAAA,EACPC,QAAM,EAAE,aAAa,MAAM,WAAWC,qBAAmB,KAAK,CAAC;AACnE,GAAG,2BAA2B,WAAW,WAAW,MAAM;AAC1DF,aAAW;AAAA,EACPC,QAAM,EAAE,WAAWC,qBAAmB,KAAK,CAAC;AAChD,GAAG,2BAA2B,WAAW,cAAc,MAAM;AAC7DF,aAAW;AAAA,EACPC,QAAM,EAAE,WAAWC,qBAAmB,KAAK,CAAC;AAChD,GAAG,2BAA2B,WAAW,mBAAmB,MAAM;AAClEF,aAAW;AAAA,EACPG,WAAU,IAAIR,KAAI,YAAY;AAClC,GAAG,2BAA2B,WAAW,cAAc,MAAM;AAC7DK,aAAW;AAAA,EACPG,WAAU,UAAU;AACxB,GAAG,2BAA2B,WAAW,aAAa,MAAM;AAC5DH,aAAW;AAAA,EACPG,WAAUN,MAAI,WAAW;AAC7B,GAAG,2BAA2B,WAAW,aAAa,MAAM;AAC5D,6BAA6BG,aAAW;AAAA,EACpCI,gBAAc;AAAA,IACV,SAASP,MAAI;AAAA,EACjB,CAAC;AACL,GAAG,0BAA0B;;;AEhM7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,SAAS,SAAAQ,eAAa;AACf,IAAM,0BAA0B;AAEhC,IAAM,sBAAN,cAAkC,YAAY;AAAA,EACjD,YAAY,aAAa;AACrB,UAAM,yBAAyB,EAAE,QAAQ,aAAa,YAAY,OAAO,SAAS,KAAK,CAAC;AAAA,EAC5F;AACJ;AAEO,IAAM,cAAN,MAAkB;AAAA;AAAA,EAErB,OAAO,QAAQ,QAAQ,UAAU;AAAE,WAAO,KAAK,0BAA0B,QAAQ,UAAU,OAAK,EAAE,MAAM;AAAA,EAAG;AAAA;AAAA,EAE3G,OAAO,QAAQ,QAAQ,UAAU;AAAE,WAAO,KAAK,0BAA0B,QAAQ,UAAU,OAAK,EAAE,IAAI;AAAA,EAAG;AAAA;AAAA,EAEzG,OAAO,OAAO,QAAQ,UAAU;AAAE,WAAO,KAAK,0BAA0B,QAAQ,UAAU,OAAK,EAAE,MAAM;AAAA,EAAG;AAAA;AAAA,EAE1G,OAAO,UAAU,QAAQ,UAAU;AAAE,WAAO,KAAK,0BAA0B,QAAQ,UAAU,OAAK,EAAE,MAAM;AAAA,EAAG;AAAA;AAAA,EAE7G,OAAO,aAAa,QAAQ,UAAU;AAAE,WAAO,KAAK,0BAA0B,QAAQ,UAAU,OAAK,EAAE,SAAS;AAAA,EAAG;AAAA;AAAA,EAEnH,OAAO,0BAA0B,QAAQ,UAAU,WAAW;AAC1D,QAAIA,QAAM,cAAc,MAAM,KAAKA,QAAM,OAAO,QAAQ,GAAG;AACvD,aAAO;AAAA,IACX;AAEA,QAAI,WAAW;AACf,QAAI,SAAS,eAAe,SAAS,YAAY,SAAS,GAAG;AAEzD,iBAAW;AACX,eAAS,cAAc,SAAS,aAAa;AACzC,YAAI,UAAU,UAAU,KAAK,OAAO,WAAW,SAAS,KAAK,OAAO,WAAW,SAAS,EAAE,QAAQ,WAAW,UAAU,KAAK,GAAG;AAC3H,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AACJ;",
|
|
6
6
|
"names": ["P", "Utils", "PacemElementPickerElement", "CustomElement", "P", "Defaults", "Watch", "PropertyConverters", "ViewChild", "Debounce", "Utils", "CustomElementUtils", "ScaffoldingComponents", "__decorate", "ExpressionSource", "PacemExpressionElement", "Utils", "CustomElementUtils", "Watch", "PropertyConverters", "ViewChild", "P", "Debounce", "CustomElement", "Defaults", "ScaffoldingComponents", "CustomElement", "P", "PCSS", "Defaults", "Watch", "PropertyConverters", "ViewChild", "Utils", "CustomElementUtils", "__decorate", "PacemWidgetToolbarElement", "Utils", "P", "CustomElementUtils", "__decorate", "Watch", "PropertyConverters", "Watch", "PropertyConverters", "Utils", "CustomElement", "P", "PCSS", "Watch", "PropertyConverters", "__decorate", "PCSS", "PacemWidgetDataElement", "Watch", "PropertyConverters", "CustomElement", "P", "CustomElement", "P", "Defaults", "Watch", "PropertyConverters", "ViewChild", "Utils", "CustomElementUtils", "__decorate", "P", "Utils", "PacemWidgetFetchParameterElement", "CustomElementUtils", "Watch", "PropertyConverters", "CustomElement", "PacemWidgetFetchElement", "Utils", "__decorate", "Watch", "PropertyConverters", "ViewChild", "P", "CustomElement", "Defaults", "__decorate", "Utils", "Watch", "PropertyConverters", "CustomElement", "P", "__decorate", "PacemWidgetTranslatorElement", "CustomElement", "P", "CustomElement", "P", "PCSS", "Watch", "PropertyConverters", "__decorate", "DATA_METADATA", "PCSS", "PacemWidgetClockElement", "Watch", "PropertyConverters", "CustomElement", "P", "CustomElement", "P", "Watch", "PropertyConverters", "Utils", "__decorate", "PacemWidgetApiManifestElement", "Utils", "Watch", "PropertyConverters", "CustomElement", "P", "Watch", "PropertyConverters", "Utils", "CustomElementUtils", "PCSS", "__decorate", "Utils", "PCSS", "CustomElementUtils", "Watch", "PropertyConverters", "item", "CustomElement", "P", "Defaults", "Watch", "PropertyConverters", "__decorate", "PacemWidgetTextElement", "Watch", "PropertyConverters", "CustomElement", "P", "Defaults", "CustomElement", "P", "PCSS", "Defaults", "ViewChild", "__decorate", "PacemWidgetPickerElement", "ViewChild", "P", "CustomElement", "Defaults", "PCSS", "CustomElement", "P", "PCSS", "Watch", "PropertyConverters", "Debounce", "Utils", "UI", "PropertyChangeEventName", "__decorate", "PacemGridWidgetElement", "UI", "Utils", "PCSS", "PropertyChangeEventName", "P", "Watch", "PropertyConverters", "Debounce", "CustomElement", "CustomElement", "P", "PCSS", "Watch", "PropertyConverters", "ViewChild", "Utils", "Components", "CustomElement", "P", "PCSS", "Defaults", "Watch", "PropertyConverters", "ViewChild", "Utils", "Components", "UI", "ScaffoldingComponents", "__decorate", "P", "Utils", "PacemDataColumnElement", "Components", "Watch", "PropertyConverters", "ViewChild", "CustomElement", "Defaults", "PacemDataColumnsElement", "ScaffoldingComponents", "Utils", "PropertyConverters", "UI", "__decorate", "ViewChild", "P", "Watch", "CustomElement", "Defaults", "PCSS", "__decorate", "DATACOLUMN_METADATA", "Utils", "PCSS", "Components", "P", "PacemWidgetDataGridElement", "Utils", "__decorate", "Watch", "PropertyConverters", "ViewChild", "CustomElement", "Utils"]
|
|
7
7
|
}
|