@pacem/pacem-cms 1.0.0-abel
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/LICENSE +191 -0
- package/NOTICE +4 -0
- package/dist/browser/pacem-cms.js +2215 -0
- package/dist/browser/pacem-cms.js.map +1 -0
- package/dist/browser/pacem-cms.min.js +2 -0
- package/dist/browser/pacem-cms.min.js.map +1 -0
- package/dist/bundle/pacem-cms.min.mjs +106 -0
- package/dist/bundle/pacem-cms.mjs +2269 -0
- package/dist/bundle/pacem-cms.mjs.map +7 -0
- package/dist/esm/index-iife.js +3 -0
- package/dist/esm/index.cms.js +3 -0
- package/dist/esm/index.components.js +16 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/types.js +32 -0
- package/package.json +42 -0
- package/typings/index.d.ts +511 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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 }}\">\n <div class=\"expression-builder ${PCSS}-grid grid-tiny-rowgap grid-tiny-colgap ${PCSS}-pad pad-bottom-2\">\n <div class=\"${PCSS}-cell\">\n <${P}-select value=\"{{ :host._source, twoway }}\" class=\"display-block\">\n <${P}-data-item value=\"${ExpressionSource.Constant}\" label=\"constant value\"></${P}-data-item>\n <${P}-data-item value=\"${ExpressionSource.PropertyReference}\" label=\"property reference\"></${P}-data-item>\n <${P}-data-item value=\"${ExpressionSource.Expression}\" label=\"complex expression\"></${P}-data-item>\n </${P}-select>\n </div>\n\n <${P}-panel class=\"${PCSS}-cell cols-hd-6\" hide=\"{{ :host._source !== '${ExpressionSource.PropertyReference}' }}\">\n <${P}-element-picker value=\"{{ :host._sourceRef, twoway }}\" selector=\"{{ :host.selector }}\" filter=\"{{ :host.filter }}\" labeler=\"{{ :host.labeler }}\" class=\"display-block\"></${P}-element-picker>\n </${P}-panel>\n <${P}-panel class=\"${PCSS}-cell cols-hd-6\" hide=\"{{ :host._source !== '${ExpressionSource.PropertyReference}' }}\">\n <${P}-property-picker value=\"{{ :host._propRef, twoway }}\" disabled=\"{{ !:host._sourceRef }}\" target=\"{{ :host._sourceRef }}\" on-change=\"::_editor.focus()\" class=\"display-block\"></${P}-property-picker>\n </${P}-panel>\n\n <${P}-panel class=\"${PCSS}-cell\">\n <${P}-textarea class=\"display-block\" placeholder=\"{{ '{{ '+ (:host._source || '') +'... }}' }}\" change-policy=\"${ScaffoldingComponents.Scaffolding.ChangePolicy.Blur}\"></${P}-textarea>\n </${P}-panel>\n </div>\n</${P}-collapse>\n<div class=\"${PCSS}-fieldset\">\n <div class=\"fieldset-left\">\n <div class=\"${PCSS}-fieldgroup ${PCSS}-viewfinder\">\n <div class=\"text-truncate ${PCSS}-pad pad-x-1\"><span class=\"${PCSS}-viewfinder text-tech\">{{ :host.value || '...' }}</span></div>\n <${P}-panel class=\"fieldgroup-prepend\">\n <${P}-button class=\"flat edit ${PCSS}-pad pad-left-1\" on-click=\":host._editing = !:host._editing\" hide=\"{{ :host.readonly }}\"></${P}-button>\n </${P}-panel>\n <${P}-panel class=\"fieldgroup-append text-tech display-flex flex-middle flex-nowrap\" hide=\"{{ $pacem.isNullOrEmpty(:host.value) }}\">\n <i class=\"${PCSS}-icon text-primary\">keyboard_arrow_right</i>\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>\n </${P}-panel>\n </div>\n </div>\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>\n<div class=\"buttons ${PCSS}-buttonset ${PCSS}-pad ${PCSS}-margin pad-0 margin-left-2\">\n <div class=\"buttonset-left\">\n <${P}-button edit class=\"button edit\" on-click=\":host._edit($event)\"></${P}-button>\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>\n <${P}-button remove class=\"button button-danger delete\"></${P}-button>\n </div>\n<div>\n<${P}-shell-proxy>\n <${P}-modal-form core></${P}-modal-form>\n <${P}-modal-form permissions></${P}-modal-form>\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\"\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 }}\">\n <template>\n <${P}-panel behaviors=\"{{ [::_dragDrop] }}\" class=\"${PCSS}-widget-itempicker display-flex flex-fill flex-middle flex-nowrap\">\n <i class=\"${PCSS}-icon flex-auto\" dragger>drag_indicator</i>\n <${P}-icon icon=\"{{ ^item.metadata.display.icon }}\" class=\"flex-auto ${PCSS}-margin margin-x-1\"></${P}-icon>\n <${P}-text text=\"{{ ^item.metadata.display.name }}\"></${P}-text>\n </${P}-panel>\n </template>\n</${P}-repeater>\n<${P}-drag-drop handle-selector=\"i.${PCSS}-icon[dragger]\"></${P}-drag-drop>\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 }}\">\n <div class=\"${PCSS}-datatable\" style=\"grid-template-columns: ${gridify(columns)}\">\n ${head0.innerHTML}\n <template>${body0.innerHTML}</template>\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\">\n <div class=\"datacolumns-main display-flex flex-fill\">\n\n <${P}-drag-drop mode=\"${UI.DragDataMode.Alias}\" disabled=\"{{ :host.readonly }}\" handle-selector=\"*[handle]\"\n drop-behavior=\"${UI.DropBehavior.InsertChild}\" drop-targets=\"{{ [::_dropTarget] }}\" columns></${P}-drag-drop>\n <${P}-repeater class=\"display-flex flex-fill\" columns>\n <!-- columns -->\n <div class=\"display-flex flex-nowrap\" drop-target>\n <template>\n <${P}-panel behaviors=\"{{ [::_colDragger] }}\">\n <div class=\"${PCSS}-panel panel-side-left side-auto\">\n <div class=\"panel-side\">\n <${P}-button class=\"display-block button-flat icon-glyph-small\" icon-glyph=\"drag_indicator\" handle></${P}-button>\n <${P}-button class=\"display-block button-flat icon-glyph-small\" on-click=\":host.value.splice(^index, 1)\" icon-glyph=\"clear\"></${P}-button>\n </div>\n <div class=\"panel-heading\">\n <${P}-text text=\"{{ ^item.header }}\"></${P}-text>\n </div>\n <${P}-widget-datacolumn class=\"panel-body\" header=\"{{ ^item.header, twoway }}\" content-expression=\"{{ ^item.content, twoway }}\"></${P}-widget-datacolumn>\n </div>\n </${P}-panel>\n </template>\n </div>\n </${P}-repeater>\n\n </div>\n <${P}-panel class=\"datacolumns-props\" hide=\"{{ :host.readonly }}\">\n <${P}-drag-drop mode=\"${UI.DragDataMode.Copy}\" disabled=\"{{ :host.readonly }}\" handle-selector=\"*[handle]\"\n drop-behavior=\"${UI.DropBehavior.InsertChild}\" drop-targets=\"{{ [::_dropTarget] }}\" properties></${P}-drag-drop>\n <${P}-repeater datasource=\"{{ :host._columnifyMetadata(:host.properties) }}\">\n <!-- properties -->\n <template>\n <${P}-panel behaviors=\"{{ [::_propDragger] }}\" class=\"${PCSS}-panel panel-side-left side-auto panel-primary panel-filled ${PCSS}-margin margin-bottom-1\">\n <div class=\"panel-side\">\n <${P}-button class=\"display-block button-flat icon-glyph-small\" icon-glyph=\"drag_indicator\" handle></${P}-button>\n </div>\n <div class=\"text-truncate panel-body\">\n <${P}-span text=\"{{ ^item.header }}\"></${P}-span>\n </div>\n </${P}-panel>\n </template>\n </${P}-repeater>\n </${P}-panel>\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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",
|
|
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
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from './scaffolding/types';
|
|
2
|
+
export * from './scaffolding/element-picker';
|
|
3
|
+
export * from './scaffolding/expression';
|
|
4
|
+
export * from './widgets/types';
|
|
5
|
+
export * from './widgets/helpers/types';
|
|
6
|
+
export * from './widgets/helpers/translator';
|
|
7
|
+
export * from './widgets/helpers/data';
|
|
8
|
+
export * from './widgets/helpers/clock';
|
|
9
|
+
export * from './widgets/helpers/apimanifest';
|
|
10
|
+
export * from './widgets/helpers/fetcher';
|
|
11
|
+
export * from './widgets/ui/types';
|
|
12
|
+
export * from './widgets/ui/text';
|
|
13
|
+
export * from './widgets/ui/composite/picker';
|
|
14
|
+
export * from './widgets/ui/composite/grid';
|
|
15
|
+
export * from './widgets/ui/dataviz/datagrid';
|
|
16
|
+
export * from './widgets/scaffolding/datacolumns';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Utils } from '@pacem/pacem-core';
|
|
2
|
+
export const PermissionEditEventName = 'permissionedit';
|
|
3
|
+
export class PermissionEditEvent extends CustomEvent {
|
|
4
|
+
constructor(permissible) {
|
|
5
|
+
super(PermissionEditEventName, { detail: permissible, cancelable: false, bubbles: true });
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export class Permissible {
|
|
9
|
+
static canEdit(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.update); }
|
|
10
|
+
static canRead(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.read); }
|
|
11
|
+
static canAdd(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.create); }
|
|
12
|
+
static canDelete(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.delete); }
|
|
13
|
+
static canTranslate(claims, resource) { return this._canDoSomethingToResource(claims, resource, p => p.translate); }
|
|
14
|
+
static _canDoSomethingToResource(claims, resource, predicate) {
|
|
15
|
+
if (Utils.isNullOrEmpty(claims) || Utils.isNull(resource)) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
// if no permissions are set, then you're free to go!
|
|
19
|
+
var editable = true;
|
|
20
|
+
if (resource.permissions && resource.permissions.length > 0) {
|
|
21
|
+
// check correspondence otherwise
|
|
22
|
+
editable = false;
|
|
23
|
+
for (let permission of resource.permissions) {
|
|
24
|
+
if (predicate(permission) && claims[permission.claimType] && claims[permission.claimType].indexOf(permission.claimValue) >= 0) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// return
|
|
30
|
+
return editable;
|
|
31
|
+
}
|
|
32
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pacem/pacem-cms",
|
|
3
|
+
"files": [
|
|
4
|
+
"dist/browser/*.*",
|
|
5
|
+
"dist/bundle/*.*",
|
|
6
|
+
"dist/esm/*.*",
|
|
7
|
+
"typings/*.*",
|
|
8
|
+
"README.md",
|
|
9
|
+
"LICENSE",
|
|
10
|
+
"NOTICE",
|
|
11
|
+
"package.json"
|
|
12
|
+
],
|
|
13
|
+
"type": "module",
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@pacem/pacem-foundation": "*",
|
|
16
|
+
"@pacem/pacem-core": "*",
|
|
17
|
+
"@pacem/pacem-ui": "*",
|
|
18
|
+
"@pacem/pacem-maps": "*",
|
|
19
|
+
"@pacem/pacem-scaffolding": "*",
|
|
20
|
+
"@pacem/pacem-plus": "*"
|
|
21
|
+
},
|
|
22
|
+
"main": "./dist/esm/index.js",
|
|
23
|
+
"module": "./dist/esm/index.js",
|
|
24
|
+
"typings": "./typings/index.d.ts",
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"import": "./dist/esm/index.js",
|
|
28
|
+
"types": "./typings/index.d.ts"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"version": "1.0.0-abel",
|
|
32
|
+
"author": {
|
|
33
|
+
"name": "Pacem",
|
|
34
|
+
"url": "https://pacem.it"
|
|
35
|
+
},
|
|
36
|
+
"license": "Apache-2.0",
|
|
37
|
+
"homepage": "https://js.pacem.it",
|
|
38
|
+
"repository": {
|
|
39
|
+
"type": "git",
|
|
40
|
+
"url": "git+https://github.com/pacem-it/pacem.git"
|
|
41
|
+
}
|
|
42
|
+
}
|