pacem 0.53.0-stevin → 0.53.0

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 (57) 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 +2 -1
  13. package/dist/js/pacem-2d.min.js +2 -2
  14. package/dist/js/pacem-3d.d.ts +29 -1
  15. package/dist/js/pacem-3d.js +58 -24
  16. package/dist/js/pacem-3d.min.js +2 -2
  17. package/dist/js/pacem-charts.d.ts +1 -1
  18. package/dist/js/pacem-charts.js +2 -1
  19. package/dist/js/pacem-charts.min.js +2 -2
  20. package/dist/js/pacem-cms.d.ts +1 -1
  21. package/dist/js/pacem-cms.js +2 -1
  22. package/dist/js/pacem-cms.min.js +2 -2
  23. package/dist/js/pacem-core.d.ts +1 -1
  24. package/dist/js/pacem-core.js +2 -1
  25. package/dist/js/pacem-core.min.js +2 -2
  26. package/dist/js/pacem-foundation.d.ts +1 -1
  27. package/dist/js/pacem-foundation.js +2 -1
  28. package/dist/js/pacem-foundation.min.js +2 -2
  29. package/dist/js/pacem-fx.d.ts +1 -1
  30. package/dist/js/pacem-fx.js +2 -1
  31. package/dist/js/pacem-fx.min.js +2 -2
  32. package/dist/js/pacem-logging.d.ts +1 -1
  33. package/dist/js/pacem-logging.js +2 -1
  34. package/dist/js/pacem-logging.min.js +2 -2
  35. package/dist/js/pacem-maps.d.ts +1 -1
  36. package/dist/js/pacem-maps.js +2 -1
  37. package/dist/js/pacem-maps.min.js +2 -2
  38. package/dist/js/pacem-media.d.ts +1 -1
  39. package/dist/js/pacem-media.js +2 -1
  40. package/dist/js/pacem-media.min.js +2 -2
  41. package/dist/js/pacem-networking.d.ts +1 -1
  42. package/dist/js/pacem-networking.js +2 -1
  43. package/dist/js/pacem-networking.min.js +2 -2
  44. package/dist/js/pacem-numerical.d.ts +1 -1
  45. package/dist/js/pacem-numerical.js +2 -1
  46. package/dist/js/pacem-numerical.min.js +2 -2
  47. package/dist/js/pacem-plus.d.ts +1 -1
  48. package/dist/js/pacem-plus.js +2 -1
  49. package/dist/js/pacem-plus.min.js +2 -2
  50. package/dist/js/pacem-scaffolding.d.ts +1 -1
  51. package/dist/js/pacem-scaffolding.js +11 -1
  52. package/dist/js/pacem-scaffolding.min.js +2 -2
  53. package/dist/js/pacem-ui.d.ts +1 -1
  54. package/dist/js/pacem-ui.js +2 -1
  55. package/dist/js/pacem-ui.min.js +2 -2
  56. package/dist/js/swagger-types.d.ts +1 -1
  57. package/package.json +8 -9
@@ -1,6 +1,6 @@
1
1
  /**
2
- * pacem v0.53.0-stevin (https://js.pacem.it)
2
+ * pacem v0.53.0 (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
- var Pacem;!function(t){!function(e){!function(e){class Vector{static unit(t){const e={x:t.x,y:t.y};return this.normalize(e),e}static magSqr(t){return t.x*t.x+t.y*t.y}static mag(t){return Math.sqrt(Vector.magSqr(t))}static normalize(t){const e=Vector.mag(t);if(e<=0)throw"Cannot normalize a vector of length 0.";const r=1/e;t.x*=r,t.y*=r}static from(e,r){return t.Point.subtract(e,r)}static dot(t,e){return t.x*e.x+t.y*e.y}static cross(t,e){return t.x*e.y-t.y*e.x}static areClose(t,e){return(e.x-t.x).isCloseTo(0)&&(e.y-t.y).isCloseTo(0)}}e.Vector=Vector}(e.LinearAlgebra||(e.LinearAlgebra={}))}(t.Geometry||(t.Geometry={}))}(Pacem||(Pacem={})),function(t){!function(e){const r=180/Math.PI,n=2*Math.PI,s=e.LinearAlgebra.Vector;function a(e){return t.Point.isPoint(e)}e.Utils=class Utils{static slopeRad(t,e){return Math.atan2(e.y-t.y,e.x-t.x)}static slopeRad2(t,e){return(n+this.slopeRad(t,e))%n}static slopeDeg(t,e){return this.slopeRad(t,e)*r}static slopeDeg2(t,e){return(360+this.slopeDeg(t,e))%360}static intersect(t,e,...r){return Array.isArray(t)&&Array.isArray(e)?this._intersectSegments(t,e,!0):this._intersectRects.apply(this,arguments)}static intersectLines(t,e,r,n){let s,a;if(Array.isArray(t)&&Array.isArray(e)&&2===t.length&&2===e.length&&"number"==typeof t[0]&&"number"==typeof e[0]&&"number"==typeof t[1]&&"number"==typeof e[1]&&(r=e[0],n=e[1],e=t[1],t=t[0]),"number"==typeof t&&"number"==typeof e){s=[{x:0,y:e},{x:1,y:t+e}],a=[{x:0,y:n},{x:1,y:r+n}]}else s=t,a=e;return this._intersectSegments(s,a,!1)}static cramer(t,e){Array.isArray(t)&&(t={a:t[0],b:t[1],c:t[2]}),Array.isArray(e)&&(e={a:e[0],b:e[1],c:e[2]});let r=(t.b*e.c-t.c*e.b)/(t.b*e.a-t.a*e.b),n=(t.c*e.a-t.a*e.c)/(t.b*e.a-t.a*e.b);return{x:-r.roundoff(),y:-n.roundoff()}}static mq(t,e){let r;if(a(t)?r=t:(r=t[0],e=t[1]),r.x===e.x)return[Number.NaN,Number.NaN];const n=(e.y-r.y)/(e.x-r.x);return[n,r.y-n*r.x]}static _intersectSegments(t,e,r){const n=t[0],s=t[1],a=e[0],o=e[1],i=Math.min(n.x,s.x),m=Math.min(n.y,s.y),c=Math.max(n.x,s.x),f=c-i,u=Math.max(n.y,s.y),l=u-m,h=Math.min(a.x,o.x),y=Math.min(a.y,o.y),x=Math.max(a.x,o.x),g=x-h,M=Math.max(a.y,o.y),p=M-y;if(0===f&&0===g)return null;if(0===l&&0===p)return null;const d=t=>t.x<h||t.x>x||t.x<i||t.x>c,b=t=>t.y<y||t.y>M||t.y<m||t.y>u;var z=null;if(0===f){if(r&&(h>i||x<c))return null;const t=this.mq(a,o);z=this.cramer([1,0,-i],[t[0],-1,t[1]]),r&&b(z)&&(z=null)}else if(0===g){if(r&&(i>h||c<x))return null;const t=this.mq(n,s);z=this.cramer([t[0],-1,t[1]],[1,0,-h]),r&&b(z)&&(z=null)}else if(0===l){if(r&&(y>m||M<u))return null;const t=this.mq(a,o);z=this.cramer([0,1,-m],[t[0],-1,t[1]]),r&&d(z)&&(z=null)}else if(0===p){if(r&&(m>y||u<M))return null;const t=this.mq(n,s);z=this.cramer([t[0],-1,t[1]],[0,1,-y]),r&&d(z)&&(z=null)}else{let t;if(!r||(t=this._intersectRects({x:i,y:m,width:f,height:l},{x:h,y:y,width:g,height:p}))&&t.width>0&&t.height>0){const e=this.mq(n,s),i=this.mq(a,o),m=e[0],c=i[0],f=e[1],u=i[1];if(m!==c){let e=(z=this.cramer([m,-1,f],[c,-1,u])).x,n=z.y;r&&(e<t.x||e>t.x+t.width||n<t.y||n>t.y+t.height)&&(z=null)}}}return null===z?null:{x:z.x,y:z.y}}static _intersectRects(...e){return t.Rect.intersect.apply(this,e)}static dot(t,e){return s.dot(t,e)}static cross(t,e){return s.cross(t,e)}static distance(e,r){if(null!=(n=e)&&Array.isArray(n)&&2===n.length&&a(n[0])&&a(n[1]))return t.Point.distance(e[0],e[1]);if(a(r))return t.Point.distance(e,r);{const t=r[0],n=r[1];return Math.abs(t*e.x-e.y+n)/Math.sqrt(Math.pow(t,2)+1)}var n}static inLine(t,e){const r=s.from(e[0],t),n=s.from(t,e[1]);return this.cross(r,n).isCloseTo(0)}static inSegment(t,e){const r=Math.min(e[0].x,e[1].x),n=Math.max(e[0].x,e[1].x),s=Math.min(e[0].y,e[1].y),a=Math.max(e[0].y,e[1].y);return t.x>=r&&t.x<=n&&t.y>=s&&t.y<=a&&this.inLine(t,e)}static inTriangle(e,r){let n;for(let s=0;s<3;s++){const a=r[s],o=r[(s+1)%3],i=t.Point.subtract(o,e),m=t.Point.subtract(a,e),c=this.cross(i,m);if(s>0&&c*n<=0)return!1;n=c}return!0}static inPolygon(t,e,r){if(!(e?.length>=3))throw"Not enough vertices";const n=e.length;if(3===n)return this.inTriangle(t,[e[0],e[1],e[2]]);r>0&&(e=e.map(t=>({x:t.x.roundoff(r),y:t.y.roundoff(r)})),t={x:t.x.roundoff(r),y:t.y.roundoff(r)});let s=Number.MAX_VALUE,a=Number.MAX_VALUE,o=Number.MIN_VALUE,i=Number.MIN_VALUE;for(let t=0;t<n;t++){const r=e[t];s=Math.min(s,r.x),a=Math.min(a,r.y),o=Math.max(o,r.x),i=Math.max(i,r.y)}if(t.x<s||t.x>o||t.y<a||t.y>i)return!1;const m=[{x:s-1,y:t.y},t];let c=0;for(let r=0;r<n;r++){const s=e[r],a=e[(r+1)%n],o=[s,a];if(s.y===t.y){const o=e[(r-1+n)%n];t.x>s.x&&(o.y-t.y)*(a.y-t.y)<0&&c++}else{if(a.y===t.y)continue;null!=this.intersect(o,m)&&c++}}return c%2==1}static area(t,...e){const r=[].concat(t).concat(e);let n=0;const s=r.length;if(s>=3){for(let t=0;t<r.length;t++){const{x:e,y:a}=r[t],o=t===s-1?0:t+1,{x:i,y:m}=r[o];n+=e*m-a*i}n*=.5}return Math.abs(n.roundoff())}static convexHull(t,...e){const r=[].concat(t).concat(e);if(!(r?.length>1))return r?.slice()??[];const n=r.map(t=>({x:t.x,y:t.y})).sort((t,e)=>t.x===e.x?t.y-e.y:t.x-e.x),s=[];for(const t of n){const e=s[s.length-1];e&&e.x===t.x&&e.y===t.y||s.push(t)}if(s.length<=2)return s;const a=(t,e,r)=>(e.x-t.x)*(r.y-t.y)-(e.y-t.y)*(r.x-t.x),o=[];for(const t of s){for(;o.length>=2&&a(o[o.length-2],o[o.length-1],t)<=0;)o.pop();o.push(t)}const i=[];for(let t=s.length-1;t>=0;t--){const e=s[t];for(;i.length>=2&&a(i[i.length-2],i[i.length-1],e)<=0;)i.pop();i.push(e)}return o.pop(),i.pop(),o.concat(i)}}}(t.Geometry||(t.Geometry={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){const r=180/Math.PI,n=1/r;class Vector3D{static from(...t){if(3!==t.length)throw new RangeError("Must provide exactly 3 numbers");return{x:t[0],y:t[1],z:t[2]}}static parse(e){const r=t.parseAsNumericalArray(e);if(r&&3===r.length)return Vector3D.from.apply(null,r);throw new Error(`Cannot parse "${e}" as a valid Vector3D.`)}static i(){return{x:1,y:0,z:0}}static j(){return{x:0,y:1,z:0}}static k(){return{x:0,y:0,z:1}}static zero(){return{x:0,y:0,z:0}}static subtract(t,e){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}static add(...t){var e={x:0,y:0,z:0};for(var r of t)e.x+=r.x,e.y+=r.y,e.z+=r.z;return e}static dot(t,e){return t.x*e.x+t.y*e.y+t.z*e.z}static cross(t,e){return{x:t.y*e.z-t.z*e.y,y:t.z*e.x-t.x*e.z,z:t.x*e.y-t.y*e.x}}static scale(t,e,r=e,n=e){return{x:t.x*e,y:t.y*r,z:t.z*n}}static magSqr(t){return t.x*t.x+t.y*t.y+t.z*t.z}static areClose(t,e){return(e.x-t.x).isCloseTo(0)&&(e.y-t.y).isCloseTo(0)&&(e.z-t.z).isCloseTo(0)}static mag(t){return Math.sqrt(Vector3D.magSqr(t))}static negate(t){return{x:-t.x,y:-t.y,z:-t.z}}static unit(t){const e={x:t.x,y:t.y,z:t.z};return this.normalize(e),e}static normalize(t){const e=Vector3D.mag(t);if(e<=0)throw"Cannot normalize a vector of length 0.";const r=1/e;t.x*=r,t.y*=r,t.z*=r}static angleBetween(t,e){let n;const s=Vector3D.unit(t),a=Vector3D.unit(e);if(Vector3D.dot(s,a)<0){const t={x:-s.x-a.x,y:-s.y-a.y,z:-s.z-a.z},e=Vector3D.mag(t);n=Math.PI-2*Math.asin(e/2)}else{const t={x:s.x-a.x,y:s.y-a.y,z:s.z-a.z},e=Vector3D.mag(t);n=2*Math.asin(e/2)}return r*n}}e.Vector3D=Vector3D;class Spherical{static from(t,e,r){return{rho:t.clamp(0,1/0),theta:e.clamp(-180,180),phi:r.clamp(0,360)}}static fromVector(t,e,n){"number"==typeof t&&(t=Vector3D.from(t,e,n));const s=Vector3D.mag(t);if(s.isCloseTo(0))return Spherical.from(0,0,0);const a=Math.atan2(t.x,t.z),o=Math.acos((t.y/s).clamp(-1,1));return Spherical.from(s,a*r,o*r)}static toVector(t){const{rho:e,theta:r,phi:s}=t,a=s*n,o=r*n,i=Math.sin(a)*e;return{x:i*Math.sin(o),y:Math.cos(a)*e,z:i*Math.cos(o)}}static toRotationMatrix(t){const{theta:e,phi:r}=t,s=n*e,a=Math.sin(s),o=Math.cos(s),i=n*r,m=Math.sin(i),c=Math.cos(i);return Matrix3D.from(a*c,a*m,o,0,o*c,o*m,-a,0,-m,c,0,0,0,0,0,1)}}e.Spherical=Spherical;class Matrix3DUtils{static modify(t,e){const{m11:r,m12:n,m13:s,m14:a,m21:o,m22:i,m23:m,m24:c,m31:f,m32:u,m33:l,m34:h,offsetX:y,offsetY:x,offsetZ:g,m44:M}=t,p={m11:r,m12:n,m13:s,m14:a,m21:o,m22:i,m23:m,m24:c,m31:f,m32:u,m33:l,m34:h,offsetX:y,offsetY:x,offsetZ:g,m44:M};return e(p),p}static clone(t){return Matrix3DUtils.modify(t,t=>{})}static multiply(t,e){return Matrix3D.isIdentity(t)?e:Matrix3D.isIdentity(e)?t:Matrix3D.from(t.m11*e.m11+t.m12*e.m21+t.m13*e.m31+t.m14*e.offsetX,t.m11*e.m12+t.m12*e.m22+t.m13*e.m32+t.m14*e.offsetY,t.m11*e.m13+t.m12*e.m23+t.m13*e.m33+t.m14*e.offsetZ,t.m11*e.m14+t.m12*e.m24+t.m13*e.m34+t.m14*e.m44,t.m21*e.m11+t.m22*e.m21+t.m23*e.m31+t.m24*e.offsetX,t.m21*e.m12+t.m22*e.m22+t.m23*e.m32+t.m24*e.offsetY,t.m21*e.m13+t.m22*e.m23+t.m23*e.m33+t.m24*e.offsetZ,t.m21*e.m14+t.m22*e.m24+t.m23*e.m34+t.m24*e.m44,t.m31*e.m11+t.m32*e.m21+t.m33*e.m31+t.m34*e.offsetX,t.m31*e.m12+t.m32*e.m22+t.m33*e.m32+t.m34*e.offsetY,t.m31*e.m13+t.m32*e.m23+t.m33*e.m33+t.m34*e.offsetZ,t.m31*e.m14+t.m32*e.m24+t.m33*e.m34+t.m34*e.m44,t.offsetX*e.m11+t.offsetY*e.m21+t.offsetZ*e.m31+t.m44*e.offsetX,t.offsetX*e.m12+t.offsetY*e.m22+t.offsetZ*e.m32+t.m44*e.offsetY,t.offsetX*e.m13+t.offsetY*e.m23+t.offsetZ*e.m33+t.m44*e.offsetZ,t.offsetX*e.m14+t.offsetY*e.m24+t.offsetZ*e.m34+t.m44*e.m44)}}class Matrix3D{static identity(){return{m11:1,m12:0,m13:0,m14:0,m21:0,m22:1,m23:0,m24:0,m31:0,m32:0,m33:1,m34:0,offsetX:0,offsetY:0,offsetZ:0,m44:1}}static from(...t){if(16!==t.length)throw new RangeError("Must provide exactly 16 numbers");return{m11:t[0],m12:t[1],m13:t[2],m14:t[3],m21:t[4],m22:t[5],m23:t[6],m24:t[7],m31:t[8],m32:t[9],m33:t[10],m34:t[11],offsetX:t[12],offsetY:t[13],offsetZ:t[14],m44:t[15]}}static transpose(t){return Matrix3D.from(t.m11,t.m21,t.m31,t.offsetX,t.m12,t.m22,t.m32,t.offsetY,t.m13,t.m23,t.m33,t.offsetZ,t.m14,t.m24,t.m34,t.m44)}static toArray(t){return[t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.offsetX,t.offsetY,t.offsetZ,t.m44]}static clone(t,e){return"function"==typeof e?Matrix3DUtils.modify(t,e):Matrix3DUtils.clone(t)}static scale(t,e,r,n){return"number"==typeof e?(r??=e,n??=e):(n=e.z,r=e.y,e=e.x),Matrix3DUtils.modify(t,t=>{t.m11*=e,t.m22*=r,t.m33*=n})}static translate(t,e){return Matrix3DUtils.modify(t,t=>{t.offsetX+=e.x,t.offsetY+=e.y,t.offsetZ+=e.z})}static parse(e){const r=t.parseAsNumericalArray(e);if(r&&16===r.length)return Matrix3D.from.apply(null,r);throw new Error(`Cannot parse "${e}" as a valid Matrix3D.`)}static isIdentity(t){return 1==t.m11&&0==t.m12&&0==t.m13&&0==t.m14&&0==t.m21&&1==t.m22&&0==t.m23&&0==t.m24&&0==t.m31&&0==t.m32&&1==t.m33&&0==t.m34&&0==t.offsetX&&0==t.offsetY&&0==t.offsetZ&&1==t.m44}static isAffine(t){return 0==t.m14&&0==t.m24&&0==t.m34&&1==t.m44}static determinant(t){if(Matrix3D.isIdentity(t))return 1;if(Matrix3D.isAffine(t))return t.m11*(t.m22*t.m33-t.m32*t.m23)-t.m12*(t.m21*t.m33-t.m31*t.m23)+t.m13*(t.m21*t.m32-t.m31*t.m22);{const e=t.m13*t.m24-t.m23*t.m14,r=t.m13*t.m34-t.m33*t.m14,n=t.m13*t.m44-t.offsetZ*t.m14,s=t.m23*t.m34-t.m33*t.m24,a=t.m23*t.m44-t.offsetZ*t.m24,o=t.m33*t.m44-t.offsetZ*t.m34,i=t.m22*r-t.m32*e-t.m12*s,m=t.m12*a-t.m22*n+t.offsetY*e,c=t.m32*n-t.offsetY*r-t.m12*o,f=t.m22*o-t.m32*a+t.offsetY*s;return t.offsetX*i+t.m31*m+t.m21*c+t.m11*f}}static multiply(...t){if(0===t.length)throw new ReferenceError("Matrix not provided.");const e=Array.from(t);let r=e[0];for(let t=1;t<e.length;t++)r=Matrix3DUtils.multiply(r,e[t]);return r}static invert(t){if(Matrix3D.isAffine(t)){const e=Matrix3D.determinant(t);if(0==e)return null;const r=t.m12*t.m23-t.m22*t.m13,n=t.m32*t.m13-t.m12*t.m33,s=t.m22*t.m33-t.m32*t.m23,a=t.m21*t.m13-t.m11*t.m23,o=t.m11*t.m33-t.m31*t.m13,i=t.m31*t.m23-t.m21*t.m33,m=t.m11*t.m22-t.m21*t.m12,c=t.m11*t.m32-t.m31*t.m12,f=t.m11*t.offsetY-t.offsetX*t.m12,u=t.m21*t.m32-t.m31*t.m22,l=t.m21*t.offsetY-t.offsetX*t.m22,h=t.m31*t.offsetY-t.offsetX*t.m32,y=t.m23*f-t.offsetZ*m-t.m13*l,x=t.m13*h-t.m33*f+t.offsetZ*c,g=t.m33*l-t.offsetZ*u-t.m23*h,M=m,p=-c,d=u,b=1/e;return Matrix3D.from(s*b,n*b,r*b,0,i*b,o*b,a*b,0,d*b,p*b,M*b,0,g*b,x*b,y*b,1)}{const e=Matrix3D.determinant(t);if(0==e)return null;const r=t.m33*t.m44-t.m34*t.offsetZ,n=t.m32*t.m44-t.m34*t.offsetY,s=t.m31*t.m44-t.m34*t.offsetX,a=t.m32*t.offsetZ-t.m33*t.offsetY,o=t.m31*t.offsetZ-t.m33*t.offsetX,i=t.m31*t.offsetY-t.m32*t.offsetX,m=t.m33*t.m44-t.m34*t.offsetZ,c=t.m32*t.m44-t.m34*t.offsetY,f=t.m31*t.m44-t.m34*t.offsetX,u=t.m32*t.offsetZ-t.m33*t.offsetY,l=t.m31*t.offsetZ-t.m33*t.offsetX,h=t.m31*t.offsetY-t.m32*t.offsetX,y=t.m23*t.m44-t.m24*t.offsetZ,x=t.m22*t.m44-t.m24*t.offsetY,g=t.m21*t.m44-t.m24*t.offsetX,M=t.m22*t.offsetZ-t.m23*t.offsetY,p=t.m21*t.offsetZ-t.m23*t.offsetX,d=t.m21*t.offsetY-t.m22*t.offsetX,b=t.m23*t.m34-t.m24*t.m33,z=t.m22*t.m34-t.m24*t.m32,w=t.m21*t.m34-t.m24*t.m31,A=t.m22*t.m33-t.m23*t.m32,v=t.m21*t.m33-t.m23*t.m31,D=t.m21*t.m32-t.m22*t.m31,N=t.m22*r-t.m23*n+t.m24*a,P=-(t.m21*r-t.m23*s+t.m24*o),C=t.m21*n-t.m22*s+t.m24*i,V=-(t.m21*a-t.m22*o+t.m23*i),X=-(t.m12*m-t.m13*c+t.m14*u),q=t.m11*m-t.m13*f+t.m14*l,U=-(t.m11*c-t.m12*f+t.m14*h),Y=t.m11*u-t.m12*l+t.m13*h,Z=t.m12*y-t.m13*x+t.m14*M,S=-(t.m11*y-t.m13*g+t.m14*p),L=t.m11*x-t.m12*g+t.m14*d,E=-(t.m11*M-t.m12*p+t.m13*d),Q=-(t.m12*b-t.m13*z+t.m14*A),T=t.m11*b-t.m13*w+t.m14*v,I=-(t.m11*z-t.m12*w+t.m14*D),R=t.m11*A-t.m12*v+t.m13*D,_=1/e;return Matrix3D.from(N*_,X*_,Z*_,Q*_,P*_,q*_,S*_,T*_,C*_,U*_,L*_,I*_,V*_,Y*_,E*_,R*_)}}static transform(t,e){var r={x:t.x,y:t.y,z:t.z};if(!Matrix3D.isIdentity(e)){var n=r.x,s=r.y,a=r.z;if(r.x=n*e.m11+s*e.m21+a*e.m31+e.offsetX,r.y=n*e.m12+s*e.m22+a*e.m32+e.offsetY,r.z=n*e.m13+s*e.m23+a*e.m33+e.offsetZ,!Matrix3D.isAffine(e)){var o=n*e.m14+s*e.m24+a*e.m34+e.m44;0!=o&&(r.x/=o,r.y/=o,r.z/=o)}}return r}}e.Matrix3D=Matrix3D;class Quaternion{static identity(){return Quaternion.from(0,0,0,1)}static from(...t){if(4!==t.length)throw new RangeError("Must provide exactly 4 numbers");return{x:t[0],y:t[1],z:t[2],w:t[3]}}static parse(e){const r=t.parseAsNumericalArray(e);if(r&&4===r.length)return Quaternion.from.apply(null,r);throw new Error(`Cannot parse "${e}" as a valid Quaternion.`)}static fromVectors(t,e){Vector3D.normalize(t),Vector3D.normalize(e);const r=(t,e,r,n)=>{const s=Quaternion.from(t,e,r,n);return Quaternion.normalize(s),s};let n=Vector3D.dot(t,e)+1;return n.isCloseTo(0)?Math.abs(t.x)>Math.abs(t.z)?r(-t.y,t.x,0,0):r(0,-t.z,t.y,0):r(t.y*e.z-t.z*e.y,t.z*e.x-t.x*e.z,t.x*e.y-t.y*e.x,n)}static normalize(t){const e=Quaternion.mag(t);if(e.isCloseTo(0))t.x=t.y=t.z=0,t.w=1;else{const r=1/e;t.x*=r,t.y*=r,t.z*=r,t.w*=r}}static unit(t){const e=Quaternion.from(t.x,t.y,t.z,t.w);return Quaternion.normalize(e),e}static fromAxisAngle(t,e){var r=n*(e%=360),s=Vector3D.mag(t);if(0==s)throw new RangeError("Invalid argument");var a=Math.sin(.5*r)/s,o=t.x*a,i=t.y*a,m=t.z*a;return Quaternion.from(o,i,m,Math.cos(.5*r))}static fromRotationMatrix(t){const e=t.m11+t.m22+t.m33+t.m44;if(e>0){const r=.5/Math.sqrt(e),n=.25/r,s=(t.m23-t.m32)*r,a=(t.m31-t.m13)*r,o=(t.m12-t.m21)*r;return Quaternion.from(s,a,o,n)}if(t.m11>t.m22&&t.m11>t.m22){const e=.5/Math.sqrt(t.m44+t.m11-t.m22-t.m33),r=(t.m23-t.m32)*e,n=.25/e,s=(t.m12+t.m21)*e,a=(t.m31+t.m13)*e;return Quaternion.from(n,s,a,r)}if(t.m22>t.m33){const e=.5/Math.sqrt(t.m44+t.m22-t.m11-t.m33),r=(t.m23+t.m32)*e,n=.25/e,s=(t.m12+t.m21)*e,a=(t.m31-t.m13)*e;return Quaternion.from(s,n,r,a)}{const e=.5/Math.sqrt(t.m44+t.m33-t.m11-t.m22),r=(t.m23+t.m32)*e,n=.25/e,s=(t.m12-t.m21)*e,a=(t.m31-t.m13)*e;return Quaternion.from(a,r,n,s)}}static conjugate(t){return Quaternion.from(-t.x,-t.y,-t.z,t.w)}static mag(t){return Math.sqrt(t.x*t.x+t.y*t.y+t.z*t.z+t.w*t.w)}static norm(t){return t.x*t.x+t.y*t.y+t.z*t.z}static axis(t){return 0==t.x&&0==t.y&&0==t.z?Vector3D.j():Vector3D.unit(t)}static transform(t,e){Quaternion.normalize(e);const r=Vector3D.cross(e,t),n=Vector3D.scale(r,2),s=Vector3D.cross(e,n);return{x:t.x+e.w*n.x+s.x,y:t.y+e.w*n.y+s.y,z:t.z+e.w*n.z+s.z}}static angle(t){let e=Math.sqrt(t.x*t.x+t.y*t.y+t.z*t.z),r=t.w;if(e>Number.MAX_VALUE){const n=Math.max(Math.abs(t.x),Math.max(Math.abs(t.y),Math.abs(t.z))),s=t.x/n,a=t.y/n,o=t.z/n;e=Math.sqrt(s*s+a*a+o*o),r/=n}return 114.59155902616465*Math.atan2(e,r)}static toRotationMatrix(t){var e=Matrix3D.identity(),r=t.x,n=t.y,s=t.z,a=t.w;return e.m11=1-2*n*n-2*s*s,e.m12=2*r*n+2*a*s,e.m13=2*r*s-2*a*n,e.m21=2*r*n-2*a*s,e.m22=1-2*r*r-2*s*s,e.m23=2*n*s+2*a*r,e.m31=2*a*n+2*r*s,e.m32=2*n*s-2*a*r,e.m33=1-2*r*r-2*n*n,e}static invert(t){const e=Quaternion.unit(t);return Quaternion.conjugate(e)}static multiply(t,e){return Quaternion.from(t.w*e.x+t.x+e.w+t.y*e.z-t.z*e.y,t.w*e.y-t.x*e.z+t.y*e.w+t.z*e.x,t.w*e.z+t.x*e.y-t.y*e.x+t.z*e.w,t.w*e.w-t.x*e.x-t.y*e.y-t.z*e.z)}static dot(t,e){return Quaternion.multiply(t,Quaternion.conjugate(e)).w}}e.Quaternion=Quaternion}(e.LinearAlgebra||(e.LinearAlgebra={}))}(t.Geometry||(t.Geometry={}))}(Pacem||(Pacem={})),function(t){!function(e){const r=t.Geometry.LinearAlgebra.Vector3D;t.Geometry.LinearAlgebra.Matrix3D;e.Utils3D=class Utils3D{static intersect(t,e){const[n,s]=t,a=r.subtract(n,s),[o,i,m]=e,c=r.subtract(o,i),f=r.subtract(o,m),u=r.cross(a,f),l=r.dot(c,u);if(l.isCloseTo(0))return null;const h=1/l,y=r.subtract(n,o),x=h*r.dot(y,u);if(x<0||x>1)return null;const g=r.cross(y,c),M=h*r.dot(a,g);if(M<0||x+M>1)return null;const p=h*r.dot(f,g);return p<0||p.isCloseTo(0)?null:r.add(n,r.scale(a,p))}}}(t.Geometry||(t.Geometry={}))}(Pacem||(Pacem={})),function(t){!function(e){class Polygon{static isPolygon(e){return function(e){let r;return"vertices"in e&&Array.isArray(e.vertices)&&(r=e.vertices).length>=3&&r.every(e=>t.Point.isPoint(e))}(e)}static from(...t){return{vertices:Array.from(t)}}static contains(t,r){return e.Utils.inPolygon(r,t.vertices,12)}static centroid(t){const e=Polygon.boundingBox(t);return{x:e.x+e.width/2,y:e.y+e.height/2}}static boundingBox(t){let e=Number.MAX_VALUE,r=Number.MAX_VALUE,n=-Number.MAX_VALUE,s=-Number.MAX_VALUE;const{vertices:a}=t;a.length;for(let t of a)e=Math.min(e,t.x),r=Math.min(r,t.y),n=Math.max(n,t.x),s=Math.max(s,t.y);return{x:e,y:r,width:n-e,height:s-r}}static sides(t){const{vertices:e}=t,r=[];for(let t=1;t<=e.length;t++){const n=e[t%e.length],s=e[t-1];r.push([s,n])}return r}static isConvex(e){const{vertices:r}=e,n=r.length;if(n<=3)return!0;let s=0;for(let e=0;e<r.length;e++){const a=r[(e-1+n)%n],o=r[e],i=r[(e+1)%n],m=t.Angle.angleBetween(o,a,i);if(0!==s){if(s!=Math.sign(m))return!1}else s=Math.sign(m)}return!0}static isSelfIntersecting(r){const{vertices:n}=r;if(n.length<=3)return!1;const s=Polygon.sides(r);for(let r of s)for(let n of s){if(n===r||n[0]===r[1]||r[0]===n[1])continue;const s=e.Utils.intersect(n,r);if(!t.NullChecker.isNull(s))return!0}return!1}static isCounterClockwise(e){const{vertices:[r,n,s]}=e;return t.Angle.angleBetween(n,r,s)>0}static expand(r,n){const{vertices:s}=r,a=s.length,o=[];for(let r=0;r<s.length;r++){const i=s[(r-1+a)%a],m=s[r],c=s[(r+1)%a],f=t.Angle.angleBetween(m,i,c),u=-n/Math.sin(Math.abs(f)/2),l=t.Matrix2D.scale(t.Matrix2D.identity,u),h=t.Point.subtract(m,i);e.LinearAlgebra.Vector.normalize(h);const y=t.Point.subtract(m,c);e.LinearAlgebra.Vector.normalize(y);const x=t.Point.add(h,y);e.LinearAlgebra.Vector.normalize(x);const g=t.Matrix2D.multiply(x,l);o.push(t.Point.add(m,{x:g.x.roundoff(),y:g.y.roundoff()}))}return{vertices:o}}static area(t){return e.Utils.area(t.vertices)}static convexHull(t){return{vertices:e.Utils.convexHull(t.vertices)}}}e.Polygon=Polygon}(t.Geometry||(t.Geometry={}))}(Pacem||(Pacem={})),function(t){!function(t){function e(t){return"number"==typeof t&&(t={real:t,img:0}),t}var r;function n(t,e){const r={};return Object.defineProperty(r,"real",{value:t,writable:!1}),Object.defineProperty(r,"img",{value:e,writable:!1}),r}function s(){return r||(r=n(Number.NaN,Number.NaN))}t.Complex=class Complex{static build(t,e){return this.isComplex(t)?t:(e??=0,"number"!=typeof t||"number"!=typeof e?s():n(t,e||0))}static add(t,r){const s=e(t),a=e(r);return n(s.real+a.real,s.img+a.img)}static subtract(t,r){const s=e(t),a=e(r);return n(s.real-a.real,s.img-a.img)}static multiply(t,r){const s=e(t),a=e(r);return n(s.real*a.real-s.img*a.img,s.real*a.img+s.img*a.real)}static divide(t,r){const a=e(t),o=e(r),i=this.absSquare(o).roundoff();if(0===i)return s();const m=1/i;return n(m*(a.real*o.real+a.img*o.img),m*(a.img*o.real-a.real*o.img))}static absSquare(t){const r=e(t);return Math.pow(r.real,2)+Math.pow(r.img,2)}static modulus(t){return Math.sqrt(this.absSquare(t))}static isComplex(t){return null!=t&&"object"==typeof t&&"real"in t&&"img"in t&&"number"==typeof t.real&&"number"==typeof t.img}static conjugate(t){return n((t=e(t)).real,0==Math.abs(t.img)?0:-t.img)}static equals(t,e){const r=this.build(t),n=this.build(e);return!(!this.isComplex(t)||!this.isComplex(e))&&(r.real===n.real&&r.img===n.img)}static get NaC(){return s()}}}(t.Mathematics||(t.Mathematics={}))}(Pacem||(Pacem={})),function(t){!function(t){!function(e){const r={};function n(e,n){const s=r[n]=r[n]||{};return s[e]=s[e]||function(e,r){const n=2*Math.PI*e/r;return t.Complex.build(Math.cos(n),Math.sin(n))}(e,n)}function s(e){const r=[],a=e.length;if(1===a)return[t.Complex.build(e[0])];const o=s(e.filter((t,e)=>e%2==0)),i=s(e.filter((t,e)=>e%2==1));for(var m=0;m<a/2;m++){const e=o[m],s=t.Complex.multiply(n(m,a),i[m]);r[m]=t.Complex.add(e,s),r[m+a/2]=t.Complex.subtract(e,s)}return r}e.Fourier=class Fourier{static transform(t,e=!0){return(r=(t=t||[]).length)>0&&!(r&r-1)?this.fft(t,e):this.dft(t,e);var r}static invert(t,e=!0){return this.idft(t||[],e)}static dft(e,r=!0){const s=(e||[])?.length,a=r?1/Math.sqrt(s):1,o=[];for(let r=0;r<s;r++){o.push({real:0,img:0});for(let i=0;i<s;i++){const m=n(r*i,s),c=t.Complex.multiply(e[i],m),f=t.Complex.multiply(c,a);o[r]=t.Complex.add(o[r],f)}}return o}static idft(e,r=!0){const n=e.map(e=>t.Complex.build(e.img,e.real));return this.transform(n,r).map(e=>t.Complex.build(e.img,e.real))}static fft(e,r=!0){const n=s(e);if(!r)return n;const a=1/Math.sqrt(e.length);return n.map(e=>t.Complex.multiply(e,a))}}}(t.DataAnalysis||(t.DataAnalysis={}))}(t.Mathematics||(t.Mathematics={}))}(Pacem||(Pacem={})),function(t){!function(t){!function(t){const e=Math.sqrt(Math.PI);function r(t){const e=Math.abs(t),r=1/(1+.5*e),n=r*Math.exp(-e*e-1.26551223+r*(1.00002368+r*(.37409196+r*(.09678418+r*(r*(.27886807+r*(r*(1.48851587+r*(.17087277*r-.82215223))-1.13520398))-.18628806)))));return t>=0?n:2-n}class Gaussian{constructor(t,e){this.mean=t,this.stdev=Math.abs(e),this.variance=Math.pow(e,2)}mean;stdev;variance;static get normal(){return n}weight(t){return Math.exp(-.5*Math.pow(this._z(t),2))}probabilityDensity(t){const r=this.stdev*Math.SQRT2*e;return this.weight(t)/r}_z(t){return(t-this.mean)/this.stdev}probability(t){return.5*r(-this._z(t)/Math.SQRT2)}}t.Gaussian=Gaussian;const n=new Gaussian(0,1)}(t.DataAnalysis||(t.DataAnalysis={}))}(t.Mathematics||(t.Mathematics={}))}(Pacem||(Pacem={})),function(t){!function(t){!function(t){class Lagrangian{constructor(...t){this.#t=Array.from(t)||[]}#t;#e;_unsafeCreate(){const t=this.#t||[];let e,r="var ljs = [];\n";for(let n=0;n<t.length;n++){const s=t[n],a=s.x;if(null!=e&&e>=a)throw new Error("Invalid function provided.");e=a,r+=`ljs.push( ${s.y}`;for(let e=0;e<t.length;e++)if(e!==n){const n=t[e];r+=` * ((x - ${n.x})/${a-n.x})`}r+=");\n"}r+="return ljs.reduce((prev, next) => prev + next, 0);",this.#e=new Function("x",r)}_compute(t){const e=this.#t||[];let r;const n=[];for(let s=0;s<e.length;s++){const a=e[s].x;if(null!=r&&r>=a)throw new Error("Invalid function provided.");r=a;let o=e[s].y;for(let r=0;r<e.length;r++)if(r!==s){const n=e[r];o*=(t-n.x)/(a-n.x)}n.push(o)}return n.reduce((t,e)=>t+e,0)}interpolate(t){return"function"==typeof this.#e?this.#e.apply(null,[t]):this._compute(t)}static create(...t){const e=(arguments.length>0&&Array.isArray(arguments[0])?arguments[0]:Array.from(t)).map((t,e)=>"number"==typeof t?{x:e,y:t}:t),r=new(Function.prototype.bind.apply(Lagrangian,[null].concat(e)));try{r._unsafeCreate()}catch(t){}return r}}t.Lagrangian=Lagrangian}(t.DataAnalysis||(t.DataAnalysis={}))}(t.Mathematics||(t.Mathematics={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){const r="0123456789abcdefghijklmnopqrstuvwxyz",n="Radix out of range: possible values go between positive 1 exclusive and 36 inclusive";class Utils{static lcd(...e){if(t.NullChecker.isNullOrEmpty(e)||e.length<=1)throw"Insufficient set of numbers.";function r(t,e){return e?r(e,t%e):0===e?t:NaN}function n(t,e){return t*e/r(t,e)}let s=Math.round(e[0]);for(let t=1;t<e.length;t++)s=n(s,Math.round(e[t]));return s}static gcd(t,e){return t=Math.round(t),e=Math.round(e),0===t?e:Utils.gcd(e%t,t)}static rebaseInt(e,r,n){return t.Numbers.rebase(e,r,n)}static rebaseFloat(t,e,r,n=12){const s=Utils.rebaseFloat10ToN,a=Utils.rebaseFloatNTo10;if(10===e){const e=parseFloat(t.toString());return r%1==0?Utils.rebaseFloat10ToNIntBase(e,r,n):s(e,r,n)}if(10===r)return a(t.toString(),e,n);return s(a(t.toString(),e,n+1),r,n)}static rebaseFloatNTo10(t,e,s=12){const a=r;if(e<=1||e>a.length)throw new Error(n);const o=(t??"0").toString().toLowerCase(),i=Number.NaN;if("0"===o)return 0;const m=/^([-+]?) *([\da-z]+)?(.[\da-z]+)?$/.exec(o);if(m.length<2)return i;const c="-"===m[1]?-1:1,f=m[2]||"0",u=m[3]||".0";let l=0,h=0;for(let t of f+u.substr(1)){const r=a.indexOf(t);if(-1===r||r>=e)return i;l+=r*Math.pow(e,f.length-h-1),h++}return c*l}static rebaseFloat10ToNIntBase(t,e,s=12){const a=r;if(e<=1||e>36)throw new Error(n);const o=e;let i=Math.abs(t??0);if(0===i||Number.isNaN(i))return t.toString();let m=(i%1).roundoff(),c="";for(;;){let t=i/o,e=Math.floor(t),r=(i-e*o).roundoff(),n=Math.floor(r);if(c=n>=36?`[${n}]`+c:a[n]+c,e<=0)break;i=e}if(c=c.replace(/^0+/,""),c||="0",0===m)return c;let f="";do{i=(m*o).roundoff();const t=Math.floor(i),e=(i-t).roundoff();t>=36?f=`[${t}]`:f+=a[t],m=e}while(!m.isCloseTo(0)&&f.length<s);return/^0*$/.test(f)?c:(Math.sign(t)<0?"-":"")+c+"."+f.replace(/0+$/,"")}static rebaseFloat10ToN(e,s,a=12){const o=r;if(s<=1||s>o.length)throw new Error(n);const i=s;let m=Math.abs(e??0);if(0===m||Number.isNaN(m))return e.toString();let c=Math.sign(e)<0?"-":"",f=[],u=[];for(let t=0;t<20;t++)f.push("0"),u.push("0");const l=i%1==0?i:Math.ceil(i);function h(t,e,r){const n=t?f:u,s=n[e]=n[e]||"0",a=o.indexOf(s)+r,i=a%l,m=Math.floor(a/l);return n[e]=o[i],m>0&&(t?h(t,e+1,m):0===e?h(!0,0,m):h(!1,e-1,m)),m}let y=0;for(;;){const e=Math.floor(t.Numbers.log(m,i)),r=e>=0;if(h(r,r?e:Math.abs(1+e),1),m=(m-Math.pow(i,e).roundoff()).roundoff(),r||y++,0===m||y>=100){const t=c+(f.reverse().map(t=>t||"0").join("").replace(/^0+/,"")||"0"),e=u.map(t=>t||"0").join("").substr(0,a).replace(/0+$/,"");return/^0*$/.test(e)?t:t+"."+e}}}}e.Utils=Utils}(e.NumberTheory||(e.NumberTheory={}))}(t.Mathematics||(t.Mathematics={}))}(Pacem||(Pacem={})),function(t){!function(t){!function(t){const e=(t,e)=>t;function r(t,r=e){return t.reduce((t,e,n)=>t+r(e,n),0)}function n(t,n=e){return r(t,n)/t.length}function s(t,r=e,s=!1){const a=n(t,r);return t.reduce((t,e)=>Math.pow(e-a,2)+t,0)/(t.length-(s?1:0))}function a(t,r=e,n=!1){const a=s(t,r,n);return Math.sqrt(a)}function o(t,e){return(r,n,s,a)=>{let o=r,i=n,m=t(o,i),c=e(o,i),f=s(m),u=s(c);for(;i-o>a;)f<u?(i=c,c=m,u=f,m=t(o,i),f=s(m)):(o=m,m=c,f=u,c=e(o,i),u=s(c));return.5*(m+c)}}t.Utils=class Utils{static sum(t,e){return r(t,e)}static mean(t,e){return n(t,e)}static median(t,r){return function(t,r=e){const n=t.slice(0),s=n.length;n.sort((t,e)=>r(t)-r(e));const a=Math.ceil(n.length/2)-1;return s%2==1?n[a]:.5*(n[a+1]+n[a])}(t,r)}static mode(t,r){return function(t,r=e){const n=Object.groupBy(t,r);let s,a=0;for(let t in n){const e=n[t].length;e>a&&(s=parseInt(t),a=e)}return s}(t,r)}static var(t,e){return s(t,e,!0)}static varp(t,e){return s(t,e,!1)}static stdevp(t,e){return a(t,e,!1)}static stdev(t,e){return a(t,e,!0)}static correlation(t,r,s,a){return function(t,r,s=e,a=e){const o=Array.isArray(r);if(o&&r.length!==t.length)throw new Error("Sets must be of the same length.");const i=t.length,m=t,c=o?r:t,f=o?s:r,u=o?a:s,l=n(m,f),h=n(c,u);let y=0,x=0,g=0;for(let t=0;t<i;t++){const e=m[t],r=c[t],n=f(e,t)-l,s=u(r,t)-h;y+=n*s,x+=n*n,g+=s*s}return y/Math.sqrt(x*g)}(t,r,s,a)}static linearRegression(t,r,n,s){return function(t,r,n=e,s=e){const a=Array.isArray(r);if(a&&r.length!==t.length)throw new Error("Sets must be of the same length.");const o=t,i=a?r:t,m=a?n:r,c=m??(t=>t.x),f=(a?s:m)??(t=>t.y),u=t.length;let l=0,h=0,y=0,x=0,g=0;for(let t=0;t<u;t++){const e=o[t],r=i[t],n=c(e,t),s=f(r,t);l+=n*s,h+=n,y+=s,x+=n*n,g+=s*s}const M=(u*l-h*y)/(u*x-Math.pow(h,2));return[M,(y-M*h)/u]}(t,r,n,s)}static gaussian(e,r){return new t.Gaussian(e,r)}};t.SearchFunctions={linear:(t=2)=>function(t){if(t<=1)throw new RangeError("segments must be a number grater than 1.");return(e,r,n,s=.001)=>o((e,r)=>e+(r-e)/t,(e,r)=>r-(r-e)/t)(e,r,n,s)}(t),goldenRatio:(t,e,r,n=.001)=>o((t,e)=>e-(e-t)/1.618,(t,e)=>t+(e-t)/1.618)(t,e,r,n),gaussian:(t,e,r,n=.001)=>{var s=null,a=null;const i=(t,e)=>(a??=e-t,s??=a/Math.sqrt(12),s*(e-t)/a);return o((t,e)=>Math.max(t,(e+t)/2-i(t,e)),(t,e)=>Math.min(e,(e+t)/2+i(t,e)))(t,e,r,n)}}}(t.DataAnalysis||(t.DataAnalysis={}))}(t.Mathematics||(t.Mathematics={}))}(Pacem||(Pacem={}));
6
+ "use strict";var Pacem;!function(t){!function(e){!function(e){class Vector{static unit(t){const e={x:t.x,y:t.y};return this.normalize(e),e}static magSqr(t){return t.x*t.x+t.y*t.y}static mag(t){return Math.sqrt(Vector.magSqr(t))}static normalize(t){const e=Vector.mag(t);if(e<=0)throw"Cannot normalize a vector of length 0.";const r=1/e;t.x*=r,t.y*=r}static from(e,r){return t.Point.subtract(e,r)}static dot(t,e){return t.x*e.x+t.y*e.y}static cross(t,e){return t.x*e.y-t.y*e.x}static areClose(t,e){return(e.x-t.x).isCloseTo(0)&&(e.y-t.y).isCloseTo(0)}}e.Vector=Vector}(e.LinearAlgebra||(e.LinearAlgebra={}))}(t.Geometry||(t.Geometry={}))}(Pacem||(Pacem={})),function(t){!function(e){const r=180/Math.PI,n=2*Math.PI,s=e.LinearAlgebra.Vector;function a(e){return t.Point.isPoint(e)}e.Utils=class Utils{static slopeRad(t,e){return Math.atan2(e.y-t.y,e.x-t.x)}static slopeRad2(t,e){return(n+this.slopeRad(t,e))%n}static slopeDeg(t,e){return this.slopeRad(t,e)*r}static slopeDeg2(t,e){return(360+this.slopeDeg(t,e))%360}static intersect(t,e,...r){return Array.isArray(t)&&Array.isArray(e)?this._intersectSegments(t,e,!0):this._intersectRects.apply(this,arguments)}static intersectLines(t,e,r,n){let s,a;if(Array.isArray(t)&&Array.isArray(e)&&2===t.length&&2===e.length&&"number"==typeof t[0]&&"number"==typeof e[0]&&"number"==typeof t[1]&&"number"==typeof e[1]&&(r=e[0],n=e[1],e=t[1],t=t[0]),"number"==typeof t&&"number"==typeof e){s=[{x:0,y:e},{x:1,y:t+e}],a=[{x:0,y:n},{x:1,y:r+n}]}else s=t,a=e;return this._intersectSegments(s,a,!1)}static cramer(t,e){Array.isArray(t)&&(t={a:t[0],b:t[1],c:t[2]}),Array.isArray(e)&&(e={a:e[0],b:e[1],c:e[2]});let r=(t.b*e.c-t.c*e.b)/(t.b*e.a-t.a*e.b),n=(t.c*e.a-t.a*e.c)/(t.b*e.a-t.a*e.b);return{x:-r.roundoff(),y:-n.roundoff()}}static mq(t,e){let r;if(a(t)?r=t:(r=t[0],e=t[1]),r.x===e.x)return[Number.NaN,Number.NaN];const n=(e.y-r.y)/(e.x-r.x);return[n,r.y-n*r.x]}static _intersectSegments(t,e,r){const n=t[0],s=t[1],a=e[0],o=e[1],i=Math.min(n.x,s.x),m=Math.min(n.y,s.y),c=Math.max(n.x,s.x),f=c-i,u=Math.max(n.y,s.y),l=u-m,h=Math.min(a.x,o.x),y=Math.min(a.y,o.y),x=Math.max(a.x,o.x),g=x-h,M=Math.max(a.y,o.y),p=M-y;if(0===f&&0===g)return null;if(0===l&&0===p)return null;const d=t=>t.x<h||t.x>x||t.x<i||t.x>c,b=t=>t.y<y||t.y>M||t.y<m||t.y>u;var z=null;if(0===f){if(r&&(h>i||x<c))return null;const t=this.mq(a,o);z=this.cramer([1,0,-i],[t[0],-1,t[1]]),r&&b(z)&&(z=null)}else if(0===g){if(r&&(i>h||c<x))return null;const t=this.mq(n,s);z=this.cramer([t[0],-1,t[1]],[1,0,-h]),r&&b(z)&&(z=null)}else if(0===l){if(r&&(y>m||M<u))return null;const t=this.mq(a,o);z=this.cramer([0,1,-m],[t[0],-1,t[1]]),r&&d(z)&&(z=null)}else if(0===p){if(r&&(m>y||u<M))return null;const t=this.mq(n,s);z=this.cramer([t[0],-1,t[1]],[0,1,-y]),r&&d(z)&&(z=null)}else{let t;if(!r||(t=this._intersectRects({x:i,y:m,width:f,height:l},{x:h,y:y,width:g,height:p}))&&t.width>0&&t.height>0){const e=this.mq(n,s),i=this.mq(a,o),m=e[0],c=i[0],f=e[1],u=i[1];if(m!==c){let e=(z=this.cramer([m,-1,f],[c,-1,u])).x,n=z.y;r&&(e<t.x||e>t.x+t.width||n<t.y||n>t.y+t.height)&&(z=null)}}}return null===z?null:{x:z.x,y:z.y}}static _intersectRects(...e){return t.Rect.intersect.apply(this,e)}static dot(t,e){return s.dot(t,e)}static cross(t,e){return s.cross(t,e)}static distance(e,r){if(null!=(n=e)&&Array.isArray(n)&&2===n.length&&a(n[0])&&a(n[1]))return t.Point.distance(e[0],e[1]);if(a(r))return t.Point.distance(e,r);{const t=r[0],n=r[1];return Math.abs(t*e.x-e.y+n)/Math.sqrt(Math.pow(t,2)+1)}var n}static inLine(t,e){const r=s.from(e[0],t),n=s.from(t,e[1]);return this.cross(r,n).isCloseTo(0)}static inSegment(t,e){const r=Math.min(e[0].x,e[1].x),n=Math.max(e[0].x,e[1].x),s=Math.min(e[0].y,e[1].y),a=Math.max(e[0].y,e[1].y);return t.x>=r&&t.x<=n&&t.y>=s&&t.y<=a&&this.inLine(t,e)}static inTriangle(e,r){let n;for(let s=0;s<3;s++){const a=r[s],o=r[(s+1)%3],i=t.Point.subtract(o,e),m=t.Point.subtract(a,e),c=this.cross(i,m);if(s>0&&c*n<=0)return!1;n=c}return!0}static inPolygon(t,e,r){if(!(e?.length>=3))throw"Not enough vertices";const n=e.length;if(3===n)return this.inTriangle(t,[e[0],e[1],e[2]]);r>0&&(e=e.map(t=>({x:t.x.roundoff(r),y:t.y.roundoff(r)})),t={x:t.x.roundoff(r),y:t.y.roundoff(r)});let s=Number.MAX_VALUE,a=Number.MAX_VALUE,o=Number.MIN_VALUE,i=Number.MIN_VALUE;for(let t=0;t<n;t++){const r=e[t];s=Math.min(s,r.x),a=Math.min(a,r.y),o=Math.max(o,r.x),i=Math.max(i,r.y)}if(t.x<s||t.x>o||t.y<a||t.y>i)return!1;const m=[{x:s-1,y:t.y},t];let c=0;for(let r=0;r<n;r++){const s=e[r],a=e[(r+1)%n],o=[s,a];if(s.y===t.y){const o=e[(r-1+n)%n];t.x>s.x&&(o.y-t.y)*(a.y-t.y)<0&&c++}else{if(a.y===t.y)continue;null!=this.intersect(o,m)&&c++}}return c%2==1}static area(t,...e){const r=[].concat(t).concat(e);let n=0;const s=r.length;if(s>=3){for(let t=0;t<r.length;t++){const{x:e,y:a}=r[t],o=t===s-1?0:t+1,{x:i,y:m}=r[o];n+=e*m-a*i}n*=.5}return Math.abs(n.roundoff())}static convexHull(t,...e){const r=[].concat(t).concat(e);if(!(r?.length>1))return r?.slice()??[];const n=r.map(t=>({x:t.x,y:t.y})).sort((t,e)=>t.x===e.x?t.y-e.y:t.x-e.x),s=[];for(const t of n){const e=s[s.length-1];e&&e.x===t.x&&e.y===t.y||s.push(t)}if(s.length<=2)return s;const a=(t,e,r)=>(e.x-t.x)*(r.y-t.y)-(e.y-t.y)*(r.x-t.x),o=[];for(const t of s){for(;o.length>=2&&a(o[o.length-2],o[o.length-1],t)<=0;)o.pop();o.push(t)}const i=[];for(let t=s.length-1;t>=0;t--){const e=s[t];for(;i.length>=2&&a(i[i.length-2],i[i.length-1],e)<=0;)i.pop();i.push(e)}return o.pop(),i.pop(),o.concat(i)}}}(t.Geometry||(t.Geometry={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){const r=180/Math.PI,n=1/r;class Vector3D{static from(...t){if(3!==t.length)throw new RangeError("Must provide exactly 3 numbers");return{x:t[0],y:t[1],z:t[2]}}static parse(e){const r=t.parseAsNumericalArray(e);if(r&&3===r.length)return Vector3D.from.apply(null,r);throw new Error(`Cannot parse "${e}" as a valid Vector3D.`)}static i(){return{x:1,y:0,z:0}}static j(){return{x:0,y:1,z:0}}static k(){return{x:0,y:0,z:1}}static zero(){return{x:0,y:0,z:0}}static subtract(t,e){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}static add(...t){var e={x:0,y:0,z:0};for(var r of t)e.x+=r.x,e.y+=r.y,e.z+=r.z;return e}static dot(t,e){return t.x*e.x+t.y*e.y+t.z*e.z}static cross(t,e){return{x:t.y*e.z-t.z*e.y,y:t.z*e.x-t.x*e.z,z:t.x*e.y-t.y*e.x}}static scale(t,e,r=e,n=e){return{x:t.x*e,y:t.y*r,z:t.z*n}}static magSqr(t){return t.x*t.x+t.y*t.y+t.z*t.z}static areClose(t,e){return(e.x-t.x).isCloseTo(0)&&(e.y-t.y).isCloseTo(0)&&(e.z-t.z).isCloseTo(0)}static mag(t){return Math.sqrt(Vector3D.magSqr(t))}static negate(t){return{x:-t.x,y:-t.y,z:-t.z}}static unit(t){const e={x:t.x,y:t.y,z:t.z};return this.normalize(e),e}static normalize(t){const e=Vector3D.mag(t);if(e<=0)throw"Cannot normalize a vector of length 0.";const r=1/e;t.x*=r,t.y*=r,t.z*=r}static angleBetween(t,e){let n;const s=Vector3D.unit(t),a=Vector3D.unit(e);if(Vector3D.dot(s,a)<0){const t={x:-s.x-a.x,y:-s.y-a.y,z:-s.z-a.z},e=Vector3D.mag(t);n=Math.PI-2*Math.asin(e/2)}else{const t={x:s.x-a.x,y:s.y-a.y,z:s.z-a.z},e=Vector3D.mag(t);n=2*Math.asin(e/2)}return r*n}}e.Vector3D=Vector3D;class Spherical{static from(t,e,r){return{rho:t.clamp(0,1/0),theta:e.clamp(-180,180),phi:r.clamp(0,360)}}static fromVector(t,e,n){"number"==typeof t&&(t=Vector3D.from(t,e,n));const s=Vector3D.mag(t);if(s.isCloseTo(0))return Spherical.from(0,0,0);const a=Math.atan2(t.x,t.z),o=Math.acos((t.y/s).clamp(-1,1));return Spherical.from(s,a*r,o*r)}static toVector(t){const{rho:e,theta:r,phi:s}=t,a=s*n,o=r*n,i=Math.sin(a)*e;return{x:i*Math.sin(o),y:Math.cos(a)*e,z:i*Math.cos(o)}}static toRotationMatrix(t){const{theta:e,phi:r}=t,s=n*e,a=Math.sin(s),o=Math.cos(s),i=n*r,m=Math.sin(i),c=Math.cos(i);return Matrix3D.from(a*c,a*m,o,0,o*c,o*m,-a,0,-m,c,0,0,0,0,0,1)}}e.Spherical=Spherical;class Matrix3DUtils{static modify(t,e){const{m11:r,m12:n,m13:s,m14:a,m21:o,m22:i,m23:m,m24:c,m31:f,m32:u,m33:l,m34:h,offsetX:y,offsetY:x,offsetZ:g,m44:M}=t,p={m11:r,m12:n,m13:s,m14:a,m21:o,m22:i,m23:m,m24:c,m31:f,m32:u,m33:l,m34:h,offsetX:y,offsetY:x,offsetZ:g,m44:M};return e(p),p}static clone(t){return Matrix3DUtils.modify(t,t=>{})}static multiply(t,e){return Matrix3D.isIdentity(t)?e:Matrix3D.isIdentity(e)?t:Matrix3D.from(t.m11*e.m11+t.m12*e.m21+t.m13*e.m31+t.m14*e.offsetX,t.m11*e.m12+t.m12*e.m22+t.m13*e.m32+t.m14*e.offsetY,t.m11*e.m13+t.m12*e.m23+t.m13*e.m33+t.m14*e.offsetZ,t.m11*e.m14+t.m12*e.m24+t.m13*e.m34+t.m14*e.m44,t.m21*e.m11+t.m22*e.m21+t.m23*e.m31+t.m24*e.offsetX,t.m21*e.m12+t.m22*e.m22+t.m23*e.m32+t.m24*e.offsetY,t.m21*e.m13+t.m22*e.m23+t.m23*e.m33+t.m24*e.offsetZ,t.m21*e.m14+t.m22*e.m24+t.m23*e.m34+t.m24*e.m44,t.m31*e.m11+t.m32*e.m21+t.m33*e.m31+t.m34*e.offsetX,t.m31*e.m12+t.m32*e.m22+t.m33*e.m32+t.m34*e.offsetY,t.m31*e.m13+t.m32*e.m23+t.m33*e.m33+t.m34*e.offsetZ,t.m31*e.m14+t.m32*e.m24+t.m33*e.m34+t.m34*e.m44,t.offsetX*e.m11+t.offsetY*e.m21+t.offsetZ*e.m31+t.m44*e.offsetX,t.offsetX*e.m12+t.offsetY*e.m22+t.offsetZ*e.m32+t.m44*e.offsetY,t.offsetX*e.m13+t.offsetY*e.m23+t.offsetZ*e.m33+t.m44*e.offsetZ,t.offsetX*e.m14+t.offsetY*e.m24+t.offsetZ*e.m34+t.m44*e.m44)}}class Matrix3D{static identity(){return{m11:1,m12:0,m13:0,m14:0,m21:0,m22:1,m23:0,m24:0,m31:0,m32:0,m33:1,m34:0,offsetX:0,offsetY:0,offsetZ:0,m44:1}}static from(...t){if(16!==t.length)throw new RangeError("Must provide exactly 16 numbers");return{m11:t[0],m12:t[1],m13:t[2],m14:t[3],m21:t[4],m22:t[5],m23:t[6],m24:t[7],m31:t[8],m32:t[9],m33:t[10],m34:t[11],offsetX:t[12],offsetY:t[13],offsetZ:t[14],m44:t[15]}}static transpose(t){return Matrix3D.from(t.m11,t.m21,t.m31,t.offsetX,t.m12,t.m22,t.m32,t.offsetY,t.m13,t.m23,t.m33,t.offsetZ,t.m14,t.m24,t.m34,t.m44)}static toArray(t){return[t.m11,t.m12,t.m13,t.m14,t.m21,t.m22,t.m23,t.m24,t.m31,t.m32,t.m33,t.m34,t.offsetX,t.offsetY,t.offsetZ,t.m44]}static clone(t,e){return"function"==typeof e?Matrix3DUtils.modify(t,e):Matrix3DUtils.clone(t)}static scale(t,e,r,n){return"number"==typeof e?(r??=e,n??=e):(n=e.z,r=e.y,e=e.x),Matrix3DUtils.modify(t,t=>{t.m11*=e,t.m22*=r,t.m33*=n})}static translate(t,e){return Matrix3DUtils.modify(t,t=>{t.offsetX+=e.x,t.offsetY+=e.y,t.offsetZ+=e.z})}static parse(e){const r=t.parseAsNumericalArray(e);if(r&&16===r.length)return Matrix3D.from.apply(null,r);throw new Error(`Cannot parse "${e}" as a valid Matrix3D.`)}static isIdentity(t){return 1==t.m11&&0==t.m12&&0==t.m13&&0==t.m14&&0==t.m21&&1==t.m22&&0==t.m23&&0==t.m24&&0==t.m31&&0==t.m32&&1==t.m33&&0==t.m34&&0==t.offsetX&&0==t.offsetY&&0==t.offsetZ&&1==t.m44}static isAffine(t){return 0==t.m14&&0==t.m24&&0==t.m34&&1==t.m44}static determinant(t){if(Matrix3D.isIdentity(t))return 1;if(Matrix3D.isAffine(t))return t.m11*(t.m22*t.m33-t.m32*t.m23)-t.m12*(t.m21*t.m33-t.m31*t.m23)+t.m13*(t.m21*t.m32-t.m31*t.m22);{const e=t.m13*t.m24-t.m23*t.m14,r=t.m13*t.m34-t.m33*t.m14,n=t.m13*t.m44-t.offsetZ*t.m14,s=t.m23*t.m34-t.m33*t.m24,a=t.m23*t.m44-t.offsetZ*t.m24,o=t.m33*t.m44-t.offsetZ*t.m34,i=t.m22*r-t.m32*e-t.m12*s,m=t.m12*a-t.m22*n+t.offsetY*e,c=t.m32*n-t.offsetY*r-t.m12*o,f=t.m22*o-t.m32*a+t.offsetY*s;return t.offsetX*i+t.m31*m+t.m21*c+t.m11*f}}static multiply(...t){if(0===t.length)throw new ReferenceError("Matrix not provided.");const e=Array.from(t);let r=e[0];for(let t=1;t<e.length;t++)r=Matrix3DUtils.multiply(r,e[t]);return r}static invert(t){if(Matrix3D.isAffine(t)){const e=Matrix3D.determinant(t);if(0==e)return null;const r=t.m12*t.m23-t.m22*t.m13,n=t.m32*t.m13-t.m12*t.m33,s=t.m22*t.m33-t.m32*t.m23,a=t.m21*t.m13-t.m11*t.m23,o=t.m11*t.m33-t.m31*t.m13,i=t.m31*t.m23-t.m21*t.m33,m=t.m11*t.m22-t.m21*t.m12,c=t.m11*t.m32-t.m31*t.m12,f=t.m11*t.offsetY-t.offsetX*t.m12,u=t.m21*t.m32-t.m31*t.m22,l=t.m21*t.offsetY-t.offsetX*t.m22,h=t.m31*t.offsetY-t.offsetX*t.m32,y=t.m23*f-t.offsetZ*m-t.m13*l,x=t.m13*h-t.m33*f+t.offsetZ*c,g=t.m33*l-t.offsetZ*u-t.m23*h,M=m,p=-c,d=u,b=1/e;return Matrix3D.from(s*b,n*b,r*b,0,i*b,o*b,a*b,0,d*b,p*b,M*b,0,g*b,x*b,y*b,1)}{const e=Matrix3D.determinant(t);if(0==e)return null;const r=t.m33*t.m44-t.m34*t.offsetZ,n=t.m32*t.m44-t.m34*t.offsetY,s=t.m31*t.m44-t.m34*t.offsetX,a=t.m32*t.offsetZ-t.m33*t.offsetY,o=t.m31*t.offsetZ-t.m33*t.offsetX,i=t.m31*t.offsetY-t.m32*t.offsetX,m=t.m33*t.m44-t.m34*t.offsetZ,c=t.m32*t.m44-t.m34*t.offsetY,f=t.m31*t.m44-t.m34*t.offsetX,u=t.m32*t.offsetZ-t.m33*t.offsetY,l=t.m31*t.offsetZ-t.m33*t.offsetX,h=t.m31*t.offsetY-t.m32*t.offsetX,y=t.m23*t.m44-t.m24*t.offsetZ,x=t.m22*t.m44-t.m24*t.offsetY,g=t.m21*t.m44-t.m24*t.offsetX,M=t.m22*t.offsetZ-t.m23*t.offsetY,p=t.m21*t.offsetZ-t.m23*t.offsetX,d=t.m21*t.offsetY-t.m22*t.offsetX,b=t.m23*t.m34-t.m24*t.m33,z=t.m22*t.m34-t.m24*t.m32,w=t.m21*t.m34-t.m24*t.m31,A=t.m22*t.m33-t.m23*t.m32,v=t.m21*t.m33-t.m23*t.m31,D=t.m21*t.m32-t.m22*t.m31,N=t.m22*r-t.m23*n+t.m24*a,P=-(t.m21*r-t.m23*s+t.m24*o),C=t.m21*n-t.m22*s+t.m24*i,V=-(t.m21*a-t.m22*o+t.m23*i),X=-(t.m12*m-t.m13*c+t.m14*u),q=t.m11*m-t.m13*f+t.m14*l,U=-(t.m11*c-t.m12*f+t.m14*h),Y=t.m11*u-t.m12*l+t.m13*h,Z=t.m12*y-t.m13*x+t.m14*M,S=-(t.m11*y-t.m13*g+t.m14*p),L=t.m11*x-t.m12*g+t.m14*d,E=-(t.m11*M-t.m12*p+t.m13*d),Q=-(t.m12*b-t.m13*z+t.m14*A),T=t.m11*b-t.m13*w+t.m14*v,I=-(t.m11*z-t.m12*w+t.m14*D),R=t.m11*A-t.m12*v+t.m13*D,_=1/e;return Matrix3D.from(N*_,X*_,Z*_,Q*_,P*_,q*_,S*_,T*_,C*_,U*_,L*_,I*_,V*_,Y*_,E*_,R*_)}}static transform(t,e){var r={x:t.x,y:t.y,z:t.z};if(!Matrix3D.isIdentity(e)){var n=r.x,s=r.y,a=r.z;if(r.x=n*e.m11+s*e.m21+a*e.m31+e.offsetX,r.y=n*e.m12+s*e.m22+a*e.m32+e.offsetY,r.z=n*e.m13+s*e.m23+a*e.m33+e.offsetZ,!Matrix3D.isAffine(e)){var o=n*e.m14+s*e.m24+a*e.m34+e.m44;0!=o&&(r.x/=o,r.y/=o,r.z/=o)}}return r}}e.Matrix3D=Matrix3D;class Quaternion{static identity(){return Quaternion.from(0,0,0,1)}static from(...t){if(4!==t.length)throw new RangeError("Must provide exactly 4 numbers");return{x:t[0],y:t[1],z:t[2],w:t[3]}}static parse(e){const r=t.parseAsNumericalArray(e);if(r&&4===r.length)return Quaternion.from.apply(null,r);throw new Error(`Cannot parse "${e}" as a valid Quaternion.`)}static fromVectors(t,e){Vector3D.normalize(t),Vector3D.normalize(e);const r=(t,e,r,n)=>{const s=Quaternion.from(t,e,r,n);return Quaternion.normalize(s),s};let n=Vector3D.dot(t,e)+1;return n.isCloseTo(0)?Math.abs(t.x)>Math.abs(t.z)?r(-t.y,t.x,0,0):r(0,-t.z,t.y,0):r(t.y*e.z-t.z*e.y,t.z*e.x-t.x*e.z,t.x*e.y-t.y*e.x,n)}static normalize(t){const e=Quaternion.mag(t);if(e.isCloseTo(0))t.x=t.y=t.z=0,t.w=1;else{const r=1/e;t.x*=r,t.y*=r,t.z*=r,t.w*=r}}static unit(t){const e=Quaternion.from(t.x,t.y,t.z,t.w);return Quaternion.normalize(e),e}static fromAxisAngle(t,e){var r=n*(e%=360),s=Vector3D.mag(t);if(0==s)throw new RangeError("Invalid argument");var a=Math.sin(.5*r)/s,o=t.x*a,i=t.y*a,m=t.z*a;return Quaternion.from(o,i,m,Math.cos(.5*r))}static fromRotationMatrix(t){const e=t.m11+t.m22+t.m33+t.m44;if(e>0){const r=.5/Math.sqrt(e),n=.25/r,s=(t.m23-t.m32)*r,a=(t.m31-t.m13)*r,o=(t.m12-t.m21)*r;return Quaternion.from(s,a,o,n)}if(t.m11>t.m22&&t.m11>t.m22){const e=.5/Math.sqrt(t.m44+t.m11-t.m22-t.m33),r=(t.m23-t.m32)*e,n=.25/e,s=(t.m12+t.m21)*e,a=(t.m31+t.m13)*e;return Quaternion.from(n,s,a,r)}if(t.m22>t.m33){const e=.5/Math.sqrt(t.m44+t.m22-t.m11-t.m33),r=(t.m23+t.m32)*e,n=.25/e,s=(t.m12+t.m21)*e,a=(t.m31-t.m13)*e;return Quaternion.from(s,n,r,a)}{const e=.5/Math.sqrt(t.m44+t.m33-t.m11-t.m22),r=(t.m23+t.m32)*e,n=.25/e,s=(t.m12-t.m21)*e,a=(t.m31-t.m13)*e;return Quaternion.from(a,r,n,s)}}static conjugate(t){return Quaternion.from(-t.x,-t.y,-t.z,t.w)}static mag(t){return Math.sqrt(t.x*t.x+t.y*t.y+t.z*t.z+t.w*t.w)}static norm(t){return t.x*t.x+t.y*t.y+t.z*t.z}static axis(t){return 0==t.x&&0==t.y&&0==t.z?Vector3D.j():Vector3D.unit(t)}static transform(t,e){Quaternion.normalize(e);const r=Vector3D.cross(e,t),n=Vector3D.scale(r,2),s=Vector3D.cross(e,n);return{x:t.x+e.w*n.x+s.x,y:t.y+e.w*n.y+s.y,z:t.z+e.w*n.z+s.z}}static angle(t){let e=Math.sqrt(t.x*t.x+t.y*t.y+t.z*t.z),r=t.w;if(e>Number.MAX_VALUE){const n=Math.max(Math.abs(t.x),Math.max(Math.abs(t.y),Math.abs(t.z))),s=t.x/n,a=t.y/n,o=t.z/n;e=Math.sqrt(s*s+a*a+o*o),r/=n}return 114.59155902616465*Math.atan2(e,r)}static toRotationMatrix(t){var e=Matrix3D.identity(),r=t.x,n=t.y,s=t.z,a=t.w;return e.m11=1-2*n*n-2*s*s,e.m12=2*r*n+2*a*s,e.m13=2*r*s-2*a*n,e.m21=2*r*n-2*a*s,e.m22=1-2*r*r-2*s*s,e.m23=2*n*s+2*a*r,e.m31=2*a*n+2*r*s,e.m32=2*n*s-2*a*r,e.m33=1-2*r*r-2*n*n,e}static invert(t){const e=Quaternion.unit(t);return Quaternion.conjugate(e)}static multiply(t,e){return Quaternion.from(t.w*e.x+t.x+e.w+t.y*e.z-t.z*e.y,t.w*e.y-t.x*e.z+t.y*e.w+t.z*e.x,t.w*e.z+t.x*e.y-t.y*e.x+t.z*e.w,t.w*e.w-t.x*e.x-t.y*e.y-t.z*e.z)}static dot(t,e){return Quaternion.multiply(t,Quaternion.conjugate(e)).w}}e.Quaternion=Quaternion}(e.LinearAlgebra||(e.LinearAlgebra={}))}(t.Geometry||(t.Geometry={}))}(Pacem||(Pacem={})),function(t){!function(e){const r=t.Geometry.LinearAlgebra.Vector3D;t.Geometry.LinearAlgebra.Matrix3D;e.Utils3D=class Utils3D{static intersect(t,e){const[n,s]=t,a=r.subtract(n,s),[o,i,m]=e,c=r.subtract(o,i),f=r.subtract(o,m),u=r.cross(a,f),l=r.dot(c,u);if(l.isCloseTo(0))return null;const h=1/l,y=r.subtract(n,o),x=h*r.dot(y,u);if(x<0||x>1)return null;const g=r.cross(y,c),M=h*r.dot(a,g);if(M<0||x+M>1)return null;const p=h*r.dot(f,g);return p<0||p.isCloseTo(0)?null:r.add(n,r.scale(a,p))}}}(t.Geometry||(t.Geometry={}))}(Pacem||(Pacem={})),function(t){!function(e){class Polygon{static isPolygon(e){return function(e){let r;return"vertices"in e&&Array.isArray(e.vertices)&&(r=e.vertices).length>=3&&r.every(e=>t.Point.isPoint(e))}(e)}static from(...t){return{vertices:Array.from(t)}}static contains(t,r){return e.Utils.inPolygon(r,t.vertices,12)}static centroid(t){const e=Polygon.boundingBox(t);return{x:e.x+e.width/2,y:e.y+e.height/2}}static boundingBox(t){let e=Number.MAX_VALUE,r=Number.MAX_VALUE,n=-Number.MAX_VALUE,s=-Number.MAX_VALUE;const{vertices:a}=t;a.length;for(let t of a)e=Math.min(e,t.x),r=Math.min(r,t.y),n=Math.max(n,t.x),s=Math.max(s,t.y);return{x:e,y:r,width:n-e,height:s-r}}static sides(t){const{vertices:e}=t,r=[];for(let t=1;t<=e.length;t++){const n=e[t%e.length],s=e[t-1];r.push([s,n])}return r}static isConvex(e){const{vertices:r}=e,n=r.length;if(n<=3)return!0;let s=0;for(let e=0;e<r.length;e++){const a=r[(e-1+n)%n],o=r[e],i=r[(e+1)%n],m=t.Angle.angleBetween(o,a,i);if(0!==s){if(s!=Math.sign(m))return!1}else s=Math.sign(m)}return!0}static isSelfIntersecting(r){const{vertices:n}=r;if(n.length<=3)return!1;const s=Polygon.sides(r);for(let r of s)for(let n of s){if(n===r||n[0]===r[1]||r[0]===n[1])continue;const s=e.Utils.intersect(n,r);if(!t.NullChecker.isNull(s))return!0}return!1}static isCounterClockwise(e){const{vertices:[r,n,s]}=e;return t.Angle.angleBetween(n,r,s)>0}static expand(r,n){const{vertices:s}=r,a=s.length,o=[];for(let r=0;r<s.length;r++){const i=s[(r-1+a)%a],m=s[r],c=s[(r+1)%a],f=t.Angle.angleBetween(m,i,c),u=-n/Math.sin(Math.abs(f)/2),l=t.Matrix2D.scale(t.Matrix2D.identity,u),h=t.Point.subtract(m,i);e.LinearAlgebra.Vector.normalize(h);const y=t.Point.subtract(m,c);e.LinearAlgebra.Vector.normalize(y);const x=t.Point.add(h,y);e.LinearAlgebra.Vector.normalize(x);const g=t.Matrix2D.multiply(x,l);o.push(t.Point.add(m,{x:g.x.roundoff(),y:g.y.roundoff()}))}return{vertices:o}}static area(t){return e.Utils.area(t.vertices)}static convexHull(t){return{vertices:e.Utils.convexHull(t.vertices)}}}e.Polygon=Polygon}(t.Geometry||(t.Geometry={}))}(Pacem||(Pacem={})),function(t){!function(t){function e(t){return"number"==typeof t&&(t={real:t,img:0}),t}var r;function n(t,e){const r={};return Object.defineProperty(r,"real",{value:t,writable:!1}),Object.defineProperty(r,"img",{value:e,writable:!1}),r}function s(){return r||(r=n(Number.NaN,Number.NaN))}t.Complex=class Complex{static build(t,e){return this.isComplex(t)?t:(e??=0,"number"!=typeof t||"number"!=typeof e?s():n(t,e||0))}static add(t,r){const s=e(t),a=e(r);return n(s.real+a.real,s.img+a.img)}static subtract(t,r){const s=e(t),a=e(r);return n(s.real-a.real,s.img-a.img)}static multiply(t,r){const s=e(t),a=e(r);return n(s.real*a.real-s.img*a.img,s.real*a.img+s.img*a.real)}static divide(t,r){const a=e(t),o=e(r),i=this.absSquare(o).roundoff();if(0===i)return s();const m=1/i;return n(m*(a.real*o.real+a.img*o.img),m*(a.img*o.real-a.real*o.img))}static absSquare(t){const r=e(t);return Math.pow(r.real,2)+Math.pow(r.img,2)}static modulus(t){return Math.sqrt(this.absSquare(t))}static isComplex(t){return null!=t&&"object"==typeof t&&"real"in t&&"img"in t&&"number"==typeof t.real&&"number"==typeof t.img}static conjugate(t){return n((t=e(t)).real,0==Math.abs(t.img)?0:-t.img)}static equals(t,e){const r=this.build(t),n=this.build(e);return!(!this.isComplex(t)||!this.isComplex(e))&&(r.real===n.real&&r.img===n.img)}static get NaC(){return s()}}}(t.Mathematics||(t.Mathematics={}))}(Pacem||(Pacem={})),function(t){!function(t){!function(e){const r={};function n(e,n){const s=r[n]=r[n]||{};return s[e]=s[e]||function(e,r){const n=2*Math.PI*e/r;return t.Complex.build(Math.cos(n),Math.sin(n))}(e,n)}function s(e){const r=[],a=e.length;if(1===a)return[t.Complex.build(e[0])];const o=s(e.filter((t,e)=>e%2==0)),i=s(e.filter((t,e)=>e%2==1));for(var m=0;m<a/2;m++){const e=o[m],s=t.Complex.multiply(n(m,a),i[m]);r[m]=t.Complex.add(e,s),r[m+a/2]=t.Complex.subtract(e,s)}return r}e.Fourier=class Fourier{static transform(t,e=!0){return(r=(t=t||[]).length)>0&&!(r&r-1)?this.fft(t,e):this.dft(t,e);var r}static invert(t,e=!0){return this.idft(t||[],e)}static dft(e,r=!0){const s=(e||[])?.length,a=r?1/Math.sqrt(s):1,o=[];for(let r=0;r<s;r++){o.push({real:0,img:0});for(let i=0;i<s;i++){const m=n(r*i,s),c=t.Complex.multiply(e[i],m),f=t.Complex.multiply(c,a);o[r]=t.Complex.add(o[r],f)}}return o}static idft(e,r=!0){const n=e.map(e=>t.Complex.build(e.img,e.real));return this.transform(n,r).map(e=>t.Complex.build(e.img,e.real))}static fft(e,r=!0){const n=s(e);if(!r)return n;const a=1/Math.sqrt(e.length);return n.map(e=>t.Complex.multiply(e,a))}}}(t.DataAnalysis||(t.DataAnalysis={}))}(t.Mathematics||(t.Mathematics={}))}(Pacem||(Pacem={})),function(t){!function(t){!function(t){const e=Math.sqrt(Math.PI);function r(t){const e=Math.abs(t),r=1/(1+.5*e),n=r*Math.exp(-e*e-1.26551223+r*(1.00002368+r*(.37409196+r*(.09678418+r*(r*(.27886807+r*(r*(1.48851587+r*(.17087277*r-.82215223))-1.13520398))-.18628806)))));return t>=0?n:2-n}class Gaussian{constructor(t,e){this.mean=t,this.stdev=Math.abs(e),this.variance=Math.pow(e,2)}mean;stdev;variance;static get normal(){return n}weight(t){return Math.exp(-.5*Math.pow(this._z(t),2))}probabilityDensity(t){const r=this.stdev*Math.SQRT2*e;return this.weight(t)/r}_z(t){return(t-this.mean)/this.stdev}probability(t){return.5*r(-this._z(t)/Math.SQRT2)}}t.Gaussian=Gaussian;const n=new Gaussian(0,1)}(t.DataAnalysis||(t.DataAnalysis={}))}(t.Mathematics||(t.Mathematics={}))}(Pacem||(Pacem={})),function(t){!function(t){!function(t){class Lagrangian{constructor(...t){this.#t=Array.from(t)||[]}#t;#e;_unsafeCreate(){const t=this.#t||[];let e,r="var ljs = [];\n";for(let n=0;n<t.length;n++){const s=t[n],a=s.x;if(null!=e&&e>=a)throw new Error("Invalid function provided.");e=a,r+=`ljs.push( ${s.y}`;for(let e=0;e<t.length;e++)if(e!==n){const n=t[e];r+=` * ((x - ${n.x})/${a-n.x})`}r+=");\n"}r+="return ljs.reduce((prev, next) => prev + next, 0);",this.#e=new Function("x",r)}_compute(t){const e=this.#t||[];let r;const n=[];for(let s=0;s<e.length;s++){const a=e[s].x;if(null!=r&&r>=a)throw new Error("Invalid function provided.");r=a;let o=e[s].y;for(let r=0;r<e.length;r++)if(r!==s){const n=e[r];o*=(t-n.x)/(a-n.x)}n.push(o)}return n.reduce((t,e)=>t+e,0)}interpolate(t){return"function"==typeof this.#e?this.#e.apply(null,[t]):this._compute(t)}static create(...t){const e=(arguments.length>0&&Array.isArray(arguments[0])?arguments[0]:Array.from(t)).map((t,e)=>"number"==typeof t?{x:e,y:t}:t),r=new(Function.prototype.bind.apply(Lagrangian,[null].concat(e)));try{r._unsafeCreate()}catch(t){}return r}}t.Lagrangian=Lagrangian}(t.DataAnalysis||(t.DataAnalysis={}))}(t.Mathematics||(t.Mathematics={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){const r="0123456789abcdefghijklmnopqrstuvwxyz",n="Radix out of range: possible values go between positive 1 exclusive and 36 inclusive";class Utils{static lcd(...e){if(t.NullChecker.isNullOrEmpty(e)||e.length<=1)throw"Insufficient set of numbers.";function r(t,e){return e?r(e,t%e):0===e?t:NaN}function n(t,e){return t*e/r(t,e)}let s=Math.round(e[0]);for(let t=1;t<e.length;t++)s=n(s,Math.round(e[t]));return s}static gcd(t,e){return t=Math.round(t),e=Math.round(e),0===t?e:Utils.gcd(e%t,t)}static rebaseInt(e,r,n){return t.Numbers.rebase(e,r,n)}static rebaseFloat(t,e,r,n=12){const s=Utils.rebaseFloat10ToN,a=Utils.rebaseFloatNTo10;if(10===e){const e=parseFloat(t.toString());return r%1==0?Utils.rebaseFloat10ToNIntBase(e,r,n):s(e,r,n)}if(10===r)return a(t.toString(),e,n);return s(a(t.toString(),e,n+1),r,n)}static rebaseFloatNTo10(t,e,s=12){const a=r;if(e<=1||e>a.length)throw new Error(n);const o=(t??"0").toString().toLowerCase(),i=Number.NaN;if("0"===o)return 0;const m=/^([-+]?) *([\da-z]+)?(.[\da-z]+)?$/.exec(o);if(m.length<2)return i;const c="-"===m[1]?-1:1,f=m[2]||"0",u=m[3]||".0";let l=0,h=0;for(let t of f+u.substr(1)){const r=a.indexOf(t);if(-1===r||r>=e)return i;l+=r*Math.pow(e,f.length-h-1),h++}return c*l}static rebaseFloat10ToNIntBase(t,e,s=12){const a=r;if(e<=1||e>36)throw new Error(n);const o=e;let i=Math.abs(t??0);if(0===i||Number.isNaN(i))return t.toString();let m=(i%1).roundoff(),c="";for(;;){let t=i/o,e=Math.floor(t),r=(i-e*o).roundoff(),n=Math.floor(r);if(c=n>=36?`[${n}]`+c:a[n]+c,e<=0)break;i=e}if(c=c.replace(/^0+/,""),c||="0",0===m)return c;let f="";do{i=(m*o).roundoff();const t=Math.floor(i),e=(i-t).roundoff();t>=36?f=`[${t}]`:f+=a[t],m=e}while(!m.isCloseTo(0)&&f.length<s);return/^0*$/.test(f)?c:(Math.sign(t)<0?"-":"")+c+"."+f.replace(/0+$/,"")}static rebaseFloat10ToN(e,s,a=12){const o=r;if(s<=1||s>o.length)throw new Error(n);const i=s;let m=Math.abs(e??0);if(0===m||Number.isNaN(m))return e.toString();let c=Math.sign(e)<0?"-":"",f=[],u=[];for(let t=0;t<20;t++)f.push("0"),u.push("0");const l=i%1==0?i:Math.ceil(i);function h(t,e,r){const n=t?f:u,s=n[e]=n[e]||"0",a=o.indexOf(s)+r,i=a%l,m=Math.floor(a/l);return n[e]=o[i],m>0&&(t?h(t,e+1,m):0===e?h(!0,0,m):h(!1,e-1,m)),m}let y=0;for(;;){const e=Math.floor(t.Numbers.log(m,i)),r=e>=0;if(h(r,r?e:Math.abs(1+e),1),m=(m-Math.pow(i,e).roundoff()).roundoff(),r||y++,0===m||y>=100){const t=c+(f.reverse().map(t=>t||"0").join("").replace(/^0+/,"")||"0"),e=u.map(t=>t||"0").join("").substr(0,a).replace(/0+$/,"");return/^0*$/.test(e)?t:t+"."+e}}}}e.Utils=Utils}(e.NumberTheory||(e.NumberTheory={}))}(t.Mathematics||(t.Mathematics={}))}(Pacem||(Pacem={})),function(t){!function(t){!function(t){const e=(t,e)=>t;function r(t,r=e){return t.reduce((t,e,n)=>t+r(e,n),0)}function n(t,n=e){return r(t,n)/t.length}function s(t,r=e,s=!1){const a=n(t,r);return t.reduce((t,e)=>Math.pow(e-a,2)+t,0)/(t.length-(s?1:0))}function a(t,r=e,n=!1){const a=s(t,r,n);return Math.sqrt(a)}function o(t,e){return(r,n,s,a)=>{let o=r,i=n,m=t(o,i),c=e(o,i),f=s(m),u=s(c);for(;i-o>a;)f<u?(i=c,c=m,u=f,m=t(o,i),f=s(m)):(o=m,m=c,f=u,c=e(o,i),u=s(c));return.5*(m+c)}}t.Utils=class Utils{static sum(t,e){return r(t,e)}static mean(t,e){return n(t,e)}static median(t,r){return function(t,r=e){const n=t.slice(0),s=n.length;n.sort((t,e)=>r(t)-r(e));const a=Math.ceil(n.length/2)-1;return s%2==1?n[a]:.5*(n[a+1]+n[a])}(t,r)}static mode(t,r){return function(t,r=e){const n=Object.groupBy(t,r);let s,a=0;for(let t in n){const e=n[t].length;e>a&&(s=parseInt(t),a=e)}return s}(t,r)}static var(t,e){return s(t,e,!0)}static varp(t,e){return s(t,e,!1)}static stdevp(t,e){return a(t,e,!1)}static stdev(t,e){return a(t,e,!0)}static correlation(t,r,s,a){return function(t,r,s=e,a=e){const o=Array.isArray(r);if(o&&r.length!==t.length)throw new Error("Sets must be of the same length.");const i=t.length,m=t,c=o?r:t,f=o?s:r,u=o?a:s,l=n(m,f),h=n(c,u);let y=0,x=0,g=0;for(let t=0;t<i;t++){const e=m[t],r=c[t],n=f(e,t)-l,s=u(r,t)-h;y+=n*s,x+=n*n,g+=s*s}return y/Math.sqrt(x*g)}(t,r,s,a)}static linearRegression(t,r,n,s){return function(t,r,n=e,s=e){const a=Array.isArray(r);if(a&&r.length!==t.length)throw new Error("Sets must be of the same length.");const o=t,i=a?r:t,m=a?n:r,c=m??(t=>t.x),f=(a?s:m)??(t=>t.y),u=t.length;let l=0,h=0,y=0,x=0,g=0;for(let t=0;t<u;t++){const e=o[t],r=i[t],n=c(e,t),s=f(r,t);l+=n*s,h+=n,y+=s,x+=n*n,g+=s*s}const M=(u*l-h*y)/(u*x-Math.pow(h,2));return[M,(y-M*h)/u]}(t,r,n,s)}static gaussian(e,r){return new t.Gaussian(e,r)}};t.SearchFunctions={linear:(t=2)=>function(t){if(t<=1)throw new RangeError("segments must be a number grater than 1.");return(e,r,n,s=.001)=>o((e,r)=>e+(r-e)/t,(e,r)=>r-(r-e)/t)(e,r,n,s)}(t),goldenRatio:(t,e,r,n=.001)=>o((t,e)=>e-(e-t)/1.618,(t,e)=>t+(e-t)/1.618)(t,e,r,n),gaussian:(t,e,r,n=.001)=>{var s=null,a=null;const i=(t,e)=>(a??=e-t,s??=a/Math.sqrt(12),s*(e-t)/a);return o((t,e)=>Math.max(t,(e+t)/2-i(t,e)),(t,e)=>Math.min(e,(e+t)/2+i(t,e)))(t,e,r,n)}}}(t.DataAnalysis||(t.DataAnalysis={}))}(t.Mathematics||(t.Mathematics={}))}(Pacem||(Pacem={}));
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.53.0-stevin (https://js.pacem.it)
2
+ * pacem v0.53.0 (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,8 +1,9 @@
1
1
  /**
2
- * pacem v0.53.0-stevin (https://js.pacem.it)
2
+ * pacem v0.53.0 (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
+ "use strict";
6
7
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
7
8
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8
9
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -1,6 +1,6 @@
1
1
  /**
2
- * pacem v0.53.0-stevin (https://js.pacem.it)
2
+ * pacem v0.53.0 (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
- var Pacem,__decorate=this&&this.__decorate||function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};!function(e){!function(t){!function(a){let s=class PacemCarouselElement extends t.UI.PacemAdaptedIterativeElement{constructor(){super(...arguments),this.interval=4e3}};__decorate([e.ViewChild(e.P+"-adapter")],s.prototype,"adapter",void 0),__decorate([e.ViewChild(e.P+"-slideshow")],s.prototype,"slideshow",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Number})],s.prototype,"interval",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],s.prototype,"pausable",void 0),s=__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>`})],s),a.PacemCarouselElement=s}(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,s){super.propertyChangedCallback(e,t,a,s);const o=this.container;o instanceof n&&o.refresh()}}a.PacemContextMenuItemElement=PacemContextMenuItemElement;let s=class PacemContextMenuItemCommandElement extends PacemContextMenuItemElement{createMenuItemElement(){const e=new t.UI.PacemButtonElement;return e.commandArgument=this.commandArgument,e.commandName=this.commandName,e.textContent=this.caption,e.iconGlyph=this.iconGlyph,e.confirmationDialog=this.confirmationDialog,e.confirmationMessage=this.confirmationMessage,e.tooltip=this.tooltip,e.disabled=this.disabled,e}};__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"commandName",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"caption",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"tooltip",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"iconGlyph",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"confirmationMessage",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Element})],s.prototype,"confirmationDialog",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Json})],s.prototype,"commandArgument",void 0),s=__decorate([e.CustomElement({tagName:e.P+"-context-menuitem-command"})],s),a.PacemContextMenuItemCommandElement=s;let o=class PacemContextMenuItemSeparatorElement extends PacemContextMenuItemElement{createMenuItemElement(){const e=document.createElement("hr");return e.style.pointerEvents="none",e}};o=__decorate([e.CustomElement({tagName:e.P+"-context-menuitem-separator"})],o),a.PacemContextMenuItemSeparatorElement=o;let n=class PacemContextMenuElement extends t.PacemItemsContainerElement{constructor(){super(...arguments),this._dispatchCommand=t=>{e.avoidHandler(t),this._onCommand(new e.CommandEvent({commandName:t.detail.commandName,commandArgument:t.detail.commandArgument??this.commandArgument}))},this._slotchangeHandler=e=>{this._resetLayout()},this._attributeChangeHandler=e=>this._refreshMenuItems,this._mouseupHandler=t=>{const a=this._ensureBalloon();e.Utils.isNull(a)||a.popout()}}validate(e){return e instanceof PacemContextMenuItemElement}#e;#t;#a;_ensureButton(){if(!e.Utils.isNull(this.#e))return this.#e;const a=this._slot;if(e.Utils.isNull(a))return null;const s=this._lookForAButton();if(!e.Utils.isNull(s))return this.#e=s;const o=new t.UI.PacemButtonElement;o.setAttribute("slot","button"),o.className=`${e.PCSS}-margin margin-0 button-flat`;const n=this.#t=new t.UI.PacemIconElement;return o.appendChild(n),this.appendChild(o),this.#e=o}_lookForAButton(){const t=this._slot;if(e.Utils.isNull(t))return null;const a=t.assignedElements({flatten:!0});return e.Utils.isNullOrEmpty(a)?null:a[0]}_ensureBalloon(){let a=this.#a;if(!e.Utils.isNull(a))return a;const s=e.CustomElementUtils.findAncestorShell(this);return e.Utils.isNull(s)?null:(a=new t.UI.PacemBalloonElement,a.options={trigger:t.UI.BalloonTrigger.Click,position:t.UI.BalloonPosition.HorizontalAuto,align:t.UI.BalloonAlignment.Auto,autoAdjust:!0},a.addEventListener(e.CommandEventName,this._dispatchCommand,!1),a.className=`${e.PCSS}-contextmenu`,s.appendChild(a),this.#a=a)}register(t){const a=super.register(t);return a&&(t.addEventListener(e.AttributeChangeEventName,this._attributeChangeHandler,!1),this._refreshMenuItems()),a}unregister(t){const a=super.unregister(t);return a&&(t.removeEventListener(e.AttributeChangeEventName,this._attributeChangeHandler,!1),this._refreshMenuItems()),a}_onCommand(t){this.dispatchEvent(new CustomEvent(e.CommandEventName,{detail:t.detail,cancelable:!0,bubbles:!0})),this.dispatchEvent(new CustomEvent(t.detail.commandName.toLowerCase(),{detail:t.detail.commandArgument,cancelable:!0,bubbles:!0}))}_resetLayout(){const t=this._ensureButton(),a=this._ensureBalloon();e.Utils.isNull(t)||e.Utils.isNull(a)||(a.target=t),this._toggleBtn(),this._toggleIcon()}_toggleBtn(a=this.disabled){const s=this.#e;!e.Utils.isNull(s)&&s instanceof t.PacemElement&&(s.disabled=a)}_toggleIcon(t=this.icon){const a=this.#t;e.Utils.isNull(a)||(a.icon=t)}viewActivatedCallback(){super.viewActivatedCallback(),this._resetLayout(),this._slot.addEventListener("slotchange",this._slotchangeHandler,!1)}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"icon":this._toggleIcon(a);break;case"disabled":this._toggleBtn(a)}}disconnectedCallback(){this._disposeButton(),this._disposeSlot(),this._disposeBalloon(),super.disconnectedCallback()}refresh(){this._refreshMenuItems()}_disposeButton(){this.#e=this.#t=null}_disposeSlot(){const t=this._slot;e.Utils.isNull(t)||t.removeEventListener("slotchange",this._slotchangeHandler,!1)}_disposeBalloon(){const t=this.#a;e.Utils.isNull(t)||(t.removeEventListener(e.CommandEventName,this._dispatchCommand,!1),this._disposeBalloonChildren(0),t.remove(),this.#a=null)}_disposeBalloonChildren(e){const t=this.#a;for(let a=t.children.length-1;a>=e;a--){const e=t.children.item(a);e.removeEventListener("mouseup",this._mouseupHandler,!1),e.remove()}}_refreshMenuItems(){const t=this._ensureBalloon();if(e.Utils.isNull(t))return;const a=t.children.length;let s=0;for(let e of this.items){if(e.hide)continue;const o=e.createMenuItemElement();if(o.addEventListener("mouseup",this._mouseupHandler,!1),s<a){const e=t.children.item(s);e.removeEventListener("mouseup",this._mouseupHandler,!1),e.replaceWith(o)}else t.appendChild(o);s++}this._disposeBalloonChildren(s)}};__decorate([e.ViewChild("slot[name=button]")],n.prototype,"_slot",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,"_refreshMenuItems",null),n=__decorate([e.CustomElement({tagName:e.P+"-context-menu",shadow:!0,template:'<slot name="button"></slot><slot></slot>'})],n),a.PacemContextMenuElement=n}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let s;!function(e){e.Text="text",e.Html="html",e.Image="image",e.Markdown="markdown"}(s=a.EditMode||(a.EditMode={}));let o=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||s.Text;return t.hide=a!==s.Text&&a!==s.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||s.Text;return t.hide=a!==s.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 o=this.type||s.Text;return a.hide=o!==s.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 s.Html:a.innerHTML=t;break;case s.Markdown:if(a.localName===e.P+"-markdown")a.value=t;else a.innerHTML=this._markdown.toHtml(t);break;case s.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 s.Html:return t.innerHTML;case s.Image:switch(t.localName){case e.P+"-img":case"img":return t.src;default:let a=getComputedStyle(t).backgroundImage,s=/url\(["']?([^'"]+)["']?\)/.exec(a);return s&&s.length&&s[1]}case s.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,o,n){switch(super.propertyChangedCallback(t,a,o,n),t){case"imageUploadUrl":e.Utils.isNull(this._editImage)||(this._editImage.uploadUrl=o);break;case"allowSnapshot":e.Utils.isNull(this._editImage)||(this._editImage.allowSnapshot=o);break;case"imageSet":e.Utils.isNull(this._editImage)||(this._editImage.imageSet=o);break;case"disabled":this._setup();break;case"type":const t=o;e.Utils.isNull(this._textarea)||(this._textarea.hide=t!==s.Text&&t!==s.Markdown),e.Utils.isNull(this._contenteditable)||(this._contenteditable.hide=t!==s.Html),e.Utils.isNull(this._editImage)||(this._editImage.hide=t!==s.Image);break;case"maxImageHeight":e.Utils.isNull(this._editImage)||(this._editImage.maxHeight=o);break;case"maxImageWidth":e.Utils.isNull(this._editImage)||(this._editImage.maxWidth=o)}}edit(a){e.avoidHandler(a);var s=this._target;if(!e.Utils.isNull(s)){this._removeButton(),this._content=s;var o=this._state=this._retrieve();e.Utils.isNull(this._editImage)||(this._editImage.disabled=!1),this._dialog.open(o).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})],o.prototype,"key",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"type",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Element})],o.prototype,"target",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"imageUploadUrl",void 0),__decorate([e.Watch({emit:!1})],o.prototype,"imageSet",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],o.prototype,"maxImageWidth",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],o.prototype,"maxImageHeight",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],o.prototype,"allowSnapshot",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-edit"})],o),a.PacemEditElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){function s(t=o(),a="image"){return`<${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.${a} }}" disabled="{{ !::_lightbox.show || !(: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 \n${t}\n \n </${e.P}-slide>`}function o(t="caption"){return`<${e.P}-panel hide="{{ $pacem.isNullOrEmpty(^item.${t}) }}" class="${e.PCSS}-gallery-caption gallery-caption-default">\n <${e.P}-span class="paragraph" text="{{ ^item.${t} }}"></${e.P}-span>\n </${e.P}-panel>`}let n=class PacemGalleryElement extends t.UI.PacemAdaptedIterativeElement{constructor(){super(...arguments),this._templateChangeHandler=e=>{const t=e.target;this._setupWithCaptionTemplate(t.target)}}viewActivatedCallback(){super.viewActivatedCallback(),this._setupWithCaptionTemplate(),this._databind()}propertyChangedCallback(t,a,s,o){if(super.propertyChangedCallback(t,a,s,o),!o)switch(t){case"datasource":this._databind();break;case"captionTemplate":this._setupWithCaptionTemplate(s,a);break;case"imageProperty":this._setupWithCaptionTemplate(this.captionTemplate,this.captionTemplate);break;case"captionProperty":e.Utils.isNull(this.captionTemplate)&&this._setupDefaultTemplate()}}disconnectedCallback(){this._disposeTemplate(),super.disconnectedCallback()}_disposeTemplate(e=this.captionTemplate){e instanceof t.PacemTemplateProxyElement&&e.removeEventListener("templatechange",this._templateChangeHandler)}_setupWithCaptionTemplate(a=this.captionTemplate,o){if(this._disposeTemplate(o),e.Utils.isNull(a))return void this._setupDefaultTemplate();a instanceof t.PacemTemplateProxyElement&&(a.addEventListener("templatechange",this._templateChangeHandler,!1),a=a.target);const n=a.content.firstElementChild;e.Utils.addClass(n,e.PCSS+"-gallery-caption");const i=document.createElement("template");i.innerHTML=s(a.innerHTML,this.imageProperty),this._setupTemplate(i)}_setupTemplate(e){this._templateProxy.target=e}_setupDefaultTemplate(){const e=document.createElement("template");e.innerHTML=s(o(this.captionProperty),this.imageProperty),this._setupTemplate(e)}_databind(){const t=this._repeater;e.Utils.isNull(t)||(t.datasource=this.datasource)}get adapter(){return this._adapter}async _heroAnimate(a,s){if(!e.Utils.isNull(a)){let o=new t.UI.PacemImageElement,n=this._heroPlaceholderProxy.dom[0];const i=300;o.src=s||a.src,o.adapt="contain";let r=e.Utils.offset(n),l=e.Utils.offset(a),c=o.style;const d=getComputedStyle(n);c.border=d.border,c.width=n.clientWidth+"px",c.height=n.clientHeight+"px",c.position="absolute",c.zIndex=d.zIndex,c.top=r.top+"px",c.left=r.left+"px";const h=a.clientWidth/n.clientWidth,m=a.clientHeight/n.clientHeight,p=l.left-r.left+"px",u=l.top-r.top+"px";c.transformOrigin="0 0",c.transition=`transform cubic-bezier(0.445, 0.05, 0.55, 0.95) ${i}ms, opacity ${i}ms`,c.transform=`translate(${p}, ${u}) scale(${h}, ${m})`,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")],n.prototype,"_adapter",void 0),__decorate([e.ViewChild(e.P+"-lightbox")],n.prototype,"_lightbox",void 0),__decorate([e.ViewChild(e.P+"-slideshow")],n.prototype,"_slideshow",void 0),__decorate([e.ViewChild(e.P+"-repeater")],n.prototype,"_repeater",void 0),__decorate([e.ViewChild(e.P+"-template-proxy")],n.prototype,"_templateProxy",void 0),__decorate([e.ViewChild(e.P+"-shell-proxy")],n.prototype,"_heroPlaceholderProxy",void 0),__decorate([e.Watch()],n.prototype,"_poppingUp",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],n.prototype,"captionTemplate",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],n.prototype,"captionProperty",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],n.prototype,"imageProperty",void 0),n=__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>\n <${e.P}-slideshow adapter="{{ ::_adapter }}" index="{{ :host.index, twoway }}" hide="{{ !::_lightbox.show }}">\n <${e.P}-template-proxy></${e.P}-template-proxy>\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>`})],n),a.PacemGalleryElement=n}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){var s;let o=s=class PacemModalFormElement extends t.UI.PacemDialogBase{get form(){return this._form}constructor(){super(),this.suddenValidation=!0,this.method=e.Net.HttpMethod.Post,this._keyupHandler=t=>{if(!(13!==t.keyCode||t.shiftKey||t.ctrlKey||t.altKey||t.metaKey)){let a=t.currentTarget.querySelector(`.${e.PCSS}-dialog-buttons ${e.P}-button[type=submit]`);e.Utils.isNull(a)||!e.Utils.isVisible(a)||a.disabled||a.click()}},this.#s=!1,this._emitter=new e.Components.Scaffolding.FormEventEmitter(this)}viewActivatedCallback(){super.viewActivatedCallback(),this.addEventListener("keyup",this._keyupHandler,!1),this._emitter.start()}disconnectedCallback(){this._emitter.stop(),this.removeEventListener("keyup",this._keyupHandler,!1),super.disconnectedCallback()}_submit(a){this.readonly?this.commit(t.UI.DialogButton.Ok,a):(e.avoidHandler(a),this._form.validate().then(s=>{s&&(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)}#s;open(t,a,o=!0){if(e.Utils.isNull(t))throw`The state of a ${s} cannot be null.`;this.#s=a;var n=super.open(t);return o&&this._form.setPristine(),n}commit(t,a){super.commit(t,a),this.#s||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}}};__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"suddenValidation",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"okCaption",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"cancelCaption",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"method",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],o.prototype,"metadata",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"action",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"loaderType",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"success",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"fail",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"readonly",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],o.prototype,"fetchHeaders",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"fetchCredentials",void 0),__decorate([e.ViewChild(e.P+"-lightbox")],o.prototype,"lightbox",void 0),__decorate([e.ViewChild(e.P+"-form[entity]")],o.prototype,"_form",void 0),__decorate([e.ViewChild(e.P+"-fetch")],o.prototype,"_fetcher",void 0),o=s=__decorate([e.CustomElement({tagName:e.P+"-modal-form",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-lightbox modal="true" logger="{{ :host.logger }}">\n <${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>\n </${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" slot="bottom">\n <div class="buttonset-left">\n <${e.P}-button on-click=":host._submit($event)" css-class="{{ {'buttonset-last': :host.readonly} }}" type="submit"\n class="button primary button-size size-small" disabled="{{ (:host.suddenValidation && !:host.readonly && !(::_form.valid && ::_form.dirty)) || ::_fetcher.fetching }}">\n <${e.P}-panel class="submit-spinner ${e.PCSS}-anim anim-pop" hide="{{ !::_form.fetching }}"><i class="${e.PCSS}-icon ${e.PCSS}-anim anim-rotate rotate-uniform display-block">refresh</i></${e.P}-panel>\n <${e.P}-text text="{{ :host.okCaption || 'OK' }}"></${e.P}-text>\n </${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" slot="top">\n <${e.P}-content></${e.P}-content>\n </div>\n <div class="pos-absolute absolute-top absolute-right absolute-left absolute-bottom overflow-hidden ${e.PCSS}-inert display-flex flex-center flex-middle">\n <${e.P}-loader type="{{ :host.loaderType }}" class="loader-primary loader-smaller ${e.PCSS}-anim anim-pop" active="{{ ::_fetcher.fetching }}"></${e.P}-loader>\n </div>\n</${e.P}-lightbox>`})],o),a.PacemModalFormElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let s=class PacemRouterHashStateElement extends t.PacemEventTarget{constructor(){super(...arguments),this.default={},this.state={},this.normalizedState={},this._routerNavigatingHandler=e=>{this.#o=!0},this._routerNavigateHandler=e=>{this.#o=!1,this._updateStateFromURI()}}#o;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||this.#o||(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 s=e.Utils.extend({},t||{}),o=e.Utils.extend({},a||{});for(let e in s){if(!this._areSubstantiallyEquivalent(s[e],o[e]))return!1;delete s[e],delete o[e]}for(let e in o)if(!this._areSubstantiallyEquivalent(s[e],o[e]))return!1;return!0}_updateNormalizedState(e=this.state){if(this.disabled||this.#o)return;const t=this._normalizeState(e);this._areStatesEquivalent(t,this.normalizedState)||(this.normalizedState=t)}_updateStateFromURI(){if(this.disabled||this.#o)return;var t=e.Utils.extend({},this.default||{});const a=this.router;if(!e.Utils.isNull(a)){const s=this._denormalizeState(e.Utils.URIs.parseQuery(a.state&&a.state.$hash||"{}"));e.Utils.extend(t,s)}this._areStatesEquivalent(this.state,t)||(this.state=t)}_updateURIFromState(t=this.normalizedState){if(this.disabled||this.#o)return;const a=this.router;if(!e.Utils.isNull(a)){const o=this._currentBasePath(),n=e.Utils.URIs.parseQuery(a.state.$hash||"{}"),i=t||{};if(!this._areStatesEquivalent(n,i)){const t=this._cleanupStateForURI(i);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||{}),s=this.default;for(let t in a)(e.Utils.isNullOrEmpty(a[t])&&(e.Utils.isNull(s)||!(t in s))||!e.Utils.isNull(s)&&t in s&&this._areSubstantiallyEquivalent(s[t],a[t]))&&delete a[t];return a}_normalizeState(t=this.state,a=this.default){var s={};const o=a;for(let a in t||{}){const n=t[a];if(e.Utils.isNullOrEmpty(n))e.Utils.isNull(o)||!(a in o)||e.Utils.isNullOrEmpty(o[a])||(s[a]="");else switch(typeof n){case"number":case"bigint":case"boolean":Object.defineProperty(s,a,{enumerable:!0,value:n.toString()});break;case"symbol":case"string":Object.defineProperty(s,a,{enumerable:!0,value:n});break;default:if(e.Utils.Dates.isDate(n))Object.defineProperty(s,a,{enumerable:!0,value:n.toISOString()});else{if(!(n instanceof RegExp))throw new Error("Type not supported to be normalized into a URI hash.");Object.defineProperty(s,a,{enumerable:!0,value:n.source})}}}return s}_denormalizeState(t=this.normalizedState,a=this.default){const s={},o=a||{};for(let a in t){if(!(a in o)){s[a]=t[a];continue}const n=o[a],i=t[a];switch(typeof n){case"boolean":Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.Boolean.convert(i)});break;case"number":case"bigint":Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.Number.convert(i)});break;case"symbol":case"string":Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.String.convert(i)});break;default:n instanceof Date?Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.Date.convert(i)}):n instanceof RegExp?Object.defineProperty(s,a,{enumerable:!0,value:new RegExp(i,n.flags)}):Object.defineProperty(s,a,{enumerable:!0,value:i})}}return s}set(t,a){var s={};"string"==typeof t?Object.defineProperty(s,t,{enumerable:!0,value:a}):s=t,this.state=e.Utils.extend({},this.state||{},s)}};__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.PacemRouterHashStateElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let s=class PacemSearchElement extends t.PacemElement{constructor(){super(...arguments),this.hintParameter="q"}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),"hint"===e){let e={};e[this.hintParameter]=a,this._fetcher.parameters=e}}};__decorate([e.ViewChild(e.P+"-fetch")],s.prototype,"_fetcher",void 0),__decorate([e.Watch()],s.prototype,"datasource",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"hint",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"url",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"method",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],s.prototype,"hintParameter",void 0),s=__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>`})],s),a.PacemSearchElement=s}(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,s){if(super.propertyChangedCallback(e,t,a,s),!s)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){t.DataRowSelectChangeEventName="datarowselectchange";class DataRowSelectChangeEvent extends CustomEvent{constructor(e){super(t.DataRowSelectChangeEventName,{detail:e,bubbles:!1,cancelable:!0})}}t.DataRowSelectChangeEvent=DataRowSelectChangeEvent;const a={},s=[];let o=class PacemDataCellElement extends t.PacemBaseCellElement{updateLayout(e=this.metadata){this._setup(e)}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-datacell")}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"_contentTooltip":this._updateTooltipJustInCase();break;case"gridState":case"rowindex":this._updateSelection()}}_updateTooltipJustInCase(){(this.metadata.dataCell?.autoTooltip??!0)&&!e.Utils.isNullOrEmpty(this._contentTooltip)?this.setAttribute("tooltip",this._contentTooltip):this.removeAttribute("tooltip")}_inflateContent(t=this.dataitem,a=this.rowindex,s=this.metadata){this._contentTooltip="";let o=s.dataCell?.format;const n=s.dataCell?.null??"";if("function"==typeof o){const i=o(this,s,t,a);return e.Utils.isNullOrEmpty(i)?n:i}const i=e.CustomElementUtils.resolvePath(s.prop,t)?.target,r=i?.value;if(e.Utils.isNullOrEmpty(r))return n;const l=e.Utils.lang(this);switch(s.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 this._contentTooltip=e.Utils.core.date(r,o,l);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 this._contentTooltip=e.Utils.core.number(r,o||"",l);case"currency":return o??="EUR",this._contentTooltip="string"==typeof o?e.Utils.core.currency(r,o,l):e.Utils.core.number(r,o,l);case"percent":case"percentage":return o??={style:"percent",maximumFractionDigits:2},this._contentTooltip="string"==typeof o?e.Utils.core.currency(r,o,l):e.Utils.core.number(r,o,l);default:return this._contentTooltip=r}}_inflateCssClass(t=this.dataitem,a=this.rowindex,o=this.metadata,n){if(e.Utils.isNull(t)||e.Utils.isNullOrEmpty(o))return s;const i=o.dataCell&&o.dataCell.cssClass||s,r=[];switch("function"==typeof i?Array.prototype.push.apply(r,i(this,o,t,a)||[]):Array.prototype.push.apply(r,i),o.dataCell?.verticalAlign?.toLowerCase()){case"top":r.push("datacell-top");break;case"bottom":r.push("datacell-bottom");break;case"middle":r.push("datacell-middle")}switch(o.dataCell?.horizontalAlign?.toLowerCase()){case"left":r.push("datacell-left");break;case"right":r.push("datacell-right");break;case"center":r.push("datacell-center")}return n?.length&&(0===a&&r.push("datacell-firstrow"),a===n.length-1&&r.push("datacell-lastrow")),r}_inflateCss(t=this.dataitem,s=this.rowindex,o=this.metadata){if(e.Utils.isNull(t)||e.Utils.isNullOrEmpty(o))return a;const n=o.dataCell&&o.dataCell.css||a;return"function"==typeof n?n(this,o,t,s):n}_setup(t=this.metadata){this.setAttribute("css-class","{{ this._inflateCssClass(^item, ^index, this.metadata, :host.datasource) }}"),this.setAttribute("css","{{ Pacem.Utils.extend({ 'grid-row': ^index+2 }, this._inflateCss(^item, ^index, this.metadata, :host.datasource)) }}");const a=!!t.dataCell?.textEllipsis?["text-truncate"]:[],s=t?.dataCell?.selectMode?.toLowerCase();switch(s){case"cell":case"row":a.push(e.PCSS+"-inert"),a.push(e.PCSS+"-unselect")}this._content.cssClass=a,this._updateSelection()}_updateSelection(){(this.gridState?.selectedRows??[]).indexOf(this.rowindex)>=0?e.Utils.addClass(this,"datarow-selected datacell-filled datacell-primary"):e.Utils.removeClass(this,"datarow-selected datacell-filled datacell-primary")}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Eval})],o.prototype,"dataitem",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],o.prototype,"rowindex",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String,debounce:200})],o.prototype,"_contentTooltip",void 0),__decorate([e.ViewChild(e.P+"-span")],o.prototype,"_content",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-datacell",shadow:!1,template:`<${e.P}-span content="{{ :host._inflateContent(^item, ^index, :host.metadata) }}"></${e.P}-span>`})],o),t.PacemDataCellElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){const s="datacolumnchange",o="datacolumnstatechange",n={selectCaption:"Details",editCaption:"Edit",editIcon:"edit",deleteCaption:"Delete",deleteIcon:"delete"};class DataGridBindEvent extends CustomEvent{constructor(e){super("databind",{cancelable:!1,bubbles:!1,detail:e})}}a.DataGridBindEvent=DataGridBindEvent;class DataCellUIEvent extends e.CustomUIEvent{constructor(e,t,a){super(e,t,{bubbles:!1,cancelable:!0},a)}}a.DataCellUIEvent=DataCellUIEvent;let i=class PacemDataColumnElement extends t.PacemItemElement{propertyChangedCallback(e,t,a,n){if(super.propertyChangedCallback(e,t,a,n),!n)switch(e){case"field":case"headcellCss":case"headcellCssClass":case"datacellCss":case"datacellCssClass":case"resizable":case"togglable":case"sortable":case"label":this.dispatchEvent(new Event(s));break;case"order":case"hide":this.dispatchEvent(new Event(o))}}};function r(t){return`<${e.P}-headcell metadata="{{ :host._getColumnMetadata('${t.prop}') }}" state="{{ :host._columnState.${t.prop} }}" grid-state="{{ :host._gridState }}" \non-${a.DataColumnSortEventName}=":host._broadcastSortCommand($event)"\non-${a.DataColumnRescaleEventName}=":host._broadcastRescaleCommand($event)"></${e.P}-headcell>`}function l(t,a){return`<${e.P}-datacell metadata="{{ :host._getColumnMetadata('${t.prop}') }}" state="{{ :host._columnState.${t.prop} }}" grid-state="{{ :host._gridState }}"\ndataitem="{{ ^item }}" rowindex="{{ ^index }}" ${a}></${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 c=class PacemDataGridElement extends t.PacemItemsContainerElement{constructor(t=e.Utils.uniqueCode()){super(),this._key=t,this.state={},this._columnState={},this._gridState={sort:{},orderedColumns:[],selectedRows:[]},this._itemDataColumnRebuildHandler=e=>{this._adaptColumnMetadata(this.items||[])},this._itemDataColumnChangeHandler=e=>{this._adaptColumnMetadata(this.items||[])},this._memoizer={}}validate(e){return e instanceof i}viewActivatedCallback(){super.viewActivatedCallback(),this.addEventListener(e.CommandEventName,this._onCommand,!1),this._adaptColumnMetadata();const t=this._adaptedColumnMetadata||[];this._buildUpGrid(t)}disconnectedCallback(){this.removeEventListener(e.CommandEventName,this._onCommand,!1),super.disconnectedCallback()}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"items":case"metadata":this._adaptColumnMetadata();break;case"_adaptedColumnMetadata":this._buildUpGrid(a);break;case"datasource":const e={keepRowSelection:!1,datasource:a},t=new DataGridBindEvent(e);this.dispatchEvent(t),e.keepRowSelection||this._setRowSelection();break;case"state":this._mergeState(a)}}register(e){return!!super.register(e)&&(e.addEventListener(s,this._itemDataColumnRebuildHandler,!1),e.addEventListener(o,this._itemDataColumnChangeHandler,!1),!0)}unregister(e){return!!super.unregister(e)&&(e.removeEventListener(s,this._itemDataColumnRebuildHandler,!1),e.removeEventListener(o,this._itemDataColumnChangeHandler,!1),!0)}setRowSelection(...e){const t=Array.from(e);this._setRowSelection(t)}_setRowSelection(t){const s=(t||[]).map(e=>({item:this.datasource[e],index:e})),o=new a.DataRowSelectChangeEvent({selectedRows:s});if(this.dispatchEvent(o),!o.defaultPrevented){let t=o.detail.selectedRows;e.Utils.isArray(t)||(t=[]),this._doSetRowSelection(t.map(e=>e?.index??-1).filter(e=>e>=0))}}_doSetRowSelection(e){const t={selectedRows:e};this._mergeState(t)}_mergeState(t=this.state){t??={};const a={selectedRows:(t.selectedRows||[]).map(e=>"number"==typeof e?e:e.index)},s=this._gridState=e.Utils.extend({},this._gridState,t,a);this.state=e.Utils.extend(this.state??{},s)}_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,isRescalable:e.resizable,isSortable:e.sortable,isTogglable:e.togglable,order:e.order,width:1})),t||[]);this._memoizer={},this._adaptedColumnMetadata=a}_getColumnMetadata(e){return this._memoizer[e]=this._memoizer[e]||this._adaptedColumnMetadata.find(t=>t.prop===e)}_buildUpGrid(a){const s=this._tableContainer;if(e.Utils.isNull(s))return;if(e.Utils.isNullOrEmpty(a))return void(s.innerHTML="");const o=this.options=e.Utils.extend({},n,this.options||{}),i=o.allowDelete||o.allowEdit||o.allowSelect,c=o.allowMultiSelect&&i;let d=c?"auto ":"",h=c?`<div class="${e.PCSS}-headcell"></div>`:"",m=c?`<${e.P}-panel class="${e.PCSS}-datacell" style="grid-column: 1;" css="{{ {'grid-row': ^index+2} }}"></${e.P}-panel>`:"",p=c?`<div class="${e.PCSS}-footcell"></div>`:"";const u=c?a.length+2:i?a.length+1:a.length;this._gridState.orderedColumns=a.sort((e,t)=>(e.order??0)-(t.order??0)).map(e=>e.prop);let _="";for(let e of t.PacemElement.emittedEventTypes)_+=` on-${e}=":host._broadcastUiEvent(^item, ^index, $event)"`;for(let e of a)this._columnState[e.prop]={hidden:e.hide},d+=this._getColumnSize(e).replaceAll(" ","")+" ",h+=r(e),m+=l(e,_);m+=`<${e.P}-panel class="${e.PCSS}-datarow" css-class="{{ {'datarow-alt': ^index % 2 === 1, 'datarow-first': ^index === 0, 'datarow-last': ^index === (:host.datasource.length - 1), 'datarow-selected': :host._gridState.selectedRows.indexOf(^index) >= 0 } }}" style="grid-column: 1 /span ${u};" css="{{ {'grid-row': ^index+2} }}"></${e.P}-panel>`;const C=`<${e.P}-repeater datasource="{{ :host.datasource }}">\n<${e.P}-panel class="${e.PCSS}-datatable" css="{{ {'grid-template-columns': :host._getColumnSizes(:host._columnState, '${d.trimEnd()}', :host._gridState) } }}">\n ${h}\n <template>\n ${m}\n </template>\n ${p}\n</${e.P}-panel>`;s.innerHTML=C}_getColumnSizes(t=this._columnState,a,s=this._gridState){if(e.Utils.isNullOrEmpty(t))return a;const o=a.split(" ");for(let e in t){const a=t[e],n=s.orderedColumns.indexOf(e);a.hidden?o[n]="auto":a.pixelWidth>0&&(o[n]=a.pixelWidth+"px")}return o.join(" ")}_getColumnSize(e){if(e.hide)return"auto";const t=e.minPixelWidth,a=e.maxPixelWidth;if(a>0&&t>0)return`minmax(${t}px, ${a}px)`;{const s="number"==typeof e.width?e.width+"fr":"auto";return t>0?`minmax(${t}px, ${s})`:a>0?`minmax(${s}, ${a}px)`:s}}_onCommand(e){this.dispatchEvent(new t.ItemCommandEvent(e)),this.dispatchEvent(new t.CustomItemCommandEvent(e))}_broadcastUiEvent(e,t,a){const s=a.type.toLowerCase(),o="datacell"+s,n={dataitem:e,rowindex:t,datacell:a.srcElement},i=a instanceof MouseEvent||a instanceof TouchEvent||a instanceof KeyboardEvent?new DataCellUIEvent(o,n,a):new DataCellUIEvent(o,n);if(this.dispatchEvent(i),"click"===s&&!i.defaultPrevented){const e=i.detail.datacell,t=e.metadata?.dataCell?.selectMode?.toLowerCase();switch(t){case"cell":break;case"row":this._broadcastSelectCommand(i.detail.rowindex)}}}_broadcastSortCommand(t){const s=t.detail,o=new a.DataColumnSortEvent(s);if(this.dispatchEvent(o),!o.defaultPrevented){const t={column:""};"string"==typeof o.detail.column&&(t.column=o.detail.column),"string"==typeof o.detail.dir&&(t.dir="desc"===o.detail.dir?"desc":"asc"),this._gridState=e.Utils.extend({},this._gridState,{sort:t})}}_broadcastRescaleCommand(t){const s=t.detail,o=new a.DataColumnRescaleEvent(s);if(this.dispatchEvent(o),!o.defaultPrevented){let a=s.width;"number"==typeof o.detail.width&&o.detail.width>0&&(a=o.detail.width);const n={};n[t.srcElement.metadata.prop]={pixelWidth:a},this._columnState=e.Utils.extend({},this._columnState,n)}}_broadcastSelectCommand(t){let a=(this._gridState.selectedRows||[]).slice(0);const s=a.indexOf(t);let o=!0;if(s>=0)a.splice(s,1);else{const s=this.options;if(s.allowMultiSelect)a.push(t);else if(s.allowSelect)a=[t];else{o=!1;const a=`Cannot select the row at index ${t} since datagrid options do not allow any row selection.`;e.Utils.isNull(this.logger)?console.warn(a):this.log(e.Logging.LogLevel.Warn,a)}}o&&this._setRowSelection(a)}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],c.prototype,"metadata",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],c.prototype,"options",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],c.prototype,"state",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],c.prototype,"datasource",void 0),__decorate([e.ViewChild("."+e.PCSS+"-datagrid")],c.prototype,"_tableContainer",void 0),__decorate([e.Watch()],c.prototype,"_adaptedColumnMetadata",void 0),__decorate([e.Watch()],c.prototype,"_columnState",void 0),__decorate([e.Watch()],c.prototype,"_gridState",void 0),__decorate([e.Debounce()],c.prototype,"_adaptColumnMetadata",null),c=__decorate([e.CustomElement({tagName:e.P+"-datagrid",shadow:!1,template:`<div class="${e.PCSS}-datagrid"></div><${e.P}-content></${e.P}-content>`})],c),a.PacemDataGridElement=c}(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:!0})}}a.DataColumnSortEvent=DataColumnSortEvent,a.DataColumnRescaleEventName="datacolumnrescale";class DataColumnRescaleEvent extends CustomEvent{constructor(e){super(a.DataColumnRescaleEventName,{detail:e,bubbles:!1,cancelable:!0})}}a.DataColumnRescaleEvent=DataColumnRescaleEvent;let s=class PacemHeadCellElement extends a.PacemBaseCellElement{constructor(t=new e.MarkdownService){super(),this._md=t,this._sortButtonClickHandler=e=>{const t=this.metadata,a=this.gridState,s=t.prop,o=a.sort?.column===s?"desc"===a.sort.dir?"asc":"desc":t.defaultSort||"asc";this.dispatchEvent(new DataColumnSortEvent({column:s,dir:o}))},this._rescaleHandler=e=>{e.preventDefault();const t=e.detail,a=Math.max(this.metadata.minPixelWidth??24,t.currentPosition.x-this._columnBBox.x);this.dispatchEvent(new DataColumnRescaleEvent({width:a}))},this._rescaleStartHandler=t=>{this._columnBBox=e.Utils.offsetRect(this)},this._rescaleEndHandler=e=>{}}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-headcell")}propertyChangedCallback(e,t,a,s){super.propertyChangedCallback(e,t,a,s),s||"gridState"!==e||this._updateSortButtonIconGlyph()}viewActivatedCallback(){super.viewActivatedCallback(),this._ensureBalloon()}disconnectedCallback(){this._disposeBalloon(),this._disposeRescaler(),super.disconnectedCallback()}updateLayout(e=this.metadata){this._setup(e)}_setupSortButton(){const t=new e.Components.UI.PacemButtonElement;return t.className=`button-flat headcell-sort ${e.PCSS}-inert`,this.addEventListener("click",this._sortButtonClickHandler,!1),e.Utils.addClass(this,e.PCSS+"-clickable"),t}_disposeSortButton(t=this._sortButton){e.Utils.isNull(t)||(e.Utils.removeClass(this,e.PCSS+"-clickable"),this.removeEventListener("click",this._sortButtonClickHandler,!1),t.remove(),this._sortButton=null)}_updateSortButtonIconGlyph(t=this._sortButton,a=this.gridState,s=this.metadata){e.Utils.isNull(t)||e.Utils.isNullOrEmpty(s)||(t.iconGlyph=a?.sort?.column===s.prop?"desc"===a.sort.dir?"arrow_drop_down":"arrow_drop_up":"")}_ensureRescaler(){if(e.Utils.isNull(this._rescaler)){const t=this._rescaler=this._rescaler||new e.Components.PacemRescaleElement;t.handles=[e.UI.RescaleHandle.Right],t.addEventListener(e.UI.RescaleEventType.Rescale,this._rescaleHandler,!1),t.addEventListener(e.UI.RescaleEventType.Start,this._rescaleStartHandler,!1),t.addEventListener(e.UI.RescaleEventType.End,this._rescaleEndHandler,!1),e.CustomElementUtils.findAncestorShell(this).appendChild(t)}}_setupRescaleContainer(){this._ensureRescaler();const t=new e.Components.PacemPanelElement;return t.className="headcell-rescale",t.behaviors=[this._rescaler],t}_disposeRescaleContainer(t=this._rescaleContainer){e.Utils.isNull(t)||(t.remove(),this._rescaleContainer=null)}_disposeRescaler(t=this._rescaler){e.Utils.isNull(t)||(t.removeEventListener(e.UI.RescaleEventType.Rescale,this._rescaleHandler,!1),t.removeEventListener(e.UI.RescaleEventType.Start,this._rescaleStartHandler,!1),t.removeEventListener(e.UI.RescaleEventType.End,this._rescaleEndHandler,!1),t.remove(),this._rescaler=null)}_setup(t=this.metadata){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 }}");const a=!!t.headCell?.textEllipsis?["text-truncate"]:[];switch(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":a.push("text-left");break;case"right":a.push("text-right");break;case"center":a.push("text-center")}this.removeAttribute("content");const s=e.Utils.isNullOrEmpty(a)?"":` class="${a.join(" ")}"`,o=t.headCell?.name??t.prop;if(this.innerHTML=`<div${s}>${o}</div>`,t.isSortable){this._disposeSortButton();const e=this._sortButton=this._setupSortButton();this._updateSortButtonIconGlyph(e),this.appendChild(e)}if(t.isRescalable){this._disposeRescaleContainer();const e=this._rescaleContainer=this._setupRescaleContainer();this.appendChild(e)}t.isTogglable}_normalizeTooltip(){const e=this.metadata.headCell?.tooltip||!1;return"object"==typeof e?e:{type:e}}_ensureBalloon(){var a,s;const o=!1===(s=this._normalizeTooltip()).type||e.Utils.isNullOrEmpty(a=this.metadata.headCell?.description);if(e.Utils.isNull(this._balloon)&&!o){let a=new e.Components.UI.PacemBalloonElement;a.options={behavior:t.UI.BalloonBehavior.Tooltip,trigger:s.trigger||t.UI.BalloonTrigger.Hover,position:s.position||t.UI.BalloonPosition.Top,hoverDelay:200,hoverTimeout:50,align:s.align||t.UI.BalloonAlignment.Auto},e.Utils.addClass(a,e.PCSS+"-headcell-tooltip"),e.CustomElementUtils.findAncestorShell(this).appendChild(this._balloon=a)}const n=this._balloon;if(!(e.Utils.isNull(n)||(n.target=this,n.disabled=o))){const e=a||"";switch(s.type){case"md":case"markdown":n.innerHTML=this._md.toHtml(e);break;case"html":n.innerHTML=e;break;default:n.innerText=e}}}_disposeBalloon(){e.Utils.isNull(this._balloon)||(this._balloon.remove(),this._balloon=null)}};s=__decorate([e.CustomElement({tagName:e.P+"-headcell"})],s),a.PacemHeadCellElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={}));
6
+ "use strict";var Pacem,__decorate=this&&this.__decorate||function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};!function(e){!function(t){!function(a){let s=class PacemCarouselElement extends t.UI.PacemAdaptedIterativeElement{constructor(){super(...arguments),this.interval=4e3}};__decorate([e.ViewChild(e.P+"-adapter")],s.prototype,"adapter",void 0),__decorate([e.ViewChild(e.P+"-slideshow")],s.prototype,"slideshow",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Number})],s.prototype,"interval",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],s.prototype,"pausable",void 0),s=__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>`})],s),a.PacemCarouselElement=s}(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,s){super.propertyChangedCallback(e,t,a,s);const o=this.container;o instanceof n&&o.refresh()}}a.PacemContextMenuItemElement=PacemContextMenuItemElement;let s=class PacemContextMenuItemCommandElement extends PacemContextMenuItemElement{createMenuItemElement(){const e=new t.UI.PacemButtonElement;return e.commandArgument=this.commandArgument,e.commandName=this.commandName,e.textContent=this.caption,e.iconGlyph=this.iconGlyph,e.confirmationDialog=this.confirmationDialog,e.confirmationMessage=this.confirmationMessage,e.tooltip=this.tooltip,e.disabled=this.disabled,e}};__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"commandName",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"caption",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"tooltip",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"iconGlyph",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"confirmationMessage",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Element})],s.prototype,"confirmationDialog",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Json})],s.prototype,"commandArgument",void 0),s=__decorate([e.CustomElement({tagName:e.P+"-context-menuitem-command"})],s),a.PacemContextMenuItemCommandElement=s;let o=class PacemContextMenuItemSeparatorElement extends PacemContextMenuItemElement{createMenuItemElement(){const e=document.createElement("hr");return e.style.pointerEvents="none",e}};o=__decorate([e.CustomElement({tagName:e.P+"-context-menuitem-separator"})],o),a.PacemContextMenuItemSeparatorElement=o;let n=class PacemContextMenuElement extends t.PacemItemsContainerElement{constructor(){super(...arguments),this._dispatchCommand=t=>{e.avoidHandler(t),this._onCommand(new e.CommandEvent({commandName:t.detail.commandName,commandArgument:t.detail.commandArgument??this.commandArgument}))},this._slotchangeHandler=e=>{this._resetLayout()},this._attributeChangeHandler=e=>this._refreshMenuItems,this._mouseupHandler=t=>{const a=this._ensureBalloon();e.Utils.isNull(a)||a.popout()}}validate(e){return e instanceof PacemContextMenuItemElement}#e;#t;#a;_ensureButton(){if(!e.Utils.isNull(this.#e))return this.#e;const a=this._slot;if(e.Utils.isNull(a))return null;const s=this._lookForAButton();if(!e.Utils.isNull(s))return this.#e=s;const o=new t.UI.PacemButtonElement;o.setAttribute("slot","button"),o.className=`${e.PCSS}-margin margin-0 button-flat`;const n=this.#t=new t.UI.PacemIconElement;return o.appendChild(n),this.appendChild(o),this.#e=o}_lookForAButton(){const t=this._slot;if(e.Utils.isNull(t))return null;const a=t.assignedElements({flatten:!0});return e.Utils.isNullOrEmpty(a)?null:a[0]}_ensureBalloon(){let a=this.#a;if(!e.Utils.isNull(a))return a;const s=e.CustomElementUtils.findAncestorShell(this);return e.Utils.isNull(s)?null:(a=new t.UI.PacemBalloonElement,a.options={trigger:t.UI.BalloonTrigger.Click,position:t.UI.BalloonPosition.HorizontalAuto,align:t.UI.BalloonAlignment.Auto,autoAdjust:!0},a.addEventListener(e.CommandEventName,this._dispatchCommand,!1),a.className=`${e.PCSS}-contextmenu`,s.appendChild(a),this.#a=a)}register(t){const a=super.register(t);return a&&(t.addEventListener(e.AttributeChangeEventName,this._attributeChangeHandler,!1),this._refreshMenuItems()),a}unregister(t){const a=super.unregister(t);return a&&(t.removeEventListener(e.AttributeChangeEventName,this._attributeChangeHandler,!1),this._refreshMenuItems()),a}_onCommand(t){this.dispatchEvent(new CustomEvent(e.CommandEventName,{detail:t.detail,cancelable:!0,bubbles:!0})),this.dispatchEvent(new CustomEvent(t.detail.commandName.toLowerCase(),{detail:t.detail.commandArgument,cancelable:!0,bubbles:!0}))}_resetLayout(){const t=this._ensureButton(),a=this._ensureBalloon();e.Utils.isNull(t)||e.Utils.isNull(a)||(a.target=t),this._toggleBtn(),this._toggleIcon()}_toggleBtn(a=this.disabled){const s=this.#e;!e.Utils.isNull(s)&&s instanceof t.PacemElement&&(s.disabled=a)}_toggleIcon(t=this.icon){const a=this.#t;e.Utils.isNull(a)||(a.icon=t)}viewActivatedCallback(){super.viewActivatedCallback(),this._resetLayout(),this._slot.addEventListener("slotchange",this._slotchangeHandler,!1)}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"icon":this._toggleIcon(a);break;case"disabled":this._toggleBtn(a)}}disconnectedCallback(){this._disposeButton(),this._disposeSlot(),this._disposeBalloon(),super.disconnectedCallback()}refresh(){this._refreshMenuItems()}_disposeButton(){this.#e=this.#t=null}_disposeSlot(){const t=this._slot;e.Utils.isNull(t)||t.removeEventListener("slotchange",this._slotchangeHandler,!1)}_disposeBalloon(){const t=this.#a;e.Utils.isNull(t)||(t.removeEventListener(e.CommandEventName,this._dispatchCommand,!1),this._disposeBalloonChildren(0),t.remove(),this.#a=null)}_disposeBalloonChildren(e){const t=this.#a;for(let a=t.children.length-1;a>=e;a--){const e=t.children.item(a);e.removeEventListener("mouseup",this._mouseupHandler,!1),e.remove()}}_refreshMenuItems(){const t=this._ensureBalloon();if(e.Utils.isNull(t))return;const a=t.children.length;let s=0;for(let e of this.items){if(e.hide)continue;const o=e.createMenuItemElement();if(o.addEventListener("mouseup",this._mouseupHandler,!1),s<a){const e=t.children.item(s);e.removeEventListener("mouseup",this._mouseupHandler,!1),e.replaceWith(o)}else t.appendChild(o);s++}this._disposeBalloonChildren(s)}};__decorate([e.ViewChild("slot[name=button]")],n.prototype,"_slot",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,"_refreshMenuItems",null),n=__decorate([e.CustomElement({tagName:e.P+"-context-menu",shadow:!0,template:'<slot name="button"></slot><slot></slot>'})],n),a.PacemContextMenuElement=n}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let s;!function(e){e.Text="text",e.Html="html",e.Image="image",e.Markdown="markdown"}(s=a.EditMode||(a.EditMode={}));let o=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||s.Text;return t.hide=a!==s.Text&&a!==s.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||s.Text;return t.hide=a!==s.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 o=this.type||s.Text;return a.hide=o!==s.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 s.Html:a.innerHTML=t;break;case s.Markdown:if(a.localName===e.P+"-markdown")a.value=t;else a.innerHTML=this._markdown.toHtml(t);break;case s.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 s.Html:return t.innerHTML;case s.Image:switch(t.localName){case e.P+"-img":case"img":return t.src;default:let a=getComputedStyle(t).backgroundImage,s=/url\(["']?([^'"]+)["']?\)/.exec(a);return s&&s.length&&s[1]}case s.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,o,n){switch(super.propertyChangedCallback(t,a,o,n),t){case"imageUploadUrl":e.Utils.isNull(this._editImage)||(this._editImage.uploadUrl=o);break;case"allowSnapshot":e.Utils.isNull(this._editImage)||(this._editImage.allowSnapshot=o);break;case"imageSet":e.Utils.isNull(this._editImage)||(this._editImage.imageSet=o);break;case"disabled":this._setup();break;case"type":const t=o;e.Utils.isNull(this._textarea)||(this._textarea.hide=t!==s.Text&&t!==s.Markdown),e.Utils.isNull(this._contenteditable)||(this._contenteditable.hide=t!==s.Html),e.Utils.isNull(this._editImage)||(this._editImage.hide=t!==s.Image);break;case"maxImageHeight":e.Utils.isNull(this._editImage)||(this._editImage.maxHeight=o);break;case"maxImageWidth":e.Utils.isNull(this._editImage)||(this._editImage.maxWidth=o)}}edit(a){e.avoidHandler(a);var s=this._target;if(!e.Utils.isNull(s)){this._removeButton(),this._content=s;var o=this._state=this._retrieve();e.Utils.isNull(this._editImage)||(this._editImage.disabled=!1),this._dialog.open(o).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})],o.prototype,"key",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"type",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Element})],o.prototype,"target",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"imageUploadUrl",void 0),__decorate([e.Watch({emit:!1})],o.prototype,"imageSet",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],o.prototype,"maxImageWidth",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],o.prototype,"maxImageHeight",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],o.prototype,"allowSnapshot",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-edit"})],o),a.PacemEditElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){function s(t=o(),a="image"){return`<${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.${a} }}" disabled="{{ !::_lightbox.show || !(: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 \n${t}\n \n </${e.P}-slide>`}function o(t="caption"){return`<${e.P}-panel hide="{{ $pacem.isNullOrEmpty(^item.${t}) }}" class="${e.PCSS}-gallery-caption gallery-caption-default">\n <${e.P}-span class="paragraph" text="{{ ^item.${t} }}"></${e.P}-span>\n </${e.P}-panel>`}let n=class PacemGalleryElement extends t.UI.PacemAdaptedIterativeElement{constructor(){super(...arguments),this._templateChangeHandler=e=>{const t=e.target;this._setupWithCaptionTemplate(t.target)}}viewActivatedCallback(){super.viewActivatedCallback(),this._setupWithCaptionTemplate(),this._databind()}propertyChangedCallback(t,a,s,o){if(super.propertyChangedCallback(t,a,s,o),!o)switch(t){case"datasource":this._databind();break;case"captionTemplate":this._setupWithCaptionTemplate(s,a);break;case"imageProperty":this._setupWithCaptionTemplate(this.captionTemplate,this.captionTemplate);break;case"captionProperty":e.Utils.isNull(this.captionTemplate)&&this._setupDefaultTemplate()}}disconnectedCallback(){this._disposeTemplate(),super.disconnectedCallback()}_disposeTemplate(e=this.captionTemplate){e instanceof t.PacemTemplateProxyElement&&e.removeEventListener("templatechange",this._templateChangeHandler)}_setupWithCaptionTemplate(a=this.captionTemplate,o){if(this._disposeTemplate(o),e.Utils.isNull(a))return void this._setupDefaultTemplate();a instanceof t.PacemTemplateProxyElement&&(a.addEventListener("templatechange",this._templateChangeHandler,!1),a=a.target);const n=a.content.firstElementChild;e.Utils.addClass(n,e.PCSS+"-gallery-caption");const i=document.createElement("template");i.innerHTML=s(a.innerHTML,this.imageProperty),this._setupTemplate(i)}_setupTemplate(e){this._templateProxy.target=e}_setupDefaultTemplate(){const e=document.createElement("template");e.innerHTML=s(o(this.captionProperty),this.imageProperty),this._setupTemplate(e)}_databind(){const t=this._repeater;e.Utils.isNull(t)||(t.datasource=this.datasource)}get adapter(){return this._adapter}async _heroAnimate(a,s){if(!e.Utils.isNull(a)){let o=new t.UI.PacemImageElement,n=this._heroPlaceholderProxy.dom[0];const i=300;o.src=s||a.src,o.adapt="contain";let r=e.Utils.offset(n),l=e.Utils.offset(a),c=o.style;const d=getComputedStyle(n);c.border=d.border,c.width=n.clientWidth+"px",c.height=n.clientHeight+"px",c.position="absolute",c.zIndex=d.zIndex,c.top=r.top+"px",c.left=r.left+"px";const h=a.clientWidth/n.clientWidth,m=a.clientHeight/n.clientHeight,p=l.left-r.left+"px",u=l.top-r.top+"px";c.transformOrigin="0 0",c.transition=`transform cubic-bezier(0.445, 0.05, 0.55, 0.95) ${i}ms, opacity ${i}ms`,c.transform=`translate(${p}, ${u}) scale(${h}, ${m})`,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")],n.prototype,"_adapter",void 0),__decorate([e.ViewChild(e.P+"-lightbox")],n.prototype,"_lightbox",void 0),__decorate([e.ViewChild(e.P+"-slideshow")],n.prototype,"_slideshow",void 0),__decorate([e.ViewChild(e.P+"-repeater")],n.prototype,"_repeater",void 0),__decorate([e.ViewChild(e.P+"-template-proxy")],n.prototype,"_templateProxy",void 0),__decorate([e.ViewChild(e.P+"-shell-proxy")],n.prototype,"_heroPlaceholderProxy",void 0),__decorate([e.Watch()],n.prototype,"_poppingUp",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],n.prototype,"captionTemplate",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],n.prototype,"captionProperty",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],n.prototype,"imageProperty",void 0),n=__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>\n <${e.P}-slideshow adapter="{{ ::_adapter }}" index="{{ :host.index, twoway }}" hide="{{ !::_lightbox.show }}">\n <${e.P}-template-proxy></${e.P}-template-proxy>\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>`})],n),a.PacemGalleryElement=n}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){var s;let o=s=class PacemModalFormElement extends t.UI.PacemDialogBase{get form(){return this._form}constructor(){super(),this.suddenValidation=!0,this.method=e.Net.HttpMethod.Post,this._keyupHandler=t=>{if(!(13!==t.keyCode||t.shiftKey||t.ctrlKey||t.altKey||t.metaKey)){let a=t.currentTarget.querySelector(`.${e.PCSS}-dialog-buttons ${e.P}-button[type=submit]`);e.Utils.isNull(a)||!e.Utils.isVisible(a)||a.disabled||a.click()}},this.#s=!1,this._emitter=new e.Components.Scaffolding.FormEventEmitter(this)}viewActivatedCallback(){super.viewActivatedCallback(),this.addEventListener("keyup",this._keyupHandler,!1),this._emitter.start()}disconnectedCallback(){this._emitter.stop(),this.removeEventListener("keyup",this._keyupHandler,!1),super.disconnectedCallback()}_submit(a){this.readonly?this.commit(t.UI.DialogButton.Ok,a):(e.avoidHandler(a),this._form.validate().then(s=>{s&&(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)}#s;open(t,a,o=!0){if(e.Utils.isNull(t))throw`The state of a ${s} cannot be null.`;this.#s=a;var n=super.open(t);return o&&this._form.setPristine(),n}commit(t,a){super.commit(t,a),this.#s||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}}};__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"suddenValidation",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"okCaption",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"cancelCaption",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"method",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],o.prototype,"metadata",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"action",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"loaderType",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"success",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"fail",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"readonly",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],o.prototype,"fetchHeaders",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"fetchCredentials",void 0),__decorate([e.ViewChild(e.P+"-lightbox")],o.prototype,"lightbox",void 0),__decorate([e.ViewChild(e.P+"-form[entity]")],o.prototype,"_form",void 0),__decorate([e.ViewChild(e.P+"-fetch")],o.prototype,"_fetcher",void 0),o=s=__decorate([e.CustomElement({tagName:e.P+"-modal-form",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-lightbox modal="true" logger="{{ :host.logger }}">\n <${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>\n </${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" slot="bottom">\n <div class="buttonset-left">\n <${e.P}-button on-click=":host._submit($event)" css-class="{{ {'buttonset-last': :host.readonly} }}" type="submit"\n class="button primary button-size size-small" disabled="{{ (:host.suddenValidation && !:host.readonly && !(::_form.valid && ::_form.dirty)) || ::_fetcher.fetching }}">\n <${e.P}-panel class="submit-spinner ${e.PCSS}-anim anim-pop" hide="{{ !::_form.fetching }}"><i class="${e.PCSS}-icon ${e.PCSS}-anim anim-rotate rotate-uniform display-block">refresh</i></${e.P}-panel>\n <${e.P}-text text="{{ :host.okCaption || 'OK' }}"></${e.P}-text>\n </${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" slot="top">\n <${e.P}-content></${e.P}-content>\n </div>\n <div class="pos-absolute absolute-top absolute-right absolute-left absolute-bottom overflow-hidden ${e.PCSS}-inert display-flex flex-center flex-middle">\n <${e.P}-loader type="{{ :host.loaderType }}" class="loader-primary loader-smaller ${e.PCSS}-anim anim-pop" active="{{ ::_fetcher.fetching }}"></${e.P}-loader>\n </div>\n</${e.P}-lightbox>`})],o),a.PacemModalFormElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let s=class PacemRouterHashStateElement extends t.PacemEventTarget{constructor(){super(...arguments),this.default={},this.state={},this.normalizedState={},this._routerNavigatingHandler=e=>{this.#o=!0},this._routerNavigateHandler=e=>{this.#o=!1,this._updateStateFromURI()}}#o;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||this.#o||(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 s=e.Utils.extend({},t||{}),o=e.Utils.extend({},a||{});for(let e in s){if(!this._areSubstantiallyEquivalent(s[e],o[e]))return!1;delete s[e],delete o[e]}for(let e in o)if(!this._areSubstantiallyEquivalent(s[e],o[e]))return!1;return!0}_updateNormalizedState(e=this.state){if(this.disabled||this.#o)return;const t=this._normalizeState(e);this._areStatesEquivalent(t,this.normalizedState)||(this.normalizedState=t)}_updateStateFromURI(){if(this.disabled||this.#o)return;var t=e.Utils.extend({},this.default||{});const a=this.router;if(!e.Utils.isNull(a)){const s=this._denormalizeState(e.Utils.URIs.parseQuery(a.state&&a.state.$hash||"{}"));e.Utils.extend(t,s)}this._areStatesEquivalent(this.state,t)||(this.state=t)}_updateURIFromState(t=this.normalizedState){if(this.disabled||this.#o)return;const a=this.router;if(!e.Utils.isNull(a)){const o=this._currentBasePath(),n=e.Utils.URIs.parseQuery(a.state.$hash||"{}"),i=t||{};if(!this._areStatesEquivalent(n,i)){const t=this._cleanupStateForURI(i);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||{}),s=this.default;for(let t in a)(e.Utils.isNullOrEmpty(a[t])&&(e.Utils.isNull(s)||!(t in s))||!e.Utils.isNull(s)&&t in s&&this._areSubstantiallyEquivalent(s[t],a[t]))&&delete a[t];return a}_normalizeState(t=this.state,a=this.default){var s={};const o=a;for(let a in t||{}){const n=t[a];if(e.Utils.isNullOrEmpty(n))e.Utils.isNull(o)||!(a in o)||e.Utils.isNullOrEmpty(o[a])||(s[a]="");else switch(typeof n){case"number":case"bigint":case"boolean":Object.defineProperty(s,a,{enumerable:!0,value:n.toString()});break;case"symbol":case"string":Object.defineProperty(s,a,{enumerable:!0,value:n});break;default:if(e.Utils.Dates.isDate(n))Object.defineProperty(s,a,{enumerable:!0,value:n.toISOString()});else{if(!(n instanceof RegExp))throw new Error("Type not supported to be normalized into a URI hash.");Object.defineProperty(s,a,{enumerable:!0,value:n.source})}}}return s}_denormalizeState(t=this.normalizedState,a=this.default){const s={},o=a||{};for(let a in t){if(!(a in o)){s[a]=t[a];continue}const n=o[a],i=t[a];switch(typeof n){case"boolean":Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.Boolean.convert(i)});break;case"number":case"bigint":Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.Number.convert(i)});break;case"symbol":case"string":Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.String.convert(i)});break;default:n instanceof Date?Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.Date.convert(i)}):n instanceof RegExp?Object.defineProperty(s,a,{enumerable:!0,value:new RegExp(i,n.flags)}):Object.defineProperty(s,a,{enumerable:!0,value:i})}}return s}set(t,a){var s={};"string"==typeof t?Object.defineProperty(s,t,{enumerable:!0,value:a}):s=t,this.state=e.Utils.extend({},this.state||{},s)}};__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.PacemRouterHashStateElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let s=class PacemSearchElement extends t.PacemElement{constructor(){super(...arguments),this.hintParameter="q"}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),"hint"===e){let e={};e[this.hintParameter]=a,this._fetcher.parameters=e}}};__decorate([e.ViewChild(e.P+"-fetch")],s.prototype,"_fetcher",void 0),__decorate([e.Watch()],s.prototype,"datasource",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"hint",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"url",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"method",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],s.prototype,"hintParameter",void 0),s=__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>`})],s),a.PacemSearchElement=s}(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,s){if(super.propertyChangedCallback(e,t,a,s),!s)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){t.DataRowSelectChangeEventName="datarowselectchange";class DataRowSelectChangeEvent extends CustomEvent{constructor(e){super(t.DataRowSelectChangeEventName,{detail:e,bubbles:!1,cancelable:!0})}}t.DataRowSelectChangeEvent=DataRowSelectChangeEvent;const a={},s=[];let o=class PacemDataCellElement extends t.PacemBaseCellElement{updateLayout(e=this.metadata){this._setup(e)}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-datacell")}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"_contentTooltip":this._updateTooltipJustInCase();break;case"gridState":case"rowindex":this._updateSelection()}}_updateTooltipJustInCase(){(this.metadata.dataCell?.autoTooltip??!0)&&!e.Utils.isNullOrEmpty(this._contentTooltip)?this.setAttribute("tooltip",this._contentTooltip):this.removeAttribute("tooltip")}_inflateContent(t=this.dataitem,a=this.rowindex,s=this.metadata){this._contentTooltip="";let o=s.dataCell?.format;const n=s.dataCell?.null??"";if("function"==typeof o){const i=o(this,s,t,a);return e.Utils.isNullOrEmpty(i)?n:i}const i=e.CustomElementUtils.resolvePath(s.prop,t)?.target,r=i?.value;if(e.Utils.isNullOrEmpty(r))return n;const l=e.Utils.lang(this);switch(s.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 this._contentTooltip=e.Utils.core.date(r,o,l);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 this._contentTooltip=e.Utils.core.number(r,o||"",l);case"currency":return o??="EUR",this._contentTooltip="string"==typeof o?e.Utils.core.currency(r,o,l):e.Utils.core.number(r,o,l);case"percent":case"percentage":return o??={style:"percent",maximumFractionDigits:2},this._contentTooltip="string"==typeof o?e.Utils.core.currency(r,o,l):e.Utils.core.number(r,o,l);default:return this._contentTooltip=r}}_inflateCssClass(t=this.dataitem,a=this.rowindex,o=this.metadata,n){if(e.Utils.isNull(t)||e.Utils.isNullOrEmpty(o))return s;const i=o.dataCell&&o.dataCell.cssClass||s,r=[];switch("function"==typeof i?Array.prototype.push.apply(r,i(this,o,t,a)||[]):Array.prototype.push.apply(r,i),o.dataCell?.verticalAlign?.toLowerCase()){case"top":r.push("datacell-top");break;case"bottom":r.push("datacell-bottom");break;case"middle":r.push("datacell-middle")}switch(o.dataCell?.horizontalAlign?.toLowerCase()){case"left":r.push("datacell-left");break;case"right":r.push("datacell-right");break;case"center":r.push("datacell-center")}return n?.length&&(0===a&&r.push("datacell-firstrow"),a===n.length-1&&r.push("datacell-lastrow")),r}_inflateCss(t=this.dataitem,s=this.rowindex,o=this.metadata){if(e.Utils.isNull(t)||e.Utils.isNullOrEmpty(o))return a;const n=o.dataCell&&o.dataCell.css||a;return"function"==typeof n?n(this,o,t,s):n}_setup(t=this.metadata){this.setAttribute("css-class","{{ this._inflateCssClass(^item, ^index, this.metadata, :host.datasource) }}"),this.setAttribute("css","{{ Pacem.Utils.extend({ 'grid-row': ^index+2 }, this._inflateCss(^item, ^index, this.metadata, :host.datasource)) }}");const a=!!t.dataCell?.textEllipsis?["text-truncate"]:[],s=t?.dataCell?.selectMode?.toLowerCase();switch(s){case"cell":case"row":a.push(e.PCSS+"-inert"),a.push(e.PCSS+"-unselect")}this._content.cssClass=a,this._updateSelection()}_updateSelection(){(this.gridState?.selectedRows??[]).indexOf(this.rowindex)>=0?e.Utils.addClass(this,"datarow-selected datacell-filled datacell-primary"):e.Utils.removeClass(this,"datarow-selected datacell-filled datacell-primary")}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Eval})],o.prototype,"dataitem",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],o.prototype,"rowindex",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String,debounce:200})],o.prototype,"_contentTooltip",void 0),__decorate([e.ViewChild(e.P+"-span")],o.prototype,"_content",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-datacell",shadow:!1,template:`<${e.P}-span content="{{ :host._inflateContent(^item, ^index, :host.metadata) }}"></${e.P}-span>`})],o),t.PacemDataCellElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){const s="datacolumnchange",o="datacolumnstatechange",n={selectCaption:"Details",editCaption:"Edit",editIcon:"edit",deleteCaption:"Delete",deleteIcon:"delete"};class DataGridBindEvent extends CustomEvent{constructor(e){super("databind",{cancelable:!1,bubbles:!1,detail:e})}}a.DataGridBindEvent=DataGridBindEvent;class DataCellUIEvent extends e.CustomUIEvent{constructor(e,t,a){super(e,t,{bubbles:!1,cancelable:!0},a)}}a.DataCellUIEvent=DataCellUIEvent;let i=class PacemDataColumnElement extends t.PacemItemElement{propertyChangedCallback(e,t,a,n){if(super.propertyChangedCallback(e,t,a,n),!n)switch(e){case"field":case"headcellCss":case"headcellCssClass":case"datacellCss":case"datacellCssClass":case"resizable":case"togglable":case"sortable":case"label":this.dispatchEvent(new Event(s));break;case"order":case"hide":this.dispatchEvent(new Event(o))}}};function r(t){return`<${e.P}-headcell metadata="{{ :host._getColumnMetadata('${t.prop}') }}" state="{{ :host._columnState.${t.prop} }}" grid-state="{{ :host._gridState }}" \non-${a.DataColumnSortEventName}=":host._broadcastSortCommand($event)"\non-${a.DataColumnRescaleEventName}=":host._broadcastRescaleCommand($event)"></${e.P}-headcell>`}function l(t,a){return`<${e.P}-datacell metadata="{{ :host._getColumnMetadata('${t.prop}') }}" state="{{ :host._columnState.${t.prop} }}" grid-state="{{ :host._gridState }}"\ndataitem="{{ ^item }}" rowindex="{{ ^index }}" ${a}></${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 c=class PacemDataGridElement extends t.PacemItemsContainerElement{constructor(t=e.Utils.uniqueCode()){super(),this._key=t,this.state={},this._columnState={},this._gridState={sort:{},orderedColumns:[],selectedRows:[]},this._itemDataColumnRebuildHandler=e=>{this._adaptColumnMetadata(this.items||[])},this._itemDataColumnChangeHandler=e=>{this._adaptColumnMetadata(this.items||[])},this._memoizer={}}validate(e){return e instanceof i}viewActivatedCallback(){super.viewActivatedCallback(),this.addEventListener(e.CommandEventName,this._onCommand,!1),this._adaptColumnMetadata();const t=this._adaptedColumnMetadata||[];this._buildUpGrid(t)}disconnectedCallback(){this.removeEventListener(e.CommandEventName,this._onCommand,!1),super.disconnectedCallback()}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"items":case"metadata":this._adaptColumnMetadata();break;case"_adaptedColumnMetadata":this._buildUpGrid(a);break;case"datasource":const e={keepRowSelection:!1,datasource:a},t=new DataGridBindEvent(e);this.dispatchEvent(t),e.keepRowSelection||this._setRowSelection();break;case"state":this._mergeState(a)}}register(e){return!!super.register(e)&&(e.addEventListener(s,this._itemDataColumnRebuildHandler,!1),e.addEventListener(o,this._itemDataColumnChangeHandler,!1),!0)}unregister(e){return!!super.unregister(e)&&(e.removeEventListener(s,this._itemDataColumnRebuildHandler,!1),e.removeEventListener(o,this._itemDataColumnChangeHandler,!1),!0)}setRowSelection(...e){const t=Array.from(e);this._setRowSelection(t)}_setRowSelection(t){const s=(t||[]).map(e=>({item:this.datasource[e],index:e})),o=new a.DataRowSelectChangeEvent({selectedRows:s});if(this.dispatchEvent(o),!o.defaultPrevented){let t=o.detail.selectedRows;e.Utils.isArray(t)||(t=[]),this._doSetRowSelection(t.map(e=>e?.index??-1).filter(e=>e>=0))}}_doSetRowSelection(e){const t={selectedRows:e};this._mergeState(t)}_mergeState(t=this.state){t??={};const a={selectedRows:(t.selectedRows||[]).map(e=>"number"==typeof e?e:e.index)},s=this._gridState=e.Utils.extend({},this._gridState,t,a);this.state=e.Utils.extend(this.state??{},s)}_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,isRescalable:e.resizable,isSortable:e.sortable,isTogglable:e.togglable,order:e.order,width:1})),t||[]);this._memoizer={},this._adaptedColumnMetadata=a}_getColumnMetadata(e){return this._memoizer[e]=this._memoizer[e]||this._adaptedColumnMetadata.find(t=>t.prop===e)}_buildUpGrid(a){const s=this._tableContainer;if(e.Utils.isNull(s))return;if(e.Utils.isNullOrEmpty(a))return void(s.innerHTML="");const o=this.options=e.Utils.extend({},n,this.options||{}),i=o.allowDelete||o.allowEdit||o.allowSelect,c=o.allowMultiSelect&&i;let d=c?"auto ":"",h=c?`<div class="${e.PCSS}-headcell"></div>`:"",m=c?`<${e.P}-panel class="${e.PCSS}-datacell" style="grid-column: 1;" css="{{ {'grid-row': ^index+2} }}"></${e.P}-panel>`:"",p=c?`<div class="${e.PCSS}-footcell"></div>`:"";const u=c?a.length+2:i?a.length+1:a.length;this._gridState.orderedColumns=a.sort((e,t)=>(e.order??0)-(t.order??0)).map(e=>e.prop);let _="";for(let e of t.PacemElement.emittedEventTypes)_+=` on-${e}=":host._broadcastUiEvent(^item, ^index, $event)"`;for(let e of a)this._columnState[e.prop]={hidden:e.hide},d+=this._getColumnSize(e).replaceAll(" ","")+" ",h+=r(e),m+=l(e,_);m+=`<${e.P}-panel class="${e.PCSS}-datarow" css-class="{{ {'datarow-alt': ^index % 2 === 1, 'datarow-first': ^index === 0, 'datarow-last': ^index === (:host.datasource.length - 1), 'datarow-selected': :host._gridState.selectedRows.indexOf(^index) >= 0 } }}" style="grid-column: 1 /span ${u};" css="{{ {'grid-row': ^index+2} }}"></${e.P}-panel>`;const C=`<${e.P}-repeater datasource="{{ :host.datasource }}">\n<${e.P}-panel class="${e.PCSS}-datatable" css="{{ {'grid-template-columns': :host._getColumnSizes(:host._columnState, '${d.trimEnd()}', :host._gridState) } }}">\n ${h}\n <template>\n ${m}\n </template>\n ${p}\n</${e.P}-panel>`;s.innerHTML=C}_getColumnSizes(t=this._columnState,a,s=this._gridState){if(e.Utils.isNullOrEmpty(t))return a;const o=a.split(" ");for(let e in t){const a=t[e],n=s.orderedColumns.indexOf(e);a.hidden?o[n]="auto":a.pixelWidth>0&&(o[n]=a.pixelWidth+"px")}return o.join(" ")}_getColumnSize(e){if(e.hide)return"auto";const t=e.minPixelWidth,a=e.maxPixelWidth;if(a>0&&t>0)return`minmax(${t}px, ${a}px)`;{const s="number"==typeof e.width?e.width+"fr":"auto";return t>0?`minmax(${t}px, ${s})`:a>0?`minmax(${s}, ${a}px)`:s}}_onCommand(e){this.dispatchEvent(new t.ItemCommandEvent(e)),this.dispatchEvent(new t.CustomItemCommandEvent(e))}_broadcastUiEvent(e,t,a){const s=a.type.toLowerCase(),o="datacell"+s,n={dataitem:e,rowindex:t,datacell:a.srcElement},i=a instanceof MouseEvent||a instanceof TouchEvent||a instanceof KeyboardEvent?new DataCellUIEvent(o,n,a):new DataCellUIEvent(o,n);if(this.dispatchEvent(i),"click"===s&&!i.defaultPrevented){const e=i.detail.datacell,t=e.metadata?.dataCell?.selectMode?.toLowerCase();switch(t){case"cell":break;case"row":this._broadcastSelectCommand(i.detail.rowindex)}}}_broadcastSortCommand(t){const s=t.detail,o=new a.DataColumnSortEvent(s);if(this.dispatchEvent(o),!o.defaultPrevented){const t={column:""};"string"==typeof o.detail.column&&(t.column=o.detail.column),"string"==typeof o.detail.dir&&(t.dir="desc"===o.detail.dir?"desc":"asc"),this._gridState=e.Utils.extend({},this._gridState,{sort:t})}}_broadcastRescaleCommand(t){const s=t.detail,o=new a.DataColumnRescaleEvent(s);if(this.dispatchEvent(o),!o.defaultPrevented){let a=s.width;"number"==typeof o.detail.width&&o.detail.width>0&&(a=o.detail.width);const n={};n[t.srcElement.metadata.prop]={pixelWidth:a},this._columnState=e.Utils.extend({},this._columnState,n)}}_broadcastSelectCommand(t){let a=(this._gridState.selectedRows||[]).slice(0);const s=a.indexOf(t);let o=!0;if(s>=0)a.splice(s,1);else{const s=this.options;if(s.allowMultiSelect)a.push(t);else if(s.allowSelect)a=[t];else{o=!1;const a=`Cannot select the row at index ${t} since datagrid options do not allow any row selection.`;e.Utils.isNull(this.logger)?console.warn(a):this.log(e.Logging.LogLevel.Warn,a)}}o&&this._setRowSelection(a)}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],c.prototype,"metadata",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],c.prototype,"options",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],c.prototype,"state",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],c.prototype,"datasource",void 0),__decorate([e.ViewChild("."+e.PCSS+"-datagrid")],c.prototype,"_tableContainer",void 0),__decorate([e.Watch()],c.prototype,"_adaptedColumnMetadata",void 0),__decorate([e.Watch()],c.prototype,"_columnState",void 0),__decorate([e.Watch()],c.prototype,"_gridState",void 0),__decorate([e.Debounce()],c.prototype,"_adaptColumnMetadata",null),c=__decorate([e.CustomElement({tagName:e.P+"-datagrid",shadow:!1,template:`<div class="${e.PCSS}-datagrid"></div><${e.P}-content></${e.P}-content>`})],c),a.PacemDataGridElement=c}(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:!0})}}a.DataColumnSortEvent=DataColumnSortEvent,a.DataColumnRescaleEventName="datacolumnrescale";class DataColumnRescaleEvent extends CustomEvent{constructor(e){super(a.DataColumnRescaleEventName,{detail:e,bubbles:!1,cancelable:!0})}}a.DataColumnRescaleEvent=DataColumnRescaleEvent;let s=class PacemHeadCellElement extends a.PacemBaseCellElement{constructor(t=new e.MarkdownService){super(),this._md=t,this._sortButtonClickHandler=e=>{const t=this.metadata,a=this.gridState,s=t.prop,o=a.sort?.column===s?"desc"===a.sort.dir?"asc":"desc":t.defaultSort||"asc";this.dispatchEvent(new DataColumnSortEvent({column:s,dir:o}))},this._rescaleHandler=e=>{e.preventDefault();const t=e.detail,a=Math.max(this.metadata.minPixelWidth??24,t.currentPosition.x-this._columnBBox.x);this.dispatchEvent(new DataColumnRescaleEvent({width:a}))},this._rescaleStartHandler=t=>{this._columnBBox=e.Utils.offsetRect(this)},this._rescaleEndHandler=e=>{}}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-headcell")}propertyChangedCallback(e,t,a,s){super.propertyChangedCallback(e,t,a,s),s||"gridState"!==e||this._updateSortButtonIconGlyph()}viewActivatedCallback(){super.viewActivatedCallback(),this._ensureBalloon()}disconnectedCallback(){this._disposeBalloon(),this._disposeRescaler(),super.disconnectedCallback()}updateLayout(e=this.metadata){this._setup(e)}_setupSortButton(){const t=new e.Components.UI.PacemButtonElement;return t.className=`button-flat headcell-sort ${e.PCSS}-inert`,this.addEventListener("click",this._sortButtonClickHandler,!1),e.Utils.addClass(this,e.PCSS+"-clickable"),t}_disposeSortButton(t=this._sortButton){e.Utils.isNull(t)||(e.Utils.removeClass(this,e.PCSS+"-clickable"),this.removeEventListener("click",this._sortButtonClickHandler,!1),t.remove(),this._sortButton=null)}_updateSortButtonIconGlyph(t=this._sortButton,a=this.gridState,s=this.metadata){e.Utils.isNull(t)||e.Utils.isNullOrEmpty(s)||(t.iconGlyph=a?.sort?.column===s.prop?"desc"===a.sort.dir?"arrow_drop_down":"arrow_drop_up":"")}_ensureRescaler(){if(e.Utils.isNull(this._rescaler)){const t=this._rescaler=this._rescaler||new e.Components.PacemRescaleElement;t.handles=[e.UI.RescaleHandle.Right],t.addEventListener(e.UI.RescaleEventType.Rescale,this._rescaleHandler,!1),t.addEventListener(e.UI.RescaleEventType.Start,this._rescaleStartHandler,!1),t.addEventListener(e.UI.RescaleEventType.End,this._rescaleEndHandler,!1),e.CustomElementUtils.findAncestorShell(this).appendChild(t)}}_setupRescaleContainer(){this._ensureRescaler();const t=new e.Components.PacemPanelElement;return t.className="headcell-rescale",t.behaviors=[this._rescaler],t}_disposeRescaleContainer(t=this._rescaleContainer){e.Utils.isNull(t)||(t.remove(),this._rescaleContainer=null)}_disposeRescaler(t=this._rescaler){e.Utils.isNull(t)||(t.removeEventListener(e.UI.RescaleEventType.Rescale,this._rescaleHandler,!1),t.removeEventListener(e.UI.RescaleEventType.Start,this._rescaleStartHandler,!1),t.removeEventListener(e.UI.RescaleEventType.End,this._rescaleEndHandler,!1),t.remove(),this._rescaler=null)}_setup(t=this.metadata){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 }}");const a=!!t.headCell?.textEllipsis?["text-truncate"]:[];switch(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":a.push("text-left");break;case"right":a.push("text-right");break;case"center":a.push("text-center")}this.removeAttribute("content");const s=e.Utils.isNullOrEmpty(a)?"":` class="${a.join(" ")}"`,o=t.headCell?.name??t.prop;if(this.innerHTML=`<div${s}>${o}</div>`,t.isSortable){this._disposeSortButton();const e=this._sortButton=this._setupSortButton();this._updateSortButtonIconGlyph(e),this.appendChild(e)}if(t.isRescalable){this._disposeRescaleContainer();const e=this._rescaleContainer=this._setupRescaleContainer();this.appendChild(e)}t.isTogglable}_normalizeTooltip(){const e=this.metadata.headCell?.tooltip||!1;return"object"==typeof e?e:{type:e}}_ensureBalloon(){var a,s;const o=!1===(s=this._normalizeTooltip()).type||e.Utils.isNullOrEmpty(a=this.metadata.headCell?.description);if(e.Utils.isNull(this._balloon)&&!o){let a=new e.Components.UI.PacemBalloonElement;a.options={behavior:t.UI.BalloonBehavior.Tooltip,trigger:s.trigger||t.UI.BalloonTrigger.Hover,position:s.position||t.UI.BalloonPosition.Top,hoverDelay:200,hoverTimeout:50,align:s.align||t.UI.BalloonAlignment.Auto},e.Utils.addClass(a,e.PCSS+"-headcell-tooltip"),e.CustomElementUtils.findAncestorShell(this).appendChild(this._balloon=a)}const n=this._balloon;if(!(e.Utils.isNull(n)||(n.target=this,n.disabled=o))){const e=a||"";switch(s.type){case"md":case"markdown":n.innerHTML=this._md.toHtml(e);break;case"html":n.innerHTML=e;break;default:n.innerText=e}}}_disposeBalloon(){e.Utils.isNull(this._balloon)||(this._balloon.remove(),this._balloon=null)}};s=__decorate([e.CustomElement({tagName:e.P+"-headcell"})],s),a.PacemHeadCellElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={}));
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.53.0-stevin (https://js.pacem.it)
2
+ * pacem v0.53.0 (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,8 +1,9 @@
1
1
  /**
2
- * pacem v0.53.0-stevin (https://js.pacem.it)
2
+ * pacem v0.53.0 (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
+ "use strict";
6
7
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
7
8
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8
9
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -7877,6 +7878,15 @@ var Pacem;
7877
7878
  }
7878
7879
  toggleReadonlyView(readonly) {
7879
7880
  this._thumb.hidden = readonly;
7881
+ const css = 'cursor-pointer';
7882
+ if (readonly) {
7883
+ Pacem.Utils.removeClass(this._max, css);
7884
+ Pacem.Utils.removeClass(this._min, css);
7885
+ }
7886
+ else {
7887
+ Pacem.Utils.addClass(this._max, css);
7888
+ Pacem.Utils.addClass(this._min, css);
7889
+ }
7880
7890
  }
7881
7891
  _setTrackSize(evt) {
7882
7892
  const size = evt.detail;