pacem 0.20.0-harran → 0.20.0-jericho

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/css/pacem-dark-content.min.css +1 -1
  2. package/dist/css/pacem-dark-shell.min.css +1 -1
  3. package/dist/css/pacem-dark.min.css +1 -1
  4. package/dist/css/pacem-light-content.min.css +1 -1
  5. package/dist/css/pacem-light-shell.min.css +1 -1
  6. package/dist/css/pacem-light.min.css +1 -1
  7. package/dist/css/pacem-phousys-content.min.css +1 -1
  8. package/dist/css/pacem-phousys-shell.min.css +1 -1
  9. package/dist/css/pacem-phousys.min.css +1 -1
  10. package/dist/js/azure-maps.d.ts +1 -1
  11. package/dist/js/pacem-2d.d.ts +1 -1
  12. package/dist/js/pacem-2d.js +1 -1
  13. package/dist/js/pacem-2d.min.js +1 -1
  14. package/dist/js/pacem-3d.d.ts +1 -1
  15. package/dist/js/pacem-3d.js +1 -1
  16. package/dist/js/pacem-3d.min.js +1 -1
  17. package/dist/js/pacem-charts.d.ts +1 -1
  18. package/dist/js/pacem-charts.js +1 -1
  19. package/dist/js/pacem-charts.min.js +1 -1
  20. package/dist/js/pacem-cms.d.ts +1 -1
  21. package/dist/js/pacem-cms.js +1 -1
  22. package/dist/js/pacem-cms.min.js +1 -1
  23. package/dist/js/pacem-core.d.ts +1 -1
  24. package/dist/js/pacem-core.js +1 -1
  25. package/dist/js/pacem-core.min.js +1 -1
  26. package/dist/js/pacem-foundation.d.ts +1 -1
  27. package/dist/js/pacem-foundation.js +1 -1
  28. package/dist/js/pacem-foundation.min.js +1 -1
  29. package/dist/js/pacem-fx.d.ts +1 -1
  30. package/dist/js/pacem-fx.js +1 -1
  31. package/dist/js/pacem-fx.min.js +1 -1
  32. package/dist/js/pacem-logging.d.ts +1 -1
  33. package/dist/js/pacem-logging.js +1 -1
  34. package/dist/js/pacem-logging.min.js +1 -1
  35. package/dist/js/pacem-maps.d.ts +1 -1
  36. package/dist/js/pacem-maps.js +1 -1
  37. package/dist/js/pacem-maps.min.js +1 -1
  38. package/dist/js/pacem-networking.js +1 -1
  39. package/dist/js/pacem-networking.min.js +1 -1
  40. package/dist/js/pacem-numerical.d.ts +1 -1
  41. package/dist/js/pacem-numerical.js +1 -1
  42. package/dist/js/pacem-numerical.min.js +1 -1
  43. package/dist/js/pacem-plus.d.ts +9 -4
  44. package/dist/js/pacem-plus.js +70 -37
  45. package/dist/js/pacem-plus.min.js +2 -2
  46. package/dist/js/pacem-scaffolding.d.ts +1 -1
  47. package/dist/js/pacem-scaffolding.js +1 -1
  48. package/dist/js/pacem-scaffolding.min.js +1 -1
  49. package/dist/js/pacem-ui.d.ts +1 -1
  50. package/dist/js/pacem-ui.js +1 -1
  51. package/dist/js/pacem-ui.min.js +1 -1
  52. package/dist/js/swagger-types.d.ts +1 -1
  53. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -170,11 +170,16 @@ declare namespace Pacem.Components.Plus {
170
170
  viewActivatedCallback(): void;
171
171
  propertyChangedCallback(name: string, old: any, val: any, first?: boolean): void;
172
172
  disconnectedCallback(): void;
173
- private _initState;
174
- private _routerStateChangeHandler;
173
+ private _setupRouterHandlers;
174
+ private _disposeRouterHandlers;
175
+ private _routerNavigatingHandler;
176
+ private _routerNavigateHandler;
175
177
  private _currentBasePath;
176
178
  private _normalizePath;
177
- private _persistHashState;
179
+ private _areStatesEquivalent;
180
+ private _updateStateFromURI;
181
+ private _updateURIFromState;
182
+ set(key: string, value: any): void;
178
183
  }
179
184
  }
180
185
  declare namespace Pacem.Components.Plus {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -834,48 +834,61 @@ var Pacem;
834
834
  (function (Components) {
835
835
  var Plus;
836
836
  (function (Plus) {
837
- var _RisolutoHashStateElement_previousPath;
837
+ var _RisolutoHashStateElement_locked;
838
838
  let RisolutoHashStateElement = class RisolutoHashStateElement extends Components.PacemEventTarget {
839
839
  constructor() {
840
840
  super(...arguments);
841
841
  this.state = {};
842
- _RisolutoHashStateElement_previousPath.set(this, void 0);
843
- this._routerStateChangeHandler = (evt) => {
844
- const name = evt.detail.propertyName;
845
- if (name === 'state') {
846
- this._initState();
847
- }
842
+ _RisolutoHashStateElement_locked.set(this, void 0);
843
+ this._routerNavigatingHandler = (_) => {
844
+ __classPrivateFieldSet(this, _RisolutoHashStateElement_locked, true, "f");
845
+ };
846
+ this._routerNavigateHandler = (_) => {
847
+ __classPrivateFieldSet(this, _RisolutoHashStateElement_locked, false, "f");
848
+ this._updateStateFromURI();
848
849
  };
849
850
  }
850
851
  viewActivatedCallback() {
851
852
  super.viewActivatedCallback();
852
- this._initState();
853
- const router = this.router;
854
- if (!Pacem.Utils.isNull(router)) {
855
- router.addEventListener(Pacem.PropertyChangeEventName, this._routerStateChangeHandler, false);
856
- }
853
+ this._updateStateFromURI();
854
+ this._setupRouterHandlers(this.router);
857
855
  }
858
856
  propertyChangedCallback(name, old, val, first) {
859
857
  super.propertyChangedCallback(name, old, val, first);
860
- if (name === 'state' && !first) {
861
- this._persistHashState();
858
+ switch (name) {
859
+ case 'state':
860
+ if (!first) {
861
+ this._updateURIFromState();
862
+ }
863
+ break;
864
+ case 'disabled':
865
+ if (!!val) {
866
+ this._updateStateFromURI();
867
+ }
868
+ break;
869
+ case 'router':
870
+ if (!first) {
871
+ this._disposeRouterHandlers(old);
872
+ this._setupRouterHandlers(val);
873
+ }
874
+ break;
862
875
  }
863
876
  }
864
877
  disconnectedCallback() {
865
- const router = this.router;
878
+ this._disposeRouterHandlers();
879
+ super.disconnectedCallback();
880
+ }
881
+ _setupRouterHandlers(router = this.router) {
866
882
  if (!Pacem.Utils.isNull(router)) {
867
- router.removeEventListener(Pacem.PropertyChangeEventName, this._routerStateChangeHandler, false);
883
+ window.addEventListener('navigating', this._routerNavigatingHandler, false);
884
+ window.addEventListener('navigate', this._routerNavigateHandler, false);
868
885
  }
869
- super.disconnectedCallback();
870
886
  }
871
- _initState() {
872
- var state = {};
873
- const router = this.router;
887
+ _disposeRouterHandlers(router = this.router) {
874
888
  if (!Pacem.Utils.isNull(router)) {
875
- __classPrivateFieldSet(this, _RisolutoHashStateElement_previousPath, this._currentBasePath(), "f");
876
- Pacem.Utils.extend(state, Pacem.Utils.URIs.parseQuery(router.state && router.state.$hash || '{}'));
889
+ window.removeEventListener('navigating', this._routerNavigatingHandler, false);
890
+ window.removeEventListener('navigate', this._routerNavigateHandler, false);
877
891
  }
878
- this.state = state;
879
892
  }
880
893
  _currentBasePath() {
881
894
  const router = this.router;
@@ -895,25 +908,45 @@ var Pacem;
895
908
  q !== null && q !== void 0 ? q : (q = '');
896
909
  return path + (q.length > 0 ? ('?' + q) : '');
897
910
  }
898
- _persistHashState(state = this.state) {
911
+ _areStatesEquivalent(s1, s2) {
912
+ const state1 = s1 || {}, state2 = s2 || {};
913
+ return Pacem.Utils.jsonSortStringify(state1) === Pacem.Utils.jsonSortStringify(state2);
914
+ }
915
+ _updateStateFromURI() {
916
+ if (this.disabled || __classPrivateFieldGet(this, _RisolutoHashStateElement_locked, "f")) {
917
+ return;
918
+ }
919
+ var state = {};
899
920
  const router = this.router;
900
921
  if (!Pacem.Utils.isNull(router)) {
901
- const actual = this._currentBasePath(), compare = this._normalizePath(router.state.$pathname, router.state.$querystring);
902
- if (compare === actual) {
903
- // set hash and navigate only if still in the 'current' page
904
- // avoid reenter while navigating away
905
- const currentState = Pacem.Utils.URIs.parseQuery(router.state.$hash || '{}'), targetState = state || {};
906
- if (Pacem.Utils.jsonSortStringify(currentState) != Pacem.Utils.jsonSortStringify(targetState)) {
907
- // checked state equivalence to avoid superfluous navigation
908
- const url = Pacem.Utils.URIs.appendQuery(__classPrivateFieldGet(this, _RisolutoHashStateElement_previousPath, "f"), state, false, true);
909
- // console.log(url);
910
- router.path = url;
911
- }
922
+ Pacem.Utils.extend(state, Pacem.Utils.URIs.parseQuery(router.state && router.state.$hash || '{}'));
923
+ }
924
+ if (!this._areStatesEquivalent(this.state, state)) {
925
+ this.state = state;
926
+ }
927
+ }
928
+ _updateURIFromState(state = this.state) {
929
+ if (this.disabled || __classPrivateFieldGet(this, _RisolutoHashStateElement_locked, "f")) {
930
+ return;
931
+ }
932
+ const router = this.router;
933
+ if (!Pacem.Utils.isNull(router)) {
934
+ const actual = this._currentBasePath();
935
+ const currentState = Pacem.Utils.URIs.parseQuery(router.state.$hash || '{}'), targetState = state || {};
936
+ if (!this._areStatesEquivalent(currentState, targetState)) {
937
+ // checked state equivalence to avoid superfluous navigation
938
+ const url = Pacem.Utils.URIs.appendQuery(actual, state, false, true);
939
+ // navigate
940
+ router.path = url;
912
941
  }
913
942
  }
914
943
  }
944
+ set(key, value) {
945
+ const obj = Object.defineProperty({}, key, { enumerable: true, value });
946
+ this.state = Pacem.Utils.extend({}, this.state || {}, obj);
947
+ }
915
948
  };
916
- _RisolutoHashStateElement_previousPath = new WeakMap();
949
+ _RisolutoHashStateElement_locked = new WeakMap();
917
950
  __decorate([
918
951
  Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.Element })
919
952
  ], RisolutoHashStateElement.prototype, "router", void 0);
@@ -1,6 +1,6 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 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,n=arguments.length,i=n<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 s=e.length-1;s>=0;s--)(r=e[s])&&(i=(n<3?r(i):n>3?r(t,a,i):r(t,a))||i);return n>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 n&&r.refresh()}}__decorate([e.Watch({converter:e.PropertyConverters.String})],PacemContextMenuItemElement.prototype,"iconGlyph",void 0),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),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 n=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(){return 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(),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,n=e.CustomElementUtils.kebabToCamel(r);a[n]=t[n]}return a})))}};__decorate([e.ViewChild(e.P+"-button")],n.prototype,"_btn",void 0),__decorate([e.ViewChild(e.P+"-shell-proxy")],n.prototype,"_btns",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],n.prototype,"commandArgument",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],n.prototype,"icon",void 0),__decorate([e.Debounce(!0)],n.prototype,"_refreshRepeater",null),n=__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' }}">\n <${e.P}-button icon-glyph="{{ ^item.iconGlyph }}" hide="{{ ^item.hide }}" 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 }}"><${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>`})],n),a.PacemContextMenuElement=n}(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:switch(a.localName){case e.P+"-markdown":a.value=t;break;default: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,n){switch(super.propertyChangedCallback(t,a,r,n),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 n=300;o.src=a||t.src,o.adapt="contain";let i=e.Utils.offset(r),s=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=s.left-i.left+"px",p=s.top-i.top+"px";l.transformOrigin="0 0",l.transition=`transform cubic-bezier(0.445, 0.05, 0.55, 0.95) ${n}ms, opacity ${n}ms`,l.transform=`translate(${m}, ${p}) scale(${c}, ${h})`,document.body.appendChild(o),requestAnimationFrame((()=>{o.style.transform=""})),await e.Utils.waitForAnimationEnd(o,n),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 n=r=class PacemModalFormElement extends t.UI.PacemDialogBase{constructor(){super(),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),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,n=!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 n&&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})],n.prototype,"suddenValidation",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],n.prototype,"okCaption",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],n.prototype,"cancelCaption",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],n.prototype,"method",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],n.prototype,"metadata",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],n.prototype,"action",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],n.prototype,"loaderType",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],n.prototype,"success",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],n.prototype,"fail",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],n.prototype,"readonly",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],n.prototype,"fetchHeaders",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],n.prototype,"fetchCredentials",void 0),__decorate([e.ViewChild(e.P+"-lightbox")],n.prototype,"lightbox",void 0),__decorate([e.ViewChild(e.P+"-form[entity]")],n.prototype,"_form",void 0),__decorate([e.ViewChild(e.P+"-fetch")],n.prototype,"_fetcher",void 0),n=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.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 <${e.P}-panel class="${e.PCSS}-dialog-heading">\n <${e.P}-content></${e.P}-content>\n </${e.P}-panel>\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>`})],n),a.PacemModalFormElement=n}(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.state={},o.set(this,void 0),this._routerStateChangeHandler=e=>{"state"===e.detail.propertyName&&this._initState()}}viewActivatedCallback(){super.viewActivatedCallback(),this._initState();const t=this.router;e.Utils.isNull(t)||t.addEventListener(e.PropertyChangeEventName,this._routerStateChangeHandler,!1)}propertyChangedCallback(e,t,a,o){super.propertyChangedCallback(e,t,a,o),"state"!==e||o||this._persistHashState()}disconnectedCallback(){const t=this.router;e.Utils.isNull(t)||t.removeEventListener(e.PropertyChangeEventName,this._routerStateChangeHandler,!1),super.disconnectedCallback()}_initState(){var t={};const a=this.router;e.Utils.isNull(a)||(__classPrivateFieldSet(this,o,this._currentBasePath(),"f"),e.Utils.extend(t,e.Utils.URIs.parseQuery(a.state&&a.state.$hash||"{}"))),this.state=t}_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)),null!=a||(a=""),t+(a.length>0?"?"+a:""))}_persistHashState(t=this.state){const a=this.router;if(!e.Utils.isNull(a)){const r=this._currentBasePath();if(this._normalizePath(a.state.$pathname,a.state.$querystring)===r){const r=e.Utils.URIs.parseQuery(a.state.$hash||"{}"),n=t||{};if(e.Utils.jsonSortStringify(r)!=e.Utils.jsonSortStringify(n)){const r=e.Utils.URIs.appendQuery(__classPrivateFieldGet(this,o,"f"),t,!1,!0);a.path=r}}}}};o=new WeakMap,__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],r.prototype,"router",void 0),__decorate([e.Watch()],r.prototype,"state",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={}));
6
+ var Pacem,__decorate=this&&this.__decorate||function(e,t,a,o){var r,i=arguments.length,n=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,a):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,a,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(n=(i<3?r(n):i>3?r(t,a,n):r(t,a))||n);return i>3&&n&&Object.defineProperty(t,a,n),n},__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 i&&r.refresh()}}__decorate([e.Watch({converter:e.PropertyConverters.String})],PacemContextMenuItemElement.prototype,"iconGlyph",void 0),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),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 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(){return 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(),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,i=e.CustomElementUtils.kebabToCamel(r);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' }}">\n <${e.P}-button icon-glyph="{{ ^item.iconGlyph }}" hide="{{ ^item.hide }}" 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 }}"><${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 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:switch(a.localName){case e.P+"-markdown":a.value=t;break;default: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,i){switch(super.propertyChangedCallback(t,a,r,i),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 i=300;o.src=a||t.src,o.adapt="contain";let n=e.Utils.offset(r),s=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=n.top+"px",l.left=n.left+"px";const c=t.clientWidth/r.clientWidth,h=t.clientHeight/r.clientHeight,m=s.left-n.left+"px",p=s.top-n.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,r;let i=r=class PacemModalFormElement extends t.UI.PacemDialogBase{constructor(){super(),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),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 ${r} cannot be null.`;__classPrivateFieldSet(this,o,a,"f");var n=super.open(t);return i&&this._form.setPristine(),n}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=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.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 <${e.P}-panel class="${e.PCSS}-dialog-heading">\n <${e.P}-content></${e.P}-content>\n </${e.P}-panel>\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 r=class RisolutoHashStateElement extends t.PacemEventTarget{constructor(){super(...arguments),this.state={},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,o){switch(super.propertyChangedCallback(e,t,a,o),e){case"state":o||this._updateURIFromState();break;case"disabled":a&&this._updateStateFromURI();break;case"router":o||(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)),null!=a||(a=""),t+(a.length>0?"?"+a:""))}_areStatesEquivalent(t,a){const o=t||{},r=a||{};return e.Utils.jsonSortStringify(o)===e.Utils.jsonSortStringify(r)}_updateStateFromURI(){if(this.disabled||__classPrivateFieldGet(this,o,"f"))return;var t={};const a=this.router;e.Utils.isNull(a)||e.Utils.extend(t,e.Utils.URIs.parseQuery(a.state&&a.state.$hash||"{}")),this._areStatesEquivalent(this.state,t)||(this.state=t)}_updateURIFromState(t=this.state){if(this.disabled||__classPrivateFieldGet(this,o,"f"))return;const a=this.router;if(!e.Utils.isNull(a)){const o=this._currentBasePath(),r=e.Utils.URIs.parseQuery(a.state.$hash||"{}"),i=t||{};if(!this._areStatesEquivalent(r,i)){const r=e.Utils.URIs.appendQuery(o,t,!1,!0);a.path=r}}}set(t,a){const o=Object.defineProperty({},t,{enumerable:!0,value:a});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()],r.prototype,"state",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={}));
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.20.0-harran (https://js.pacem.it)
2
+ * pacem v0.20.0-jericho (https://js.pacem.it)
3
3
  * Copyright 2021 Pacem (https://pacem.it)
4
4
  * Licensed under MIT
5
5
  */
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.20.0-harran",
2
+ "version": "0.20.0-jericho",
3
3
  "name": "pacem",
4
4
  "homepage": "https://js.pacem.it",
5
5
  "repository": {