pacem 0.25.0-cyzicus → 0.25.0-delphi
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/pacem-dark-content.min.css +1 -1
- package/dist/css/pacem-dark-shell.min.css +1 -1
- package/dist/css/pacem-dark.min.css +1 -1
- package/dist/css/pacem-light-content.min.css +1 -1
- package/dist/css/pacem-light-shell.min.css +1 -1
- package/dist/css/pacem-light.min.css +1 -1
- package/dist/css/pacem-phousys-content.min.css +1 -1
- package/dist/css/pacem-phousys-shell.min.css +1 -1
- package/dist/css/pacem-phousys.min.css +1 -1
- package/dist/js/azure-maps.d.ts +1 -1
- package/dist/js/pacem-2d.d.ts +1 -1
- package/dist/js/pacem-2d.js +1 -1
- package/dist/js/pacem-2d.min.js +1 -1
- package/dist/js/pacem-3d.d.ts +1 -1
- package/dist/js/pacem-3d.js +1 -1
- package/dist/js/pacem-3d.min.js +1 -1
- package/dist/js/pacem-charts.d.ts +1 -1
- package/dist/js/pacem-charts.js +1 -1
- package/dist/js/pacem-charts.min.js +1 -1
- package/dist/js/pacem-cms.d.ts +1 -1
- package/dist/js/pacem-cms.js +1 -1
- package/dist/js/pacem-cms.min.js +1 -1
- package/dist/js/pacem-core.d.ts +1 -1
- package/dist/js/pacem-core.js +1 -1
- package/dist/js/pacem-core.min.js +1 -1
- package/dist/js/pacem-foundation.d.ts +1 -1
- package/dist/js/pacem-foundation.js +1 -1
- package/dist/js/pacem-foundation.min.js +1 -1
- package/dist/js/pacem-fx.d.ts +1 -1
- package/dist/js/pacem-fx.js +1 -1
- package/dist/js/pacem-fx.min.js +1 -1
- package/dist/js/pacem-logging.d.ts +1 -1
- package/dist/js/pacem-logging.js +1 -1
- package/dist/js/pacem-logging.min.js +1 -1
- package/dist/js/pacem-maps.d.ts +1 -1
- package/dist/js/pacem-maps.js +1 -1
- package/dist/js/pacem-maps.min.js +1 -1
- package/dist/js/pacem-networking.js +1 -1
- package/dist/js/pacem-networking.min.js +1 -1
- package/dist/js/pacem-numerical.d.ts +1 -1
- package/dist/js/pacem-numerical.js +1 -1
- package/dist/js/pacem-numerical.min.js +1 -1
- package/dist/js/pacem-plus.d.ts +6 -1
- package/dist/js/pacem-plus.js +30 -8
- package/dist/js/pacem-plus.min.js +2 -2
- package/dist/js/pacem-scaffolding.d.ts +1 -1
- package/dist/js/pacem-scaffolding.js +1 -1
- package/dist/js/pacem-scaffolding.min.js +1 -1
- package/dist/js/pacem-ui.d.ts +1 -1
- package/dist/js/pacem-ui.js +1 -1
- package/dist/js/pacem-ui.min.js +1 -1
- package/dist/js/swagger-types.d.ts +1 -1
- package/package.json +1 -1
package/dist/js/azure-maps.d.ts
CHANGED
package/dist/js/pacem-2d.d.ts
CHANGED
package/dist/js/pacem-2d.js
CHANGED
package/dist/js/pacem-2d.min.js
CHANGED
package/dist/js/pacem-3d.d.ts
CHANGED
package/dist/js/pacem-3d.js
CHANGED
package/dist/js/pacem-3d.min.js
CHANGED
package/dist/js/pacem-charts.js
CHANGED
package/dist/js/pacem-cms.d.ts
CHANGED
package/dist/js/pacem-cms.js
CHANGED
package/dist/js/pacem-cms.min.js
CHANGED
package/dist/js/pacem-core.d.ts
CHANGED
package/dist/js/pacem-core.js
CHANGED
package/dist/js/pacem-fx.d.ts
CHANGED
package/dist/js/pacem-fx.js
CHANGED
package/dist/js/pacem-fx.min.js
CHANGED
package/dist/js/pacem-logging.js
CHANGED
package/dist/js/pacem-maps.d.ts
CHANGED
package/dist/js/pacem-maps.js
CHANGED
package/dist/js/pacem-plus.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pacem v0.25.0-
|
|
2
|
+
* pacem v0.25.0-delphi (https://js.pacem.it)
|
|
3
3
|
* Copyright 2022 Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under MIT
|
|
5
5
|
*/
|
|
@@ -227,6 +227,8 @@ declare namespace Pacem.Plus {
|
|
|
227
227
|
ui?: string;
|
|
228
228
|
format?: string | Intl.DateTimeFormatOptions | Intl.NumberFormatOptions | DataCellMetadataContentFactory;
|
|
229
229
|
null?: string;
|
|
230
|
+
/** Default: true. */
|
|
231
|
+
autoTooltip?: boolean;
|
|
230
232
|
};
|
|
231
233
|
type DataColumnMetadata = {
|
|
232
234
|
prop: string;
|
|
@@ -275,8 +277,11 @@ declare namespace Pacem.Components.Plus {
|
|
|
275
277
|
}
|
|
276
278
|
declare namespace Pacem.Components.Plus {
|
|
277
279
|
class PacemDataCellElement extends PacemBaseCellElement {
|
|
280
|
+
#private;
|
|
278
281
|
protected updateLayout(metadata?: Pacem.Plus.DataColumnMetadata): void;
|
|
279
282
|
connectedCallback(): void;
|
|
283
|
+
propertyChangedCallback(name: string, old: any, val: any, first?: boolean): void;
|
|
284
|
+
private _updateTooltipJustInCase;
|
|
280
285
|
private _inflateContent;
|
|
281
286
|
private _setup;
|
|
282
287
|
}
|
package/dist/js/pacem-plus.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pacem v0.25.0-
|
|
2
|
+
* pacem v0.25.0-delphi (https://js.pacem.it)
|
|
3
3
|
* Copyright 2022 Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under MIT
|
|
5
5
|
*/
|
|
@@ -1212,7 +1212,12 @@ var Pacem;
|
|
|
1212
1212
|
(function (Components) {
|
|
1213
1213
|
var Plus;
|
|
1214
1214
|
(function (Plus) {
|
|
1215
|
+
var _PacemDataCellElement_tooltip;
|
|
1215
1216
|
let PacemDataCellElement = class PacemDataCellElement extends Plus.PacemBaseCellElement {
|
|
1217
|
+
constructor() {
|
|
1218
|
+
super(...arguments);
|
|
1219
|
+
_PacemDataCellElement_tooltip.set(this, void 0);
|
|
1220
|
+
}
|
|
1216
1221
|
updateLayout(metadata = this.metadata) {
|
|
1217
1222
|
this._setup(metadata);
|
|
1218
1223
|
}
|
|
@@ -1220,11 +1225,27 @@ var Pacem;
|
|
|
1220
1225
|
super.connectedCallback();
|
|
1221
1226
|
Pacem.Utils.addClass(this, Pacem.PCSS + '-datacell');
|
|
1222
1227
|
}
|
|
1228
|
+
propertyChangedCallback(name, old, val, first) {
|
|
1229
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
1230
|
+
if (!first && name === 'content') {
|
|
1231
|
+
this._updateTooltipJustInCase();
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1234
|
+
_updateTooltipJustInCase() {
|
|
1235
|
+
const tip = this.metadata.dataCell?.autoTooltip ?? true;
|
|
1236
|
+
if (tip && !Pacem.Utils.isNullOrEmpty(__classPrivateFieldGet(this, _PacemDataCellElement_tooltip, "f"))) {
|
|
1237
|
+
this.tooltip = __classPrivateFieldGet(this, _PacemDataCellElement_tooltip, "f");
|
|
1238
|
+
}
|
|
1239
|
+
else {
|
|
1240
|
+
this.tooltip = '';
|
|
1241
|
+
}
|
|
1242
|
+
}
|
|
1223
1243
|
_inflateContent(item, index, metadata = this.metadata) {
|
|
1224
1244
|
const plainValue = item[metadata.prop], nullValue = metadata.dataCell?.null ?? '';
|
|
1225
1245
|
if (Pacem.Utils.isNullOrEmpty(plainValue)) {
|
|
1226
1246
|
return nullValue;
|
|
1227
1247
|
}
|
|
1248
|
+
__classPrivateFieldSet(this, _PacemDataCellElement_tooltip, '', "f");
|
|
1228
1249
|
let format = metadata.dataCell?.format;
|
|
1229
1250
|
// is 'format' a custom function?
|
|
1230
1251
|
if (typeof format === 'function') {
|
|
@@ -1246,7 +1267,7 @@ var Pacem;
|
|
|
1246
1267
|
case "time":
|
|
1247
1268
|
case "date":
|
|
1248
1269
|
case "datetime":
|
|
1249
|
-
return Pacem.Utils.core.date(plainValue, format, culture);
|
|
1270
|
+
return __classPrivateFieldSet(this, _PacemDataCellElement_tooltip, Pacem.Utils.core.date(plainValue, format, culture), "f");
|
|
1250
1271
|
case "byte":
|
|
1251
1272
|
case "int16":
|
|
1252
1273
|
case "int32":
|
|
@@ -1260,26 +1281,26 @@ var Pacem;
|
|
|
1260
1281
|
case "float":
|
|
1261
1282
|
case "single":
|
|
1262
1283
|
case "number":
|
|
1263
|
-
return Pacem.Utils.core.number(plainValue, format || '', culture);
|
|
1284
|
+
return __classPrivateFieldSet(this, _PacemDataCellElement_tooltip, Pacem.Utils.core.number(plainValue, format || '', culture), "f");
|
|
1264
1285
|
case "currency":
|
|
1265
1286
|
format ??= 'EUR';
|
|
1266
1287
|
if (typeof format === 'string') {
|
|
1267
|
-
return Pacem.Utils.core.currency(plainValue, format, culture);
|
|
1288
|
+
return __classPrivateFieldSet(this, _PacemDataCellElement_tooltip, Pacem.Utils.core.currency(plainValue, format, culture), "f");
|
|
1268
1289
|
}
|
|
1269
|
-
return Pacem.Utils.core.number(plainValue, format, culture);
|
|
1290
|
+
return __classPrivateFieldSet(this, _PacemDataCellElement_tooltip, Pacem.Utils.core.number(plainValue, format, culture), "f");
|
|
1270
1291
|
case "percent":
|
|
1271
1292
|
case "percentage":
|
|
1272
1293
|
format ??= { style: 'percent', maximumFractionDigits: 2 };
|
|
1273
1294
|
if (typeof format === 'string') {
|
|
1274
|
-
return Pacem.Utils.core.currency(plainValue, format, culture);
|
|
1295
|
+
return __classPrivateFieldSet(this, _PacemDataCellElement_tooltip, Pacem.Utils.core.currency(plainValue, format, culture), "f");
|
|
1275
1296
|
}
|
|
1276
|
-
return Pacem.Utils.core.number(plainValue, format, culture);
|
|
1297
|
+
return __classPrivateFieldSet(this, _PacemDataCellElement_tooltip, Pacem.Utils.core.number(plainValue, format, culture), "f");
|
|
1277
1298
|
case "url":
|
|
1278
1299
|
case "emailaddress":
|
|
1279
1300
|
case "phonenumber":
|
|
1280
1301
|
// TODO: render links
|
|
1281
1302
|
default:
|
|
1282
|
-
return plainValue;
|
|
1303
|
+
return __classPrivateFieldSet(this, _PacemDataCellElement_tooltip, plainValue, "f");
|
|
1283
1304
|
}
|
|
1284
1305
|
}
|
|
1285
1306
|
_setup(metadata = this.metadata) {
|
|
@@ -1314,6 +1335,7 @@ var Pacem;
|
|
|
1314
1335
|
this.setAttribute('content', `{{ this._inflateContent(^item, ^index, this.metadata) }}`);
|
|
1315
1336
|
}
|
|
1316
1337
|
};
|
|
1338
|
+
_PacemDataCellElement_tooltip = new WeakMap();
|
|
1317
1339
|
PacemDataCellElement = __decorate([
|
|
1318
1340
|
Pacem.CustomElement({ tagName: Pacem.P + '-datacell' })
|
|
1319
1341
|
], PacemDataCellElement);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pacem v0.25.0-
|
|
2
|
+
* pacem v0.25.0-delphi (https://js.pacem.it)
|
|
3
3
|
* Copyright 2022 Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under MIT
|
|
5
5
|
*/
|
|
6
|
-
var Pacem,__decorate=this&&this.__decorate||function(e,t,a,o){var r,s=arguments.length,i=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,a):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,o);else for(var n=e.length-1;n>=0;n--)(r=e[n])&&(i=(s<3?r(i):s>3?r(t,a,i):r(t,a))||i);return s>3&&i&&Object.defineProperty(t,a,i),i},__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(e,t,a,o,r){if("m"===o)throw new TypeError("Private method is not writable");if("a"===o&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===o?r.call(e,a):r?r.value=a:t.set(e,a),a},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(e,t,a,o){if("a"===a&&!o)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===a?o:"a"===a?o.call(e):o?o.value:t.get(e)};!function(e){!function(t){!function(a){let o=class PacemCarouselElement extends t.UI.PacemAdaptedIterativeElement{constructor(){super(...arguments),this.interval=4e3}};__decorate([e.ViewChild(e.P+"-adapter")],o.prototype,"adapter",void 0),__decorate([e.ViewChild(e.P+"-slideshow")],o.prototype,"slideshow",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Number})],o.prototype,"interval",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"pausable",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-carousel",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-repeater datasource="{{ :host.datasource }}">\n <${e.P}-slideshow class="${e.PCSS}-carousel" adapter="{{ ::adapter }}" index="{{ :host.index, twoway }}" on-load="this.focus()">\n\n <template>\n\n <${e.P}-slide class="${e.PCSS}-carousel-item" css-class="{{ { '${e.PCSS}-carousel-previous': :host.isPrevious(^index, ::slideshow.index), '${e.PCSS}-carousel-next': :host.isNext(^index, ::slideshow.index), '${e.PCSS}-carousel-focus': ^index === ::slideshow.index } }}">\n <${e.P}-a href="{{ ^item.url }}">\n <${e.P}-img disabled="{{ !:host.isCloseTo(^index, ::slideshow.index) }}" class="${e.PCSS}-carousel-splash" adapt="cover" src="{{ ^item.image }}"></${e.P}-img>\n <div class="${e.PCSS}-carousel-content">\n <div class="${e.PCSS}-carousel-caption">\n <h3><${e.P}-text text="{{ ^item.title }}"></${e.P}-text></h3>\n <${e.P}-panel class="paragraph" content="{{ ^item.content }}"></${e.P}-panel>\n </div>\n </div>\n </${e.P}-a>\n </${e.P}-slide>\n\n </template>\n </${e.P}-slideshow>\n \n </${e.P}-repeater><${e.P}-adapter pausable="{{ :host.pausable }}" class="${e.PCSS}-carousel-adapter" interval="{{ :host.interval }}"></${e.P}-adapter>`})],o),a.PacemCarouselElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){class PacemContextMenuItemElement extends t.PacemItemElement{connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-context-menuitem")}propertyChangedCallback(e,t,a,o){super.propertyChangedCallback(e,t,a,o);const r=this.container;r instanceof s&&r.refresh()}}a.PacemContextMenuItemElement=PacemContextMenuItemElement;let o=class PacemContextMenuItemCommandElement extends PacemContextMenuItemElement{};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"commandName",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"caption",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"tooltip",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"iconGlyph",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"confirmationMessage",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],o.prototype,"confirmationDialog",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],o.prototype,"commandArgument",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-context-menuitem-command"})],o),a.PacemContextMenuItemCommandElement=o;let r=class PacemContextMenuItemSeparatorElement extends PacemContextMenuItemElement{};r=__decorate([e.CustomElement({tagName:e.P+"-context-menuitem-separator"})],r),a.PacemContextMenuItemSeparatorElement=r;let s=class PacemContextMenuElement extends t.PacemItemsContainerElement{constructor(){super(...arguments),this._dispatchCommand=t=>{e.avoidHandler(t),this.dispatchEvent(new e.CommandEvent({commandName:t.detail.commandName,commandArgument:t.detail.commandArgument||this.commandArgument}))}}validate(e){return e instanceof PacemContextMenuItemElement}get _balloon(){const t=this._btns;return e.Utils.isNull(t)||e.Utils.isNullOrEmpty(t.dom)?null:this._btns.dom[0]}get _repeater(){return this._balloon?.querySelector(e.P+"-repeater")}register(e){const t=super.register(e);return t&&this._refreshRepeater(),t}unregister(e){const t=super.unregister(e);return t&&this._refreshRepeater(),t}viewActivatedCallback(){super.viewActivatedCallback(),e.Utils.isNull(this._balloon)||this._balloon.addEventListener(e.CommandEventName,this._dispatchCommand,!1)}disconnectedCallback(){e.Utils.isNull(this._balloon)||this._balloon.removeEventListener(e.CommandEventName,this._dispatchCommand,!1),super.disconnectedCallback()}refresh(){this._refreshRepeater()}_refreshRepeater(){const t=this._repeater;e.Utils.isNullOrEmpty(t)||(t.datasource=this.items.map((t=>{let a={localName:t.localName};for(let o=0;o<t.attributes.length;o++){let r=t.attributes.item(o).name,s=e.CustomElementUtils.kebabToCamel(r);a[s]=t[s]}return a})))}};__decorate([e.ViewChild(e.P+"-button")],s.prototype,"_btn",void 0),__decorate([e.ViewChild(e.P+"-shell-proxy")],s.prototype,"_btns",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],s.prototype,"commandArgument",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"icon",void 0),__decorate([e.Debounce(!0)],s.prototype,"_refreshRepeater",null),s=__decorate([e.CustomElement({tagName:e.P+"-context-menu",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-button class="button-flat ${e.PCSS}-margin margin-0"><${e.P}-icon icon="{{ :host.icon || 'more_horiz' }}"></${e.P}-icon></${e.P}-button>\n<${e.P}-content></${e.P}-content>\n<${e.P}-shell-proxy>\n <${e.P}-balloon target="{{ :host._btn }}" class="${e.PCSS}-contextmenu" options="{{ { trigger: 'click', position: 'x', align: 'auto' } }}">\n <${e.P}-repeater>\n <template>\n <${e.P}-if match="{{ ^item.localName === '${e.P}-context-menuitem-command' && !^item.hide }}">\n <${e.P}-button icon-glyph="{{ ^item.iconGlyph }}" disabled="{{ ^item.disabled }}"\n on-mouseup="::_balloon.popout()" tooltip="{{ ^item.tooltip }}"\n confirmation-message="{{ ^item.confirmationMessage }}" confirmation-dialog="{{ ^item.confirmationDialog }}"\n command-name="{{ ^item.commandName }}" command-argument="{{ ^item.commandArgument }}"><${e.P}-text text="{{ ^item.caption }}"></${e.P}-text></${e.P}-button>\n </${e.P}-if>\n <${e.P}-if match="{{ ^item.localName === '${e.P}-context-menuitem-separator' && !^item.hide }}">\n <hr />\n </${e.P}-if>\n </template>\n </${e.P}-repeater>\n </${e.P}-balloon>\n</${e.P}-shell-proxy>`})],s),a.PacemContextMenuElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let o;!function(e){e.Text="text",e.Html="html",e.Image="image",e.Markdown="markdown"}(o=a.EditMode||(a.EditMode={}));let r=class PacemEditElement extends t.PacemElement{constructor(a=new e.MarkdownService){super(),this._markdown=a,this._dialogPropertyChangedHandler=e=>{this._dialogPropertyChangedCallback(e)},this._broadcastFetchRequestEventName=e=>{this.dispatchEvent(new t.Scaffolding.ImageFetchRequestEvent(e.detail))},this._innerValueChangedHandler=t=>{"value"!==t.detail.propertyName||e.Utils.isNull(this._dialog)||(this._dialog.state=t.detail.currentValue)},this._editHandler=e=>{this.edit(e)}}_addButton(){if(e.Utils.isNull(this._button)){var t=document.createElement(e.P+"-button");return t.className=e.PCSS+"-edit-button",t.addEventListener("click",this._editHandler,!1),this._target.appendChild(t),this._button=t}}_removeButton(){var t=this._button;e.Utils.isNull(t)||(t.removeEventListener("click",this._editHandler,!1),t.remove(),this._button=null)}_addDialog(){var a=document.createElement(e.P+"-dialog");return a.buttons=t.UI.DialogButtons.OkCancel,a.addEventListener(e.PropertyChangeEventName,this._dialogPropertyChangedHandler,!1),a.appendChild(this._addTextarea()),a.appendChild(this._addContenteditable()),a.appendChild(this._addEditImage()),document.body.appendChild(a),this._dialog=a}_removeDialog(){this._removeTextarea(),this._removeContenteditable(),this._removeEditImage(),e.Utils.isNull(this._dialog)||(this._dialog.removeEventListener(e.PropertyChangeEventName,this._dialogPropertyChangedHandler,!1),this._dialog.remove())}_addTextarea(){var t=document.createElement(e.P+"-textarea");t.className=e.PCSS+"-edit-text",t.addEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1);const a=this.type||o.Text;return t.hide=a!==o.Text&&a!==o.Markdown,this._textarea=t}_removeTextarea(){e.Utils.isNull(this._textarea)||this._textarea.removeEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1)}_addContenteditable(){var t=document.createElement(e.P+"-contenteditable");t.className=e.PCSS+"-edit-content",t.addEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1);const a=this.type||o.Text;return t.hide=a!==o.Html,this._contenteditable=t}_removeContenteditable(){e.Utils.isNull(this._contenteditable)||this._contenteditable.removeEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1)}_addEditImage(){var a=document.createElement(e.P+"-edit-image");a.disabled=!0,a.addEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1),a.addEventListener(t.Scaffolding.ImageFetchRequestEventName,this._broadcastFetchRequestEventName,!1);const r=this.type||o.Text;return a.hide=r!==o.Image,a.uploadUrl=this.imageUploadUrl,a.allowSnapshot=this.allowSnapshot,a.maxWidth=this.maxImageWidth,a.maxHeight=this.maxImageHeight,this._editImage=a}_removeEditImage(){e.Utils.isNull(this._editImage)||(this._editImage.removeEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1),this._editImage.removeEventListener(t.Scaffolding.ImageFetchRequestEventName,this._broadcastFetchRequestEventName,!1))}_update(t){var a=this._content;switch(this.type){case o.Html:a.innerHTML=t;break;case o.Markdown:if(a.localName===e.P+"-markdown")a.value=t;else a.innerHTML=this._markdown.toHtml(t);break;case o.Image:switch(a.localName){case"img":case e.P+"-img":a.src=t;break;default:a.style.backgroundImage=`url(${t})`}break;default:this._content.textContent=t}}_retrieve(){var t=this._content;switch(this.type){case o.Html:return t.innerHTML;case o.Image:switch(t.localName){case e.P+"-img":case"img":return t.src;default:let a=getComputedStyle(t).backgroundImage,o=/url\(["']?([^'"]+)["']?\)/.exec(a);return o&&o.length&&o[1]}case o.Markdown:return t.value||t.textContent;default:return t.textContent}}_setup(){this.disabled?(e.Utils.removeClass(this._target,e.PCSS+"-editing"),this._removeButton()):(e.Utils.addClass(this._target,e.PCSS+"-editing"),this._addButton())}_dialogPropertyChangedCallback(t){if("state"===t.detail.propertyName){const a=t.detail.currentValue;e.Utils.isNull(this._textarea)||(this._textarea.value=a),e.Utils.isNull(this._contenteditable)||(this._contenteditable.value=a),e.Utils.isNull(this._editImage)||(this._editImage.value=a),this._update(t.detail.currentValue)}}get _target(){var t=this.target;return e.Utils.isNull(t)&&(t=this.firstElementChild),t}connectedCallback(){super.connectedCallback(),this._addDialog()}viewActivatedCallback(){super.viewActivatedCallback(),this._addButton(),this._setup()}disconnectedCallback(){this._removeButton(),this._removeDialog(),super.disconnectedCallback()}propertyChangedCallback(t,a,r,s){switch(super.propertyChangedCallback(t,a,r,s),t){case"imageUploadUrl":e.Utils.isNull(this._editImage)||(this._editImage.uploadUrl=r);break;case"allowSnapshot":e.Utils.isNull(this._editImage)||(this._editImage.allowSnapshot=r);break;case"imageSet":e.Utils.isNull(this._editImage)||(this._editImage.imageSet=r);break;case"disabled":this._setup();break;case"type":const t=r;e.Utils.isNull(this._textarea)||(this._textarea.hide=t!==o.Text&&t!==o.Markdown),e.Utils.isNull(this._contenteditable)||(this._contenteditable.hide=t!==o.Html),e.Utils.isNull(this._editImage)||(this._editImage.hide=t!==o.Image);break;case"maxImageHeight":e.Utils.isNull(this._editImage)||(this._editImage.maxHeight=r);break;case"maxImageWidth":e.Utils.isNull(this._editImage)||(this._editImage.maxWidth=r)}}edit(a){e.avoidHandler(a);var o=this._target;if(!e.Utils.isNull(o)){this._removeButton(),this._content=o;var r=this._state=this._retrieve();e.Utils.isNull(this._editImage)||(this._editImage.disabled=!1),this._dialog.open(r).then((a=>{switch(a.button){case t.UI.DialogButton.Cancel:this._update(this._state);break;case t.UI.DialogButton.Ok:this._update(a.state),this.dispatchEvent(new CustomEvent("commit",{detail:{value:a.state}}))}this._content=null,e.Utils.isNull(this._editImage)||(this._editImage.disabled=!0),this._addButton()}))}}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],r.prototype,"key",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],r.prototype,"type",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Element})],r.prototype,"target",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],r.prototype,"imageUploadUrl",void 0),__decorate([e.Watch({emit:!1})],r.prototype,"imageSet",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],r.prototype,"maxImageWidth",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],r.prototype,"maxImageHeight",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],r.prototype,"allowSnapshot",void 0),r=__decorate([e.CustomElement({tagName:e.P+"-edit"})],r),a.PacemEditElement=r}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let o=class PacemGalleryElement extends t.UI.PacemAdaptedIterativeElement{get adapter(){return this._adapter}async _heroAnimate(t,a){if(!e.Utils.isNull(t)){let o=document.createElement(e.P+"-img"),r=this._heroPlaceholderProxy.dom[0];const s=300;o.src=a||t.src,o.adapt="contain";let i=e.Utils.offset(r),n=e.Utils.offset(t),l=o.style;const d=getComputedStyle(r);l.border=d.border,l.width=r.clientWidth+"px",l.height=r.clientHeight+"px",l.position="absolute",l.zIndex=d.zIndex,l.top=i.top+"px",l.left=i.left+"px";const c=t.clientWidth/r.clientWidth,h=t.clientHeight/r.clientHeight,m=n.left-i.left+"px",p=n.top-i.top+"px";l.transformOrigin="0 0",l.transition=`transform cubic-bezier(0.445, 0.05, 0.55, 0.95) ${s}ms, opacity ${s}ms`,l.transform=`translate(${m}, ${p}) scale(${c}, ${h})`,document.body.appendChild(o),requestAnimationFrame((()=>{o.style.transform=""})),await e.Utils.waitForAnimationEnd(o,s),o.remove()}}open(e,t,a){this._poppingUp=!0,this._lightbox.show=!0,this._slideshow.index=e,this._heroAnimate(t,a).then((e=>{this._poppingUp=!1,this._slideshow.focus()}))}};__decorate([e.ViewChild(e.P+"-adapter")],o.prototype,"_adapter",void 0),__decorate([e.ViewChild(e.P+"-lightbox")],o.prototype,"_lightbox",void 0),__decorate([e.ViewChild(e.P+"-slideshow")],o.prototype,"_slideshow",void 0),__decorate([e.ViewChild(e.P+"-shell-proxy")],o.prototype,"_heroPlaceholderProxy",void 0),__decorate([e.Watch()],o.prototype,"_poppingUp",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-gallery",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-lightbox class="${e.PCSS}-gallery">\n <${e.P}-repeater datasource="{{ :host.datasource }}">\n <${e.P}-slideshow adapter="{{ ::_adapter }}" index="{{ :host.index, twoway }}">\n <template>\n <${e.P}-slide class="${e.PCSS}-gallery-item"\ncss-class="{{ { '${e.PCSS}-gallery-previous': :host.isPrevious(^index, ::_slideshow.index), '${e.PCSS}-gallery-next': :host.isNext(^index, ::_slideshow.index), '${e.PCSS}-gallery-focus': ^index === ::_slideshow.index } }}"\n>\n <${e.P}-img src="{{ ^item.image }}" disabled="{{ !(:host.isCloseTo(^index, ::_slideshow.index) || ^index === ::_slideshow.index) }}" \ncss="{{ {'visibility': (:host._poppingUp ? 'hidden' : ''), 'transition': (:host._poppingUp ? 'none' : '')} }}" class="${e.PCSS}-gallery-splash" adapt="contain"></${e.P}-img>\n <${e.P}-panel hide="{{ $pacem.isNullOrEmpty(^item.caption) }}" class="${e.PCSS}-gallery-caption">\n <${e.P}-span class="paragraph" text="{{ ^item.caption }}"></${e.P}-span>\n </${e.P}-panel>\n \n </${e.P}-slide>\n </template>\n </${e.P}-slideshow>\n </${e.P}-repeater>\n<${e.P}-adapter class="${e.PCSS}-gallery-adapter"></${e.P}-adapter>\n</${e.P}-lightbox>\n<${e.P}-shell-proxy><div class="${e.PCSS}-gallery-hero-target"></div></${e.P}-shell-proxy>`})],o),a.PacemGalleryElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){var o,r;let s=r=class PacemModalFormElement extends t.UI.PacemDialogBase{constructor(){super(),this.suddenValidation=!0,this.method=e.Net.HttpMethod.Post,o.set(this,!1),this._emitter=new e.Components.Scaffolding.FormEventEmitter(this)}viewActivatedCallback(){super.viewActivatedCallback();var t=this.querySelector(`.${e.PCSS}-lightbox`);t.appendChild(this._buttons=this.querySelector(`.${e.PCSS}-dialog-buttons`)),t.appendChild(this.querySelector(`.${e.PCSS}-dialog-heading`)),t.appendChild(this.querySelector(e.P+"-loader")),this.dispatchEvent(new e.PropertyChangeEvent({propertyName:"modalButtons",currentValue:this.modalButtons})),this._emitter.start()}disconnectedCallback(){this._emitter.stop(),super.disconnectedCallback()}_submit(a){this.readonly?this.commit(t.UI.DialogButton.Ok,a):(e.avoidHandler(a),this._form.validate().then((o=>{o&&(e.Utils.isNullOrEmpty(this.action)?this.commit(t.UI.DialogButton.Ok,a):this._form.submit(this._fetcher).then((e=>{this.commit(t.UI.DialogButton.Ok,a)}),(e=>{})))})))}_onSubmit(e){this.emit(e)}open(t,a,s=!0){if(e.Utils.isNull(t))throw`The state of a ${r} cannot be null.`;__classPrivateFieldSet(this,o,a,"f");var i=super.open(t);return s&&this._form.setPristine(),i}commit(t,a){super.commit(t,a),__classPrivateFieldGet(this,o,"f")||e.Utils.waitForAnimationEnd(this,500).then((e=>{this.state={}}))}_cancel(e){this.commit(t.UI.DialogButton.Cancel,e),this._form.reset()}_broadcast(e){this.dispatchEvent(new CustomEvent(e.type,{detail:e.detail}))}get modalButtons(){const e=this._buttons;return{ok:e&&e.firstElementChild&&e.firstElementChild.firstElementChild,cancel:e&&e.firstElementChild&&e.firstElementChild.lastElementChild}}};o=new WeakMap,__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],s.prototype,"suddenValidation",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"okCaption",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"cancelCaption",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"method",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],s.prototype,"metadata",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"action",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"loaderType",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],s.prototype,"success",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],s.prototype,"fail",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],s.prototype,"readonly",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],s.prototype,"fetchHeaders",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"fetchCredentials",void 0),__decorate([e.ViewChild(e.P+"-lightbox")],s.prototype,"lightbox",void 0),__decorate([e.ViewChild(e.P+"-form[entity]")],s.prototype,"_form",void 0),__decorate([e.ViewChild(e.P+"-fetch")],s.prototype,"_fetcher",void 0),s=r=__decorate([e.CustomElement({tagName:e.P+"-modal-form",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-lightbox modal="true" logger="{{ :host.logger }}"><${e.P}-form wrapper>\n <${e.P}-form logger="{{ :host.logger }}" on-submit=":host._onSubmit($event)" readonly="{{ :host.readonly }}" entity="{{ :host.state, twoway }}" on-success=":host._broadcast($event)" \n on-fail=":host._broadcast($event)" success="{{ :host.success, twoway }}" fail="{{ :host.fail, twoway }}" autogenerate="{{ !$pacem.isNull($this.entity) }}" metadata="{{ :host.metadata }}"\n fetch-headers="{{ :host.fetchHeaders }}" fetch-credentials="{{ :host.fetchCredentials }}" sudden-validation="{{ :host.suddenValidation }}"></${e.P}-form></${e.P}-form>\n <${e.P}-fetch logger="{{ :host.logger }}" method="{{ :host.method }}" headers="{{ :host.fetchHeaders }}" credentials="{{ :host.fetchCredentials }}" autofetch="false" url="{{ :host.action }}"></${e.P}-fetch> \n <div class="${e.PCSS}-dialog-buttons ${e.PCSS}-buttonset buttons">\n <div class="buttonset-left">\n <${e.P}-button on-click=":host._submit($event)" css-class="{{ {'buttonset-last': :host.readonly} }}"\n class="button primary button-size size-small" disabled="{{ :host.suddenValidation && !:host.readonly && (!(::_form.valid && ::_form.dirty) || ::_fetcher.fetching) }}"><${e.P}-text text="{{ :host.okCaption || 'OK' }}"></${e.P}-text></${e.P}-button>\n <${e.P}-button on-click=":host._cancel($event)" hide="{{ :host.readonly }}" class="button button-size size-small" disabled="{{ ::_fetcher.fetching }}"><${e.P}-text text="{{ :host.cancelCaption || 'Cancel' }}"></${e.P}-text></${e.P}-button>\n </div></div>\n <div class="${e.PCSS}-dialog-heading">\n <${e.P}-content></${e.P}-content>\n </div>\n <${e.P}-loader type="{{ :host.loaderType }}" class="${e.PCSS}-hover loader-primary loader-small" active="{{ ::_fetcher.fetching }}"></${e.P}-loader>\n</${e.P}-lightbox>`})],s),a.PacemModalFormElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){var o;let r=class RisolutoHashStateElement extends t.PacemEventTarget{constructor(){super(...arguments),this.default={},this.state={},this.normalizedState={},o.set(this,void 0),this._routerNavigatingHandler=e=>{__classPrivateFieldSet(this,o,!0,"f")},this._routerNavigateHandler=e=>{__classPrivateFieldSet(this,o,!1,"f"),this._updateStateFromURI()}}viewActivatedCallback(){super.viewActivatedCallback(),this._updateStateFromURI(),this._setupRouterHandlers(this.router)}propertyChangedCallback(e,t,a,r){switch(super.propertyChangedCallback(e,t,a,r),e){case"state":r||__classPrivateFieldGet(this,o,"f")||(this._updateNormalizedState(),this._updateURIFromState());break;case"disabled":a&&this._updateStateFromURI();break;case"default":this._updateStateFromURI();break;case"router":r||(this._disposeRouterHandlers(t),this._setupRouterHandlers(a))}}disconnectedCallback(){this._disposeRouterHandlers(),super.disconnectedCallback()}_setupRouterHandlers(t=this.router){e.Utils.isNull(t)||(window.addEventListener("navigating",this._routerNavigatingHandler,!1),window.addEventListener("navigate",this._routerNavigateHandler,!1))}_disposeRouterHandlers(t=this.router){e.Utils.isNull(t)||(window.removeEventListener("navigating",this._routerNavigatingHandler,!1),window.removeEventListener("navigate",this._routerNavigateHandler,!1))}_currentBasePath(){const t=this.router;if(!e.Utils.isNull(t)){const e=t.state.$querystring;return this._normalizePath(document.location.pathname,e)}return null}_normalizePath(t,a){return e.Utils.isNullOrEmpty(t)?t:(t.endsWith("/")&&(t=t.substring(0,t.length-1)),a??="",t+(a.length>0?"?"+a:""))}_areStatesEquivalent(t,a){const o=e.Utils.extend({},t||{}),r=e.Utils.extend({},a||{});for(let e in o){if(!this._areSubstantiallyEquivalent(o[e],r[e]))return!1;delete o[e],delete r[e]}for(let e in r)if(!this._areSubstantiallyEquivalent(o[e],r[e]))return!1;return!0}_updateNormalizedState(e=this.state){if(this.disabled||__classPrivateFieldGet(this,o,"f"))return;const t=this._normalizeState(e);this._areStatesEquivalent(t,this.normalizedState)||(this.normalizedState=t)}_updateStateFromURI(){if(this.disabled||__classPrivateFieldGet(this,o,"f"))return;var t=e.Utils.extend({},this.default||{});const a=this.router;if(!e.Utils.isNull(a)){const o=this._denormalizeState(e.Utils.URIs.parseQuery(a.state&&a.state.$hash||"{}"));e.Utils.extend(t,o)}this._areStatesEquivalent(this.state,t)||(this.state=t)}_updateURIFromState(t=this.normalizedState){if(this.disabled||__classPrivateFieldGet(this,o,"f"))return;const a=this.router;if(!e.Utils.isNull(a)){const o=this._currentBasePath(),s=e.Utils.URIs.parseQuery(a.state.$hash||"{}"),i=t||{};if(!this._areStatesEquivalent(s,i)){const t=this._cleanupStateForURI(i);var r=o;e.Utils.isNullOrEmpty(t)||(r=e.Utils.URIs.appendQuery(o,t,!1,!0)),a.path=r}}}_areSubstantiallyEquivalent(t,a){return t??="",a??="",t.toString()==a.toString()||e.Utils.areSemanticallyEqual(t,a)||JSON.stringify(t)===JSON.stringify(a)}_cleanupStateForURI(t=this.state){const a=e.Utils.clone(t||{}),o=this.default;for(let t in a)(e.Utils.isNullOrEmpty(a[t])&&(e.Utils.isNull(o)||!(t in o))||!e.Utils.isNull(o)&&t in o&&this._areSubstantiallyEquivalent(o[t],a[t]))&&delete a[t];return a}_normalizeState(t=this.state,a=this.default){var o={};const r=a;for(let a in t||{}){const s=t[a];if(e.Utils.isNullOrEmpty(s))e.Utils.isNull(r)||!(a in r)||e.Utils.isNullOrEmpty(r[a])||(o[a]="");else switch(typeof s){case"number":case"bigint":case"boolean":Object.defineProperty(o,a,{enumerable:!0,value:s.toString()});break;case"symbol":case"string":Object.defineProperty(o,a,{enumerable:!0,value:s});break;default:if(e.Utils.Dates.isDate(s))Object.defineProperty(o,a,{enumerable:!0,value:s.toISOString()});else{if(!(s instanceof RegExp))throw new Error("Type not supported to be normalized into a URI hash.");Object.defineProperty(o,a,{enumerable:!0,value:s.source})}}}return o}_denormalizeState(t=this.normalizedState,a=this.default){const o={},r=a||{};for(let a in t){if(!(a in r)){o[a]=t[a];continue}const s=r[a],i=t[a];switch(typeof s){case"boolean":Object.defineProperty(o,a,{enumerable:!0,value:e.PropertyConverters.Boolean.convert(i)});break;case"number":case"bigint":Object.defineProperty(o,a,{enumerable:!0,value:e.PropertyConverters.Number.convert(i)});break;case"symbol":case"string":Object.defineProperty(o,a,{enumerable:!0,value:e.PropertyConverters.String.convert(i)});break;default:s instanceof Date?Object.defineProperty(o,a,{enumerable:!0,value:e.PropertyConverters.Date.convert(i)}):s instanceof RegExp?Object.defineProperty(o,a,{enumerable:!0,value:new RegExp(i,s.flags)}):Object.defineProperty(o,a,{enumerable:!0,value:i})}}return o}set(t,a){var o={};"string"==typeof t?Object.defineProperty(o,t,{enumerable:!0,value:a}):o=t,this.state=e.Utils.extend({},this.state||{},o)}};o=new WeakMap,__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],r.prototype,"router",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],r.prototype,"default",void 0),__decorate([e.Watch()],r.prototype,"state",void 0),__decorate([e.Watch()],r.prototype,"normalizedState",void 0),r=__decorate([e.CustomElement({tagName:e.P+"-router-hash-state"})],r),a.RisolutoHashStateElement=r}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let o=class PacemSearchElement extends t.PacemElement{constructor(){super(...arguments),this.hintParameter="q"}propertyChangedCallback(e,t,a,o){if(super.propertyChangedCallback(e,t,a,o),"hint"===e){let e={};e[this.hintParameter]=a,this._fetcher.parameters=e}}};__decorate([e.ViewChild(e.P+"-fetch")],o.prototype,"_fetcher",void 0),__decorate([e.Watch()],o.prototype,"datasource",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"hint",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"url",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"method",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"hintParameter",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-search",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-fetch debounce="800" url="{{ :host.url }}" method="{{ :host.method }}">\n</${e.P}-fetch><${e.P}-input-search value="{{ :host.hint, twoway }}"></${e.P}-input-search>\n<${e.P}-repeater datasource="{{ ::_fetch.result }}">\n <${e.P}-content></${e.P}-content>\n</${e.P}-repeater>`})],o),a.PacemSearchElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){class PacemBaseCellElement extends t.PacemSafeContentElement{viewActivatedCallback(){super.viewActivatedCallback(),this.updateColumnPosition(),this.updateLayout(this.metadata)}updateColumnPosition(e=this.metadata,t=this.gridState){this.style.gridColumn=(t.orderedColumns.indexOf(e.prop)+1).toString()}updateVisibility(e=this.state){this.hide=!!e.hidden}propertyChangedCallback(e,t,a,o){if(super.propertyChangedCallback(e,t,a,o),!o)switch(e){case"metadata":this.updateLayout(a);break;case"gridState":this.updateColumnPosition();break;case"state":this.updateVisibility()}}}__decorate([e.Watch({converter:e.PropertyConverters.Json})],PacemBaseCellElement.prototype,"metadata",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],PacemBaseCellElement.prototype,"state",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],PacemBaseCellElement.prototype,"gridState",void 0),a.PacemBaseCellElement=PacemBaseCellElement}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){let a=class PacemDataCellElement extends t.PacemBaseCellElement{updateLayout(e=this.metadata){this._setup(e)}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-datacell")}_inflateContent(t,a,o=this.metadata){const r=t[o.prop],s=o.dataCell?.null??"";if(e.Utils.isNullOrEmpty(r))return s;let i=o.dataCell?.format;if("function"==typeof i){const r=i(this,o,t,a);if(e.Utils.isNullOrEmpty(r))return s;if("string"==typeof r)return r;const n=new HTMLDivElement;return n.append(r),n.innerHTML}const n=e.Utils.lang(this);switch(o.dataType){case"boolean":return`<${e.P}-icon icon="material ${r?"check_circle_outline":"radio_button_unchecked"} text-big-steady"></${e.P}-icon>`;case"time":case"date":case"datetime":return e.Utils.core.date(r,i,n);case"byte":case"int16":case"int32":case"int64":case"short":case"integer":case"int":case"long":case"double":case"decimal":case"float":case"single":case"number":return e.Utils.core.number(r,i||"",n);case"currency":return i??="EUR","string"==typeof i?e.Utils.core.currency(r,i,n):e.Utils.core.number(r,i,n);case"percent":case"percentage":return i??={style:"percent",maximumFractionDigits:2},"string"==typeof i?e.Utils.core.currency(r,i,n):e.Utils.core.number(r,i,n);default:return r}}_setup(t=this.metadata){switch(t.dataCell?.textEllipsis&&e.Utils.addClass(this,"datacell-truncate"),this.setAttribute("css-class","{{ this.metadata && this.metadata.dataCell && this.metadata.dataCell.cssClass || [] }}"),this.setAttribute("css","{{ Pacem.Utils.extend({ 'grid-row': ^index+2 }, this.metadata && this.metadata.dataCell && this.metadata.dataCell.css || {}) }}"),t.dataCell?.verticalAlign?.toLowerCase()){case"top":e.Utils.addClass(this,"datacell-top");break;case"bottom":e.Utils.addClass(this,"datacell-bottom");break;case"middle":e.Utils.addClass(this,"datacell-middle")}switch(t.dataCell?.horizontalAlign?.toLowerCase()){case"left":e.Utils.addClass(this,"datacell-left");break;case"right":e.Utils.addClass(this,"datacell-right");break;case"center":e.Utils.addClass(this,"datacell-center")}this.setAttribute("content","{{ this._inflateContent(^item, ^index, this.metadata) }}")}};a=__decorate([e.CustomElement({tagName:e.P+"-datacell"})],a),t.PacemDataCellElement=a}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){const o="datacolumnchange",r="datacolumnstatechange",s={selectCaption:"Details",editCaption:"Edit",editIcon:"edit",deleteCaption:"Delete",deleteIcon:"delete"};let i=class PacemDataColumnElement extends t.PacemItemElement{propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"field":case"headcellCss":case"headcellCssClass":case"datacellCss":case"datacellCssClass":case"resizable":case"togglable":case"sortable":case"label":this.dispatchEvent(new Event(o));break;case"order":case"hide":this.dispatchEvent(new Event(r))}}};function n(t){return`<${e.P}-headcell metadata="${JSON.stringify(t).replaceAll('"',""")}" state="{{ :host._columnState.${t.prop} }}" grid-state="{{ :host._gridState }}" on-${a.DataColumnSortEventName}=":host._broadcastSortCommand($event)"></${e.P}-headcell>`}function l(t){return`<${e.P}-datacell metadata="${JSON.stringify(t).replaceAll('"',""")}" state="{{ :host._columnState.${t.prop} }}" grid-state="{{ :host._gridState }}"></${e.P}-datacell>`}__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"field",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"label",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],i.prototype,"resizable",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],i.prototype,"togglable",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],i.prototype,"sortable",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"order",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],i.prototype,"format",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"headcellCss",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"headcellCssClass",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"datacellCss",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"datacellCssClass",void 0),i=__decorate([e.CustomElement({tagName:e.P+"-datacolumn"})],i),a.PacemDataColumnElement=i;let d=class PacemDataGridElement extends t.PacemItemsContainerElement{constructor(t=e.Utils.uniqueCode()){super(),this._key=t,this._rowState={},this._columnState={},this._gridState={sort:{},orderedColumns:[]},this._itemDataColumnRebuildHandler=e=>{this._adaptColumnMetadata(this.items||[])},this._itemDataColumnChangeHandler=e=>{this._adaptColumnMetadata(this.items||[])}}validate(e){return e instanceof i}viewActivatedCallback(){super.viewActivatedCallback();const e=this._adaptedColumnMetadata||[];this._buildUpGrid(e)}propertyChangedCallback(e,t,a,o){if(super.propertyChangedCallback(e,t,a,o),!o)switch(e){case"items":case"metadata":this._adaptColumnMetadata();break;case"_adaptedColumnMetadata":this._buildUpGrid(a);break;case"datasource":this._rowState={}}}register(e){return!!super.register(e)&&(e.addEventListener(o,this._itemDataColumnRebuildHandler,!1),e.addEventListener(r,this._itemDataColumnChangeHandler,!1),!0)}unregister(e){return!!super.unregister(e)&&(e.removeEventListener(o,this._itemDataColumnRebuildHandler,!1),e.removeEventListener(r,this._itemDataColumnChangeHandler,!1),!0)}_adaptColumnMetadata(e=this.items,t=this.metadata){const a=Array.prototype.concat.apply((e||[]).map((e=>({prop:e.field,headCell:{name:e.label,cssClass:e.headcellCssClass||[],css:e.headcellCss||{}},dataCell:{format:e.format,cssClass:e.datacellCssClass||[],css:e.datacellCss||{}},hide:e.hide,isResizable:e.resizable,isSortable:e.sortable,isTogglable:e.togglable,order:e.order,width:1}))),t||[]);this._adaptedColumnMetadata=a}_buildUpGrid(t){const a=this._tableContainer;if(e.Utils.isNull(a))return;if(e.Utils.isNullOrEmpty(t))return void(a.innerHTML="");const o=e.Utils.extend({},s,this.options||{}),r=o.allowDelete||o.allowEdit||o.allowSelect,i=o.allowMultiSelect&&r;let d=i?"auto ":"",c=i?`<div class="${e.PCSS}-headcell"></div>`:"",h=i?`<${e.P}-panel class="${e.PCSS}-datacell" style="grid-column: 1;" css="{{ {'grid-row': ^index+2} }}"></${e.P}-panel>`:"",m=i?`<div class="${e.PCSS}-footcell"></div>`:"";const p=i?t.length+2:r?t.length+1:t.length;this._gridState.orderedColumns=t.sort(((e,t)=>(e.order??0)-(t.order??0))).map((e=>e.prop));for(let e of t)this._columnState[e.prop]={hidden:e.hide},d+=this._getColumnSize(e)+" ",c+=n(e),h+=l(e);h+=`<${e.P}-panel class="${e.PCSS}-datarow" css-class="{{ {'datarow-alt': ^index % 2 === 1} }}" style="grid-column: 1 /span ${p};" css="{{ {'grid-row': ^index+2} }}"></${e.P}-panel>`;const u=`<${e.P}-repeater datasource="{{ :host.datasource }}">\n<div class="${e.PCSS}-datatable" style="grid-template-columns: ${d.trimEnd()}">\n ${c}\n <template>\n ${h}\n </template>\n ${m}\n</div>`;a.innerHTML=u}_getColumnSize(e){const t=e.minPixelWidth,a=e.maxPixelWidth;if(a>0&&t>0)return`minmax(${t}px, ${a}px)`;{const o="number"==typeof e.width?e.width+"fr":"auto";return t>0?`minmax(${t}px, ${o})`:a>0?`minmax(${o}, ${a}px)`:o}}_broadcastSortCommand(t){const o=t.detail;this.dispatchEvent(new a.DataColumnSortEvent(o)),this._gridState=e.Utils.extend({},this._gridState,{sort:o})}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],d.prototype,"metadata",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],d.prototype,"options",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],d.prototype,"datasource",void 0),__decorate([e.ViewChild("."+e.PCSS+"-datagrid")],d.prototype,"_tableContainer",void 0),__decorate([e.Watch()],d.prototype,"_adaptedColumnMetadata",void 0),__decorate([e.Watch()],d.prototype,"_rowState",void 0),__decorate([e.Watch()],d.prototype,"_columnState",void 0),__decorate([e.Watch()],d.prototype,"_gridState",void 0),__decorate([e.Debounce()],d.prototype,"_adaptColumnMetadata",null),d=__decorate([e.CustomElement({tagName:e.P+"-datagrid",shadow:!1,template:`<div class="${e.PCSS}-datagrid"></div><${e.P}-content></${e.P}-content>`})],d),a.PacemDataGridElement=d}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){a.DataColumnSortEventName="datacolumnsort";class DataColumnSortEvent extends CustomEvent{constructor(e){super(a.DataColumnSortEventName,{detail:e,bubbles:!1,cancelable:!1})}}a.DataColumnSortEvent=DataColumnSortEvent;let o=class PacemHeadCellElement extends a.PacemBaseCellElement{constructor(t=new e.MarkdownService){super(),this._md=t,this._sortButtonClickHandler=e=>{const t=this.metadata,a=this.gridState,o=t.prop,r=a.sort?.column===o?"desc"===a.sort.dir?"asc":"desc":t.defaultSort||"asc";this.dispatchEvent(new DataColumnSortEvent({column:o,dir:r}))}}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-headcell")}propertyChangedCallback(e,t,a,o){super.propertyChangedCallback(e,t,a,o),o||"gridState"!==e||this._updateSortButtonIconGlyph()}viewActivatedCallback(){super.viewActivatedCallback(),this._ensureBalloon()}disconnectedCallback(){e.Utils.isNull(this._balloon)||this._balloon.remove(),super.disconnectedCallback()}updateLayout(e=this.metadata){this._setup(e)}_setupSortButton(t=this.metadata){const a=new e.Components.UI.PacemButtonElement;return a.className="button-flat headcell-button-sort display-flex flex-middle",a.addEventListener("click",this._sortButtonClickHandler,!1),a.textContent=this._getColumnTitle(t),a}_disposeSortButton(t=this._sortButton){e.Utils.isNull(t)||(t.removeEventListener("click",this._sortButtonClickHandler,!1),t.remove(),this._sortButton=null)}_getColumnTitle(e=this.metadata){return e.headCell?.name??e.prop}_updateSortButtonIconGlyph(t=this._sortButton,a=this.gridState,o=this.metadata){e.Utils.isNull(t)||e.Utils.isNullOrEmpty(o)||(t.iconGlyph=a?.sort?.column===o.prop?"desc"===a.sort.dir?"arrow_drop_down":"arrow_drop_up":"")}_setup(t=this.metadata){switch(t.headCell?.textEllipsis&&e.Utils.addClass(this,"headcell-truncate"),this.setAttribute("css-class","{{ this.metadata && this.metadata.headCell && this.metadata.headCell.cssClass || [] }}"),this.setAttribute("css","{{ this.metadata && this.metadata.headCell && this.metadata.headCell.css }}"),t.headCell?.verticalAlign?.toLowerCase()){case"top":e.Utils.addClass(this,"headcell-top");break;case"bottom":e.Utils.addClass(this,"headcell-bottom");break;case"middle":e.Utils.addClass(this,"headcell-middle")}switch(t.headCell?.horizontalAlign?.toLowerCase()){case"left":e.Utils.addClass(this,"headcell-left");break;case"right":e.Utils.addClass(this,"headcell-right");break;case"center":e.Utils.addClass(this,"headcell-center")}if(t.isSortable){this.removeAttribute("content"),this._disposeSortButton(),this.innerHTML="";const e=this._sortButton=this._setupSortButton(t);this._updateSortButtonIconGlyph(e),this.appendChild(e)}else this.setAttribute("content",this._getColumnTitle(t));t.isResizable}_normalizeTooltip(){const e=this.metadata.headCell?.tooltip||!1;return"object"==typeof e?e:{type:e}}_ensureBalloon(){var a,o;const r=!1===(o=this._normalizeTooltip()).type||e.Utils.isNullOrEmpty(a=this.metadata.headCell?.description);if(e.Utils.isNull(this._balloon)&&!r){let a=new e.Components.UI.PacemBalloonElement;a.options={behavior:t.UI.BalloonBehavior.Tooltip,trigger:o.trigger||t.UI.BalloonTrigger.Hover,position:o.position||t.UI.BalloonPosition.Top,hoverDelay:200,hoverTimeout:50,align:o.align||t.UI.BalloonAlignment.Auto},e.Utils.addClass(a,e.PCSS+"-headcell-tooltip"),e.CustomElementUtils.findAncestorShell(this).appendChild(this._balloon=a)}const s=this._balloon;if(!(e.Utils.isNull(s)||(s.target=this,s.disabled=r))){const e=a||"";switch(o.type){case"md":case"markdown":s.innerHTML=this._md.toHtml(e);break;case"html":s.innerHTML=e;break;default:s.innerText=e}}}};o=__decorate([e.CustomElement({tagName:e.P+"-headcell"})],o),a.PacemHeadCellElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={}));
|
|
6
|
+
var Pacem,__decorate=this&&this.__decorate||function(e,t,a,o){var s,i=arguments.length,r=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,a):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(e,t,a,o);else for(var n=e.length-1;n>=0;n--)(s=e[n])&&(r=(i<3?s(r):i>3?s(t,a,r):s(t,a))||r);return i>3&&r&&Object.defineProperty(t,a,r),r},__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(e,t,a,o,s){if("m"===o)throw new TypeError("Private method is not writable");if("a"===o&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!s:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===o?s.call(e,a):s?s.value=a:t.set(e,a),a},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(e,t,a,o){if("a"===a&&!o)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===a?o:"a"===a?o.call(e):o?o.value:t.get(e)};!function(e){!function(t){!function(a){let o=class PacemCarouselElement extends t.UI.PacemAdaptedIterativeElement{constructor(){super(...arguments),this.interval=4e3}};__decorate([e.ViewChild(e.P+"-adapter")],o.prototype,"adapter",void 0),__decorate([e.ViewChild(e.P+"-slideshow")],o.prototype,"slideshow",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Number})],o.prototype,"interval",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"pausable",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-carousel",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-repeater datasource="{{ :host.datasource }}">\n <${e.P}-slideshow class="${e.PCSS}-carousel" adapter="{{ ::adapter }}" index="{{ :host.index, twoway }}" on-load="this.focus()">\n\n <template>\n\n <${e.P}-slide class="${e.PCSS}-carousel-item" css-class="{{ { '${e.PCSS}-carousel-previous': :host.isPrevious(^index, ::slideshow.index), '${e.PCSS}-carousel-next': :host.isNext(^index, ::slideshow.index), '${e.PCSS}-carousel-focus': ^index === ::slideshow.index } }}">\n <${e.P}-a href="{{ ^item.url }}">\n <${e.P}-img disabled="{{ !:host.isCloseTo(^index, ::slideshow.index) }}" class="${e.PCSS}-carousel-splash" adapt="cover" src="{{ ^item.image }}"></${e.P}-img>\n <div class="${e.PCSS}-carousel-content">\n <div class="${e.PCSS}-carousel-caption">\n <h3><${e.P}-text text="{{ ^item.title }}"></${e.P}-text></h3>\n <${e.P}-panel class="paragraph" content="{{ ^item.content }}"></${e.P}-panel>\n </div>\n </div>\n </${e.P}-a>\n </${e.P}-slide>\n\n </template>\n </${e.P}-slideshow>\n \n </${e.P}-repeater><${e.P}-adapter pausable="{{ :host.pausable }}" class="${e.PCSS}-carousel-adapter" interval="{{ :host.interval }}"></${e.P}-adapter>`})],o),a.PacemCarouselElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){class PacemContextMenuItemElement extends t.PacemItemElement{connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-context-menuitem")}propertyChangedCallback(e,t,a,o){super.propertyChangedCallback(e,t,a,o);const s=this.container;s instanceof i&&s.refresh()}}a.PacemContextMenuItemElement=PacemContextMenuItemElement;let o=class PacemContextMenuItemCommandElement extends PacemContextMenuItemElement{};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"commandName",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"caption",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"tooltip",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"iconGlyph",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"confirmationMessage",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],o.prototype,"confirmationDialog",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],o.prototype,"commandArgument",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-context-menuitem-command"})],o),a.PacemContextMenuItemCommandElement=o;let s=class PacemContextMenuItemSeparatorElement extends PacemContextMenuItemElement{};s=__decorate([e.CustomElement({tagName:e.P+"-context-menuitem-separator"})],s),a.PacemContextMenuItemSeparatorElement=s;let i=class PacemContextMenuElement extends t.PacemItemsContainerElement{constructor(){super(...arguments),this._dispatchCommand=t=>{e.avoidHandler(t),this.dispatchEvent(new e.CommandEvent({commandName:t.detail.commandName,commandArgument:t.detail.commandArgument||this.commandArgument}))}}validate(e){return e instanceof PacemContextMenuItemElement}get _balloon(){const t=this._btns;return e.Utils.isNull(t)||e.Utils.isNullOrEmpty(t.dom)?null:this._btns.dom[0]}get _repeater(){return this._balloon?.querySelector(e.P+"-repeater")}register(e){const t=super.register(e);return t&&this._refreshRepeater(),t}unregister(e){const t=super.unregister(e);return t&&this._refreshRepeater(),t}viewActivatedCallback(){super.viewActivatedCallback(),e.Utils.isNull(this._balloon)||this._balloon.addEventListener(e.CommandEventName,this._dispatchCommand,!1)}disconnectedCallback(){e.Utils.isNull(this._balloon)||this._balloon.removeEventListener(e.CommandEventName,this._dispatchCommand,!1),super.disconnectedCallback()}refresh(){this._refreshRepeater()}_refreshRepeater(){const t=this._repeater;e.Utils.isNullOrEmpty(t)||(t.datasource=this.items.map((t=>{let a={localName:t.localName};for(let o=0;o<t.attributes.length;o++){let s=t.attributes.item(o).name,i=e.CustomElementUtils.kebabToCamel(s);a[i]=t[i]}return a})))}};__decorate([e.ViewChild(e.P+"-button")],i.prototype,"_btn",void 0),__decorate([e.ViewChild(e.P+"-shell-proxy")],i.prototype,"_btns",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],i.prototype,"commandArgument",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],i.prototype,"icon",void 0),__decorate([e.Debounce(!0)],i.prototype,"_refreshRepeater",null),i=__decorate([e.CustomElement({tagName:e.P+"-context-menu",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-button class="button-flat ${e.PCSS}-margin margin-0"><${e.P}-icon icon="{{ :host.icon || 'more_horiz' }}"></${e.P}-icon></${e.P}-button>\n<${e.P}-content></${e.P}-content>\n<${e.P}-shell-proxy>\n <${e.P}-balloon target="{{ :host._btn }}" class="${e.PCSS}-contextmenu" options="{{ { trigger: 'click', position: 'x', align: 'auto' } }}">\n <${e.P}-repeater>\n <template>\n <${e.P}-if match="{{ ^item.localName === '${e.P}-context-menuitem-command' && !^item.hide }}">\n <${e.P}-button icon-glyph="{{ ^item.iconGlyph }}" disabled="{{ ^item.disabled }}"\n on-mouseup="::_balloon.popout()" tooltip="{{ ^item.tooltip }}"\n confirmation-message="{{ ^item.confirmationMessage }}" confirmation-dialog="{{ ^item.confirmationDialog }}"\n command-name="{{ ^item.commandName }}" command-argument="{{ ^item.commandArgument }}"><${e.P}-text text="{{ ^item.caption }}"></${e.P}-text></${e.P}-button>\n </${e.P}-if>\n <${e.P}-if match="{{ ^item.localName === '${e.P}-context-menuitem-separator' && !^item.hide }}">\n <hr />\n </${e.P}-if>\n </template>\n </${e.P}-repeater>\n </${e.P}-balloon>\n</${e.P}-shell-proxy>`})],i),a.PacemContextMenuElement=i}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let o;!function(e){e.Text="text",e.Html="html",e.Image="image",e.Markdown="markdown"}(o=a.EditMode||(a.EditMode={}));let s=class PacemEditElement extends t.PacemElement{constructor(a=new e.MarkdownService){super(),this._markdown=a,this._dialogPropertyChangedHandler=e=>{this._dialogPropertyChangedCallback(e)},this._broadcastFetchRequestEventName=e=>{this.dispatchEvent(new t.Scaffolding.ImageFetchRequestEvent(e.detail))},this._innerValueChangedHandler=t=>{"value"!==t.detail.propertyName||e.Utils.isNull(this._dialog)||(this._dialog.state=t.detail.currentValue)},this._editHandler=e=>{this.edit(e)}}_addButton(){if(e.Utils.isNull(this._button)){var t=document.createElement(e.P+"-button");return t.className=e.PCSS+"-edit-button",t.addEventListener("click",this._editHandler,!1),this._target.appendChild(t),this._button=t}}_removeButton(){var t=this._button;e.Utils.isNull(t)||(t.removeEventListener("click",this._editHandler,!1),t.remove(),this._button=null)}_addDialog(){var a=document.createElement(e.P+"-dialog");return a.buttons=t.UI.DialogButtons.OkCancel,a.addEventListener(e.PropertyChangeEventName,this._dialogPropertyChangedHandler,!1),a.appendChild(this._addTextarea()),a.appendChild(this._addContenteditable()),a.appendChild(this._addEditImage()),document.body.appendChild(a),this._dialog=a}_removeDialog(){this._removeTextarea(),this._removeContenteditable(),this._removeEditImage(),e.Utils.isNull(this._dialog)||(this._dialog.removeEventListener(e.PropertyChangeEventName,this._dialogPropertyChangedHandler,!1),this._dialog.remove())}_addTextarea(){var t=document.createElement(e.P+"-textarea");t.className=e.PCSS+"-edit-text",t.addEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1);const a=this.type||o.Text;return t.hide=a!==o.Text&&a!==o.Markdown,this._textarea=t}_removeTextarea(){e.Utils.isNull(this._textarea)||this._textarea.removeEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1)}_addContenteditable(){var t=document.createElement(e.P+"-contenteditable");t.className=e.PCSS+"-edit-content",t.addEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1);const a=this.type||o.Text;return t.hide=a!==o.Html,this._contenteditable=t}_removeContenteditable(){e.Utils.isNull(this._contenteditable)||this._contenteditable.removeEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1)}_addEditImage(){var a=document.createElement(e.P+"-edit-image");a.disabled=!0,a.addEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1),a.addEventListener(t.Scaffolding.ImageFetchRequestEventName,this._broadcastFetchRequestEventName,!1);const s=this.type||o.Text;return a.hide=s!==o.Image,a.uploadUrl=this.imageUploadUrl,a.allowSnapshot=this.allowSnapshot,a.maxWidth=this.maxImageWidth,a.maxHeight=this.maxImageHeight,this._editImage=a}_removeEditImage(){e.Utils.isNull(this._editImage)||(this._editImage.removeEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1),this._editImage.removeEventListener(t.Scaffolding.ImageFetchRequestEventName,this._broadcastFetchRequestEventName,!1))}_update(t){var a=this._content;switch(this.type){case o.Html:a.innerHTML=t;break;case o.Markdown:if(a.localName===e.P+"-markdown")a.value=t;else a.innerHTML=this._markdown.toHtml(t);break;case o.Image:switch(a.localName){case"img":case e.P+"-img":a.src=t;break;default:a.style.backgroundImage=`url(${t})`}break;default:this._content.textContent=t}}_retrieve(){var t=this._content;switch(this.type){case o.Html:return t.innerHTML;case o.Image:switch(t.localName){case e.P+"-img":case"img":return t.src;default:let a=getComputedStyle(t).backgroundImage,o=/url\(["']?([^'"]+)["']?\)/.exec(a);return o&&o.length&&o[1]}case o.Markdown:return t.value||t.textContent;default:return t.textContent}}_setup(){this.disabled?(e.Utils.removeClass(this._target,e.PCSS+"-editing"),this._removeButton()):(e.Utils.addClass(this._target,e.PCSS+"-editing"),this._addButton())}_dialogPropertyChangedCallback(t){if("state"===t.detail.propertyName){const a=t.detail.currentValue;e.Utils.isNull(this._textarea)||(this._textarea.value=a),e.Utils.isNull(this._contenteditable)||(this._contenteditable.value=a),e.Utils.isNull(this._editImage)||(this._editImage.value=a),this._update(t.detail.currentValue)}}get _target(){var t=this.target;return e.Utils.isNull(t)&&(t=this.firstElementChild),t}connectedCallback(){super.connectedCallback(),this._addDialog()}viewActivatedCallback(){super.viewActivatedCallback(),this._addButton(),this._setup()}disconnectedCallback(){this._removeButton(),this._removeDialog(),super.disconnectedCallback()}propertyChangedCallback(t,a,s,i){switch(super.propertyChangedCallback(t,a,s,i),t){case"imageUploadUrl":e.Utils.isNull(this._editImage)||(this._editImage.uploadUrl=s);break;case"allowSnapshot":e.Utils.isNull(this._editImage)||(this._editImage.allowSnapshot=s);break;case"imageSet":e.Utils.isNull(this._editImage)||(this._editImage.imageSet=s);break;case"disabled":this._setup();break;case"type":const t=s;e.Utils.isNull(this._textarea)||(this._textarea.hide=t!==o.Text&&t!==o.Markdown),e.Utils.isNull(this._contenteditable)||(this._contenteditable.hide=t!==o.Html),e.Utils.isNull(this._editImage)||(this._editImage.hide=t!==o.Image);break;case"maxImageHeight":e.Utils.isNull(this._editImage)||(this._editImage.maxHeight=s);break;case"maxImageWidth":e.Utils.isNull(this._editImage)||(this._editImage.maxWidth=s)}}edit(a){e.avoidHandler(a);var o=this._target;if(!e.Utils.isNull(o)){this._removeButton(),this._content=o;var s=this._state=this._retrieve();e.Utils.isNull(this._editImage)||(this._editImage.disabled=!1),this._dialog.open(s).then((a=>{switch(a.button){case t.UI.DialogButton.Cancel:this._update(this._state);break;case t.UI.DialogButton.Ok:this._update(a.state),this.dispatchEvent(new CustomEvent("commit",{detail:{value:a.state}}))}this._content=null,e.Utils.isNull(this._editImage)||(this._editImage.disabled=!0),this._addButton()}))}}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],s.prototype,"key",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"type",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Element})],s.prototype,"target",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],s.prototype,"imageUploadUrl",void 0),__decorate([e.Watch({emit:!1})],s.prototype,"imageSet",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],s.prototype,"maxImageWidth",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],s.prototype,"maxImageHeight",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],s.prototype,"allowSnapshot",void 0),s=__decorate([e.CustomElement({tagName:e.P+"-edit"})],s),a.PacemEditElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let o=class PacemGalleryElement extends t.UI.PacemAdaptedIterativeElement{get adapter(){return this._adapter}async _heroAnimate(t,a){if(!e.Utils.isNull(t)){let o=document.createElement(e.P+"-img"),s=this._heroPlaceholderProxy.dom[0];const i=300;o.src=a||t.src,o.adapt="contain";let r=e.Utils.offset(s),n=e.Utils.offset(t),l=o.style;const d=getComputedStyle(s);l.border=d.border,l.width=s.clientWidth+"px",l.height=s.clientHeight+"px",l.position="absolute",l.zIndex=d.zIndex,l.top=r.top+"px",l.left=r.left+"px";const c=t.clientWidth/s.clientWidth,h=t.clientHeight/s.clientHeight,m=n.left-r.left+"px",p=n.top-r.top+"px";l.transformOrigin="0 0",l.transition=`transform cubic-bezier(0.445, 0.05, 0.55, 0.95) ${i}ms, opacity ${i}ms`,l.transform=`translate(${m}, ${p}) scale(${c}, ${h})`,document.body.appendChild(o),requestAnimationFrame((()=>{o.style.transform=""})),await e.Utils.waitForAnimationEnd(o,i),o.remove()}}open(e,t,a){this._poppingUp=!0,this._lightbox.show=!0,this._slideshow.index=e,this._heroAnimate(t,a).then((e=>{this._poppingUp=!1,this._slideshow.focus()}))}};__decorate([e.ViewChild(e.P+"-adapter")],o.prototype,"_adapter",void 0),__decorate([e.ViewChild(e.P+"-lightbox")],o.prototype,"_lightbox",void 0),__decorate([e.ViewChild(e.P+"-slideshow")],o.prototype,"_slideshow",void 0),__decorate([e.ViewChild(e.P+"-shell-proxy")],o.prototype,"_heroPlaceholderProxy",void 0),__decorate([e.Watch()],o.prototype,"_poppingUp",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-gallery",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-lightbox class="${e.PCSS}-gallery">\n <${e.P}-repeater datasource="{{ :host.datasource }}">\n <${e.P}-slideshow adapter="{{ ::_adapter }}" index="{{ :host.index, twoway }}">\n <template>\n <${e.P}-slide class="${e.PCSS}-gallery-item"\ncss-class="{{ { '${e.PCSS}-gallery-previous': :host.isPrevious(^index, ::_slideshow.index), '${e.PCSS}-gallery-next': :host.isNext(^index, ::_slideshow.index), '${e.PCSS}-gallery-focus': ^index === ::_slideshow.index } }}"\n>\n <${e.P}-img src="{{ ^item.image }}" disabled="{{ !(:host.isCloseTo(^index, ::_slideshow.index) || ^index === ::_slideshow.index) }}" \ncss="{{ {'visibility': (:host._poppingUp ? 'hidden' : ''), 'transition': (:host._poppingUp ? 'none' : '')} }}" class="${e.PCSS}-gallery-splash" adapt="contain"></${e.P}-img>\n <${e.P}-panel hide="{{ $pacem.isNullOrEmpty(^item.caption) }}" class="${e.PCSS}-gallery-caption">\n <${e.P}-span class="paragraph" text="{{ ^item.caption }}"></${e.P}-span>\n </${e.P}-panel>\n \n </${e.P}-slide>\n </template>\n </${e.P}-slideshow>\n </${e.P}-repeater>\n<${e.P}-adapter class="${e.PCSS}-gallery-adapter"></${e.P}-adapter>\n</${e.P}-lightbox>\n<${e.P}-shell-proxy><div class="${e.PCSS}-gallery-hero-target"></div></${e.P}-shell-proxy>`})],o),a.PacemGalleryElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){var o,s;let i=s=class PacemModalFormElement extends t.UI.PacemDialogBase{constructor(){super(),this.suddenValidation=!0,this.method=e.Net.HttpMethod.Post,o.set(this,!1),this._emitter=new e.Components.Scaffolding.FormEventEmitter(this)}viewActivatedCallback(){super.viewActivatedCallback();var t=this.querySelector(`.${e.PCSS}-lightbox`);t.appendChild(this._buttons=this.querySelector(`.${e.PCSS}-dialog-buttons`)),t.appendChild(this.querySelector(`.${e.PCSS}-dialog-heading`)),t.appendChild(this.querySelector(e.P+"-loader")),this.dispatchEvent(new e.PropertyChangeEvent({propertyName:"modalButtons",currentValue:this.modalButtons})),this._emitter.start()}disconnectedCallback(){this._emitter.stop(),super.disconnectedCallback()}_submit(a){this.readonly?this.commit(t.UI.DialogButton.Ok,a):(e.avoidHandler(a),this._form.validate().then((o=>{o&&(e.Utils.isNullOrEmpty(this.action)?this.commit(t.UI.DialogButton.Ok,a):this._form.submit(this._fetcher).then((e=>{this.commit(t.UI.DialogButton.Ok,a)}),(e=>{})))})))}_onSubmit(e){this.emit(e)}open(t,a,i=!0){if(e.Utils.isNull(t))throw`The state of a ${s} cannot be null.`;__classPrivateFieldSet(this,o,a,"f");var r=super.open(t);return i&&this._form.setPristine(),r}commit(t,a){super.commit(t,a),__classPrivateFieldGet(this,o,"f")||e.Utils.waitForAnimationEnd(this,500).then((e=>{this.state={}}))}_cancel(e){this.commit(t.UI.DialogButton.Cancel,e),this._form.reset()}_broadcast(e){this.dispatchEvent(new CustomEvent(e.type,{detail:e.detail}))}get modalButtons(){const e=this._buttons;return{ok:e&&e.firstElementChild&&e.firstElementChild.firstElementChild,cancel:e&&e.firstElementChild&&e.firstElementChild.lastElementChild}}};o=new WeakMap,__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],i.prototype,"suddenValidation",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],i.prototype,"okCaption",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],i.prototype,"cancelCaption",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],i.prototype,"method",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],i.prototype,"metadata",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],i.prototype,"action",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],i.prototype,"loaderType",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],i.prototype,"success",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],i.prototype,"fail",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],i.prototype,"readonly",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],i.prototype,"fetchHeaders",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],i.prototype,"fetchCredentials",void 0),__decorate([e.ViewChild(e.P+"-lightbox")],i.prototype,"lightbox",void 0),__decorate([e.ViewChild(e.P+"-form[entity]")],i.prototype,"_form",void 0),__decorate([e.ViewChild(e.P+"-fetch")],i.prototype,"_fetcher",void 0),i=s=__decorate([e.CustomElement({tagName:e.P+"-modal-form",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-lightbox modal="true" logger="{{ :host.logger }}"><${e.P}-form wrapper>\n <${e.P}-form logger="{{ :host.logger }}" on-submit=":host._onSubmit($event)" readonly="{{ :host.readonly }}" entity="{{ :host.state, twoway }}" on-success=":host._broadcast($event)" \n on-fail=":host._broadcast($event)" success="{{ :host.success, twoway }}" fail="{{ :host.fail, twoway }}" autogenerate="{{ !$pacem.isNull($this.entity) }}" metadata="{{ :host.metadata }}"\n fetch-headers="{{ :host.fetchHeaders }}" fetch-credentials="{{ :host.fetchCredentials }}" sudden-validation="{{ :host.suddenValidation }}"></${e.P}-form></${e.P}-form>\n <${e.P}-fetch logger="{{ :host.logger }}" method="{{ :host.method }}" headers="{{ :host.fetchHeaders }}" credentials="{{ :host.fetchCredentials }}" autofetch="false" url="{{ :host.action }}"></${e.P}-fetch> \n <div class="${e.PCSS}-dialog-buttons ${e.PCSS}-buttonset buttons">\n <div class="buttonset-left">\n <${e.P}-button on-click=":host._submit($event)" css-class="{{ {'buttonset-last': :host.readonly} }}"\n class="button primary button-size size-small" disabled="{{ :host.suddenValidation && !:host.readonly && (!(::_form.valid && ::_form.dirty) || ::_fetcher.fetching) }}"><${e.P}-text text="{{ :host.okCaption || 'OK' }}"></${e.P}-text></${e.P}-button>\n <${e.P}-button on-click=":host._cancel($event)" hide="{{ :host.readonly }}" class="button button-size size-small" disabled="{{ ::_fetcher.fetching }}"><${e.P}-text text="{{ :host.cancelCaption || 'Cancel' }}"></${e.P}-text></${e.P}-button>\n </div></div>\n <div class="${e.PCSS}-dialog-heading">\n <${e.P}-content></${e.P}-content>\n </div>\n <${e.P}-loader type="{{ :host.loaderType }}" class="${e.PCSS}-hover loader-primary loader-small" active="{{ ::_fetcher.fetching }}"></${e.P}-loader>\n</${e.P}-lightbox>`})],i),a.PacemModalFormElement=i}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){var o;let s=class RisolutoHashStateElement extends t.PacemEventTarget{constructor(){super(...arguments),this.default={},this.state={},this.normalizedState={},o.set(this,void 0),this._routerNavigatingHandler=e=>{__classPrivateFieldSet(this,o,!0,"f")},this._routerNavigateHandler=e=>{__classPrivateFieldSet(this,o,!1,"f"),this._updateStateFromURI()}}viewActivatedCallback(){super.viewActivatedCallback(),this._updateStateFromURI(),this._setupRouterHandlers(this.router)}propertyChangedCallback(e,t,a,s){switch(super.propertyChangedCallback(e,t,a,s),e){case"state":s||__classPrivateFieldGet(this,o,"f")||(this._updateNormalizedState(),this._updateURIFromState());break;case"disabled":a&&this._updateStateFromURI();break;case"default":this._updateStateFromURI();break;case"router":s||(this._disposeRouterHandlers(t),this._setupRouterHandlers(a))}}disconnectedCallback(){this._disposeRouterHandlers(),super.disconnectedCallback()}_setupRouterHandlers(t=this.router){e.Utils.isNull(t)||(window.addEventListener("navigating",this._routerNavigatingHandler,!1),window.addEventListener("navigate",this._routerNavigateHandler,!1))}_disposeRouterHandlers(t=this.router){e.Utils.isNull(t)||(window.removeEventListener("navigating",this._routerNavigatingHandler,!1),window.removeEventListener("navigate",this._routerNavigateHandler,!1))}_currentBasePath(){const t=this.router;if(!e.Utils.isNull(t)){const e=t.state.$querystring;return this._normalizePath(document.location.pathname,e)}return null}_normalizePath(t,a){return e.Utils.isNullOrEmpty(t)?t:(t.endsWith("/")&&(t=t.substring(0,t.length-1)),a??="",t+(a.length>0?"?"+a:""))}_areStatesEquivalent(t,a){const o=e.Utils.extend({},t||{}),s=e.Utils.extend({},a||{});for(let e in o){if(!this._areSubstantiallyEquivalent(o[e],s[e]))return!1;delete o[e],delete s[e]}for(let e in s)if(!this._areSubstantiallyEquivalent(o[e],s[e]))return!1;return!0}_updateNormalizedState(e=this.state){if(this.disabled||__classPrivateFieldGet(this,o,"f"))return;const t=this._normalizeState(e);this._areStatesEquivalent(t,this.normalizedState)||(this.normalizedState=t)}_updateStateFromURI(){if(this.disabled||__classPrivateFieldGet(this,o,"f"))return;var t=e.Utils.extend({},this.default||{});const a=this.router;if(!e.Utils.isNull(a)){const o=this._denormalizeState(e.Utils.URIs.parseQuery(a.state&&a.state.$hash||"{}"));e.Utils.extend(t,o)}this._areStatesEquivalent(this.state,t)||(this.state=t)}_updateURIFromState(t=this.normalizedState){if(this.disabled||__classPrivateFieldGet(this,o,"f"))return;const a=this.router;if(!e.Utils.isNull(a)){const o=this._currentBasePath(),i=e.Utils.URIs.parseQuery(a.state.$hash||"{}"),r=t||{};if(!this._areStatesEquivalent(i,r)){const t=this._cleanupStateForURI(r);var s=o;e.Utils.isNullOrEmpty(t)||(s=e.Utils.URIs.appendQuery(o,t,!1,!0)),a.path=s}}}_areSubstantiallyEquivalent(t,a){return t??="",a??="",t.toString()==a.toString()||e.Utils.areSemanticallyEqual(t,a)||JSON.stringify(t)===JSON.stringify(a)}_cleanupStateForURI(t=this.state){const a=e.Utils.clone(t||{}),o=this.default;for(let t in a)(e.Utils.isNullOrEmpty(a[t])&&(e.Utils.isNull(o)||!(t in o))||!e.Utils.isNull(o)&&t in o&&this._areSubstantiallyEquivalent(o[t],a[t]))&&delete a[t];return a}_normalizeState(t=this.state,a=this.default){var o={};const s=a;for(let a in t||{}){const i=t[a];if(e.Utils.isNullOrEmpty(i))e.Utils.isNull(s)||!(a in s)||e.Utils.isNullOrEmpty(s[a])||(o[a]="");else switch(typeof i){case"number":case"bigint":case"boolean":Object.defineProperty(o,a,{enumerable:!0,value:i.toString()});break;case"symbol":case"string":Object.defineProperty(o,a,{enumerable:!0,value:i});break;default:if(e.Utils.Dates.isDate(i))Object.defineProperty(o,a,{enumerable:!0,value:i.toISOString()});else{if(!(i instanceof RegExp))throw new Error("Type not supported to be normalized into a URI hash.");Object.defineProperty(o,a,{enumerable:!0,value:i.source})}}}return o}_denormalizeState(t=this.normalizedState,a=this.default){const o={},s=a||{};for(let a in t){if(!(a in s)){o[a]=t[a];continue}const i=s[a],r=t[a];switch(typeof i){case"boolean":Object.defineProperty(o,a,{enumerable:!0,value:e.PropertyConverters.Boolean.convert(r)});break;case"number":case"bigint":Object.defineProperty(o,a,{enumerable:!0,value:e.PropertyConverters.Number.convert(r)});break;case"symbol":case"string":Object.defineProperty(o,a,{enumerable:!0,value:e.PropertyConverters.String.convert(r)});break;default:i instanceof Date?Object.defineProperty(o,a,{enumerable:!0,value:e.PropertyConverters.Date.convert(r)}):i instanceof RegExp?Object.defineProperty(o,a,{enumerable:!0,value:new RegExp(r,i.flags)}):Object.defineProperty(o,a,{enumerable:!0,value:r})}}return o}set(t,a){var o={};"string"==typeof t?Object.defineProperty(o,t,{enumerable:!0,value:a}):o=t,this.state=e.Utils.extend({},this.state||{},o)}};o=new WeakMap,__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],s.prototype,"router",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],s.prototype,"default",void 0),__decorate([e.Watch()],s.prototype,"state",void 0),__decorate([e.Watch()],s.prototype,"normalizedState",void 0),s=__decorate([e.CustomElement({tagName:e.P+"-router-hash-state"})],s),a.RisolutoHashStateElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let o=class PacemSearchElement extends t.PacemElement{constructor(){super(...arguments),this.hintParameter="q"}propertyChangedCallback(e,t,a,o){if(super.propertyChangedCallback(e,t,a,o),"hint"===e){let e={};e[this.hintParameter]=a,this._fetcher.parameters=e}}};__decorate([e.ViewChild(e.P+"-fetch")],o.prototype,"_fetcher",void 0),__decorate([e.Watch()],o.prototype,"datasource",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"hint",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"url",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"method",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"hintParameter",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-search",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-fetch debounce="800" url="{{ :host.url }}" method="{{ :host.method }}">\n</${e.P}-fetch><${e.P}-input-search value="{{ :host.hint, twoway }}"></${e.P}-input-search>\n<${e.P}-repeater datasource="{{ ::_fetch.result }}">\n <${e.P}-content></${e.P}-content>\n</${e.P}-repeater>`})],o),a.PacemSearchElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){class PacemBaseCellElement extends t.PacemSafeContentElement{viewActivatedCallback(){super.viewActivatedCallback(),this.updateColumnPosition(),this.updateLayout(this.metadata)}updateColumnPosition(e=this.metadata,t=this.gridState){this.style.gridColumn=(t.orderedColumns.indexOf(e.prop)+1).toString()}updateVisibility(e=this.state){this.hide=!!e.hidden}propertyChangedCallback(e,t,a,o){if(super.propertyChangedCallback(e,t,a,o),!o)switch(e){case"metadata":this.updateLayout(a);break;case"gridState":this.updateColumnPosition();break;case"state":this.updateVisibility()}}}__decorate([e.Watch({converter:e.PropertyConverters.Json})],PacemBaseCellElement.prototype,"metadata",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],PacemBaseCellElement.prototype,"state",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],PacemBaseCellElement.prototype,"gridState",void 0),a.PacemBaseCellElement=PacemBaseCellElement}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){var a;let o=class PacemDataCellElement extends t.PacemBaseCellElement{constructor(){super(...arguments),a.set(this,void 0)}updateLayout(e=this.metadata){this._setup(e)}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-datacell")}propertyChangedCallback(e,t,a,o){super.propertyChangedCallback(e,t,a,o),o||"content"!==e||this._updateTooltipJustInCase()}_updateTooltipJustInCase(){(this.metadata.dataCell?.autoTooltip??!0)&&!e.Utils.isNullOrEmpty(__classPrivateFieldGet(this,a,"f"))?this.tooltip=__classPrivateFieldGet(this,a,"f"):this.tooltip=""}_inflateContent(t,o,s=this.metadata){const i=t[s.prop],r=s.dataCell?.null??"";if(e.Utils.isNullOrEmpty(i))return r;__classPrivateFieldSet(this,a,"","f");let n=s.dataCell?.format;if("function"==typeof n){const a=n(this,s,t,o);if(e.Utils.isNullOrEmpty(a))return r;if("string"==typeof a)return a;const i=new HTMLDivElement;return i.append(a),i.innerHTML}const l=e.Utils.lang(this);switch(s.dataType){case"boolean":return`<${e.P}-icon icon="material ${i?"check_circle_outline":"radio_button_unchecked"} text-big-steady"></${e.P}-icon>`;case"time":case"date":case"datetime":return __classPrivateFieldSet(this,a,e.Utils.core.date(i,n,l),"f");case"byte":case"int16":case"int32":case"int64":case"short":case"integer":case"int":case"long":case"double":case"decimal":case"float":case"single":case"number":return __classPrivateFieldSet(this,a,e.Utils.core.number(i,n||"",l),"f");case"currency":return n??="EUR",__classPrivateFieldSet(this,a,"string"==typeof n?e.Utils.core.currency(i,n,l):e.Utils.core.number(i,n,l),"f");case"percent":case"percentage":return n??={style:"percent",maximumFractionDigits:2},__classPrivateFieldSet(this,a,"string"==typeof n?e.Utils.core.currency(i,n,l):e.Utils.core.number(i,n,l),"f");default:return __classPrivateFieldSet(this,a,i,"f")}}_setup(t=this.metadata){switch(t.dataCell?.textEllipsis&&e.Utils.addClass(this,"datacell-truncate"),this.setAttribute("css-class","{{ this.metadata && this.metadata.dataCell && this.metadata.dataCell.cssClass || [] }}"),this.setAttribute("css","{{ Pacem.Utils.extend({ 'grid-row': ^index+2 }, this.metadata && this.metadata.dataCell && this.metadata.dataCell.css || {}) }}"),t.dataCell?.verticalAlign?.toLowerCase()){case"top":e.Utils.addClass(this,"datacell-top");break;case"bottom":e.Utils.addClass(this,"datacell-bottom");break;case"middle":e.Utils.addClass(this,"datacell-middle")}switch(t.dataCell?.horizontalAlign?.toLowerCase()){case"left":e.Utils.addClass(this,"datacell-left");break;case"right":e.Utils.addClass(this,"datacell-right");break;case"center":e.Utils.addClass(this,"datacell-center")}this.setAttribute("content","{{ this._inflateContent(^item, ^index, this.metadata) }}")}};a=new WeakMap,o=__decorate([e.CustomElement({tagName:e.P+"-datacell"})],o),t.PacemDataCellElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){const o="datacolumnchange",s="datacolumnstatechange",i={selectCaption:"Details",editCaption:"Edit",editIcon:"edit",deleteCaption:"Delete",deleteIcon:"delete"};let r=class PacemDataColumnElement extends t.PacemItemElement{propertyChangedCallback(e,t,a,i){if(super.propertyChangedCallback(e,t,a,i),!i)switch(e){case"field":case"headcellCss":case"headcellCssClass":case"datacellCss":case"datacellCssClass":case"resizable":case"togglable":case"sortable":case"label":this.dispatchEvent(new Event(o));break;case"order":case"hide":this.dispatchEvent(new Event(s))}}};function n(t){return`<${e.P}-headcell metadata="${JSON.stringify(t).replaceAll('"',""")}" state="{{ :host._columnState.${t.prop} }}" grid-state="{{ :host._gridState }}" on-${a.DataColumnSortEventName}=":host._broadcastSortCommand($event)"></${e.P}-headcell>`}function l(t){return`<${e.P}-datacell metadata="${JSON.stringify(t).replaceAll('"',""")}" state="{{ :host._columnState.${t.prop} }}" grid-state="{{ :host._gridState }}"></${e.P}-datacell>`}__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],r.prototype,"field",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],r.prototype,"label",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],r.prototype,"resizable",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],r.prototype,"togglable",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],r.prototype,"sortable",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],r.prototype,"order",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],r.prototype,"format",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],r.prototype,"headcellCss",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],r.prototype,"headcellCssClass",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],r.prototype,"datacellCss",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],r.prototype,"datacellCssClass",void 0),r=__decorate([e.CustomElement({tagName:e.P+"-datacolumn"})],r),a.PacemDataColumnElement=r;let d=class PacemDataGridElement extends t.PacemItemsContainerElement{constructor(t=e.Utils.uniqueCode()){super(),this._key=t,this._rowState={},this._columnState={},this._gridState={sort:{},orderedColumns:[]},this._itemDataColumnRebuildHandler=e=>{this._adaptColumnMetadata(this.items||[])},this._itemDataColumnChangeHandler=e=>{this._adaptColumnMetadata(this.items||[])}}validate(e){return e instanceof r}viewActivatedCallback(){super.viewActivatedCallback();const e=this._adaptedColumnMetadata||[];this._buildUpGrid(e)}propertyChangedCallback(e,t,a,o){if(super.propertyChangedCallback(e,t,a,o),!o)switch(e){case"items":case"metadata":this._adaptColumnMetadata();break;case"_adaptedColumnMetadata":this._buildUpGrid(a);break;case"datasource":this._rowState={}}}register(e){return!!super.register(e)&&(e.addEventListener(o,this._itemDataColumnRebuildHandler,!1),e.addEventListener(s,this._itemDataColumnChangeHandler,!1),!0)}unregister(e){return!!super.unregister(e)&&(e.removeEventListener(o,this._itemDataColumnRebuildHandler,!1),e.removeEventListener(s,this._itemDataColumnChangeHandler,!1),!0)}_adaptColumnMetadata(e=this.items,t=this.metadata){const a=Array.prototype.concat.apply((e||[]).map((e=>({prop:e.field,headCell:{name:e.label,cssClass:e.headcellCssClass||[],css:e.headcellCss||{}},dataCell:{format:e.format,cssClass:e.datacellCssClass||[],css:e.datacellCss||{}},hide:e.hide,isResizable:e.resizable,isSortable:e.sortable,isTogglable:e.togglable,order:e.order,width:1}))),t||[]);this._adaptedColumnMetadata=a}_buildUpGrid(t){const a=this._tableContainer;if(e.Utils.isNull(a))return;if(e.Utils.isNullOrEmpty(t))return void(a.innerHTML="");const o=e.Utils.extend({},i,this.options||{}),s=o.allowDelete||o.allowEdit||o.allowSelect,r=o.allowMultiSelect&&s;let d=r?"auto ":"",c=r?`<div class="${e.PCSS}-headcell"></div>`:"",h=r?`<${e.P}-panel class="${e.PCSS}-datacell" style="grid-column: 1;" css="{{ {'grid-row': ^index+2} }}"></${e.P}-panel>`:"",m=r?`<div class="${e.PCSS}-footcell"></div>`:"";const p=r?t.length+2:s?t.length+1:t.length;this._gridState.orderedColumns=t.sort(((e,t)=>(e.order??0)-(t.order??0))).map((e=>e.prop));for(let e of t)this._columnState[e.prop]={hidden:e.hide},d+=this._getColumnSize(e)+" ",c+=n(e),h+=l(e);h+=`<${e.P}-panel class="${e.PCSS}-datarow" css-class="{{ {'datarow-alt': ^index % 2 === 1} }}" style="grid-column: 1 /span ${p};" css="{{ {'grid-row': ^index+2} }}"></${e.P}-panel>`;const u=`<${e.P}-repeater datasource="{{ :host.datasource }}">\n<div class="${e.PCSS}-datatable" style="grid-template-columns: ${d.trimEnd()}">\n ${c}\n <template>\n ${h}\n </template>\n ${m}\n</div>`;a.innerHTML=u}_getColumnSize(e){const t=e.minPixelWidth,a=e.maxPixelWidth;if(a>0&&t>0)return`minmax(${t}px, ${a}px)`;{const o="number"==typeof e.width?e.width+"fr":"auto";return t>0?`minmax(${t}px, ${o})`:a>0?`minmax(${o}, ${a}px)`:o}}_broadcastSortCommand(t){const o=t.detail;this.dispatchEvent(new a.DataColumnSortEvent(o)),this._gridState=e.Utils.extend({},this._gridState,{sort:o})}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],d.prototype,"metadata",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],d.prototype,"options",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],d.prototype,"datasource",void 0),__decorate([e.ViewChild("."+e.PCSS+"-datagrid")],d.prototype,"_tableContainer",void 0),__decorate([e.Watch()],d.prototype,"_adaptedColumnMetadata",void 0),__decorate([e.Watch()],d.prototype,"_rowState",void 0),__decorate([e.Watch()],d.prototype,"_columnState",void 0),__decorate([e.Watch()],d.prototype,"_gridState",void 0),__decorate([e.Debounce()],d.prototype,"_adaptColumnMetadata",null),d=__decorate([e.CustomElement({tagName:e.P+"-datagrid",shadow:!1,template:`<div class="${e.PCSS}-datagrid"></div><${e.P}-content></${e.P}-content>`})],d),a.PacemDataGridElement=d}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){a.DataColumnSortEventName="datacolumnsort";class DataColumnSortEvent extends CustomEvent{constructor(e){super(a.DataColumnSortEventName,{detail:e,bubbles:!1,cancelable:!1})}}a.DataColumnSortEvent=DataColumnSortEvent;let o=class PacemHeadCellElement extends a.PacemBaseCellElement{constructor(t=new e.MarkdownService){super(),this._md=t,this._sortButtonClickHandler=e=>{const t=this.metadata,a=this.gridState,o=t.prop,s=a.sort?.column===o?"desc"===a.sort.dir?"asc":"desc":t.defaultSort||"asc";this.dispatchEvent(new DataColumnSortEvent({column:o,dir:s}))}}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-headcell")}propertyChangedCallback(e,t,a,o){super.propertyChangedCallback(e,t,a,o),o||"gridState"!==e||this._updateSortButtonIconGlyph()}viewActivatedCallback(){super.viewActivatedCallback(),this._ensureBalloon()}disconnectedCallback(){e.Utils.isNull(this._balloon)||this._balloon.remove(),super.disconnectedCallback()}updateLayout(e=this.metadata){this._setup(e)}_setupSortButton(t=this.metadata){const a=new e.Components.UI.PacemButtonElement;return a.className="button-flat headcell-button-sort display-flex flex-middle",a.addEventListener("click",this._sortButtonClickHandler,!1),a.textContent=this._getColumnTitle(t),a}_disposeSortButton(t=this._sortButton){e.Utils.isNull(t)||(t.removeEventListener("click",this._sortButtonClickHandler,!1),t.remove(),this._sortButton=null)}_getColumnTitle(e=this.metadata){return e.headCell?.name??e.prop}_updateSortButtonIconGlyph(t=this._sortButton,a=this.gridState,o=this.metadata){e.Utils.isNull(t)||e.Utils.isNullOrEmpty(o)||(t.iconGlyph=a?.sort?.column===o.prop?"desc"===a.sort.dir?"arrow_drop_down":"arrow_drop_up":"")}_setup(t=this.metadata){switch(t.headCell?.textEllipsis&&e.Utils.addClass(this,"headcell-truncate"),this.setAttribute("css-class","{{ this.metadata && this.metadata.headCell && this.metadata.headCell.cssClass || [] }}"),this.setAttribute("css","{{ this.metadata && this.metadata.headCell && this.metadata.headCell.css }}"),t.headCell?.verticalAlign?.toLowerCase()){case"top":e.Utils.addClass(this,"headcell-top");break;case"bottom":e.Utils.addClass(this,"headcell-bottom");break;case"middle":e.Utils.addClass(this,"headcell-middle")}switch(t.headCell?.horizontalAlign?.toLowerCase()){case"left":e.Utils.addClass(this,"headcell-left");break;case"right":e.Utils.addClass(this,"headcell-right");break;case"center":e.Utils.addClass(this,"headcell-center")}if(t.isSortable){this.removeAttribute("content"),this._disposeSortButton(),this.innerHTML="";const e=this._sortButton=this._setupSortButton(t);this._updateSortButtonIconGlyph(e),this.appendChild(e)}else this.setAttribute("content",this._getColumnTitle(t));t.isResizable}_normalizeTooltip(){const e=this.metadata.headCell?.tooltip||!1;return"object"==typeof e?e:{type:e}}_ensureBalloon(){var a,o;const s=!1===(o=this._normalizeTooltip()).type||e.Utils.isNullOrEmpty(a=this.metadata.headCell?.description);if(e.Utils.isNull(this._balloon)&&!s){let a=new e.Components.UI.PacemBalloonElement;a.options={behavior:t.UI.BalloonBehavior.Tooltip,trigger:o.trigger||t.UI.BalloonTrigger.Hover,position:o.position||t.UI.BalloonPosition.Top,hoverDelay:200,hoverTimeout:50,align:o.align||t.UI.BalloonAlignment.Auto},e.Utils.addClass(a,e.PCSS+"-headcell-tooltip"),e.CustomElementUtils.findAncestorShell(this).appendChild(this._balloon=a)}const i=this._balloon;if(!(e.Utils.isNull(i)||(i.target=this,i.disabled=s))){const e=a||"";switch(o.type){case"md":case"markdown":i.innerHTML=this._md.toHtml(e);break;case"html":i.innerHTML=e;break;default:i.innerText=e}}}};o=__decorate([e.CustomElement({tagName:e.P+"-headcell"})],o),a.PacemHeadCellElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={}));
|
package/dist/js/pacem-ui.d.ts
CHANGED
package/dist/js/pacem-ui.js
CHANGED
package/dist/js/pacem-ui.min.js
CHANGED
package/package.json
CHANGED