@pacem/pacem 1.0.0-babbage → 1.0.0-bernoulli

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 (49) hide show
  1. package/dist/browser/pacem-2d.js +1 -1
  2. package/dist/browser/pacem-2d.min.js +2 -2
  3. package/dist/browser/pacem-2d.min.js.map +1 -1
  4. package/dist/browser/pacem-3d.js +1 -1
  5. package/dist/browser/pacem-3d.min.js +2 -2
  6. package/dist/browser/pacem-3d.min.js.map +1 -1
  7. package/dist/browser/pacem-charts.js +1 -1
  8. package/dist/browser/pacem-charts.min.js +2 -2
  9. package/dist/browser/pacem-charts.min.js.map +1 -1
  10. package/dist/browser/pacem-cms.js +1 -1
  11. package/dist/browser/pacem-cms.min.js +2 -2
  12. package/dist/browser/pacem-cms.min.js.map +1 -1
  13. package/dist/browser/pacem-core.js +1 -1
  14. package/dist/browser/pacem-core.min.js +2 -2
  15. package/dist/browser/pacem-core.min.js.map +1 -1
  16. package/dist/browser/pacem-foundation.js +1 -1
  17. package/dist/browser/pacem-foundation.min.js +2 -2
  18. package/dist/browser/pacem-foundation.min.js.map +1 -1
  19. package/dist/browser/pacem-fx.js +1 -1
  20. package/dist/browser/pacem-fx.min.js +2 -2
  21. package/dist/browser/pacem-fx.min.js.map +1 -1
  22. package/dist/browser/pacem-logging.js +1 -1
  23. package/dist/browser/pacem-logging.min.js +2 -2
  24. package/dist/browser/pacem-logging.min.js.map +1 -1
  25. package/dist/browser/pacem-maps.js +1 -1
  26. package/dist/browser/pacem-maps.min.js +2 -2
  27. package/dist/browser/pacem-maps.min.js.map +1 -1
  28. package/dist/browser/pacem-media.js +1 -1
  29. package/dist/browser/pacem-media.min.js +2 -2
  30. package/dist/browser/pacem-media.min.js.map +1 -1
  31. package/dist/browser/pacem-networking.js +1 -1
  32. package/dist/browser/pacem-networking.min.js +2 -2
  33. package/dist/browser/pacem-networking.min.js.map +1 -1
  34. package/dist/browser/pacem-numerical.js +1 -1
  35. package/dist/browser/pacem-numerical.min.js +2 -2
  36. package/dist/browser/pacem-numerical.min.js.map +1 -1
  37. package/dist/browser/pacem-plus.js +1 -1
  38. package/dist/browser/pacem-plus.min.js +2 -2
  39. package/dist/browser/pacem-plus.min.js.map +1 -1
  40. package/dist/browser/pacem-scaffolding.js +1 -1
  41. package/dist/browser/pacem-scaffolding.min.js +2 -2
  42. package/dist/browser/pacem-scaffolding.min.js.map +1 -1
  43. package/dist/browser/pacem-ui.js +1 -1
  44. package/dist/browser/pacem-ui.min.js +2 -2
  45. package/dist/browser/pacem-ui.min.js.map +1 -1
  46. package/dist/bundle/pacem.min.mjs +1 -1
  47. package/dist/bundle/pacem.mjs +1 -1
  48. package/dist/typings/index.d.ts +1 -1
  49. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pacem/pacem v1.0.0-babbage (https://js.pacem.it)
2
+ * @pacem/pacem v1.0.0-bernoulli (https://js.pacem.it)
3
3
  * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pacem/pacem v1.0.0-babbage (https://js.pacem.it)
2
+ * @pacem/pacem v1.0.0-bernoulli (https://js.pacem.it)
3
3
  * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
- !function(e,t){"use strict";var r=function(e,t,r,a){var s,o=arguments.length,i=o<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,r):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,a);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(i=(o<3?s(i):o>3?s(t,r,i):s(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};let a=class extends t.PacemEventTarget{constructor(){super(...arguments),this._endedHandler=e=>{this.dispatchEvent(new Event("end"))},this._canPlayHandler=e=>{this.#e=!0,this._autoplay()},this._canPlayThroughHandler=e=>{this.#t=!0,this._autoplay()}}#r;#e;#t;connectedCallback(){super.connectedCallback();const e=this.#r=new Audio;e.addEventListener("canplay",this._canPlayHandler,!1),e.addEventListener("ended",this._endedHandler,!1),e.addEventListener("canplaythrough",this._canPlayThroughHandler,!1)}propertyChangedCallback(e,t,r,a){if(super.propertyChangedCallback(e,t,r,a),!a&&"src"===e)this._init()}viewActivatedCallback(){super.viewActivatedCallback(),this._init()}disconnectedCallback(){const e=this.#r;e.removeEventListener("ended",this._endedHandler,!1),e.removeEventListener("canplaythrough",this._canPlayThroughHandler,!1),e.removeEventListener("canplay",this._canPlayHandler,!1),super.disconnectedCallback()}play(){return this.disabled?Promise.reject("disabled"):this.#r.play().then(e=>{this.dispatchEvent(new Event("start"))},e=>{this.dispatchEvent(new CustomEvent("error",{detail:e}))})}pause(){this.#r.pause()}reset(){this.#r.load()}get _canPlay(){return this.stream&&this.#e||this.#t}_autoplay(){this.autoplay&&this._canPlay&&this.play()}_init(e=this.src){const t=this.#r;this.#e=this.#t=!1,t.src=e}};r([t.Watch({emit:!1,converter:t.PropertyConverters.String})],a.prototype,"src",void 0),r([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],a.prototype,"stream",void 0),r([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],a.prototype,"autoplay",void 0),a=r([t.CustomElement({tagName:t.P+"-audio"})],a);var s=function(e,t,r,a){var s,o=arguments.length,i=o<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,r):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,a);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(i=(o<3?s(i):o>3?s(t,r,i):s(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const o="video/mp4",i=["start","stop","dataavailable","pause","resume","error","warning"];let c=class extends t.PacemEventTarget{constructor(){super(...arguments),this._recorderLifecycleHandler=e=>{switch(this.state=this.#a.state,e.type){case"start":this.output=null;break;case"stop":this.flush();break;case"dataavailable":var t=e;this.#s.push(t.data)}},this.#a=null,this.#s=[]}viewActivatedCallback(){super.viewActivatedCallback(),this._setupMediaRecorder()}propertyChangedCallback(e,t,r,a){if(super.propertyChangedCallback(e,t,r,a),!a)switch(e){case"source":case"fps":case"mimeType":case"audioBitsPerSecond":case"videoBitsPerSecond":this._setupMediaRecorder()}}disconnectedCallback(){this._closeMediaRecorder(),super.disconnectedCallback()}#a;#s;_setupMediaRecorder(e=this.source,r={mimeType:this.mimeType||o,audioBitsPerSecond:this.audioBitsPerSecond??128e3,videoBitsPerSecond:this.videoBitsPerSecond??25e5}){if(this._closeMediaRecorder(),!t.Utils.isNull(e)){if((a=e)instanceof HTMLCanvasElement||"captureStream"in a&&"function"==typeof a.captureStream){const t=this.fps||25;e=e.captureStream(t)}try{this.#a=new MediaRecorder(e,r)}catch(e){console.error(e)}const t=this.#a;i.forEach(e=>{t.addEventListener(e,this._recorderLifecycleHandler,!1)})}var a}_closeMediaRecorder(){const e=this.#a;t.Utils.isNull(e)||("inactive"!==e.state&&e.stop(),i.forEach(t=>{e.removeEventListener(t,this._recorderLifecycleHandler,!1)}),this.#a=null)}flush(){const e=new Blob(this.#s,{type:this.mimeType||o});this.#s=[],this.output=e}start(){const e=this.#a;t.Utils.isNull(e)||"inactive"!==e.state||e.start()}stop(){const e=this.#a;t.Utils.isNull(e)||"inactive"===e.state||e.stop()}resume(){const e=this.#a;t.Utils.isNull(e)||"paused"!==e.state||e.start()}pause(){const e=this.#a;t.Utils.isNull(e)||"paused"===e.state||e.pause()}};s([t.Watch({emit:!1,converter:t.PropertyConverters.Element})],c.prototype,"source",void 0),s([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],c.prototype,"fps",void 0),s([t.Watch({emit:!1,converter:t.PropertyConverters.String})],c.prototype,"mimeType",void 0),s([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],c.prototype,"audioBitsPerSecond",void 0),s([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],c.prototype,"videoBitsPerSecond",void 0),s([t.Watch({converter:t.PropertyConverters.String})],c.prototype,"state",void 0),s([t.Watch()],c.prototype,"output",void 0),c=s([t.CustomElement({tagName:t.P+"-media-recorder"})],c);var n=Object.freeze({__proto__:null,get PacemAudioElement(){return a},get PacemMediaRecorderElement(){return c}}),l=Object.freeze({__proto__:null,Media:n}),d=Object.freeze({__proto__:null,Components:l});e.DeepMerger.merge(d)}(Pacem,Pacem);
6
+ !function(e,t){"use strict";var r=function(e,t,r,a){var s,o=arguments.length,i=o<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,r):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,a);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(i=(o<3?s(i):o>3?s(t,r,i):s(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};let a=class PacemAudioElement extends t.PacemEventTarget{constructor(){super(...arguments),this._endedHandler=e=>{this.dispatchEvent(new Event("end"))},this._canPlayHandler=e=>{this.#e=!0,this._autoplay()},this._canPlayThroughHandler=e=>{this.#t=!0,this._autoplay()}}#r;#e;#t;connectedCallback(){super.connectedCallback();const e=this.#r=new Audio;e.addEventListener("canplay",this._canPlayHandler,!1),e.addEventListener("ended",this._endedHandler,!1),e.addEventListener("canplaythrough",this._canPlayThroughHandler,!1)}propertyChangedCallback(e,t,r,a){if(super.propertyChangedCallback(e,t,r,a),!a&&"src"===e)this._init()}viewActivatedCallback(){super.viewActivatedCallback(),this._init()}disconnectedCallback(){const e=this.#r;e.removeEventListener("ended",this._endedHandler,!1),e.removeEventListener("canplaythrough",this._canPlayThroughHandler,!1),e.removeEventListener("canplay",this._canPlayHandler,!1),super.disconnectedCallback()}play(){return this.disabled?Promise.reject("disabled"):this.#r.play().then(e=>{this.dispatchEvent(new Event("start"))},e=>{this.dispatchEvent(new CustomEvent("error",{detail:e}))})}pause(){this.#r.pause()}reset(){this.#r.load()}get _canPlay(){return this.stream&&this.#e||this.#t}_autoplay(){this.autoplay&&this._canPlay&&this.play()}_init(e=this.src){const t=this.#r;this.#e=this.#t=!1,t.src=e}};r([t.Watch({emit:!1,converter:t.PropertyConverters.String})],a.prototype,"src",void 0),r([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],a.prototype,"stream",void 0),r([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],a.prototype,"autoplay",void 0),a=r([t.CustomElement({tagName:t.P+"-audio"})],a);var s=function(e,t,r,a){var s,o=arguments.length,i=o<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,r):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,a);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(i=(o<3?s(i):o>3?s(t,r,i):s(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const o="video/mp4",i=["start","stop","dataavailable","pause","resume","error","warning"];let c=class PacemMediaRecorderElement extends t.PacemEventTarget{constructor(){super(...arguments),this._recorderLifecycleHandler=e=>{switch(this.state=this.#a.state,e.type){case"start":this.output=null;break;case"stop":this.flush();break;case"dataavailable":var t=e;this.#s.push(t.data)}},this.#a=null,this.#s=[]}viewActivatedCallback(){super.viewActivatedCallback(),this._setupMediaRecorder()}propertyChangedCallback(e,t,r,a){if(super.propertyChangedCallback(e,t,r,a),!a)switch(e){case"source":case"fps":case"mimeType":case"audioBitsPerSecond":case"videoBitsPerSecond":this._setupMediaRecorder()}}disconnectedCallback(){this._closeMediaRecorder(),super.disconnectedCallback()}#a;#s;_setupMediaRecorder(e=this.source,r={mimeType:this.mimeType||o,audioBitsPerSecond:this.audioBitsPerSecond??128e3,videoBitsPerSecond:this.videoBitsPerSecond??25e5}){if(this._closeMediaRecorder(),!t.Utils.isNull(e)){if((a=e)instanceof HTMLCanvasElement||"captureStream"in a&&"function"==typeof a.captureStream){const t=this.fps||25;e=e.captureStream(t)}try{this.#a=new MediaRecorder(e,r)}catch(e){console.error(e)}const t=this.#a;i.forEach(e=>{t.addEventListener(e,this._recorderLifecycleHandler,!1)})}var a}_closeMediaRecorder(){const e=this.#a;t.Utils.isNull(e)||("inactive"!==e.state&&e.stop(),i.forEach(t=>{e.removeEventListener(t,this._recorderLifecycleHandler,!1)}),this.#a=null)}flush(){const e=new Blob(this.#s,{type:this.mimeType||o});this.#s=[],this.output=e}start(){const e=this.#a;t.Utils.isNull(e)||"inactive"!==e.state||e.start()}stop(){const e=this.#a;t.Utils.isNull(e)||"inactive"===e.state||e.stop()}resume(){const e=this.#a;t.Utils.isNull(e)||"paused"!==e.state||e.start()}pause(){const e=this.#a;t.Utils.isNull(e)||"paused"===e.state||e.pause()}};s([t.Watch({emit:!1,converter:t.PropertyConverters.Element})],c.prototype,"source",void 0),s([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],c.prototype,"fps",void 0),s([t.Watch({emit:!1,converter:t.PropertyConverters.String})],c.prototype,"mimeType",void 0),s([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],c.prototype,"audioBitsPerSecond",void 0),s([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],c.prototype,"videoBitsPerSecond",void 0),s([t.Watch({converter:t.PropertyConverters.String})],c.prototype,"state",void 0),s([t.Watch()],c.prototype,"output",void 0),c=s([t.CustomElement({tagName:t.P+"-media-recorder"})],c);var n=Object.freeze({__proto__:null,get PacemAudioElement(){return a},get PacemMediaRecorderElement(){return c}}),l=Object.freeze({__proto__:null,Media:n}),d=Object.freeze({__proto__:null,Components:l});e.DeepMerger.merge(d)}(Pacem,Pacem);
7
7
  //# sourceMappingURL=pacem-media.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pacem-media.min.js","sources":["../esm/audio.js","../esm/media-recorder.js","../esm/index-iife.js"],"sourcesContent":["var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, PacemEventTarget, Watch, PropertyConverters } from '@pacem/pacem-core';\n//namespace Pacem.Components.Media {\nlet PacemAudioElement = class PacemAudioElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._endedHandler = (e) => {\n this.dispatchEvent(new Event('end'));\n };\n this._canPlayHandler = (e) => {\n this.#canPlay = true;\n this._autoplay();\n };\n this._canPlayThroughHandler = (e) => {\n this.#canPlayThrough = true;\n this._autoplay();\n };\n }\n // TODO: structure a proper MediaElement hierarchy (share logic with a future VideoElement)\n /** @readonly */\n // @Watch({ converter: PropertyConverters.Boolean }) duration: number;\n #audio;\n #canPlay;\n #canPlayThrough;\n connectedCallback() {\n super.connectedCallback();\n const a = this.#audio = new Audio();\n a.addEventListener('canplay', this._canPlayHandler, false);\n a.addEventListener('ended', this._endedHandler, false);\n a.addEventListener('canplaythrough', this._canPlayThroughHandler, false);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'src':\n this._init();\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._init();\n }\n disconnectedCallback() {\n const a = this.#audio;\n a.removeEventListener('ended', this._endedHandler, false);\n a.removeEventListener('canplaythrough', this._canPlayThroughHandler, false);\n a.removeEventListener('canplay', this._canPlayHandler, false);\n super.disconnectedCallback();\n }\n play() {\n // sudden exit when disabled\n if (this.disabled) {\n return Promise.reject('disabled');\n }\n return this.#audio.play().then(_ => {\n this.dispatchEvent(new Event('start'));\n }, e => {\n this.dispatchEvent(new CustomEvent('error', { detail: e }));\n });\n }\n pause() {\n this.#audio.pause();\n }\n reset() {\n this.#audio.load();\n }\n get _canPlay() {\n return this.stream && this.#canPlay || this.#canPlayThrough;\n }\n _autoplay() {\n if (this.autoplay) {\n if (this._canPlay) {\n this.play();\n }\n }\n }\n _init(src = this.src) {\n const audio = this.#audio;\n this.#canPlay =\n this.#canPlayThrough = false;\n audio.src = src;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAudioElement.prototype, \"src\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemAudioElement.prototype, \"stream\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemAudioElement.prototype, \"autoplay\", void 0);\nPacemAudioElement = __decorate([\n CustomElement({ tagName: P + '-audio' })\n], PacemAudioElement);\nexport { PacemAudioElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, PacemEventTarget, Watch, PropertyConverters, Utils } from '@pacem/pacem-core';\n//namespace Pacem.Components.Media {\nconst DEFAULT_FPS = 25;\nconst DEFAULT_MIMETYPE = \"video/mp4\";\nconst DEFAULT_AUDIO_BITS_PER_SEC = 128000;\nconst DEFAULT_VIDEO_BITS_PER_SEC = 2500000;\nconst MEDIA_RECORDER_EVENTS = [\"start\", \"stop\", \"dataavailable\", \"pause\", \"resume\", \"error\", \"warning\"];\nfunction isStream(obj) {\n if (obj instanceof HTMLCanvasElement) {\n return true;\n }\n return 'captureStream' in obj && typeof obj['captureStream'] === 'function';\n}\nlet PacemMediaRecorderElement = class PacemMediaRecorderElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._recorderLifecycleHandler = (evt) => {\n this.state = this.#recorder.state;\n switch (evt.type) {\n case 'start':\n this.output = null;\n break;\n case 'stop':\n this.flush();\n break;\n case 'dataavailable':\n var evtb = evt;\n this.#chunks.push(evtb.data);\n break;\n }\n };\n this.#recorder = null;\n this.#chunks = [];\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setupMediaRecorder();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'source':\n case 'fps':\n case 'mimeType':\n case 'audioBitsPerSecond':\n case 'videoBitsPerSecond':\n this._setupMediaRecorder();\n break;\n }\n }\n }\n disconnectedCallback() {\n this._closeMediaRecorder();\n super.disconnectedCallback();\n }\n #recorder;\n #chunks;\n _setupMediaRecorder(stream = this.source, options = {\n mimeType: this.mimeType || DEFAULT_MIMETYPE,\n audioBitsPerSecond: this.audioBitsPerSecond ?? DEFAULT_AUDIO_BITS_PER_SEC,\n videoBitsPerSecond: this.videoBitsPerSecond ?? DEFAULT_VIDEO_BITS_PER_SEC\n }) {\n this._closeMediaRecorder();\n if (!Utils.isNull(stream)) {\n if (isStream(stream)) {\n const fps = this.fps || DEFAULT_FPS;\n stream = stream.captureStream(fps);\n }\n try {\n this.#recorder = new MediaRecorder(stream, options);\n }\n catch (e) {\n console.error(e);\n }\n const r = this.#recorder;\n MEDIA_RECORDER_EVENTS.forEach(e => {\n r.addEventListener(e, this._recorderLifecycleHandler, false);\n });\n }\n }\n _closeMediaRecorder() {\n const r = this.#recorder;\n if (!Utils.isNull(r)) {\n if (r.state !== 'inactive') {\n r.stop();\n }\n MEDIA_RECORDER_EVENTS.forEach(e => {\n r.removeEventListener(e, this._recorderLifecycleHandler, false);\n });\n this.#recorder = null;\n }\n }\n flush() {\n const blob = new Blob(this.#chunks, { 'type': this.mimeType || DEFAULT_MIMETYPE });\n this.#chunks = [];\n this.output = blob;\n }\n start() {\n const r = this.#recorder;\n if (!Utils.isNull(r) && r.state === 'inactive') {\n r.start();\n }\n }\n stop() {\n const r = this.#recorder;\n if (!Utils.isNull(r) && r.state !== 'inactive') {\n r.stop();\n }\n }\n resume() {\n const r = this.#recorder;\n if (!Utils.isNull(r) && r.state === 'paused') {\n r.start();\n }\n }\n pause() {\n const r = this.#recorder;\n if (!Utils.isNull(r) && r.state !== 'paused') {\n r.pause();\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemMediaRecorderElement.prototype, \"source\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMediaRecorderElement.prototype, \"fps\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMediaRecorderElement.prototype, \"mimeType\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMediaRecorderElement.prototype, \"audioBitsPerSecond\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMediaRecorderElement.prototype, \"videoBitsPerSecond\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemMediaRecorderElement.prototype, \"state\", void 0);\n__decorate([\n Watch()\n], PacemMediaRecorderElement.prototype, \"output\", void 0);\nPacemMediaRecorderElement = __decorate([\n CustomElement({ tagName: P + '-media-recorder' })\n], PacemMediaRecorderElement);\nexport { PacemMediaRecorderElement };\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","PacemAudioElement","PacemEventTarget","constructor","super","this","_endedHandler","e","dispatchEvent","Event","_canPlayHandler","canPlay","_autoplay","_canPlayThroughHandler","canPlayThrough","audio","connectedCallback","a","Audio","addEventListener","propertyChangedCallback","name","old","val","first","_init","viewActivatedCallback","disconnectedCallback","removeEventListener","play","disabled","Promise","reject","then","_","CustomEvent","detail","pause","reset","load","_canPlay","stream","autoplay","src","Watch","emit","converter","PropertyConverters","String","prototype","Boolean","CustomElement","tagName","P","DEFAULT_MIMETYPE","MEDIA_RECORDER_EVENTS","PacemMediaRecorderElement","_recorderLifecycleHandler","evt","state","recorder","type","output","flush","evtb","chunks","push","data","_setupMediaRecorder","_closeMediaRecorder","source","options","mimeType","audioBitsPerSecond","videoBitsPerSecond","Utils","isNull","obj","HTMLCanvasElement","fps","captureStream","MediaRecorder","console","error","forEach","stop","blob","Blob","start","resume","Element","Number","DeepMerger","merge","Output"],"mappings":"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"}
1
+ {"version":3,"file":"pacem-media.min.js","sources":["../esm/audio.js","../esm/media-recorder.js","../esm/index-iife.js"],"sourcesContent":["var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, PacemEventTarget, Watch, PropertyConverters } from '@pacem/pacem-core';\n//namespace Pacem.Components.Media {\nlet PacemAudioElement = class PacemAudioElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._endedHandler = (e) => {\n this.dispatchEvent(new Event('end'));\n };\n this._canPlayHandler = (e) => {\n this.#canPlay = true;\n this._autoplay();\n };\n this._canPlayThroughHandler = (e) => {\n this.#canPlayThrough = true;\n this._autoplay();\n };\n }\n // TODO: structure a proper MediaElement hierarchy (share logic with a future VideoElement)\n /** @readonly */\n // @Watch({ converter: PropertyConverters.Boolean }) duration: number;\n #audio;\n #canPlay;\n #canPlayThrough;\n connectedCallback() {\n super.connectedCallback();\n const a = this.#audio = new Audio();\n a.addEventListener('canplay', this._canPlayHandler, false);\n a.addEventListener('ended', this._endedHandler, false);\n a.addEventListener('canplaythrough', this._canPlayThroughHandler, false);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'src':\n this._init();\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._init();\n }\n disconnectedCallback() {\n const a = this.#audio;\n a.removeEventListener('ended', this._endedHandler, false);\n a.removeEventListener('canplaythrough', this._canPlayThroughHandler, false);\n a.removeEventListener('canplay', this._canPlayHandler, false);\n super.disconnectedCallback();\n }\n play() {\n // sudden exit when disabled\n if (this.disabled) {\n return Promise.reject('disabled');\n }\n return this.#audio.play().then(_ => {\n this.dispatchEvent(new Event('start'));\n }, e => {\n this.dispatchEvent(new CustomEvent('error', { detail: e }));\n });\n }\n pause() {\n this.#audio.pause();\n }\n reset() {\n this.#audio.load();\n }\n get _canPlay() {\n return this.stream && this.#canPlay || this.#canPlayThrough;\n }\n _autoplay() {\n if (this.autoplay) {\n if (this._canPlay) {\n this.play();\n }\n }\n }\n _init(src = this.src) {\n const audio = this.#audio;\n this.#canPlay =\n this.#canPlayThrough = false;\n audio.src = src;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAudioElement.prototype, \"src\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemAudioElement.prototype, \"stream\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemAudioElement.prototype, \"autoplay\", void 0);\nPacemAudioElement = __decorate([\n CustomElement({ tagName: P + '-audio' })\n], PacemAudioElement);\nexport { PacemAudioElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, PacemEventTarget, Watch, PropertyConverters, Utils } from '@pacem/pacem-core';\n//namespace Pacem.Components.Media {\nconst DEFAULT_FPS = 25;\nconst DEFAULT_MIMETYPE = \"video/mp4\";\nconst DEFAULT_AUDIO_BITS_PER_SEC = 128000;\nconst DEFAULT_VIDEO_BITS_PER_SEC = 2500000;\nconst MEDIA_RECORDER_EVENTS = [\"start\", \"stop\", \"dataavailable\", \"pause\", \"resume\", \"error\", \"warning\"];\nfunction isStream(obj) {\n if (obj instanceof HTMLCanvasElement) {\n return true;\n }\n return 'captureStream' in obj && typeof obj['captureStream'] === 'function';\n}\nlet PacemMediaRecorderElement = class PacemMediaRecorderElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this._recorderLifecycleHandler = (evt) => {\n this.state = this.#recorder.state;\n switch (evt.type) {\n case 'start':\n this.output = null;\n break;\n case 'stop':\n this.flush();\n break;\n case 'dataavailable':\n var evtb = evt;\n this.#chunks.push(evtb.data);\n break;\n }\n };\n this.#recorder = null;\n this.#chunks = [];\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setupMediaRecorder();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'source':\n case 'fps':\n case 'mimeType':\n case 'audioBitsPerSecond':\n case 'videoBitsPerSecond':\n this._setupMediaRecorder();\n break;\n }\n }\n }\n disconnectedCallback() {\n this._closeMediaRecorder();\n super.disconnectedCallback();\n }\n #recorder;\n #chunks;\n _setupMediaRecorder(stream = this.source, options = {\n mimeType: this.mimeType || DEFAULT_MIMETYPE,\n audioBitsPerSecond: this.audioBitsPerSecond ?? DEFAULT_AUDIO_BITS_PER_SEC,\n videoBitsPerSecond: this.videoBitsPerSecond ?? DEFAULT_VIDEO_BITS_PER_SEC\n }) {\n this._closeMediaRecorder();\n if (!Utils.isNull(stream)) {\n if (isStream(stream)) {\n const fps = this.fps || DEFAULT_FPS;\n stream = stream.captureStream(fps);\n }\n try {\n this.#recorder = new MediaRecorder(stream, options);\n }\n catch (e) {\n console.error(e);\n }\n const r = this.#recorder;\n MEDIA_RECORDER_EVENTS.forEach(e => {\n r.addEventListener(e, this._recorderLifecycleHandler, false);\n });\n }\n }\n _closeMediaRecorder() {\n const r = this.#recorder;\n if (!Utils.isNull(r)) {\n if (r.state !== 'inactive') {\n r.stop();\n }\n MEDIA_RECORDER_EVENTS.forEach(e => {\n r.removeEventListener(e, this._recorderLifecycleHandler, false);\n });\n this.#recorder = null;\n }\n }\n flush() {\n const blob = new Blob(this.#chunks, { 'type': this.mimeType || DEFAULT_MIMETYPE });\n this.#chunks = [];\n this.output = blob;\n }\n start() {\n const r = this.#recorder;\n if (!Utils.isNull(r) && r.state === 'inactive') {\n r.start();\n }\n }\n stop() {\n const r = this.#recorder;\n if (!Utils.isNull(r) && r.state !== 'inactive') {\n r.stop();\n }\n }\n resume() {\n const r = this.#recorder;\n if (!Utils.isNull(r) && r.state === 'paused') {\n r.start();\n }\n }\n pause() {\n const r = this.#recorder;\n if (!Utils.isNull(r) && r.state !== 'paused') {\n r.pause();\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemMediaRecorderElement.prototype, \"source\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMediaRecorderElement.prototype, \"fps\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMediaRecorderElement.prototype, \"mimeType\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMediaRecorderElement.prototype, \"audioBitsPerSecond\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMediaRecorderElement.prototype, \"videoBitsPerSecond\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemMediaRecorderElement.prototype, \"state\", void 0);\n__decorate([\n Watch()\n], PacemMediaRecorderElement.prototype, \"output\", void 0);\nPacemMediaRecorderElement = __decorate([\n CustomElement({ tagName: P + '-media-recorder' })\n], PacemMediaRecorderElement);\nexport { PacemMediaRecorderElement };\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","PacemAudioElement","PacemEventTarget","constructor","super","this","_endedHandler","e","dispatchEvent","Event","_canPlayHandler","canPlay","_autoplay","_canPlayThroughHandler","canPlayThrough","audio","connectedCallback","a","Audio","addEventListener","propertyChangedCallback","name","old","val","first","_init","viewActivatedCallback","disconnectedCallback","removeEventListener","play","disabled","Promise","reject","then","_","CustomEvent","detail","pause","reset","load","_canPlay","stream","autoplay","src","Watch","emit","converter","PropertyConverters","String","prototype","Boolean","CustomElement","tagName","P","DEFAULT_MIMETYPE","MEDIA_RECORDER_EVENTS","PacemMediaRecorderElement","_recorderLifecycleHandler","evt","state","recorder","type","output","flush","evtb","chunks","push","data","_setupMediaRecorder","_closeMediaRecorder","source","options","mimeType","audioBitsPerSecond","videoBitsPerSecond","Utils","isNull","obj","HTMLCanvasElement","fps","captureStream","MediaRecorder","console","error","forEach","stop","blob","Blob","start","resume","Element","Number","DeepMerger","merge","Output"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pacem/pacem v1.0.0-babbage (https://js.pacem.it)
2
+ * @pacem/pacem v1.0.0-bernoulli (https://js.pacem.it)
3
3
  * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pacem/pacem v1.0.0-babbage (https://js.pacem.it)
2
+ * @pacem/pacem v1.0.0-bernoulli (https://js.pacem.it)
3
3
  * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
- !function(t,e){"use strict";var s=function(t,e,s,n){var r,i=arguments.length,o=i<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,s):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,s,n);else for(var c=t.length-1;c>=0;c--)(r=t[c])&&(o=(i<3?r(o):i>3?r(e,s,o):r(e,s))||o);return i>3&&o&&Object.defineProperty(e,s,o),o};const n="https://cdn.jsdelivr.net/npm/@microsoft/signalr@10.0.0/dist/browser/signalr.min.js";let r=class extends e.Components.PacemItemElement{constructor(){super(...arguments),this._receiveHandler=(...t)=>{this.dispatchEvent(new CustomEvent("receive",{detail:Array.from(t)}))},this._completeHandler=()=>{this.dispatchEvent(new Event("complete"))},this._errorHandler=t=>{this.dispatchEvent(new CustomEvent("error",{detail:t}))},this._connectedHandler=t=>{"connected"===t.detail.propertyName&&!0===t.detail.currentValue&&this._start()}}#t;get _isConnected(){return this.container instanceof i&&this.container.connected||!1}get _connection(){return this.container instanceof i&&this.container.connection||null}start(){this.disabled||this._start()}stop(){this._stop()}_stop(t=this.method,s=this.stream){if(!this._isConnected)return;const n=this._connection;e.Utils.isNullOrEmpty(t)||(s?this.#t?.dispose():n.off(t,this._receiveHandler))}_start(t=this.method,s=this.stream){if(!this._isConnected)return;const n=this._connection;if(!e.Utils.isNullOrEmpty(t))if(s){const e=this.arguments||[],s=signalR.HubConnection.prototype.stream.apply(n,[t].concat(e));this.#t=s.subscribe({next:this._receiveHandler,complete:this._completeHandler,error:this._errorHandler})}else n.on(t,this._receiveHandler)}viewActivatedCallback(){super.viewActivatedCallback();const t=this.container;e.Utils.isNull(t)||t.addEventListener(e.PropertyChangeEventName,this._connectedHandler,!1),this.start()}disconnectedCallback(){const t=this.container;e.Utils.isNull(t)||t.removeEventListener(e.PropertyChangeEventName,this._connectedHandler,!1),super.disconnectedCallback()}propertyChangedCallback(t,s,n,r){switch(super.propertyChangedCallback(t,s,n,r),t){case"arguments":this._stop(),this._start();break;case"method":e.Utils.isNullOrEmpty(s)||this._stop(s,this.stream),e.Utils.isNullOrEmpty(n)||this._start(n,this.stream);break;case"stream":const t=this.method;e.Utils.isNullOrEmpty(t)||(this._stop(t,s),this._start(t,n));break;case"disabled":if(!e.Utils.isNullOrEmpty(this.method)){(n?this._stop:this._start)()}}}};s([e.Watch({emit:!1,converter:e.PropertyConverters.String})],r.prototype,"method",void 0),s([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],r.prototype,"stream",void 0),s([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],r.prototype,"arguments",void 0),r=s([e.CustomElement({tagName:e.P+"-hub-listener"})],r);let i=class extends e.Components.PacemItemsContainerElement{validate(t){return t instanceof r}get connection(){return this._hub}invoke(t,...e){if(this.connected)return this._hub.invoke.apply(this._hub,arguments);throw"Hub is not connected. Cannot call `invoke` method."}send(t,...e){if(this.connected)return this._hub.send(t,...e);throw"Hub is not connected. Cannot call `send` method."}start(){return this._resetProxy()}async stop(){this.connected&&await this._hub.stop()}propertyChangedCallback(t,e,s,n){super.propertyChangedCallback(t,e,s,n),n||"url"!==t&&"disabled"!==t&&"accesstoken"!==t||this._resetProxy()}viewActivatedCallback(){super.viewActivatedCallback(),this.start()}disconnectedCallback(){this.stop(),super.disconnectedCallback()}async _resetProxy(){e.Utils.isNull(this._hub)||await this._hub.stop(),this._setupProxy()}async _initialize(){"signalR"in window||await e.CustomElementUtils.importjs(n)}async _setupProxy(){const t=this.items||[];if(!this.disabled&&!e.Utils.isNullOrEmpty(this.url)){await this._initialize();const e=new signalR.HubConnectionBuilder;e.withUrl(this.url,{accessTokenFactory:()=>this.accesstoken});const s=this._hub=e.build();s.onclose(()=>{for(var e of t)e.stop();this.connected=!1,this._hub=null}),await s.start(),this.connected=!0}}};s([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"url",void 0),s([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"accesstoken",void 0),s([e.Watch({converter:e.PropertyConverters.Boolean})],i.prototype,"connected",void 0),i=s([e.CustomElement({tagName:e.P+"-hub-proxy"})],i);var o=function(t,e,s,n){var r,i=arguments.length,o=i<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,s):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,s,n);else for(var c=t.length-1;c>=0;c--)(r=t[c])&&(o=(i<3?r(o):i>3?r(e,s,o):r(e,s))||o);return i>3&&o&&Object.defineProperty(e,s,o),o};let c=class extends e.Components.PacemItemElement{constructor(){super(...arguments),this._receiveHandler=t=>{this.dispatchEvent(new CustomEvent("receive",{detail:t.data}))},this._connectedHandler=t=>{"connected"===t.detail.propertyName&&!0===t.detail.currentValue&&this._start()}}get _isConnected(){return this.container instanceof a&&this.container.connected||!1}get _connection(){return this.container instanceof a&&this.container.eventSource||null}_stop(t=this.method){if(!this._isConnected)return;const s=this._connection;e.Utils.isNullOrEmpty(t)||s.removeEventListener(t,this._receiveHandler)}_start(t=this.method){if(!this._isConnected)return;const s=this._connection;e.Utils.isNullOrEmpty(t)||s.addEventListener(t,this._receiveHandler)}start(){this.disabled||this._start()}stop(){this._stop()}viewActivatedCallback(){super.viewActivatedCallback();const t=this.container;e.Utils.isNull(t)||t.addEventListener(e.PropertyChangeEventName,this._connectedHandler,!1),this.start()}disconnectedCallback(){const t=this.container;e.Utils.isNull(t)||t.removeEventListener(e.PropertyChangeEventName,this._connectedHandler,!1),super.disconnectedCallback()}propertyChangedCallback(t,s,n,r){switch(super.propertyChangedCallback(t,s,n,r),t){case"method":e.Utils.isNullOrEmpty(s)||this._stop(s),e.Utils.isNullOrEmpty(n)||this._start(n);break;case"disabled":if(!e.Utils.isNullOrEmpty(this.method)){(n?this._stop:this._start)()}}}};o([e.Watch({emit:!1,converter:e.PropertyConverters.String})],c.prototype,"method",void 0),c=o([e.CustomElement({tagName:e.P+"-sse-listener"})],c);let a=class extends e.Components.PacemItemsContainerElement{constructor(){super(...arguments),this._connectHandler=t=>{this.connected=!0,this.#e.onmessage=this._receiveHandler},this._errorHandler=t=>{this.connected=!1},this._receiveHandler=t=>{this.dispatchEvent(new CustomEvent("receive",{detail:t.data}))}}validate(t){return t instanceof c}viewActivatedCallback(){super.viewActivatedCallback(),this._start()}disconnectedCallback(){this._stop(),super.disconnectedCallback()}propertyChangedCallback(t,e,s,n){super.propertyChangedCallback(t,e,s,n),n||"url"!==t&&"disabled"!==t||this._restart()}#e;_restart(){this._stop(),this._start()}_start(t=this.url){if(!e.Utils.isNullOrEmpty(t)&&!this.disabled){const e=this.#e=new EventSource(t);e.onopen=this._connectHandler,e.onerror=this._errorHandler}}get eventSource(){return this.#e}_stop(){const t=this.items||[];for(var s of t)s.stop();const n=this.#e;e.Utils.isNull(n)||(n.onopen=null,n.onerror=null,n.onmessage=null,n.close()),this.connected=!1,this.#e=null}};o([e.Watch({emit:!1,converter:e.PropertyConverters.String})],a.prototype,"url",void 0),o([e.Watch({converter:e.PropertyConverters.Boolean})],a.prototype,"connected",void 0),o([e.Debounce(!0)],a.prototype,"_restart",null),a=o([e.CustomElement({tagName:e.P+"-sse-proxy"})],a);var l=Object.freeze({__proto__:null,get PacemHubListenerElement(){return r},get PacemHubProxyElement(){return i},get PacemServerSentEventsListenerElement(){return c},get PacemServerSentEventsProxyElement(){return a}}),h=Object.freeze({__proto__:null,Networking:l}),d=Object.freeze({__proto__:null,Components:h});t.DeepMerger.merge(d)}(Pacem,Pacem);
6
+ !function(e,t){"use strict";var n=function(e,t,n,s){var r,i=arguments.length,o=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,n):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,s);else for(var c=e.length-1;c>=0;c--)(r=e[c])&&(o=(i<3?r(o):i>3?r(t,n,o):r(t,n))||o);return i>3&&o&&Object.defineProperty(t,n,o),o};const s="https://cdn.jsdelivr.net/npm/@microsoft/signalr@10.0.0/dist/browser/signalr.min.js";let r=class PacemHubListenerElement extends t.Components.PacemItemElement{constructor(){super(...arguments),this._receiveHandler=(...e)=>{this.dispatchEvent(new CustomEvent("receive",{detail:Array.from(e)}))},this._completeHandler=()=>{this.dispatchEvent(new Event("complete"))},this._errorHandler=e=>{this.dispatchEvent(new CustomEvent("error",{detail:e}))},this._connectedHandler=e=>{"connected"===e.detail.propertyName&&!0===e.detail.currentValue&&this._start()}}#e;get _isConnected(){return this.container instanceof i&&this.container.connected||!1}get _connection(){return this.container instanceof i&&this.container.connection||null}start(){this.disabled||this._start()}stop(){this._stop()}_stop(e=this.method,n=this.stream){if(!this._isConnected)return;const s=this._connection;t.Utils.isNullOrEmpty(e)||(n?this.#e?.dispose():s.off(e,this._receiveHandler))}_start(e=this.method,n=this.stream){if(!this._isConnected)return;const s=this._connection;if(!t.Utils.isNullOrEmpty(e))if(n){const t=this.arguments||[],n=signalR.HubConnection.prototype.stream.apply(s,[e].concat(t));this.#e=n.subscribe({next:this._receiveHandler,complete:this._completeHandler,error:this._errorHandler})}else s.on(e,this._receiveHandler)}viewActivatedCallback(){super.viewActivatedCallback();const e=this.container;t.Utils.isNull(e)||e.addEventListener(t.PropertyChangeEventName,this._connectedHandler,!1),this.start()}disconnectedCallback(){const e=this.container;t.Utils.isNull(e)||e.removeEventListener(t.PropertyChangeEventName,this._connectedHandler,!1),super.disconnectedCallback()}propertyChangedCallback(e,n,s,r){switch(super.propertyChangedCallback(e,n,s,r),e){case"arguments":this._stop(),this._start();break;case"method":t.Utils.isNullOrEmpty(n)||this._stop(n,this.stream),t.Utils.isNullOrEmpty(s)||this._start(s,this.stream);break;case"stream":const e=this.method;t.Utils.isNullOrEmpty(e)||(this._stop(e,n),this._start(e,s));break;case"disabled":if(!t.Utils.isNullOrEmpty(this.method)){(s?this._stop:this._start)()}}}};n([t.Watch({emit:!1,converter:t.PropertyConverters.String})],r.prototype,"method",void 0),n([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],r.prototype,"stream",void 0),n([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],r.prototype,"arguments",void 0),r=n([t.CustomElement({tagName:t.P+"-hub-listener"})],r);let i=class PacemHubProxyElement extends t.Components.PacemItemsContainerElement{validate(e){return e instanceof r}get connection(){return this._hub}invoke(e,...t){if(this.connected)return this._hub.invoke.apply(this._hub,arguments);throw"Hub is not connected. Cannot call `invoke` method."}send(e,...t){if(this.connected)return this._hub.send(e,...t);throw"Hub is not connected. Cannot call `send` method."}start(){return this._resetProxy()}async stop(){this.connected&&await this._hub.stop()}propertyChangedCallback(e,t,n,s){super.propertyChangedCallback(e,t,n,s),s||"url"!==e&&"disabled"!==e&&"accesstoken"!==e||this._resetProxy()}viewActivatedCallback(){super.viewActivatedCallback(),this.start()}disconnectedCallback(){this.stop(),super.disconnectedCallback()}async _resetProxy(){t.Utils.isNull(this._hub)||await this._hub.stop(),this._setupProxy()}async _initialize(){"signalR"in window||await t.CustomElementUtils.importjs(s)}async _setupProxy(){const e=this.items||[];if(!this.disabled&&!t.Utils.isNullOrEmpty(this.url)){await this._initialize();const t=new signalR.HubConnectionBuilder;t.withUrl(this.url,{accessTokenFactory:()=>this.accesstoken});const n=this._hub=t.build();n.onclose(()=>{for(var t of e)t.stop();this.connected=!1,this._hub=null}),await n.start(),this.connected=!0}}};n([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"url",void 0),n([t.Watch({emit:!1,converter:t.PropertyConverters.String})],i.prototype,"accesstoken",void 0),n([t.Watch({converter:t.PropertyConverters.Boolean})],i.prototype,"connected",void 0),i=n([t.CustomElement({tagName:t.P+"-hub-proxy"})],i);var o=function(e,t,n,s){var r,i=arguments.length,o=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,n):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,s);else for(var c=e.length-1;c>=0;c--)(r=e[c])&&(o=(i<3?r(o):i>3?r(t,n,o):r(t,n))||o);return i>3&&o&&Object.defineProperty(t,n,o),o};let c=class PacemServerSentEventsListenerElement extends t.Components.PacemItemElement{constructor(){super(...arguments),this._receiveHandler=e=>{this.dispatchEvent(new CustomEvent("receive",{detail:e.data}))},this._connectedHandler=e=>{"connected"===e.detail.propertyName&&!0===e.detail.currentValue&&this._start()}}get _isConnected(){return this.container instanceof a&&this.container.connected||!1}get _connection(){return this.container instanceof a&&this.container.eventSource||null}_stop(e=this.method){if(!this._isConnected)return;const n=this._connection;t.Utils.isNullOrEmpty(e)||n.removeEventListener(e,this._receiveHandler)}_start(e=this.method){if(!this._isConnected)return;const n=this._connection;t.Utils.isNullOrEmpty(e)||n.addEventListener(e,this._receiveHandler)}start(){this.disabled||this._start()}stop(){this._stop()}viewActivatedCallback(){super.viewActivatedCallback();const e=this.container;t.Utils.isNull(e)||e.addEventListener(t.PropertyChangeEventName,this._connectedHandler,!1),this.start()}disconnectedCallback(){const e=this.container;t.Utils.isNull(e)||e.removeEventListener(t.PropertyChangeEventName,this._connectedHandler,!1),super.disconnectedCallback()}propertyChangedCallback(e,n,s,r){switch(super.propertyChangedCallback(e,n,s,r),e){case"method":t.Utils.isNullOrEmpty(n)||this._stop(n),t.Utils.isNullOrEmpty(s)||this._start(s);break;case"disabled":if(!t.Utils.isNullOrEmpty(this.method)){(s?this._stop:this._start)()}}}};o([t.Watch({emit:!1,converter:t.PropertyConverters.String})],c.prototype,"method",void 0),c=o([t.CustomElement({tagName:t.P+"-sse-listener"})],c);let a=class PacemServerSentEventsProxyElement extends t.Components.PacemItemsContainerElement{constructor(){super(...arguments),this._connectHandler=e=>{this.connected=!0,this.#t.onmessage=this._receiveHandler},this._errorHandler=e=>{this.connected=!1},this._receiveHandler=e=>{this.dispatchEvent(new CustomEvent("receive",{detail:e.data}))}}validate(e){return e instanceof c}viewActivatedCallback(){super.viewActivatedCallback(),this._start()}disconnectedCallback(){this._stop(),super.disconnectedCallback()}propertyChangedCallback(e,t,n,s){super.propertyChangedCallback(e,t,n,s),s||"url"!==e&&"disabled"!==e||this._restart()}#t;_restart(){this._stop(),this._start()}_start(e=this.url){if(!t.Utils.isNullOrEmpty(e)&&!this.disabled){const t=this.#t=new EventSource(e);t.onopen=this._connectHandler,t.onerror=this._errorHandler}}get eventSource(){return this.#t}_stop(){const e=this.items||[];for(var n of e)n.stop();const s=this.#t;t.Utils.isNull(s)||(s.onopen=null,s.onerror=null,s.onmessage=null,s.close()),this.connected=!1,this.#t=null}};o([t.Watch({emit:!1,converter:t.PropertyConverters.String})],a.prototype,"url",void 0),o([t.Watch({converter:t.PropertyConverters.Boolean})],a.prototype,"connected",void 0),o([t.Debounce(!0)],a.prototype,"_restart",null),a=o([t.CustomElement({tagName:t.P+"-sse-proxy"})],a);var l=Object.freeze({__proto__:null,get PacemHubListenerElement(){return r},get PacemHubProxyElement(){return i},get PacemServerSentEventsListenerElement(){return c},get PacemServerSentEventsProxyElement(){return a}}),h=Object.freeze({__proto__:null,Networking:l}),d=Object.freeze({__proto__:null,Components:h});e.DeepMerger.merge(d)}(Pacem,Pacem);
7
7
  //# sourceMappingURL=pacem-networking.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pacem-networking.min.js","sources":["../esm/hub-proxy.js","../esm/sse-proxy.js","../esm/index-iife.js"],"sourcesContent":["var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, PropertyConverters, Utils, PropertyChangeEventName, CustomElementUtils, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.Networking {\nconst API_JS = 'https://cdn.jsdelivr.net/npm/@microsoft/signalr@10.0.0/dist/browser/signalr.min.js'; // 'https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/10.0.0/signalr.min.js'\nconst consts = { API_JS };\nlet PacemHubListenerElement = class PacemHubListenerElement extends Components.PacemItemElement {\n constructor() {\n super(...arguments);\n this._receiveHandler = (...args) => {\n this.dispatchEvent(new CustomEvent('receive', { detail: Array.from(args) }));\n };\n this._completeHandler = () => {\n this.dispatchEvent(new Event('complete'));\n };\n this._errorHandler = (error) => {\n this.dispatchEvent(new CustomEvent('error', { detail: error }));\n };\n this._connectedHandler = (e) => {\n if (e.detail.propertyName === 'connected' && e.detail.currentValue === true) {\n this._start();\n }\n };\n }\n #streamSubscription;\n get _isConnected() {\n return this.container instanceof PacemHubProxyElement && this.container.connected || false;\n }\n get _connection() {\n return this.container instanceof PacemHubProxyElement && this.container.connection || null;\n }\n /** Start listening, if not disabled. */\n start() {\n if (!this.disabled) {\n this._start();\n }\n }\n /** Stop listening. */\n stop() {\n this._stop();\n }\n _stop(method = this.method, isStreaming = this.stream) {\n if (!this._isConnected) {\n return;\n }\n const conn = this._connection;\n if (!Utils.isNullOrEmpty(method)) {\n if (!isStreaming) {\n conn.off(method, this._receiveHandler);\n }\n else {\n this.#streamSubscription?.dispose();\n }\n }\n }\n _start(method = this.method, isStreaming = this.stream) {\n if (!this._isConnected) {\n return;\n }\n const conn = this._connection;\n if (!Utils.isNullOrEmpty(method)) {\n if (!isStreaming) {\n conn.on(method, this._receiveHandler);\n }\n else {\n const args = this.arguments || [];\n const streamResult = signalR.HubConnection.prototype.stream.apply(conn, [method].concat(args));\n this.#streamSubscription = streamResult.subscribe({\n next: this._receiveHandler,\n complete: this._completeHandler,\n error: this._errorHandler\n });\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const container = this.container;\n if (!Utils.isNull(container)) {\n container.addEventListener(PropertyChangeEventName, this._connectedHandler, false);\n }\n this.start();\n }\n disconnectedCallback() {\n const container = this.container;\n if (!Utils.isNull(container)) {\n container.removeEventListener(PropertyChangeEventName, this._connectedHandler, false);\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'arguments':\n this._stop();\n this._start();\n break;\n case 'method':\n if (!Utils.isNullOrEmpty(old)) {\n this._stop(old, this.stream);\n }\n if (!Utils.isNullOrEmpty(val)) {\n this._start(val, this.stream);\n }\n break;\n case 'stream':\n const m = this.method;\n if (!Utils.isNullOrEmpty(m)) {\n this._stop(m, old);\n this._start(m, val);\n }\n break;\n case 'disabled':\n if (!Utils.isNullOrEmpty(this.method)) {\n let toggle = val ? this._stop : this._start;\n toggle();\n }\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHubListenerElement.prototype, \"method\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemHubListenerElement.prototype, \"stream\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemHubListenerElement.prototype, \"arguments\", void 0);\nPacemHubListenerElement = __decorate([\n CustomElement({ tagName: P + '-hub-listener' })\n], PacemHubListenerElement);\nexport { PacemHubListenerElement };\nlet PacemHubProxyElement = class PacemHubProxyElement extends Components.PacemItemsContainerElement {\n validate(item) {\n return item instanceof PacemHubListenerElement;\n }\n get connection() {\n return this._hub;\n }\n invoke(method, ...args) {\n if (this.connected) {\n return this._hub.invoke.apply(this._hub, arguments);\n }\n throw 'Hub is not connected. Cannot call `invoke` method.';\n }\n send(method, ...args) {\n if (this.connected) {\n return this._hub.send(method, ...args);\n }\n throw 'Hub is not connected. Cannot call `send` method.';\n }\n start() {\n return this._resetProxy();\n }\n async stop() {\n if (this.connected) {\n await this._hub.stop();\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n //\n if (first) {\n return;\n }\n if (name === 'url' || name === 'disabled' || name === 'accesstoken') {\n this._resetProxy();\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.start();\n }\n disconnectedCallback() {\n // this will (likely) never complete, being an asynchrounous call...\n // TODO: think about it.\n this.stop();\n super.disconnectedCallback();\n }\n async _resetProxy() {\n if (!Utils.isNull(this._hub)) {\n await this._hub.stop();\n //this.connected = false;\n }\n this._setupProxy();\n }\n async _initialize() {\n if ('signalR' in window) {\n // already available, skip import\n return;\n }\n await CustomElementUtils.importjs(consts.API_JS);\n }\n async _setupProxy() {\n const listeners = this.items || [];\n if (!this.disabled && !Utils.isNullOrEmpty(this.url)) {\n await this._initialize();\n const connBuilder = new signalR.HubConnectionBuilder();\n connBuilder.withUrl(this.url, {\n accessTokenFactory: () => this.accesstoken\n });\n const h = this._hub = connBuilder.build();\n h.onclose(() => {\n for (var item of listeners) {\n item.stop();\n }\n this.connected = false;\n this._hub = null;\n });\n await h.start();\n this.connected = true;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHubProxyElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHubProxyElement.prototype, \"accesstoken\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemHubProxyElement.prototype, \"connected\", void 0);\nPacemHubProxyElement = __decorate([\n CustomElement({ tagName: P + '-hub-proxy' })\n], PacemHubProxyElement);\nexport { PacemHubProxyElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, PropertyConverters, Utils, PropertyChangeEventName, Debounce, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.Networking {\nlet PacemServerSentEventsListenerElement = class PacemServerSentEventsListenerElement extends Components.PacemItemElement {\n constructor() {\n super(...arguments);\n this._receiveHandler = (e) => {\n this.dispatchEvent(new CustomEvent('receive', { detail: e.data }));\n };\n this._connectedHandler = (e) => {\n if (e.detail.propertyName === 'connected' && e.detail.currentValue === true) {\n this._start();\n }\n };\n }\n get _isConnected() {\n return this.container instanceof PacemServerSentEventsProxyElement && this.container.connected || false;\n }\n get _connection() {\n return this.container instanceof PacemServerSentEventsProxyElement && this.container.eventSource || null;\n }\n _stop(method = this.method) {\n if (!this._isConnected) {\n return;\n }\n const conn = this._connection;\n if (!Utils.isNullOrEmpty(method)) {\n conn.removeEventListener(method, this._receiveHandler);\n }\n }\n _start(method = this.method) {\n if (!this._isConnected) {\n return;\n }\n const conn = this._connection;\n if (!Utils.isNullOrEmpty(method)) {\n conn.addEventListener(method, this._receiveHandler);\n }\n }\n /** Start listening, if not disabled. */\n start() {\n if (!this.disabled) {\n this._start();\n }\n }\n /** Stop listening. */\n stop() {\n this._stop();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const container = this.container;\n if (!Utils.isNull(container)) {\n container.addEventListener(PropertyChangeEventName, this._connectedHandler, false);\n }\n this.start();\n }\n disconnectedCallback() {\n const container = this.container;\n if (!Utils.isNull(container)) {\n container.removeEventListener(PropertyChangeEventName, this._connectedHandler, false);\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'method':\n if (!Utils.isNullOrEmpty(old)) {\n this._stop(old);\n }\n if (!Utils.isNullOrEmpty(val)) {\n this._start(val);\n }\n break;\n case 'disabled':\n if (!Utils.isNullOrEmpty(this.method)) {\n let toggle = val ? this._stop : this._start;\n toggle();\n }\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemServerSentEventsListenerElement.prototype, \"method\", void 0);\nPacemServerSentEventsListenerElement = __decorate([\n CustomElement({ tagName: P + '-sse-listener' })\n], PacemServerSentEventsListenerElement);\nexport { PacemServerSentEventsListenerElement };\nlet PacemServerSentEventsProxyElement = class PacemServerSentEventsProxyElement extends Components.PacemItemsContainerElement {\n constructor() {\n super(...arguments);\n this._connectHandler = (_) => {\n this.connected = true;\n this.#evtSource.onmessage = this._receiveHandler;\n };\n this._errorHandler = (_) => {\n this.connected = false;\n };\n this._receiveHandler = (e) => {\n this.dispatchEvent(new CustomEvent('receive', { detail: e.data }));\n };\n }\n validate(item) {\n return item instanceof PacemServerSentEventsListenerElement;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._start();\n }\n disconnectedCallback() {\n this._stop();\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n //\n if (first) {\n return;\n }\n if (name === 'url' || name === 'disabled') {\n this._restart();\n }\n }\n #evtSource;\n _restart() {\n this._stop();\n this._start();\n }\n _start(url = this.url) {\n if (!Utils.isNullOrEmpty(url) && !this.disabled) {\n const evtSource = this.#evtSource = new EventSource(url);\n evtSource.onopen = this._connectHandler;\n evtSource.onerror = this._errorHandler;\n }\n }\n get eventSource() {\n return this.#evtSource;\n }\n _stop() {\n const listeners = this.items || [];\n for (var item of listeners) {\n item.stop();\n }\n const evtSource = this.#evtSource;\n if (!Utils.isNull(evtSource)) {\n evtSource.onopen = null;\n evtSource.onerror = null;\n evtSource.onmessage = null;\n evtSource.close();\n }\n this.connected = false;\n this.#evtSource = null;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemServerSentEventsProxyElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemServerSentEventsProxyElement.prototype, \"connected\", void 0);\n__decorate([\n Debounce(true)\n], PacemServerSentEventsProxyElement.prototype, \"_restart\", null);\nPacemServerSentEventsProxyElement = __decorate([\n CustomElement({ tagName: P + '-sse-proxy' })\n], PacemServerSentEventsProxyElement);\nexport { PacemServerSentEventsProxyElement };\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","consts","PacemHubListenerElement","Components","PacemItemElement","constructor","super","this","_receiveHandler","args","dispatchEvent","CustomEvent","detail","Array","from","_completeHandler","Event","_errorHandler","error","_connectedHandler","e","propertyName","currentValue","_start","streamSubscription","_isConnected","container","PacemHubProxyElement","connected","_connection","connection","start","disabled","stop","_stop","method","isStreaming","stream","conn","Utils","isNullOrEmpty","dispose","off","streamResult","signalR","HubConnection","prototype","apply","concat","subscribe","next","complete","on","viewActivatedCallback","isNull","addEventListener","PropertyChangeEventName","disconnectedCallback","removeEventListener","propertyChangedCallback","name","old","val","first","m","Watch","emit","converter","PropertyConverters","String","Boolean","Json","CustomElement","tagName","P","PacemItemsContainerElement","validate","item","_hub","invoke","send","_resetProxy","_setupProxy","_initialize","window","CustomElementUtils","importjs","listeners","items","url","connBuilder","HubConnectionBuilder","withUrl","accessTokenFactory","accesstoken","h","build","onclose","PacemServerSentEventsListenerElement","data","PacemServerSentEventsProxyElement","eventSource","_connectHandler","_","evtSource","onmessage","_restart","EventSource","onopen","onerror","close","Debounce","DeepMerger","merge","Output"],"mappings":"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"}
1
+ {"version":3,"file":"pacem-networking.min.js","sources":["../esm/hub-proxy.js","../esm/sse-proxy.js","../esm/index-iife.js"],"sourcesContent":["var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, PropertyConverters, Utils, PropertyChangeEventName, CustomElementUtils, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.Networking {\nconst API_JS = 'https://cdn.jsdelivr.net/npm/@microsoft/signalr@10.0.0/dist/browser/signalr.min.js'; // 'https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/10.0.0/signalr.min.js'\nconst consts = { API_JS };\nlet PacemHubListenerElement = class PacemHubListenerElement extends Components.PacemItemElement {\n constructor() {\n super(...arguments);\n this._receiveHandler = (...args) => {\n this.dispatchEvent(new CustomEvent('receive', { detail: Array.from(args) }));\n };\n this._completeHandler = () => {\n this.dispatchEvent(new Event('complete'));\n };\n this._errorHandler = (error) => {\n this.dispatchEvent(new CustomEvent('error', { detail: error }));\n };\n this._connectedHandler = (e) => {\n if (e.detail.propertyName === 'connected' && e.detail.currentValue === true) {\n this._start();\n }\n };\n }\n #streamSubscription;\n get _isConnected() {\n return this.container instanceof PacemHubProxyElement && this.container.connected || false;\n }\n get _connection() {\n return this.container instanceof PacemHubProxyElement && this.container.connection || null;\n }\n /** Start listening, if not disabled. */\n start() {\n if (!this.disabled) {\n this._start();\n }\n }\n /** Stop listening. */\n stop() {\n this._stop();\n }\n _stop(method = this.method, isStreaming = this.stream) {\n if (!this._isConnected) {\n return;\n }\n const conn = this._connection;\n if (!Utils.isNullOrEmpty(method)) {\n if (!isStreaming) {\n conn.off(method, this._receiveHandler);\n }\n else {\n this.#streamSubscription?.dispose();\n }\n }\n }\n _start(method = this.method, isStreaming = this.stream) {\n if (!this._isConnected) {\n return;\n }\n const conn = this._connection;\n if (!Utils.isNullOrEmpty(method)) {\n if (!isStreaming) {\n conn.on(method, this._receiveHandler);\n }\n else {\n const args = this.arguments || [];\n const streamResult = signalR.HubConnection.prototype.stream.apply(conn, [method].concat(args));\n this.#streamSubscription = streamResult.subscribe({\n next: this._receiveHandler,\n complete: this._completeHandler,\n error: this._errorHandler\n });\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const container = this.container;\n if (!Utils.isNull(container)) {\n container.addEventListener(PropertyChangeEventName, this._connectedHandler, false);\n }\n this.start();\n }\n disconnectedCallback() {\n const container = this.container;\n if (!Utils.isNull(container)) {\n container.removeEventListener(PropertyChangeEventName, this._connectedHandler, false);\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'arguments':\n this._stop();\n this._start();\n break;\n case 'method':\n if (!Utils.isNullOrEmpty(old)) {\n this._stop(old, this.stream);\n }\n if (!Utils.isNullOrEmpty(val)) {\n this._start(val, this.stream);\n }\n break;\n case 'stream':\n const m = this.method;\n if (!Utils.isNullOrEmpty(m)) {\n this._stop(m, old);\n this._start(m, val);\n }\n break;\n case 'disabled':\n if (!Utils.isNullOrEmpty(this.method)) {\n let toggle = val ? this._stop : this._start;\n toggle();\n }\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHubListenerElement.prototype, \"method\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemHubListenerElement.prototype, \"stream\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemHubListenerElement.prototype, \"arguments\", void 0);\nPacemHubListenerElement = __decorate([\n CustomElement({ tagName: P + '-hub-listener' })\n], PacemHubListenerElement);\nexport { PacemHubListenerElement };\nlet PacemHubProxyElement = class PacemHubProxyElement extends Components.PacemItemsContainerElement {\n validate(item) {\n return item instanceof PacemHubListenerElement;\n }\n get connection() {\n return this._hub;\n }\n invoke(method, ...args) {\n if (this.connected) {\n return this._hub.invoke.apply(this._hub, arguments);\n }\n throw 'Hub is not connected. Cannot call `invoke` method.';\n }\n send(method, ...args) {\n if (this.connected) {\n return this._hub.send(method, ...args);\n }\n throw 'Hub is not connected. Cannot call `send` method.';\n }\n start() {\n return this._resetProxy();\n }\n async stop() {\n if (this.connected) {\n await this._hub.stop();\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n //\n if (first) {\n return;\n }\n if (name === 'url' || name === 'disabled' || name === 'accesstoken') {\n this._resetProxy();\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.start();\n }\n disconnectedCallback() {\n // this will (likely) never complete, being an asynchrounous call...\n // TODO: think about it.\n this.stop();\n super.disconnectedCallback();\n }\n async _resetProxy() {\n if (!Utils.isNull(this._hub)) {\n await this._hub.stop();\n //this.connected = false;\n }\n this._setupProxy();\n }\n async _initialize() {\n if ('signalR' in window) {\n // already available, skip import\n return;\n }\n await CustomElementUtils.importjs(consts.API_JS);\n }\n async _setupProxy() {\n const listeners = this.items || [];\n if (!this.disabled && !Utils.isNullOrEmpty(this.url)) {\n await this._initialize();\n const connBuilder = new signalR.HubConnectionBuilder();\n connBuilder.withUrl(this.url, {\n accessTokenFactory: () => this.accesstoken\n });\n const h = this._hub = connBuilder.build();\n h.onclose(() => {\n for (var item of listeners) {\n item.stop();\n }\n this.connected = false;\n this._hub = null;\n });\n await h.start();\n this.connected = true;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHubProxyElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHubProxyElement.prototype, \"accesstoken\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemHubProxyElement.prototype, \"connected\", void 0);\nPacemHubProxyElement = __decorate([\n CustomElement({ tagName: P + '-hub-proxy' })\n], PacemHubProxyElement);\nexport { PacemHubProxyElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, PropertyConverters, Utils, PropertyChangeEventName, Debounce, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.Networking {\nlet PacemServerSentEventsListenerElement = class PacemServerSentEventsListenerElement extends Components.PacemItemElement {\n constructor() {\n super(...arguments);\n this._receiveHandler = (e) => {\n this.dispatchEvent(new CustomEvent('receive', { detail: e.data }));\n };\n this._connectedHandler = (e) => {\n if (e.detail.propertyName === 'connected' && e.detail.currentValue === true) {\n this._start();\n }\n };\n }\n get _isConnected() {\n return this.container instanceof PacemServerSentEventsProxyElement && this.container.connected || false;\n }\n get _connection() {\n return this.container instanceof PacemServerSentEventsProxyElement && this.container.eventSource || null;\n }\n _stop(method = this.method) {\n if (!this._isConnected) {\n return;\n }\n const conn = this._connection;\n if (!Utils.isNullOrEmpty(method)) {\n conn.removeEventListener(method, this._receiveHandler);\n }\n }\n _start(method = this.method) {\n if (!this._isConnected) {\n return;\n }\n const conn = this._connection;\n if (!Utils.isNullOrEmpty(method)) {\n conn.addEventListener(method, this._receiveHandler);\n }\n }\n /** Start listening, if not disabled. */\n start() {\n if (!this.disabled) {\n this._start();\n }\n }\n /** Stop listening. */\n stop() {\n this._stop();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const container = this.container;\n if (!Utils.isNull(container)) {\n container.addEventListener(PropertyChangeEventName, this._connectedHandler, false);\n }\n this.start();\n }\n disconnectedCallback() {\n const container = this.container;\n if (!Utils.isNull(container)) {\n container.removeEventListener(PropertyChangeEventName, this._connectedHandler, false);\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'method':\n if (!Utils.isNullOrEmpty(old)) {\n this._stop(old);\n }\n if (!Utils.isNullOrEmpty(val)) {\n this._start(val);\n }\n break;\n case 'disabled':\n if (!Utils.isNullOrEmpty(this.method)) {\n let toggle = val ? this._stop : this._start;\n toggle();\n }\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemServerSentEventsListenerElement.prototype, \"method\", void 0);\nPacemServerSentEventsListenerElement = __decorate([\n CustomElement({ tagName: P + '-sse-listener' })\n], PacemServerSentEventsListenerElement);\nexport { PacemServerSentEventsListenerElement };\nlet PacemServerSentEventsProxyElement = class PacemServerSentEventsProxyElement extends Components.PacemItemsContainerElement {\n constructor() {\n super(...arguments);\n this._connectHandler = (_) => {\n this.connected = true;\n this.#evtSource.onmessage = this._receiveHandler;\n };\n this._errorHandler = (_) => {\n this.connected = false;\n };\n this._receiveHandler = (e) => {\n this.dispatchEvent(new CustomEvent('receive', { detail: e.data }));\n };\n }\n validate(item) {\n return item instanceof PacemServerSentEventsListenerElement;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._start();\n }\n disconnectedCallback() {\n this._stop();\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n //\n if (first) {\n return;\n }\n if (name === 'url' || name === 'disabled') {\n this._restart();\n }\n }\n #evtSource;\n _restart() {\n this._stop();\n this._start();\n }\n _start(url = this.url) {\n if (!Utils.isNullOrEmpty(url) && !this.disabled) {\n const evtSource = this.#evtSource = new EventSource(url);\n evtSource.onopen = this._connectHandler;\n evtSource.onerror = this._errorHandler;\n }\n }\n get eventSource() {\n return this.#evtSource;\n }\n _stop() {\n const listeners = this.items || [];\n for (var item of listeners) {\n item.stop();\n }\n const evtSource = this.#evtSource;\n if (!Utils.isNull(evtSource)) {\n evtSource.onopen = null;\n evtSource.onerror = null;\n evtSource.onmessage = null;\n evtSource.close();\n }\n this.connected = false;\n this.#evtSource = null;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemServerSentEventsProxyElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemServerSentEventsProxyElement.prototype, \"connected\", void 0);\n__decorate([\n Debounce(true)\n], PacemServerSentEventsProxyElement.prototype, \"_restart\", null);\nPacemServerSentEventsProxyElement = __decorate([\n CustomElement({ tagName: P + '-sse-proxy' })\n], PacemServerSentEventsProxyElement);\nexport { PacemServerSentEventsProxyElement };\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","consts","PacemHubListenerElement","Components","PacemItemElement","constructor","super","this","_receiveHandler","args","dispatchEvent","CustomEvent","detail","Array","from","_completeHandler","Event","_errorHandler","error","_connectedHandler","e","propertyName","currentValue","_start","streamSubscription","_isConnected","container","PacemHubProxyElement","connected","_connection","connection","start","disabled","stop","_stop","method","isStreaming","stream","conn","Utils","isNullOrEmpty","dispose","off","streamResult","signalR","HubConnection","prototype","apply","concat","subscribe","next","complete","on","viewActivatedCallback","isNull","addEventListener","PropertyChangeEventName","disconnectedCallback","removeEventListener","propertyChangedCallback","name","old","val","first","m","Watch","emit","converter","PropertyConverters","String","Boolean","Json","CustomElement","tagName","P","PacemItemsContainerElement","validate","item","_hub","invoke","send","_resetProxy","_setupProxy","_initialize","window","CustomElementUtils","importjs","listeners","items","url","connBuilder","HubConnectionBuilder","withUrl","accessTokenFactory","accesstoken","h","build","onclose","PacemServerSentEventsListenerElement","data","PacemServerSentEventsProxyElement","eventSource","_connectHandler","_","evtSource","onmessage","_restart","EventSource","onopen","onerror","close","Debounce","DeepMerger","merge","Output"],"mappings":"4BAAA,IAAIA,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOM,OAAOC,yBAAyBT,EAAQC,GAAOC,EACrH,GAAuB,iBAAZQ,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASZ,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIU,EAAIb,EAAWO,OAAS,EAAGM,GAAK,EAAGA,KAAST,EAAIJ,EAAWa,MAAIL,GAAKH,EAAI,EAAID,EAAEI,GAAKH,EAAI,EAAID,EAAEH,EAAQC,EAAKM,GAAKJ,EAAEH,EAAQC,KAASM,GAChJ,OAAOH,EAAI,GAAKG,GAAKC,OAAOK,eAAeb,EAAQC,EAAKM,GAAIA,CAChE,EAGA,MACMO,EADS,qFAEf,IAAIC,EAA0B,MAAMA,gCAAgCC,EAAAA,WAAWC,iBAC3E,WAAAC,GACIC,SAASd,WACTe,KAAKC,gBAAkB,IAAIC,KACvBF,KAAKG,cAAc,IAAIC,YAAY,UAAW,CAAEC,OAAQC,MAAMC,KAAKL,OAEvEF,KAAKQ,iBAAmB,KACpBR,KAAKG,cAAc,IAAIM,MAAM,cAEjCT,KAAKU,cAAiBC,IAClBX,KAAKG,cAAc,IAAIC,YAAY,QAAS,CAAEC,OAAQM,MAE1DX,KAAKY,kBAAqBC,IACQ,cAA1BA,EAAER,OAAOS,eAA0D,IAA1BD,EAAER,OAAOU,cAClDf,KAAKgB,SAGjB,CACAC,GACA,gBAAIC,GACA,OAAOlB,KAAKmB,qBAAqBC,GAAwBpB,KAAKmB,UAAUE,YAAa,CACzF,CACA,eAAIC,GACA,OAAOtB,KAAKmB,qBAAqBC,GAAwBpB,KAAKmB,UAAUI,YAAc,IAC1F,CAEA,KAAAC,GACSxB,KAAKyB,UACNzB,KAAKgB,QAEb,CAEA,IAAAU,GACI1B,KAAK2B,OACT,CACA,KAAAA,CAAMC,EAAS5B,KAAK4B,OAAQC,EAAc7B,KAAK8B,QAC3C,IAAK9B,KAAKkB,aACN,OAEJ,MAAMa,EAAO/B,KAAKsB,YACbU,EAAAA,MAAMC,cAAcL,KAChBC,EAID7B,MAAKiB,GAAqBiB,UAH1BH,EAAKI,IAAIP,EAAQ5B,KAAKC,iBAMlC,CACA,MAAAe,CAAOY,EAAS5B,KAAK4B,OAAQC,EAAc7B,KAAK8B,QAC5C,IAAK9B,KAAKkB,aACN,OAEJ,MAAMa,EAAO/B,KAAKsB,YAClB,IAAKU,EAAAA,MAAMC,cAAcL,GACrB,GAAKC,EAGA,CACD,MAAM3B,EAAOF,KAAKf,WAAa,GACzBmD,EAAeC,QAAQC,cAAcC,UAAUT,OAAOU,MAAMT,EAAM,CAACH,GAAQa,OAAOvC,IACxFF,MAAKiB,EAAsBmB,EAAaM,UAAU,CAC9CC,KAAM3C,KAAKC,gBACX2C,SAAU5C,KAAKQ,iBACfG,MAAOX,KAAKU,eAEpB,MAVIqB,EAAKc,GAAGjB,EAAQ5B,KAAKC,gBAYjC,CACA,qBAAA6C,GACI/C,MAAM+C,wBACN,MAAM3B,EAAYnB,KAAKmB,UAClBa,EAAAA,MAAMe,OAAO5B,IACdA,EAAU6B,iBAAiBC,EAAAA,wBAAyBjD,KAAKY,mBAAmB,GAEhFZ,KAAKwB,OACT,CACA,oBAAA0B,GACI,MAAM/B,EAAYnB,KAAKmB,UAClBa,EAAAA,MAAMe,OAAO5B,IACdA,EAAUgC,oBAAoBF,EAAAA,wBAAyBjD,KAAKY,mBAAmB,GAEnFb,MAAMmD,sBACV,CACA,uBAAAE,CAAwBC,EAAMC,EAAKC,EAAKC,GAEpC,OADAzD,MAAMqD,wBAAwBC,EAAMC,EAAKC,EAAKC,GACtCH,GACJ,IAAK,YACDrD,KAAK2B,QACL3B,KAAKgB,SACL,MACJ,IAAK,SACIgB,EAAAA,MAAMC,cAAcqB,IACrBtD,KAAK2B,MAAM2B,EAAKtD,KAAK8B,QAEpBE,EAAAA,MAAMC,cAAcsB,IACrBvD,KAAKgB,OAAOuC,EAAKvD,KAAK8B,QAE1B,MACJ,IAAK,SACD,MAAM2B,EAAIzD,KAAK4B,OACVI,EAAAA,MAAMC,cAAcwB,KACrBzD,KAAK2B,MAAM8B,EAAGH,GACdtD,KAAKgB,OAAOyC,EAAGF,IAEnB,MACJ,IAAK,WACD,IAAKvB,EAAAA,MAAMC,cAAcjC,KAAK4B,QAAS,EACtB2B,EAAMvD,KAAK2B,MAAQ3B,KAAKgB,SAEzC,EAGZ,GAEJtC,EAAW,CACPgF,EAAAA,MAAM,CAAEC,MAAM,EAAOC,UAAWC,EAAAA,mBAAmBC,UACpDnE,EAAwB4C,UAAW,iBACtC7D,EAAW,CACPgF,EAAAA,MAAM,CAAEC,MAAM,EAAOC,UAAWC,EAAAA,mBAAmBE,WACpDpE,EAAwB4C,UAAW,iBACtC7D,EAAW,CACPgF,EAAAA,MAAM,CAAEC,MAAM,EAAOC,UAAWC,EAAAA,mBAAmBG,QACpDrE,EAAwB4C,UAAW,oBACtC5C,EAA0BjB,EAAW,CACjCuF,EAAAA,cAAc,CAAEC,QAASC,EAAAA,EAAI,mBAC9BxE,GAEH,IAAIyB,EAAuB,MAAMA,6BAA6BxB,EAAAA,WAAWwE,2BACrE,QAAAC,CAASC,GACL,OAAOA,aAAgB3E,CAC3B,CACA,cAAI4B,GACA,OAAOvB,KAAKuE,IAChB,CACA,MAAAC,CAAO5C,KAAW1B,GACd,GAAIF,KAAKqB,UACL,OAAOrB,KAAKuE,KAAKC,OAAOhC,MAAMxC,KAAKuE,KAAMtF,WAE7C,KAAM,oDACV,CACA,IAAAwF,CAAK7C,KAAW1B,GACZ,GAAIF,KAAKqB,UACL,OAAOrB,KAAKuE,KAAKE,KAAK7C,KAAW1B,GAErC,KAAM,kDACV,CACA,KAAAsB,GACI,OAAOxB,KAAK0E,aAChB,CACA,UAAMhD,GACE1B,KAAKqB,iBACCrB,KAAKuE,KAAK7C,MAExB,CACA,uBAAA0B,CAAwBC,EAAMC,EAAKC,EAAKC,GACpCzD,MAAMqD,wBAAwBC,EAAMC,EAAKC,EAAKC,GAE1CA,GAGS,QAATH,GAA2B,aAATA,GAAgC,gBAATA,GACzCrD,KAAK0E,aAEb,CACA,qBAAA5B,GACI/C,MAAM+C,wBACN9C,KAAKwB,OACT,CACA,oBAAA0B,GAGIlD,KAAK0B,OACL3B,MAAMmD,sBACV,CACA,iBAAMwB,GACG1C,EAAAA,MAAMe,OAAO/C,KAAKuE,aACbvE,KAAKuE,KAAK7C,OAGpB1B,KAAK2E,aACT,CACA,iBAAMC,GACE,YAAaC,cAIXC,qBAAmBC,SAASrF,EACtC,CACA,iBAAMiF,GACF,MAAMK,EAAYhF,KAAKiF,OAAS,GAChC,IAAKjF,KAAKyB,WAAaO,EAAAA,MAAMC,cAAcjC,KAAKkF,KAAM,OAC5ClF,KAAK4E,cACX,MAAMO,EAAc,IAAI9C,QAAQ+C,qBAChCD,EAAYE,QAAQrF,KAAKkF,IAAK,CAC1BI,mBAAoB,IAAMtF,KAAKuF,cAEnC,MAAMC,EAAIxF,KAAKuE,KAAOY,EAAYM,QAClCD,EAAEE,QAAQ,KACN,IAAK,IAAIpB,KAAQU,EACbV,EAAK5C,OAET1B,KAAKqB,WAAY,EACjBrB,KAAKuE,KAAO,aAEViB,EAAEhE,QACRxB,KAAKqB,WAAY,CACrB,CACJ,GAEJ3C,EAAW,CACPgF,EAAAA,MAAM,CAAEC,MAAM,EAAOC,UAAWC,EAAAA,mBAAmBC,UACpD1C,EAAqBmB,UAAW,cACnC7D,EAAW,CACPgF,EAAAA,MAAM,CAAEC,MAAM,EAAOC,UAAWC,EAAAA,mBAAmBC,UACpD1C,EAAqBmB,UAAW,sBACnC7D,EAAW,CACPgF,EAAAA,MAAM,CAAEE,UAAWC,EAAAA,mBAAmBE,WACvC3C,EAAqBmB,UAAW,oBACnCnB,EAAuB1C,EAAW,CAC9BuF,EAAAA,cAAc,CAAEC,QAASC,EAAAA,EAAI,gBAC9B/C,GCvOH,IAAI1C,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOM,OAAOC,yBAAyBT,EAAQC,GAAOC,EACrH,GAAuB,iBAAZQ,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASZ,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIU,EAAIb,EAAWO,OAAS,EAAGM,GAAK,EAAGA,KAAST,EAAIJ,EAAWa,MAAIL,GAAKH,EAAI,EAAID,EAAEI,GAAKH,EAAI,EAAID,EAAEH,EAAQC,EAAKM,GAAKJ,EAAEH,EAAQC,KAASM,GAChJ,OAAOH,EAAI,GAAKG,GAAKC,OAAOK,eAAeb,EAAQC,EAAKM,GAAIA,CAChE,EAGA,IAAIwG,EAAuC,MAAMA,6CAA6C/F,EAAAA,WAAWC,iBACrG,WAAAC,GACIC,SAASd,WACTe,KAAKC,gBAAmBY,IACpBb,KAAKG,cAAc,IAAIC,YAAY,UAAW,CAAEC,OAAQQ,EAAE+E,SAE9D5F,KAAKY,kBAAqBC,IACQ,cAA1BA,EAAER,OAAOS,eAA0D,IAA1BD,EAAER,OAAOU,cAClDf,KAAKgB,SAGjB,CACA,gBAAIE,GACA,OAAOlB,KAAKmB,qBAAqB0E,GAAqC7F,KAAKmB,UAAUE,YAAa,CACtG,CACA,eAAIC,GACA,OAAOtB,KAAKmB,qBAAqB0E,GAAqC7F,KAAKmB,UAAU2E,aAAe,IACxG,CACA,KAAAnE,CAAMC,EAAS5B,KAAK4B,QAChB,IAAK5B,KAAKkB,aACN,OAEJ,MAAMa,EAAO/B,KAAKsB,YACbU,EAAAA,MAAMC,cAAcL,IACrBG,EAAKoB,oBAAoBvB,EAAQ5B,KAAKC,gBAE9C,CACA,MAAAe,CAAOY,EAAS5B,KAAK4B,QACjB,IAAK5B,KAAKkB,aACN,OAEJ,MAAMa,EAAO/B,KAAKsB,YACbU,EAAAA,MAAMC,cAAcL,IACrBG,EAAKiB,iBAAiBpB,EAAQ5B,KAAKC,gBAE3C,CAEA,KAAAuB,GACSxB,KAAKyB,UACNzB,KAAKgB,QAEb,CAEA,IAAAU,GACI1B,KAAK2B,OACT,CACA,qBAAAmB,GACI/C,MAAM+C,wBACN,MAAM3B,EAAYnB,KAAKmB,UAClBa,EAAAA,MAAMe,OAAO5B,IACdA,EAAU6B,iBAAiBC,EAAAA,wBAAyBjD,KAAKY,mBAAmB,GAEhFZ,KAAKwB,OACT,CACA,oBAAA0B,GACI,MAAM/B,EAAYnB,KAAKmB,UAClBa,EAAAA,MAAMe,OAAO5B,IACdA,EAAUgC,oBAAoBF,EAAAA,wBAAyBjD,KAAKY,mBAAmB,GAEnFb,MAAMmD,sBACV,CACA,uBAAAE,CAAwBC,EAAMC,EAAKC,EAAKC,GAEpC,OADAzD,MAAMqD,wBAAwBC,EAAMC,EAAKC,EAAKC,GACtCH,GACJ,IAAK,SACIrB,EAAAA,MAAMC,cAAcqB,IACrBtD,KAAK2B,MAAM2B,GAEVtB,EAAAA,MAAMC,cAAcsB,IACrBvD,KAAKgB,OAAOuC,GAEhB,MACJ,IAAK,WACD,IAAKvB,EAAAA,MAAMC,cAAcjC,KAAK4B,QAAS,EACtB2B,EAAMvD,KAAK2B,MAAQ3B,KAAKgB,SAEzC,EAGZ,GAEJtC,EAAW,CACPgF,EAAAA,MAAM,CAAEC,MAAM,EAAOC,UAAWC,EAAAA,mBAAmBC,UACpD6B,EAAqCpD,UAAW,iBACnDoD,EAAuCjH,EAAW,CAC9CuF,EAAAA,cAAc,CAAEC,QAASC,EAAAA,EAAI,mBAC9BwB,GAEH,IAAIE,EAAoC,MAAMA,0CAA0CjG,EAAAA,WAAWwE,2BAC/F,WAAAtE,GACIC,SAASd,WACTe,KAAK+F,gBAAmBC,IACpBhG,KAAKqB,WAAY,EACjBrB,MAAKiG,EAAWC,UAAYlG,KAAKC,iBAErCD,KAAKU,cAAiBsF,IAClBhG,KAAKqB,WAAY,GAErBrB,KAAKC,gBAAmBY,IACpBb,KAAKG,cAAc,IAAIC,YAAY,UAAW,CAAEC,OAAQQ,EAAE+E,QAElE,CACA,QAAAvB,CAASC,GACL,OAAOA,aAAgBqB,CAC3B,CACA,qBAAA7C,GACI/C,MAAM+C,wBACN9C,KAAKgB,QACT,CACA,oBAAAkC,GACIlD,KAAK2B,QACL5B,MAAMmD,sBACV,CACA,uBAAAE,CAAwBC,EAAMC,EAAKC,EAAKC,GACpCzD,MAAMqD,wBAAwBC,EAAMC,EAAKC,EAAKC,GAE1CA,GAGS,QAATH,GAA2B,aAATA,GAClBrD,KAAKmG,UAEb,CACAF,GACA,QAAAE,GACInG,KAAK2B,QACL3B,KAAKgB,QACT,CACA,MAAAA,CAAOkE,EAAMlF,KAAKkF,KACd,IAAKlD,EAAAA,MAAMC,cAAciD,KAASlF,KAAKyB,SAAU,CAC7C,MAAMwE,EAAYjG,MAAKiG,EAAa,IAAIG,YAAYlB,GACpDe,EAAUI,OAASrG,KAAK+F,gBACxBE,EAAUK,QAAUtG,KAAKU,aAC7B,CACJ,CACA,eAAIoF,GACA,OAAO9F,MAAKiG,CAChB,CACA,KAAAtE,GACI,MAAMqD,EAAYhF,KAAKiF,OAAS,GAChC,IAAK,IAAIX,KAAQU,EACbV,EAAK5C,OAET,MAAMuE,EAAYjG,MAAKiG,EAClBjE,EAAAA,MAAMe,OAAOkD,KACdA,EAAUI,OAAS,KACnBJ,EAAUK,QAAU,KACpBL,EAAUC,UAAY,KACtBD,EAAUM,SAEdvG,KAAKqB,WAAY,EACjBrB,MAAKiG,EAAa,IACtB,GAEJvH,EAAW,CACPgF,EAAAA,MAAM,CAAEC,MAAM,EAAOC,UAAWC,EAAAA,mBAAmBC,UACpD+B,EAAkCtD,UAAW,cAChD7D,EAAW,CACPgF,EAAAA,MAAM,CAAEE,UAAWC,EAAAA,mBAAmBE,WACvC8B,EAAkCtD,UAAW,oBAChD7D,EAAW,CACP8H,EAAAA,UAAS,IACVX,EAAkCtD,UAAW,WAAY,MAC5DsD,EAAoCnH,EAAW,CAC3CuF,EAAAA,cAAc,CAAEC,QAASC,EAAAA,EAAI,gBAC9B0B,2TC3KHY,EAAAA,WAAWC,MAAMC"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pacem/pacem v1.0.0-babbage (https://js.pacem.it)
2
+ * @pacem/pacem v1.0.0-bernoulli (https://js.pacem.it)
3
3
  * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pacem/pacem v1.0.0-babbage (https://js.pacem.it)
2
+ * @pacem/pacem v1.0.0-bernoulli (https://js.pacem.it)
3
3
  * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
- !function(t){"use strict";class e{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(e.magSqr(t))}static normalize(t){const r=e.mag(t);if(r<=0)throw"Cannot normalize a vector of length 0.";const n=1/r;t.x*=n,t.y*=n}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)}}class r{constructor(t,e,r=-1){this.x=t,this.y=e,this.index=r}equals(t){return this.x===t.x&&this.y===t.y}}class n{constructor(t,e,r){this.v0=t,this.v1=e,this.v2=r,this.circumCirc=function(t,e,r){const n=t.x,s=t.y,o=e.x,i=e.y,a=r.x,m=r.y,c=2*(n*(i-m)+o*(m-s)+a*(s-i));if(Math.abs(c)<1e-12)return{c:{x:0,y:0},r:1/0};const l=((n*n+s*s)*(i-m)+(o*o+i*i)*(m-s)+(a*a+m*m)*(s-i))/c,f=((n*n+s*s)*(a-o)+(o*o+i*i)*(n-a)+(a*a+m*m)*(o-n))/c;return{c:{x:l,y:f},r:Math.hypot(l-n,f-s)}}(t,e,r)}inCircumcircle(t){const e=this.circumCirc.c.x-t.x,r=this.circumCirc.c.y-t.y;return Math.hypot(e,r)<=this.circumCirc.r+1e-9}}function s(t,e){const r=[];e=e.filter(e=>!e.inCircumcircle(t)||(r.push({v0:e.v0,v1:e.v1}),r.push({v0:e.v1,v1:e.v2}),r.push({v0:e.v2,v1:e.v0}),!1));const s=function(t){const e=[];for(let r=0;r<t.length;++r){let n=!0;for(let e=0;e<t.length;++e)if(r!==e){const s=t[r],o=t[e];if(s.v0.equals(o.v0)&&s.v1.equals(o.v1)||s.v0.equals(o.v1)&&s.v1.equals(o.v0)){n=!1;break}}n&&e.push(t[r])}return e}(r);for(const r of s)e.push(new n(r.v0,r.v1,t));return e}function o(t){if(t.length<3)return[];const e=function(t){let e=1/0,s=1/0,o=-1/0,i=-1/0;for(const r of t)e=Math.min(e,r.x),s=Math.min(s,r.y),o=Math.max(o,r.x),i=Math.max(i,r.y);const a=10*(o-e),m=10*(i-s),c=new r(e-a,s-3*m),l=new r(e-a,i+m),f=new r(o+3*a,i+m);return new n(c,l,f)}(t);let o=[e];for(const e of t)o=s(e,o);return o=o.filter(t=>!(t.v0===e.v0||t.v0===e.v1||t.v0===e.v2||t.v1===e.v0||t.v1===e.v1||t.v1===e.v2||t.v2===e.v0||t.v2===e.v1||t.v2===e.v2)),o}class i{static triangulate(t){return function(t){if(t.length<3)return[];const e=o(t.map((t,e)=>new r(t.x,t.y,e))),n=[];for(const t of e)n.push(t.v0.index,t.v1.index,t.v2.index);return n}(t)}}const a=180/Math.PI,m=2*Math.PI;function c(e){return t.Point.isPoint(e)}let l=class r{static slopeRad(t,e){return Math.atan2(e.y-t.y,e.x-t.x)}static slopeRad2(t,e){return(m+r.slopeRad(t,e))%m}static slopeDeg(t,e){return r.slopeRad(t,e)*a}static slopeDeg2(t,e){return(360+r.slopeDeg(t,e))%360}static intersect(e,n,...s){return Array.isArray(e)&&Array.isArray(n)?r._intersectSegments(e,n,!0):t.Rect.isRect(e)?r._intersectRects(...arguments):"vertices"in e?r._mergePolygons(e,n,"intersect")?.polygons??null:null}static boundingBox(t){let e=Number.MAX_VALUE,r=Number.MAX_VALUE,n=-Number.MAX_VALUE,s=-Number.MAX_VALUE;t.length;for(let o of t)e=Math.min(e,o.x),r=Math.min(r,o.y),n=Math.max(n,o.x),s=Math.max(s,o.y);return{x:e,y:r,width:n-e,height:s-r}}static combinePolygons(t,e,n){return r._mergePolygons(t,e,n)}static _mergePolygons(e,n,s){if(t.NullChecker.isNullOrEmpty(e?.vertices)||t.NullChecker.isNullOrEmpty(n?.vertices))return null;const o=e.vertices.filter(t=>r.inPolygon(t,n.vertices));if(e.vertices.length==o.length)return{polygons:"intersect"===s?[e]:[n]};const i=n.vertices.filter(t=>r.inPolygon(t,e.vertices));if(n.vertices.length===i.length)return{polygons:"intersect"===s?[n]:[e]};const a=r.boundingBox(e.vertices),m=r.boundingBox(n.vertices),c=r.intersect(a,m);if(!("union"===s||t.Rect.isRect(c)&&c.width>0&&c.height>0))return null;const{vertices:l}=e,{vertices:f}=n;if(l.length<3||f.length<3)return null;const u=(t,e,r)=>[t,r[(e+1)%r.length]],h=(t,e)=>t.x===e.x?t.y-e.y:t.x-e.x,y=l.map(u),x=f.map(u),g=l.concat(f),p=new Map,d=t=>{if(!p.has(t)){const e=[];p.set(t,e)}return p.get(t)};let M=!1;for(let e of y){const n=d(e);for(let s of x){const o=d(s),i=r.intersect(e,s);t.NullChecker.isNull(i)||(M=!0,g.push(i),n.push(i),o.push(i))}}if(0===o.length&&0===i.length&&!M)return"union"===s?{polygons:[e,n]}:null;const v=[];for(let e of y.concat(x)){const r=d(e);if(t.NullChecker.isNullOrEmpty(r))v.push(e);else{const t=e.concat(r).sort(h);for(let e=0;e<t.length-1;e++)v.push([t[e],t[e+1]])}}var b,w=!1;do{g.sort(h),g.filter((t,e,n)=>0===e||!r.areClose(t,n[e-1])),b=r.mesh(g);const{vertices:e,triangleIndices:n}=b;w=!1;for(let s=0;s<n.length;s+=3){const o=n[s],i=n[s+1],a=n[s+2],m=e[o],c=e[i],l=e[a],f=[[m,c],[c,l],[l,m]];for(let e of v)for(let n of f){const s=r.areClose(n[0],e[0])||r.areClose(n[1],e[1])||r.areClose(n[0],e[1])||r.areClose(n[1],e[0])?null:r.intersect(n,e);t.NullChecker.isNull(s)||-1!==g.findIndex(t=>r.areClose(t,s,4))||(w=!0,g.push(s))}}}while(w);const{vertices:z,triangleIndices:A}=b,N=[];for(let t=0;t<A.length;t+=3){const e=t+1,n=t+2,o=z[A[t]],i=z[A[e]],a=z[A[n]],m={x:(o.x+i.x+a.x)/3,y:(o.y+i.y+a.y)/3},c=r.inPolygon(m,l),u=r.inPolygon(m,f);(c&&u&&"intersect"===s||(c||u)&&"union"===s||(c&&!u||!c&&u)&&"difference"===s)&&N.push([o,i,a])}const C=N.flatMap(([t,e,r])=>[[t,e],[e,r],[r,t]]),_=[];for(let t=0;t<C.length;t++){const e=C[t];if(0==t){_.push(e);continue}const n=_.findIndex(t=>r.areClose(t[0],e[0])&&r.areClose(t[1],e[1])||r.areClose(t[0],e[1])&&r.areClose(t[1],e[0]));-1===n?_.push(e):_.splice(n,1)}if(_.length<3)return null;const q=[],X=t=>{const{length:e}=t,n=r.areClose(t[0],t[e-1]),s=t.slice(0,n?e-1:e);return s.length>3&&r.inSegment(s[0],[s[1],s[s.length-1]])&&s.shift(),s},[P,Y]=_.shift(),Z=[P,Y];for(;_.length>1;){const t=Z[Z.length-1],e=_.findIndex(e=>r.areClose(e[0],t)||r.areClose(e[1],t));if(-1===e){q.push({vertices:X(Z.splice(0))});const[t,e]=_.shift();Z.push(t,e)}else{const[n]=_.splice(e,1),s=r.areClose(n[0],t)?n[1]:r.areClose(n[1],t)?n[0]:null;Z.length>1&&r.inSegment(Z[Z.length-1],[Z[Z.length-2],s])?Z.splice(Z.length-1,1,s):Z.push(s)}}return q.push({vertices:X(Z)}),{polygons:q,mesh:b,triangles:N.map(t=>({vertices:t}))}}static mesh(t,...e){const r=[].concat(t).concat(e);return{vertices:r,triangleIndices:i.triangulate(r)}}static intersectLines(t,e,n,s){let o,i;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]&&(n=e[0],s=e[1],e=t[1],t=t[0]),"number"==typeof t&&"number"==typeof e){o=[{x:0,y:e},{x:1,y:t+e}],i=[{x:0,y:s},{x:1,y:n+s}]}else o=t,i=e;return r._intersectSegments(o,i,!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(c(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,n){const s=t[0],o=t[1],i=e[0],a=e[1],m=Math.min(s.x,o.x),c=Math.min(s.y,o.y),l=Math.max(s.x,o.x),f=l-m,u=Math.max(s.y,o.y),h=u-c,y=Math.min(i.x,a.x),x=Math.min(i.y,a.y),g=Math.max(i.x,a.x),p=g-y,d=Math.max(i.y,a.y),M=d-x;if(0===f&&0===p)return null;if(0===h&&0===M)return null;const v=t=>t.x<y||t.x>g||t.x<m||t.x>l,b=t=>t.y<x||t.y>d||t.y<c||t.y>u;var w=null;if(0===f){if(n&&(y>m||g<l))return null;const t=r.mq(i,a);w=r.cramer([1,0,-m],[t[0],-1,t[1]]),n&&b(w)&&(w=null)}else if(0===p){if(n&&(m>y||l<g))return null;const t=r.mq(s,o);w=r.cramer([t[0],-1,t[1]],[1,0,-y]),n&&b(w)&&(w=null)}else if(0===h){if(n&&(x>c||d<u))return null;const t=r.mq(i,a);w=r.cramer([0,1,-c],[t[0],-1,t[1]]),n&&v(w)&&(w=null)}else if(0===M){if(n&&(c>x||u<d))return null;const t=r.mq(s,o);w=r.cramer([t[0],-1,t[1]],[0,1,-x]),n&&v(w)&&(w=null)}else{let t;if(!n||(t=r._intersectRects({x:m,y:c,width:f,height:h},{x:y,y:x,width:p,height:M}))&&t.width>0&&t.height>0){const e=r.mq(s,o),m=r.mq(i,a),c=e[0],l=m[0],f=e[1],u=m[1];if(c!==l){let e=(w=r.cramer([c,-1,f],[l,-1,u])).x,s=w.y;n&&(e<t.x||e>t.x+t.width||s<t.y||s>t.y+t.height)&&(w=null)}}}return null===w?null:{x:w.x,y:w.y}}static _intersectRects(...e){return t.Rect.intersect(...e)}static _areClose(t,e,r=12){return Math.abs(t.x-e.x).isCloseTo(0,r)&&Math.abs(t.y-e.y).isCloseTo(0,r)}static areClose(t,e,n=12){return r._areClose(t,e,n)}static dot(t,r){return e.dot(t,r)}static cross(t,r){return e.cross(t,r)}static distance(e,r){if(null!=(n=e)&&Array.isArray(n)&&2===n.length&&c(n[0])&&c(n[1]))return t.Point.distance(e[0],e[1]);if(c(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 _pointSegmentDistance(t,n){const s=e.from(n[0],n[1]),o=e.from(n[0],t);return r.cross(s,o)}static isWithin(t,e,n,s=12){const o=r._pointSegmentDistance(t,e);return!o.isCloseTo(0,s)&&(n?o<0:o>0)}static isBeyond(t,e,n,s=12){return r.isWithin(t,e,!n,s)}static inLine(t,e,n=12){return r._pointSegmentDistance(t,e).isCloseTo(0,n)}static inSegment(t,e,n=12){const s=Math.min(e[0].x,e[1].x),o=Math.max(e[0].x,e[1].x),i=Math.min(e[0].y,e[1].y),a=Math.max(e[0].y,e[1].y);return t.x>=s&&t.x<=o&&t.y>=i&&t.y<=a&&r.inLine(t,e,n)}static inTriangle(e,n){let s;for(let o=0;o<3;o++){const i=n[o],a=n[(o+1)%3],m=t.Point.subtract(a,e),c=t.Point.subtract(i,e),l=r.cross(m,c);if(o>0&&l*s<=0)return!1;s=l}return!0}static inPolygon(t,e,n=12){if(!(e?.length>=3))throw"Not enough vertices";const s=e.length;if(3===s)return r.inTriangle(t,[e[0],e[1],e[2]]);n>0&&(e=e.map(t=>({x:t.x.roundoff(n),y:t.y.roundoff(n)})),t={x:t.x.roundoff(n),y:t.y.roundoff(n)});let o=Number.MAX_VALUE,i=Number.MAX_VALUE,a=Number.MIN_VALUE,m=Number.MIN_VALUE;for(let t=0;t<s;t++){const r=e[t];o=Math.min(o,r.x),i=Math.min(i,r.y),a=Math.max(a,r.x),m=Math.max(m,r.y)}if(t.x<o||t.x>a||t.y<i||t.y>m)return!1;const c=[{x:o-1,y:t.y},t];let l=0;for(let n=0;n<s;n++){const o=e[n],i=e[(n+1)%s],a=[o,i];if(o.y===t.y){const r=e[(n-1+s)%s];t.x>o.x&&(r.y-t.y)*(i.y-t.y)<0&&l++}else{if(i.y===t.y)continue;null!=r.intersect(a,c)&&l++}}return l%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:o}=r[t],i=t===s-1?0:t+1,{x:a,y:m}=r[i];n+=e*m-o*a}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 o=(t,e,r)=>(e.x-t.x)*(r.y-t.y)-(e.y-t.y)*(r.x-t.x),i=[];for(const t of s){for(;i.length>=2&&o(i[i.length-2],i[i.length-1],t)<=0;)i.pop();i.push(t)}const a=[];for(let t=s.length-1;t>=0;t--){const e=s[t];for(;a.length>=2&&o(a[a.length-2],a[a.length-1],e)<=0;)a.pop();a.push(e)}return i.pop(),a.pop(),i.concat(a)}};class f{static{this._eps=1e-12}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,e){return l.inPolygon(e,t.vertices,12)}static centroid(t){const e=f.boundingBox(t);return{x:e.x+e.width/2,y:e.y+e.height/2}}static boundingBox(t){return l.boundingBox(t.vertices)}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 o=r[(e-1+n)%n],i=r[e],a=r[(e+1)%n],m=t.Angle.angleBetween(i,o,a);if(0!==s){if(s!=Math.sign(m))return!1}else s=Math.sign(m)}return!0}static isSelfIntersecting(e){const{vertices:r}=e;if(r.length<=3)return!1;const n=f.sides(e);for(let e of n)for(let r of n){if(r===e||r[0]===e[1]||e[0]===r[1])continue;const n=l.intersect(r,e);if(!t.NullChecker.isNull(n))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,o=s.length,i=[];for(let r=0;r<s.length;r++){const a=s[(r-1+o)%o],m=s[r],c=s[(r+1)%o],l=t.Angle.angleBetween(m,a,c),f=-n/Math.sin(Math.abs(l)/2),u=t.Matrix2D.scale(t.Matrix2D.identity,f),h=t.Point.subtract(m,a);e.normalize(h);const y=t.Point.subtract(m,c);e.normalize(y);const x=t.Point.add(h,y);e.normalize(x);const g=t.Matrix2D.multiply(x,u);i.push(t.Point.add(m,{x:g.x.roundoff(),y:g.y.roundoff()}))}return{vertices:i}}static area(t){return l.area(t.vertices)}static intersect(t,e){return l.intersect(t,e)}static convexHull(t){return{vertices:l.convexHull(t.vertices)}}}const u=180/Math.PI,h=1/u;class y{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 y.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(y.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=y.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 r;const n=y.unit(t),s=y.unit(e);if(y.dot(n,s)<0){const t={x:-n.x-s.x,y:-n.y-s.y,z:-n.z-s.z},e=y.mag(t);r=Math.PI-2*Math.asin(e/2)}else{const t={x:n.x-s.x,y:n.y-s.y,z:n.z-s.z},e=y.mag(t);r=2*Math.asin(e/2)}return u*r}}class x{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,r){"number"==typeof t&&(t=y.from(t,e,r));const n=y.mag(t);if(n.isCloseTo(0))return x.from(0,0,0);const s=Math.atan2(t.x,t.z),o=Math.acos((t.y/n).clamp(-1,1));return x.from(n,s*u,o*u)}static toVector(t){const{rho:e,theta:r,phi:n}=t,s=n*h,o=r*h,i=Math.sin(s)*e;return{x:i*Math.sin(o),y:Math.cos(s)*e,z:i*Math.cos(o)}}static toRotationMatrix(t){const{theta:e,phi:r}=t,n=h*e,s=Math.sin(n),o=Math.cos(n),i=h*r,a=Math.sin(i),m=Math.cos(i);return p.from(s*m,s*a,o,0,o*m,o*a,-s,0,-a,m,0,0,0,0,0,1)}}class g{static modify(t,e){const{m11:r,m12:n,m13:s,m14:o,m21:i,m22:a,m23:m,m24:c,m31:l,m32:f,m33:u,m34:h,offsetX:y,offsetY:x,offsetZ:g,m44:p}=t,d={m11:r,m12:n,m13:s,m14:o,m21:i,m22:a,m23:m,m24:c,m31:l,m32:f,m33:u,m34:h,offsetX:y,offsetY:x,offsetZ:g,m44:p};return e(d),d}static clone(t){return g.modify(t,t=>{})}static multiply(t,e){return p.isIdentity(t)?e:p.isIdentity(e)?t:p.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 p{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 p.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?g.modify(t,e):g.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),g.modify(t,t=>{t.m11*=e,t.m22*=r,t.m33*=n})}static translate(t,e){return g.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 p.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(p.isIdentity(t))return 1;if(p.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,o=t.m23*t.m44-t.offsetZ*t.m24,i=t.m33*t.m44-t.offsetZ*t.m34,a=t.m22*r-t.m32*e-t.m12*s,m=t.m12*o-t.m22*n+t.offsetY*e,c=t.m32*n-t.offsetY*r-t.m12*i,l=t.m22*i-t.m32*o+t.offsetY*s;return t.offsetX*a+t.m31*m+t.m21*c+t.m11*l}}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=g.multiply(r,e[t]);return r}static invert(t){if(p.isAffine(t)){const e=p.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,o=t.m21*t.m13-t.m11*t.m23,i=t.m11*t.m33-t.m31*t.m13,a=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,l=t.m11*t.offsetY-t.offsetX*t.m12,f=t.m21*t.m32-t.m31*t.m22,u=t.m21*t.offsetY-t.offsetX*t.m22,h=t.m31*t.offsetY-t.offsetX*t.m32,y=t.m23*l-t.offsetZ*m-t.m13*u,x=t.m13*h-t.m33*l+t.offsetZ*c,g=t.m33*u-t.offsetZ*f-t.m23*h,d=m,M=-c,v=f,b=1/e;return p.from(s*b,n*b,r*b,0,a*b,i*b,o*b,0,v*b,M*b,d*b,0,g*b,x*b,y*b,1)}{const e=p.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,o=t.m32*t.offsetZ-t.m33*t.offsetY,i=t.m31*t.offsetZ-t.m33*t.offsetX,a=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,l=t.m31*t.m44-t.m34*t.offsetX,f=t.m32*t.offsetZ-t.m33*t.offsetY,u=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,d=t.m22*t.offsetZ-t.m23*t.offsetY,M=t.m21*t.offsetZ-t.m23*t.offsetX,v=t.m21*t.offsetY-t.m22*t.offsetX,b=t.m23*t.m34-t.m24*t.m33,w=t.m22*t.m34-t.m24*t.m32,z=t.m21*t.m34-t.m24*t.m31,A=t.m22*t.m33-t.m23*t.m32,N=t.m21*t.m33-t.m23*t.m31,C=t.m21*t.m32-t.m22*t.m31,_=t.m22*r-t.m23*n+t.m24*o,q=-(t.m21*r-t.m23*s+t.m24*i),X=t.m21*n-t.m22*s+t.m24*a,P=-(t.m21*o-t.m22*i+t.m23*a),Y=-(t.m12*m-t.m13*c+t.m14*f),Z=t.m11*m-t.m13*l+t.m14*u,E=-(t.m11*c-t.m12*l+t.m14*h),S=t.m11*f-t.m12*u+t.m13*h,I=t.m12*y-t.m13*x+t.m14*d,R=-(t.m11*y-t.m13*g+t.m14*M),T=t.m11*x-t.m12*g+t.m14*v,j=-(t.m11*d-t.m12*M+t.m13*v),D=-(t.m12*b-t.m13*w+t.m14*A),B=t.m11*b-t.m13*z+t.m14*N,L=-(t.m11*w-t.m12*z+t.m14*C),O=t.m11*A-t.m12*N+t.m13*C,V=1/e;return p.from(_*V,Y*V,I*V,D*V,q*V,Z*V,R*V,B*V,X*V,E*V,T*V,L*V,P*V,S*V,j*V,O*V)}}static transform(t,e){var r={x:t.x,y:t.y,z:t.z};if(!p.isIdentity(e)){var n=r.x,s=r.y,o=r.z;if(r.x=n*e.m11+s*e.m21+o*e.m31+e.offsetX,r.y=n*e.m12+s*e.m22+o*e.m32+e.offsetY,r.z=n*e.m13+s*e.m23+o*e.m33+e.offsetZ,!p.isAffine(e)){var i=n*e.m14+s*e.m24+o*e.m34+e.m44;0!=i&&(r.x/=i,r.y/=i,r.z/=i)}}return r}}class d{static identity(){return d.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 d.from.apply(null,r);throw new Error(`Cannot parse "${e}" as a valid Quaternion.`)}static fromVectors(t,e){y.normalize(t),y.normalize(e);const r=(t,e,r,n)=>{const s=d.from(t,e,r,n);return d.normalize(s),s};let n=y.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=d.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=d.from(t.x,t.y,t.z,t.w);return d.normalize(e),e}static fromAxisAngle(t,e){var r=h*(e%=360),n=y.mag(t);if(0==n)throw new RangeError("Invalid argument");var s=Math.sin(.5*r)/n,o=t.x*s,i=t.y*s,a=t.z*s;return d.from(o,i,a,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,o=(t.m31-t.m13)*r,i=(t.m12-t.m21)*r;return d.from(s,o,i,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,o=(t.m31+t.m13)*e;return d.from(n,s,o,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,o=(t.m31-t.m13)*e;return d.from(s,n,r,o)}{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,o=(t.m31-t.m13)*e;return d.from(o,r,n,s)}}static conjugate(t){return d.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?y.j():y.unit(t)}static transform(t,e){d.normalize(e);const r=y.cross(e,t),n=y.scale(r,2),s=y.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,o=t.y/n,i=t.z/n;e=Math.sqrt(s*s+o*o+i*i),r/=n}return 114.59155902616465*Math.atan2(e,r)}static toRotationMatrix(t){var e=p.identity(),r=t.x,n=t.y,s=t.z,o=t.w;return e.m11=1-2*n*n-2*s*s,e.m12=2*r*n+2*o*s,e.m13=2*r*s-2*o*n,e.m21=2*r*n-2*o*s,e.m22=1-2*r*r-2*s*s,e.m23=2*n*s+2*o*r,e.m31=2*o*n+2*r*s,e.m32=2*n*s-2*o*r,e.m33=1-2*r*r-2*n*n,e}static invert(t){const e=d.unit(t);return d.conjugate(e)}static multiply(t,e){return d.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 d.multiply(t,d.conjugate(e)).w}}var M,v=Object.freeze({__proto__:null,Matrix3D:p,Quaternion:d,Spherical:x,Vector:e,Vector3D:y}),b=Object.freeze({__proto__:null,LinearAlgebra:v,Polygon:f,Utils:l,Utils3D:class{static intersect(t,e){const[r,n]=t,s=y.subtract(r,n),[o,i,a]=e,m=y.subtract(o,i),c=y.subtract(o,a),l=y.cross(s,c),f=y.dot(m,l);if(f.isCloseTo(0))return null;const u=1/f,h=y.subtract(r,o),x=u*y.dot(h,l);if(x<0||x>1)return null;const g=y.cross(h,m),p=u*y.dot(s,g);if(p<0||x+p>1)return null;const d=u*y.dot(c,g);return d<0||d.isCloseTo(0)?null:y.add(r,y.scale(s,d))}}});function w(t){return"number"==typeof t&&(t={real:t,img:0}),t}function z(t,e){const r={};return Object.defineProperty(r,"real",{value:t,writable:!1}),Object.defineProperty(r,"img",{value:e,writable:!1}),r}function A(){return M||(M=z(Number.NaN,Number.NaN))}class N{static build(t,e){return this.isComplex(t)?t:(e??=0,"number"!=typeof t||"number"!=typeof e?A():z(t,e||0))}static add(t,e){const r=w(t),n=w(e);return z(r.real+n.real,r.img+n.img)}static subtract(t,e){const r=w(t),n=w(e);return z(r.real-n.real,r.img-n.img)}static multiply(t,e){const r=w(t),n=w(e);return z(r.real*n.real-r.img*n.img,r.real*n.img+r.img*n.real)}static divide(t,e){const r=w(t),n=w(e),s=this.absSquare(n).roundoff();if(0===s)return A();const o=1/s;return z(o*(r.real*n.real+r.img*n.img),o*(r.img*n.real-r.real*n.img))}static absSquare(t){const e=w(t);return Math.pow(e.real,2)+Math.pow(e.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 z((t=w(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 A()}}const C={};function _(t,e){const r=C[e]=C[e]||{};return r[t]=r[t]||function(t,e){const r=2*Math.PI*t/e;return N.build(Math.cos(r),Math.sin(r))}(t,e)}function q(t){const e=[],r=t.length;if(1===r)return[N.build(t[0])];const n=q(t.filter((t,e)=>e%2==0)),s=q(t.filter((t,e)=>e%2==1));for(var o=0;o<r/2;o++){const t=n[o],i=N.multiply(_(o,r),s[o]);e[o]=N.add(t,i),e[o+r/2]=N.subtract(t,i)}return e}const X=Math.sqrt(Math.PI);class P{constructor(t,e){this.mean=t,this.stdev=Math.abs(e),this.variance=Math.pow(e,2)}static get normal(){return Y}weight(t){return Math.exp(-.5*Math.pow(this._z(t),2))}probabilityDensity(t){const e=this.stdev*Math.SQRT2*X;return this.weight(t)/e}_z(t){return(t-this.mean)/this.stdev}probability(t){return.5*function(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}(-this._z(t)/Math.SQRT2)}}const Y=new P(0,1);class Z{constructor(t){this.#t=t}#t;#e=null;_prepareBarycentric(){if(this.#e)return;const t=this.#t||[],e=t.length;if(0===e)return void(this.#e=[]);const r=new Array(e),n=new Array(e);for(let s=0;s<e;s++){let o=0,i=1;const a=t[s].x;for(let r=0;r<e;r++){if(r===s)continue;const e=a-t[r].x;if(0===e)throw new Error("Invalid function provided.");e<0&&(i=-i),o+=Math.log(Math.abs(e))}r[s]=-o,n[s]=i}let s=r[0];for(let t=1;t<e;t++)r[t]>s&&(s=r[t]);const o=new Array(e);for(let t=0;t<e;t++){const e=Math.exp(r[t]-s);o[t]=n[t]*e}this.#e=o}_computeBarycentric(t){const e=this.#t||[];this.#e||this._prepareBarycentric();const r=this.#e||[];let n=0,s=0;for(let o=0;o<e.length;o++){const i=e[o].x;if(t===i)return e[o].y;const a=r[o]/(t-i);n+=a*e[o].y,s+=a}return n/s}interpolate(t){return this._computeBarycentric(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);return new Z(e)}}const E={create:Z.create};class S{constructor(t){if(!t||t.length<2)throw new Error("Need at least 2 points");const e=t.slice().sort((t,e)=>t.x-e.x);this.xs=e.map(t=>t.x),this.ys=e.map(t=>t.y),this.ms=this.computeDerivatives()}computeDerivatives(){const t=this.xs.length,e=new Array(t-1),r=new Array(t-1);for(let n=0;n<t-1;n++)e[n]=this.xs[n+1]-this.xs[n],r[n]=(this.ys[n+1]-this.ys[n])/e[n];const n=new Array(t).fill(0);n[0]=r[0],n[t-1]=r[t-2];for(let s=1;s<t-1;s++){const t=r[s-1],o=r[s];if(0===t||0===o||t*o<=0)n[s]=0;else{const r=2*e[s]+e[s-1],i=e[s]+2*e[s-1];n[s]=(r+i)/(r/t+i/o)}}for(let e=0;e<t-1;e++)if(0===r[e])n[e]=0,n[e+1]=0;else{const t=n[e]/r[e],s=n[e+1]/r[e],o=t*t+s*s;if(o>9){const i=3/Math.sqrt(o);n[e]=i*t*r[e],n[e+1]=i*s*r[e]}}return n}interpolate(t){const e=this.xs,r=this.ys,n=this.ms,s=e.length;if(t<=e[0]){const s=n[0];return r[0]+s*(t-e[0])}if(t>=e[s-1]){const o=n[s-1];return r[s-1]+o*(t-e[s-1])}let o=0,i=s-1;for(;i-o>1;){const r=o+i>>1;e[r]<=t?o=r:i=r}const a=e[o+1]-e[o],m=(t-e[o])/a,c=m*m,l=c*m,f=l-2*c+m,u=-2*l+3*c,h=l-c;return(2*l-3*c+1)*r[o]+f*(n[o]*a)+u*r[o+1]+h*(n[o+1]*a)}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);return new S(e)}}class I{constructor(t){if(!t||0===t.length)throw new Error("Need at least 1 point");const e=t.slice().sort((t,e)=>t.x-e.x);this.xs=e.map(t=>t.x);const r=e.length,n=e.map(t=>t.y);for(let t=1;t<r;t++)for(let e=r-1;e>=t;e--){const r=this.xs[e]-this.xs[e-t];if(0===r)throw new Error("Invalid function provided.");n[e]=(n[e]-n[e-1])/r}this.coeffs=n}interpolate(t){const e=this.xs,r=this.coeffs,n=r.length;if(0===n)return NaN;let s=r[n-1];for(let o=n-2;o>=0;o--)s=s*(t-e[o])+r[o];return s}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);return new I(e)}}const R=(t,e)=>t;function T(t,e=R){return t.reduce((t,r,n)=>t+e(r,n),0)}function j(t,e=R){return T(t,e)/t.length}function D(t,e=R,r=!1){const n=j(t,e);return t.reduce((t,e)=>Math.pow(e-n,2)+t,0)/(t.length-(r?1:0))}function B(t,e=R,r=!1){const n=D(t,e,r);return Math.sqrt(n)}function L(t,e){return(r,n,s,o)=>{let i=r,a=n,m=t(i,a),c=e(i,a),l=s(m),f=s(c);for(;a-i>o;)l<f?(a=c,c=m,f=l,m=t(i,a),l=s(m)):(i=m,m=c,l=f,c=e(i,a),f=s(c));return.5*(m+c)}}const O={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)=>L((e,r)=>e+(r-e)/t,(e,r)=>r-(r-e)/t)(e,r,n,s)}(t),goldenRatio:(t,e,r,n=.001)=>L((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,o=null;const i=(t,e)=>(o??=e-t,s??=o/Math.sqrt(12),s*(e-t)/o);return L((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)}};var V=Object.freeze({__proto__:null,Fourier:class{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(t,e=!0){const r=(t||[])?.length,n=e?1/Math.sqrt(r):1,s=[];for(let e=0;e<r;e++){s.push({real:0,img:0});for(let o=0;o<r;o++){const i=_(e*o,r),a=N.multiply(t[o],i),m=N.multiply(a,n);s[e]=N.add(s[e],m)}}return s}static idft(t,e=!0){const r=t.map(t=>N.build(t.img,t.real));return this.transform(r,e).map(t=>N.build(t.img,t.real))}static fft(t,e=!0){const r=q(t);if(!e)return r;const n=1/Math.sqrt(t.length);return r.map(t=>N.multiply(t,n))}},Gaussian:P,Lagrange:Z,Lagrangian:E,Newton:I,Pchip:S,SearchFunctions:O,Utils:class{static sum(t,e){return T(t,e)}static mean(t,e){return j(t,e)}static median(t,e){return function(t,e=R){const r=t.slice(0),n=r.length;r.sort((t,r)=>e(t)-e(r));const s=Math.ceil(r.length/2)-1;return n%2==1?r[s]:.5*(r[s+1]+r[s])}(t,e)}static mode(t,e){return function(t,e=R){const r=Object.groupBy(t,e);let n,s=0;for(let t in r){const e=r[t].length;e>s&&(n=parseInt(t),s=e)}return n}(t,e)}static var(t,e){return D(t,e,!0)}static varp(t,e){return D(t,e,!1)}static stdevp(t,e){return B(t,e,!1)}static stdev(t,e){return B(t,e,!0)}static correlation(t,e,r,n){return function(t,e,r=R,n=R){const s=Array.isArray(e);if(s&&e.length!==t.length)throw new Error("Sets must be of the same length.");const o=t.length,i=t,a=s?e:t,m=s?r:e,c=s?n:r,l=j(i,m),f=j(a,c);let u=0,h=0,y=0;for(let t=0;t<o;t++){const e=i[t],r=a[t],n=m(e,t)-l,s=c(r,t)-f;u+=n*s,h+=n*n,y+=s*s}return u/Math.sqrt(h*y)}(t,e,r,n)}static linearRegression(t,e,r,n){return function(t,e,r=R,n=R){const s=Array.isArray(e);if(s&&e.length!==t.length)throw new Error("Sets must be of the same length.");const o=t,i=s?e:t,a=s?r:e,m=a??(t=>t.x),c=(s?n:a)??(t=>t.y),l=t.length;let f=0,u=0,h=0,y=0;for(let t=0;t<l;t++){const e=o[t],r=i[t],n=m(e,t),s=c(r,t);f+=n*s,u+=n,h+=s,y+=n*n}const x=(l*f-u*h)/(l*y-Math.pow(u,2));return[x,(h-x*u)/l]}(t,e,r,n)}static gaussian(t,e){return new P(t,e)}}});const U="0123456789abcdefghijklmnopqrstuvwxyz",k="Radix out of range: possible values go between positive 1 exclusive and 36 inclusive";class F{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:F.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=F.rebaseFloat10ToN,o=F.rebaseFloatNTo10;if(10===e){const e=parseFloat(t.toString());return r%1==0?F.rebaseFloat10ToNIntBase(e,r,n):s(e,r,n)}if(10===r)return o(t.toString(),e,n);return s(o(t.toString(),e,n+1),r,n)}static rebaseFloatNTo10(t,e,r=12){const n=U;if(e<=1||e>n.length)throw new Error(k);const s=(t??"0").toString().toLowerCase(),o=Number.NaN;if("0"===s)return 0;const i=/^([-+]?) *([\da-z]+)?(.[\da-z]+)?$/.exec(s);if(i.length<2)return o;const a="-"===i[1]?-1:1,m=i[2]||"0",c=i[3]||".0";let l=0,f=0;for(let t of m+c.substr(1)){const r=n.indexOf(t);if(-1===r||r>=e)return o;l+=r*Math.pow(e,m.length-f-1),f++}return a*l}static rebaseFloat10ToNIntBase(t,e,r=12){const n=U;if(e<=1||e>36)throw new Error(k);const s=e;let o=Math.abs(t??0);if(0===o||Number.isNaN(o))return t.toString();let i=(o%1).roundoff(),a="";for(;;){let t=o/s,e=Math.floor(t),r=(o-e*s).roundoff(),i=Math.floor(r);if(a=i>=36?`[${i}]`+a:n[i]+a,e<=0)break;o=e}if(a=a.replace(/^0+/,""),a||="0",0===i)return a;let m="";do{o=(i*s).roundoff();const t=Math.floor(o),e=(o-t).roundoff();t>=36?m=`[${t}]`:m+=n[t],i=e}while(!i.isCloseTo(0)&&m.length<r);return/^0*$/.test(m)?a:(Math.sign(t)<0?"-":"")+a+"."+m.replace(/0+$/,"")}static rebaseFloat10ToN(e,r,n=12){const s=U;if(r<=1||r>s.length)throw new Error(k);const o=r;let i=Math.abs(e??0);if(0===i||Number.isNaN(i))return e.toString();let a=Math.sign(e)<0?"-":"",m=[],c=[];for(let t=0;t<20;t++)m.push("0"),c.push("0");const l=o%1==0?o:Math.ceil(o);function f(t,e,r){const n=t?m:c,o=n[e]=n[e]||"0",i=s.indexOf(o)+r,a=i%l,u=Math.floor(i/l);return n[e]=s[a],u>0&&(t?f(t,e+1,u):0===e?f(!0,0,u):f(!1,e-1,u)),u}let u=0;for(;;){const e=Math.floor(t.Numbers.log(i,o)),r=e>=0;if(f(r,r?e:Math.abs(1+e),1),i=(i-Math.pow(o,e).roundoff()).roundoff(),r||u++,0===i||u>=100){const t=a+(m.reverse().map(t=>t||"0").join("").replace(/^0+/,"")||"0"),e=c.map(t=>t||"0").join("").substr(0,n).replace(/0+$/,"");return/^0*$/.test(e)?t:t+"."+e}}}}var $=Object.freeze({__proto__:null,Utils:F}),Q=Object.freeze({__proto__:null,Complex:N,DataAnalysis:V,NumberTheory:$}),H=Object.freeze({__proto__:null,Geometry:b,Mathematics:Q});t.DeepMerger.merge(H)}(Pacem);
6
+ !function(t){"use strict";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)}}class Vertex{constructor(t,e,r=-1){this.x=t,this.y=e,this.index=r}equals(t){return this.x===t.x&&this.y===t.y}}class Triangle{constructor(t,e,r){this.v0=t,this.v1=e,this.v2=r,this.circumCirc=function(t,e,r){const n=t.x,s=t.y,o=e.x,i=e.y,a=r.x,m=r.y,c=2*(n*(i-m)+o*(m-s)+a*(s-i));if(Math.abs(c)<1e-12)return{c:{x:0,y:0},r:1/0};const l=((n*n+s*s)*(i-m)+(o*o+i*i)*(m-s)+(a*a+m*m)*(s-i))/c,u=((n*n+s*s)*(a-o)+(o*o+i*i)*(n-a)+(a*a+m*m)*(o-n))/c;return{c:{x:l,y:u},r:Math.hypot(l-n,u-s)}}(t,e,r)}inCircumcircle(t){const e=this.circumCirc.c.x-t.x,r=this.circumCirc.c.y-t.y;return Math.hypot(e,r)<=this.circumCirc.r+1e-9}}function e(t,e){const r=[];e=e.filter(e=>!e.inCircumcircle(t)||(r.push({v0:e.v0,v1:e.v1}),r.push({v0:e.v1,v1:e.v2}),r.push({v0:e.v2,v1:e.v0}),!1));const n=function(t){const e=[];for(let r=0;r<t.length;++r){let n=!0;for(let e=0;e<t.length;++e)if(r!==e){const s=t[r],o=t[e];if(s.v0.equals(o.v0)&&s.v1.equals(o.v1)||s.v0.equals(o.v1)&&s.v1.equals(o.v0)){n=!1;break}}n&&e.push(t[r])}return e}(r);for(const r of n)e.push(new Triangle(r.v0,r.v1,t));return e}function r(t){if(t.length<3)return[];const r=function(t){let e=1/0,r=1/0,n=-1/0,s=-1/0;for(const o of t)e=Math.min(e,o.x),r=Math.min(r,o.y),n=Math.max(n,o.x),s=Math.max(s,o.y);const o=10*(n-e),i=10*(s-r),a=new Vertex(e-o,r-3*i),m=new Vertex(e-o,s+i),c=new Vertex(n+3*o,s+i);return new Triangle(a,m,c)}(t);let n=[r];for(const r of t)n=e(r,n);return n=n.filter(t=>!(t.v0===r.v0||t.v0===r.v1||t.v0===r.v2||t.v1===r.v0||t.v1===r.v1||t.v1===r.v2||t.v2===r.v0||t.v2===r.v1||t.v2===r.v2)),n}class Delaunay{static triangulate(t){return function(t){if(t.length<3)return[];const e=r(t.map((t,e)=>new Vertex(t.x,t.y,e))),n=[];for(const t of e)n.push(t.v0.index,t.v1.index,t.v2.index);return n}(t)}}const n=180/Math.PI,s=2*Math.PI;function o(e){return t.Point.isPoint(e)}let i=class Utils{static slopeRad(t,e){return Math.atan2(e.y-t.y,e.x-t.x)}static slopeRad2(t,e){return(s+Utils.slopeRad(t,e))%s}static slopeDeg(t,e){return Utils.slopeRad(t,e)*n}static slopeDeg2(t,e){return(360+Utils.slopeDeg(t,e))%360}static intersect(e,r,...n){return Array.isArray(e)&&Array.isArray(r)?Utils._intersectSegments(e,r,!0):t.Rect.isRect(e)?Utils._intersectRects(...arguments):"vertices"in e?Utils._mergePolygons(e,r,"intersect")?.polygons??null:null}static boundingBox(t){let e=Number.MAX_VALUE,r=Number.MAX_VALUE,n=-Number.MAX_VALUE,s=-Number.MAX_VALUE;t.length;for(let o of t)e=Math.min(e,o.x),r=Math.min(r,o.y),n=Math.max(n,o.x),s=Math.max(s,o.y);return{x:e,y:r,width:n-e,height:s-r}}static combinePolygons(t,e,r){return Utils._mergePolygons(t,e,r)}static _mergePolygons(e,r,n){if(t.NullChecker.isNullOrEmpty(e?.vertices)||t.NullChecker.isNullOrEmpty(r?.vertices))return null;const s=e.vertices.filter(t=>Utils.inPolygon(t,r.vertices));if(e.vertices.length==s.length)return{polygons:"intersect"===n?[e]:[r]};const o=r.vertices.filter(t=>Utils.inPolygon(t,e.vertices));if(r.vertices.length===o.length)return{polygons:"intersect"===n?[r]:[e]};const i=Utils.boundingBox(e.vertices),a=Utils.boundingBox(r.vertices),m=Utils.intersect(i,a);if(!("union"===n||t.Rect.isRect(m)&&m.width>0&&m.height>0))return null;const{vertices:c}=e,{vertices:l}=r;if(c.length<3||l.length<3)return null;const u=(t,e,r)=>[t,r[(e+1)%r.length]],f=(t,e)=>t.x===e.x?t.y-e.y:t.x-e.x,h=c.map(u),y=l.map(u),x=c.concat(l),g=new Map,p=t=>{if(!g.has(t)){const e=[];g.set(t,e)}return g.get(t)};let M=!1;for(let e of h){const r=p(e);for(let n of y){const s=p(n),o=Utils.intersect(e,n);t.NullChecker.isNull(o)||(M=!0,x.push(o),r.push(o),s.push(o))}}if(0===s.length&&0===o.length&&!M)return"union"===n?{polygons:[e,r]}:null;const d=[];for(let e of h.concat(y)){const r=p(e);if(t.NullChecker.isNullOrEmpty(r))d.push(e);else{const t=e.concat(r).sort(f);for(let e=0;e<t.length-1;e++)d.push([t[e],t[e+1]])}}var v,b=!1;do{x.sort(f),x.filter((t,e,r)=>0===e||!Utils.areClose(t,r[e-1])),v=Utils.mesh(x);const{vertices:e,triangleIndices:r}=v;b=!1;for(let n=0;n<r.length;n+=3){const s=r[n],o=r[n+1],i=r[n+2],a=e[s],m=e[o],c=e[i],l=[[a,m],[m,c],[c,a]];for(let e of d)for(let r of l){const n=Utils.areClose(r[0],e[0])||Utils.areClose(r[1],e[1])||Utils.areClose(r[0],e[1])||Utils.areClose(r[1],e[0])?null:Utils.intersect(r,e);t.NullChecker.isNull(n)||-1!==x.findIndex(t=>Utils.areClose(t,n,4))||(b=!0,x.push(n))}}}while(b);const{vertices:w,triangleIndices:z}=v,U=[];for(let t=0;t<z.length;t+=3){const e=t+1,r=t+2,s=w[z[t]],o=w[z[e]],i=w[z[r]],a={x:(s.x+o.x+i.x)/3,y:(s.y+o.y+i.y)/3},m=Utils.inPolygon(a,c),u=Utils.inPolygon(a,l);(m&&u&&"intersect"===n||(m||u)&&"union"===n||(m&&!u||!m&&u)&&"difference"===n)&&U.push([s,o,i])}const D=U.flatMap(([t,e,r])=>[[t,e],[e,r],[r,t]]),C=[];for(let t=0;t<D.length;t++){const e=D[t];if(0==t){C.push(e);continue}const r=C.findIndex(t=>Utils.areClose(t[0],e[0])&&Utils.areClose(t[1],e[1])||Utils.areClose(t[0],e[1])&&Utils.areClose(t[1],e[0]));-1===r?C.push(e):C.splice(r,1)}if(C.length<3)return null;const A=[],N=t=>{const{length:e}=t,r=Utils.areClose(t[0],t[e-1]),n=t.slice(0,r?e-1:e);return n.length>3&&Utils.inSegment(n[0],[n[1],n[n.length-1]])&&n.shift(),n},[V,_]=C.shift(),P=[V,_];for(;C.length>1;){const t=P[P.length-1],e=C.findIndex(e=>Utils.areClose(e[0],t)||Utils.areClose(e[1],t));if(-1===e){A.push({vertices:N(P.splice(0))});const[t,e]=C.shift();P.push(t,e)}else{const[r]=C.splice(e,1),n=Utils.areClose(r[0],t)?r[1]:Utils.areClose(r[1],t)?r[0]:null;P.length>1&&Utils.inSegment(P[P.length-1],[P[P.length-2],n])?P.splice(P.length-1,1,n):P.push(n)}}return A.push({vertices:N(P)}),{polygons:A,mesh:v,triangles:U.map(t=>({vertices:t}))}}static mesh(t,...e){const r=[].concat(t).concat(e);return{vertices:r,triangleIndices:Delaunay.triangulate(r)}}static intersectLines(t,e,r,n){let s,o;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}],o=[{x:0,y:n},{x:1,y:r+n}]}else s=t,o=e;return Utils._intersectSegments(s,o,!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(o(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],o=e[0],i=e[1],a=Math.min(n.x,s.x),m=Math.min(n.y,s.y),c=Math.max(n.x,s.x),l=c-a,u=Math.max(n.y,s.y),f=u-m,h=Math.min(o.x,i.x),y=Math.min(o.y,i.y),x=Math.max(o.x,i.x),g=x-h,p=Math.max(o.y,i.y),M=p-y;if(0===l&&0===g)return null;if(0===f&&0===M)return null;const d=t=>t.x<h||t.x>x||t.x<a||t.x>c,v=t=>t.y<y||t.y>p||t.y<m||t.y>u;var b=null;if(0===l){if(r&&(h>a||x<c))return null;const t=Utils.mq(o,i);b=Utils.cramer([1,0,-a],[t[0],-1,t[1]]),r&&v(b)&&(b=null)}else if(0===g){if(r&&(a>h||c<x))return null;const t=Utils.mq(n,s);b=Utils.cramer([t[0],-1,t[1]],[1,0,-h]),r&&v(b)&&(b=null)}else if(0===f){if(r&&(y>m||p<u))return null;const t=Utils.mq(o,i);b=Utils.cramer([0,1,-m],[t[0],-1,t[1]]),r&&d(b)&&(b=null)}else if(0===M){if(r&&(m>y||u<p))return null;const t=Utils.mq(n,s);b=Utils.cramer([t[0],-1,t[1]],[0,1,-y]),r&&d(b)&&(b=null)}else{let t;if(!r||(t=Utils._intersectRects({x:a,y:m,width:l,height:f},{x:h,y:y,width:g,height:M}))&&t.width>0&&t.height>0){const e=Utils.mq(n,s),a=Utils.mq(o,i),m=e[0],c=a[0],l=e[1],u=a[1];if(m!==c){let e=(b=Utils.cramer([m,-1,l],[c,-1,u])).x,n=b.y;r&&(e<t.x||e>t.x+t.width||n<t.y||n>t.y+t.height)&&(b=null)}}}return null===b?null:{x:b.x,y:b.y}}static _intersectRects(...e){return t.Rect.intersect(...e)}static _areClose(t,e,r=12){return Math.abs(t.x-e.x).isCloseTo(0,r)&&Math.abs(t.y-e.y).isCloseTo(0,r)}static areClose(t,e,r=12){return Utils._areClose(t,e,r)}static dot(t,e){return Vector.dot(t,e)}static cross(t,e){return Vector.cross(t,e)}static distance(e,r){if(null!=(n=e)&&Array.isArray(n)&&2===n.length&&o(n[0])&&o(n[1]))return t.Point.distance(e[0],e[1]);if(o(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 _pointSegmentDistance(t,e){const r=Vector.from(e[0],e[1]),n=Vector.from(e[0],t);return Utils.cross(r,n)}static isWithin(t,e,r,n=12){const s=Utils._pointSegmentDistance(t,e);return!s.isCloseTo(0,n)&&(r?s<0:s>0)}static isBeyond(t,e,r,n=12){return Utils.isWithin(t,e,!r,n)}static inLine(t,e,r=12){return Utils._pointSegmentDistance(t,e).isCloseTo(0,r)}static inSegment(t,e,r=12){const n=Math.min(e[0].x,e[1].x),s=Math.max(e[0].x,e[1].x),o=Math.min(e[0].y,e[1].y),i=Math.max(e[0].y,e[1].y);return t.x>=n&&t.x<=s&&t.y>=o&&t.y<=i&&Utils.inLine(t,e,r)}static inTriangle(e,r){let n;for(let s=0;s<3;s++){const o=r[s],i=r[(s+1)%3],a=t.Point.subtract(i,e),m=t.Point.subtract(o,e),c=Utils.cross(a,m);if(s>0&&c*n<=0)return!1;n=c}return!0}static inPolygon(t,e,r=12){if(!(e?.length>=3))throw"Not enough vertices";const n=e.length;if(3===n)return Utils.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,o=Number.MAX_VALUE,i=Number.MIN_VALUE,a=Number.MIN_VALUE;for(let t=0;t<n;t++){const r=e[t];s=Math.min(s,r.x),o=Math.min(o,r.y),i=Math.max(i,r.x),a=Math.max(a,r.y)}if(t.x<s||t.x>i||t.y<o||t.y>a)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],o=e[(r+1)%n],i=[s,o];if(s.y===t.y){const i=e[(r-1+n)%n];t.x>s.x&&(i.y-t.y)*(o.y-t.y)<0&&c++}else{if(o.y===t.y)continue;null!=Utils.intersect(i,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:o}=r[t],i=t===s-1?0:t+1,{x:a,y:m}=r[i];n+=e*m-o*a}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 o=(t,e,r)=>(e.x-t.x)*(r.y-t.y)-(e.y-t.y)*(r.x-t.x),i=[];for(const t of s){for(;i.length>=2&&o(i[i.length-2],i[i.length-1],t)<=0;)i.pop();i.push(t)}const a=[];for(let t=s.length-1;t>=0;t--){const e=s[t];for(;a.length>=2&&o(a[a.length-2],a[a.length-1],e)<=0;)a.pop();a.push(e)}return i.pop(),a.pop(),i.concat(a)}};class Polygon{static{this._eps=1e-12}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,e){return i.inPolygon(e,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){return i.boundingBox(t.vertices)}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 o=r[(e-1+n)%n],i=r[e],a=r[(e+1)%n],m=t.Angle.angleBetween(i,o,a);if(0!==s){if(s!=Math.sign(m))return!1}else s=Math.sign(m)}return!0}static isSelfIntersecting(e){const{vertices:r}=e;if(r.length<=3)return!1;const n=Polygon.sides(e);for(let e of n)for(let r of n){if(r===e||r[0]===e[1]||e[0]===r[1])continue;const n=i.intersect(r,e);if(!t.NullChecker.isNull(n))return!0}return!1}static isCounterClockwise(e){const{vertices:[r,n,s]}=e;return t.Angle.angleBetween(n,r,s)>0}static expand(e,r){const{vertices:n}=e,s=n.length,o=[];for(let e=0;e<n.length;e++){const i=n[(e-1+s)%s],a=n[e],m=n[(e+1)%s],c=t.Angle.angleBetween(a,i,m),l=-r/Math.sin(Math.abs(c)/2),u=t.Matrix2D.scale(t.Matrix2D.identity,l),f=t.Point.subtract(a,i);Vector.normalize(f);const h=t.Point.subtract(a,m);Vector.normalize(h);const y=t.Point.add(f,h);Vector.normalize(y);const x=t.Matrix2D.multiply(y,u);o.push(t.Point.add(a,{x:x.x.roundoff(),y:x.y.roundoff()}))}return{vertices:o}}static area(t){return i.area(t.vertices)}static intersect(t,e){return i.intersect(t,e)}static convexHull(t){return{vertices:i.convexHull(t.vertices)}}}const a=180/Math.PI,m=1/a;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 r;const n=Vector3D.unit(t),s=Vector3D.unit(e);if(Vector3D.dot(n,s)<0){const t={x:-n.x-s.x,y:-n.y-s.y,z:-n.z-s.z},e=Vector3D.mag(t);r=Math.PI-2*Math.asin(e/2)}else{const t={x:n.x-s.x,y:n.y-s.y,z:n.z-s.z},e=Vector3D.mag(t);r=2*Math.asin(e/2)}return a*r}}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,r){"number"==typeof t&&(t=Vector3D.from(t,e,r));const n=Vector3D.mag(t);if(n.isCloseTo(0))return Spherical.from(0,0,0);const s=Math.atan2(t.x,t.z),o=Math.acos((t.y/n).clamp(-1,1));return Spherical.from(n,s*a,o*a)}static toVector(t){const{rho:e,theta:r,phi:n}=t,s=n*m,o=r*m,i=Math.sin(s)*e;return{x:i*Math.sin(o),y:Math.cos(s)*e,z:i*Math.cos(o)}}static toRotationMatrix(t){const{theta:e,phi:r}=t,n=m*e,s=Math.sin(n),o=Math.cos(n),i=m*r,a=Math.sin(i),c=Math.cos(i);return Matrix3D.from(s*c,s*a,o,0,o*c,o*a,-s,0,-a,c,0,0,0,0,0,1)}}class Matrix3DUtils{static modify(t,e){const{m11:r,m12:n,m13:s,m14:o,m21:i,m22:a,m23:m,m24:c,m31:l,m32:u,m33:f,m34:h,offsetX:y,offsetY:x,offsetZ:g,m44:p}=t,M={m11:r,m12:n,m13:s,m14:o,m21:i,m22:a,m23:m,m24:c,m31:l,m32:u,m33:f,m34:h,offsetX:y,offsetY:x,offsetZ:g,m44:p};return e(M),M}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,o=t.m23*t.m44-t.offsetZ*t.m24,i=t.m33*t.m44-t.offsetZ*t.m34,a=t.m22*r-t.m32*e-t.m12*s,m=t.m12*o-t.m22*n+t.offsetY*e,c=t.m32*n-t.offsetY*r-t.m12*i,l=t.m22*i-t.m32*o+t.offsetY*s;return t.offsetX*a+t.m31*m+t.m21*c+t.m11*l}}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,o=t.m21*t.m13-t.m11*t.m23,i=t.m11*t.m33-t.m31*t.m13,a=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,l=t.m11*t.offsetY-t.offsetX*t.m12,u=t.m21*t.m32-t.m31*t.m22,f=t.m21*t.offsetY-t.offsetX*t.m22,h=t.m31*t.offsetY-t.offsetX*t.m32,y=t.m23*l-t.offsetZ*m-t.m13*f,x=t.m13*h-t.m33*l+t.offsetZ*c,g=t.m33*f-t.offsetZ*u-t.m23*h,p=m,M=-c,d=u,v=1/e;return Matrix3D.from(s*v,n*v,r*v,0,a*v,i*v,o*v,0,d*v,M*v,p*v,0,g*v,x*v,y*v,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,o=t.m32*t.offsetZ-t.m33*t.offsetY,i=t.m31*t.offsetZ-t.m33*t.offsetX,a=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,l=t.m31*t.m44-t.m34*t.offsetX,u=t.m32*t.offsetZ-t.m33*t.offsetY,f=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,p=t.m22*t.offsetZ-t.m23*t.offsetY,M=t.m21*t.offsetZ-t.m23*t.offsetX,d=t.m21*t.offsetY-t.m22*t.offsetX,v=t.m23*t.m34-t.m24*t.m33,b=t.m22*t.m34-t.m24*t.m32,w=t.m21*t.m34-t.m24*t.m31,z=t.m22*t.m33-t.m23*t.m32,U=t.m21*t.m33-t.m23*t.m31,D=t.m21*t.m32-t.m22*t.m31,C=t.m22*r-t.m23*n+t.m24*o,A=-(t.m21*r-t.m23*s+t.m24*i),N=t.m21*n-t.m22*s+t.m24*a,V=-(t.m21*o-t.m22*i+t.m23*a),_=-(t.m12*m-t.m13*c+t.m14*u),P=t.m11*m-t.m13*l+t.m14*f,q=-(t.m11*c-t.m12*l+t.m14*h),X=t.m11*u-t.m12*f+t.m13*h,S=t.m12*y-t.m13*x+t.m14*p,Y=-(t.m11*y-t.m13*g+t.m14*M),Z=t.m11*x-t.m12*g+t.m14*d,E=-(t.m11*p-t.m12*M+t.m13*d),T=-(t.m12*v-t.m13*b+t.m14*z),I=t.m11*v-t.m13*w+t.m14*U,R=-(t.m11*b-t.m12*w+t.m14*D),Q=t.m11*z-t.m12*U+t.m13*D,L=1/e;return Matrix3D.from(C*L,_*L,S*L,T*L,A*L,P*L,Y*L,I*L,N*L,q*L,Z*L,R*L,V*L,X*L,E*L,Q*L)}}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,o=r.z;if(r.x=n*e.m11+s*e.m21+o*e.m31+e.offsetX,r.y=n*e.m12+s*e.m22+o*e.m32+e.offsetY,r.z=n*e.m13+s*e.m23+o*e.m33+e.offsetZ,!Matrix3D.isAffine(e)){var i=n*e.m14+s*e.m24+o*e.m34+e.m44;0!=i&&(r.x/=i,r.y/=i,r.z/=i)}}return r}}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=m*(e%=360),n=Vector3D.mag(t);if(0==n)throw new RangeError("Invalid argument");var s=Math.sin(.5*r)/n,o=t.x*s,i=t.y*s,a=t.z*s;return Quaternion.from(o,i,a,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,o=(t.m31-t.m13)*r,i=(t.m12-t.m21)*r;return Quaternion.from(s,o,i,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,o=(t.m31+t.m13)*e;return Quaternion.from(n,s,o,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,o=(t.m31-t.m13)*e;return Quaternion.from(s,n,r,o)}{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,o=(t.m31-t.m13)*e;return Quaternion.from(o,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,o=t.y/n,i=t.z/n;e=Math.sqrt(s*s+o*o+i*i),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,o=t.w;return e.m11=1-2*n*n-2*s*s,e.m12=2*r*n+2*o*s,e.m13=2*r*s-2*o*n,e.m21=2*r*n-2*o*s,e.m22=1-2*r*r-2*s*s,e.m23=2*n*s+2*o*r,e.m31=2*o*n+2*r*s,e.m32=2*n*s-2*o*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}}var c,l=Object.freeze({__proto__:null,Matrix3D:Matrix3D,Quaternion:Quaternion,Spherical:Spherical,Vector:Vector,Vector3D:Vector3D}),u=Object.freeze({__proto__:null,LinearAlgebra:l,Polygon:Polygon,Utils:i,Utils3D:class Utils3D{static intersect(t,e){const[r,n]=t,s=Vector3D.subtract(r,n),[o,i,a]=e,m=Vector3D.subtract(o,i),c=Vector3D.subtract(o,a),l=Vector3D.cross(s,c),u=Vector3D.dot(m,l);if(u.isCloseTo(0))return null;const f=1/u,h=Vector3D.subtract(r,o),y=f*Vector3D.dot(h,l);if(y<0||y>1)return null;const x=Vector3D.cross(h,m),g=f*Vector3D.dot(s,x);if(g<0||y+g>1)return null;const p=f*Vector3D.dot(c,x);return p<0||p.isCloseTo(0)?null:Vector3D.add(r,Vector3D.scale(s,p))}}});function f(t){return"number"==typeof t&&(t={real:t,img:0}),t}function h(t,e){const r={};return Object.defineProperty(r,"real",{value:t,writable:!1}),Object.defineProperty(r,"img",{value:e,writable:!1}),r}function y(){return c||(c=h(Number.NaN,Number.NaN))}class Complex{static build(t,e){return this.isComplex(t)?t:(e??=0,"number"!=typeof t||"number"!=typeof e?y():h(t,e||0))}static add(t,e){const r=f(t),n=f(e);return h(r.real+n.real,r.img+n.img)}static subtract(t,e){const r=f(t),n=f(e);return h(r.real-n.real,r.img-n.img)}static multiply(t,e){const r=f(t),n=f(e);return h(r.real*n.real-r.img*n.img,r.real*n.img+r.img*n.real)}static divide(t,e){const r=f(t),n=f(e),s=this.absSquare(n).roundoff();if(0===s)return y();const o=1/s;return h(o*(r.real*n.real+r.img*n.img),o*(r.img*n.real-r.real*n.img))}static absSquare(t){const e=f(t);return Math.pow(e.real,2)+Math.pow(e.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 h((t=f(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 y()}}const x={};function g(t,e){const r=x[e]=x[e]||{};return r[t]=r[t]||function(t,e){const r=2*Math.PI*t/e;return Complex.build(Math.cos(r),Math.sin(r))}(t,e)}function p(t){const e=[],r=t.length;if(1===r)return[Complex.build(t[0])];const n=p(t.filter((t,e)=>e%2==0)),s=p(t.filter((t,e)=>e%2==1));for(var o=0;o<r/2;o++){const t=n[o],i=Complex.multiply(g(o,r),s[o]);e[o]=Complex.add(t,i),e[o+r/2]=Complex.subtract(t,i)}return e}const M=Math.sqrt(Math.PI);class Gaussian{constructor(t,e){this.mean=t,this.stdev=Math.abs(e),this.variance=Math.pow(e,2)}static get normal(){return d}weight(t){return Math.exp(-.5*Math.pow(this._z(t),2))}probabilityDensity(t){const e=this.stdev*Math.SQRT2*M;return this.weight(t)/e}_z(t){return(t-this.mean)/this.stdev}probability(t){return.5*function(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}(-this._z(t)/Math.SQRT2)}}const d=new Gaussian(0,1);class Lagrange{constructor(t){this.#t=t}#t;#e=null;_prepareBarycentric(){if(this.#e)return;const t=this.#t||[],e=t.length;if(0===e)return void(this.#e=[]);const r=new Array(e),n=new Array(e);for(let s=0;s<e;s++){let o=0,i=1;const a=t[s].x;for(let r=0;r<e;r++){if(r===s)continue;const e=a-t[r].x;if(0===e)throw new Error("Invalid function provided.");e<0&&(i=-i),o+=Math.log(Math.abs(e))}r[s]=-o,n[s]=i}let s=r[0];for(let t=1;t<e;t++)r[t]>s&&(s=r[t]);const o=new Array(e);for(let t=0;t<e;t++){const e=Math.exp(r[t]-s);o[t]=n[t]*e}this.#e=o}_computeBarycentric(t){const e=this.#t||[];this.#e||this._prepareBarycentric();const r=this.#e||[];let n=0,s=0;for(let o=0;o<e.length;o++){const i=e[o].x;if(t===i)return e[o].y;const a=r[o]/(t-i);n+=a*e[o].y,s+=a}return n/s}interpolate(t){return this._computeBarycentric(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);return new Lagrange(e)}}const v={create:Lagrange.create};class Pchip{constructor(t){if(!t||t.length<2)throw new Error("Need at least 2 points");const e=t.slice().sort((t,e)=>t.x-e.x);this.xs=e.map(t=>t.x),this.ys=e.map(t=>t.y),this.ms=this.computeDerivatives()}computeDerivatives(){const t=this.xs.length,e=new Array(t-1),r=new Array(t-1);for(let n=0;n<t-1;n++)e[n]=this.xs[n+1]-this.xs[n],r[n]=(this.ys[n+1]-this.ys[n])/e[n];const n=new Array(t).fill(0);n[0]=r[0],n[t-1]=r[t-2];for(let s=1;s<t-1;s++){const t=r[s-1],o=r[s];if(0===t||0===o||t*o<=0)n[s]=0;else{const r=2*e[s]+e[s-1],i=e[s]+2*e[s-1];n[s]=(r+i)/(r/t+i/o)}}for(let e=0;e<t-1;e++)if(0===r[e])n[e]=0,n[e+1]=0;else{const t=n[e]/r[e],s=n[e+1]/r[e],o=t*t+s*s;if(o>9){const i=3/Math.sqrt(o);n[e]=i*t*r[e],n[e+1]=i*s*r[e]}}return n}interpolate(t){const e=this.xs,r=this.ys,n=this.ms,s=e.length;if(t<=e[0]){const s=n[0];return r[0]+s*(t-e[0])}if(t>=e[s-1]){const o=n[s-1];return r[s-1]+o*(t-e[s-1])}let o=0,i=s-1;for(;i-o>1;){const r=o+i>>1;e[r]<=t?o=r:i=r}const a=e[o+1]-e[o],m=(t-e[o])/a,c=m*m,l=c*m,u=l-2*c+m,f=-2*l+3*c,h=l-c;return(2*l-3*c+1)*r[o]+u*(n[o]*a)+f*r[o+1]+h*(n[o+1]*a)}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);return new Pchip(e)}}class Newton{constructor(t){if(!t||0===t.length)throw new Error("Need at least 1 point");const e=t.slice().sort((t,e)=>t.x-e.x);this.xs=e.map(t=>t.x);const r=e.length,n=e.map(t=>t.y);for(let t=1;t<r;t++)for(let e=r-1;e>=t;e--){const r=this.xs[e]-this.xs[e-t];if(0===r)throw new Error("Invalid function provided.");n[e]=(n[e]-n[e-1])/r}this.coeffs=n}interpolate(t){const e=this.xs,r=this.coeffs,n=r.length;if(0===n)return NaN;let s=r[n-1];for(let o=n-2;o>=0;o--)s=s*(t-e[o])+r[o];return s}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);return new Newton(e)}}const b=(t,e)=>t;function w(t,e=b){return t.reduce((t,r,n)=>t+e(r,n),0)}function z(t,e=b){return w(t,e)/t.length}function U(t,e=b,r=!1){const n=z(t,e);return t.reduce((t,e)=>Math.pow(e-n,2)+t,0)/(t.length-(r?1:0))}function D(t,e=b,r=!1){const n=U(t,e,r);return Math.sqrt(n)}function C(t,e){return(r,n,s,o)=>{let i=r,a=n,m=t(i,a),c=e(i,a),l=s(m),u=s(c);for(;a-i>o;)l<u?(a=c,c=m,u=l,m=t(i,a),l=s(m)):(i=m,m=c,l=u,c=e(i,a),u=s(c));return.5*(m+c)}}const A={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)=>C((e,r)=>e+(r-e)/t,(e,r)=>r-(r-e)/t)(e,r,n,s)}(t),goldenRatio:(t,e,r,n=.001)=>C((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,o=null;const i=(t,e)=>(o??=e-t,s??=o/Math.sqrt(12),s*(e-t)/o);return C((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)}};var N=Object.freeze({__proto__:null,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(t,e=!0){const r=(t||[])?.length,n=e?1/Math.sqrt(r):1,s=[];for(let e=0;e<r;e++){s.push({real:0,img:0});for(let o=0;o<r;o++){const i=g(e*o,r),a=Complex.multiply(t[o],i),m=Complex.multiply(a,n);s[e]=Complex.add(s[e],m)}}return s}static idft(t,e=!0){const r=t.map(t=>Complex.build(t.img,t.real));return this.transform(r,e).map(t=>Complex.build(t.img,t.real))}static fft(t,e=!0){const r=p(t);if(!e)return r;const n=1/Math.sqrt(t.length);return r.map(t=>Complex.multiply(t,n))}},Gaussian:Gaussian,Lagrange:Lagrange,Lagrangian:v,Newton:Newton,Pchip:Pchip,SearchFunctions:A,Utils:class Utils{static sum(t,e){return w(t,e)}static mean(t,e){return z(t,e)}static median(t,e){return function(t,e=b){const r=t.slice(0),n=r.length;r.sort((t,r)=>e(t)-e(r));const s=Math.ceil(r.length/2)-1;return n%2==1?r[s]:.5*(r[s+1]+r[s])}(t,e)}static mode(t,e){return function(t,e=b){const r=Object.groupBy(t,e);let n,s=0;for(let t in r){const e=r[t].length;e>s&&(n=parseInt(t),s=e)}return n}(t,e)}static var(t,e){return U(t,e,!0)}static varp(t,e){return U(t,e,!1)}static stdevp(t,e){return D(t,e,!1)}static stdev(t,e){return D(t,e,!0)}static correlation(t,e,r,n){return function(t,e,r=b,n=b){const s=Array.isArray(e);if(s&&e.length!==t.length)throw new Error("Sets must be of the same length.");const o=t.length,i=t,a=s?e:t,m=s?r:e,c=s?n:r,l=z(i,m),u=z(a,c);let f=0,h=0,y=0;for(let t=0;t<o;t++){const e=i[t],r=a[t],n=m(e,t)-l,s=c(r,t)-u;f+=n*s,h+=n*n,y+=s*s}return f/Math.sqrt(h*y)}(t,e,r,n)}static linearRegression(t,e,r,n){return function(t,e,r=b,n=b){const s=Array.isArray(e);if(s&&e.length!==t.length)throw new Error("Sets must be of the same length.");const o=t,i=s?e:t,a=s?r:e,m=a??(t=>t.x),c=(s?n:a)??(t=>t.y),l=t.length;let u=0,f=0,h=0,y=0;for(let t=0;t<l;t++){const e=o[t],r=i[t],n=m(e,t),s=c(r,t);u+=n*s,f+=n,h+=s,y+=n*n}const x=(l*u-f*h)/(l*y-Math.pow(f,2));return[x,(h-x*f)/l]}(t,e,r,n)}static gaussian(t,e){return new Gaussian(t,e)}}});const V="0123456789abcdefghijklmnopqrstuvwxyz",_="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,o=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 o(t.toString(),e,n);return s(o(t.toString(),e,n+1),r,n)}static rebaseFloatNTo10(t,e,r=12){const n=V;if(e<=1||e>n.length)throw new Error(_);const s=(t??"0").toString().toLowerCase(),o=Number.NaN;if("0"===s)return 0;const i=/^([-+]?) *([\da-z]+)?(.[\da-z]+)?$/.exec(s);if(i.length<2)return o;const a="-"===i[1]?-1:1,m=i[2]||"0",c=i[3]||".0";let l=0,u=0;for(let t of m+c.substr(1)){const r=n.indexOf(t);if(-1===r||r>=e)return o;l+=r*Math.pow(e,m.length-u-1),u++}return a*l}static rebaseFloat10ToNIntBase(t,e,r=12){const n=V;if(e<=1||e>36)throw new Error(_);const s=e;let o=Math.abs(t??0);if(0===o||Number.isNaN(o))return t.toString();let i=(o%1).roundoff(),a="";for(;;){let t=o/s,e=Math.floor(t),r=(o-e*s).roundoff(),i=Math.floor(r);if(a=i>=36?`[${i}]`+a:n[i]+a,e<=0)break;o=e}if(a=a.replace(/^0+/,""),a||="0",0===i)return a;let m="";do{o=(i*s).roundoff();const t=Math.floor(o),e=(o-t).roundoff();t>=36?m=`[${t}]`:m+=n[t],i=e}while(!i.isCloseTo(0)&&m.length<r);return/^0*$/.test(m)?a:(Math.sign(t)<0?"-":"")+a+"."+m.replace(/0+$/,"")}static rebaseFloat10ToN(e,r,n=12){const s=V;if(r<=1||r>s.length)throw new Error(_);const o=r;let i=Math.abs(e??0);if(0===i||Number.isNaN(i))return e.toString();let a=Math.sign(e)<0?"-":"",m=[],c=[];for(let t=0;t<20;t++)m.push("0"),c.push("0");const l=o%1==0?o:Math.ceil(o);function u(t,e,r){const n=t?m:c,o=n[e]=n[e]||"0",i=s.indexOf(o)+r,a=i%l,f=Math.floor(i/l);return n[e]=s[a],f>0&&(t?u(t,e+1,f):0===e?u(!0,0,f):u(!1,e-1,f)),f}let f=0;for(;;){const e=Math.floor(t.Numbers.log(i,o)),r=e>=0;if(u(r,r?e:Math.abs(1+e),1),i=(i-Math.pow(o,e).roundoff()).roundoff(),r||f++,0===i||f>=100){const t=a+(m.reverse().map(t=>t||"0").join("").replace(/^0+/,"")||"0"),e=c.map(t=>t||"0").join("").substr(0,n).replace(/0+$/,"");return/^0*$/.test(e)?t:t+"."+e}}}}var P=Object.freeze({__proto__:null,Utils:Utils}),q=Object.freeze({__proto__:null,Complex:Complex,DataAnalysis:N,NumberTheory:P}),X=Object.freeze({__proto__:null,Geometry:u,Mathematics:q});t.DeepMerger.merge(X)}(Pacem);
7
7
  //# sourceMappingURL=pacem-numerical.min.js.map