tsparticles 1.39.3 → 1.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/Core/Container.d.ts +3 -1
  2. package/Core/Container.js +27 -12
  3. package/Core/Loader.d.ts +12 -9
  4. package/Core/Loader.js +35 -19
  5. package/Core/Particle.d.ts +3 -1
  6. package/Core/Particle.js +17 -2
  7. package/Core/Particles.d.ts +3 -1
  8. package/Core/Particles.js +20 -5
  9. package/Core/Utils/InteractionManager.d.ts +3 -1
  10. package/Core/Utils/InteractionManager.js +17 -3
  11. package/Core/Utils/Plugins.d.ts +29 -15
  12. package/Core/Utils/Plugins.js +58 -46
  13. package/Options/Classes/Options.d.ts +2 -1
  14. package/Options/Classes/Options.js +13 -6
  15. package/Plugins/Emitters/EmitterInstance.d.ts +6 -3
  16. package/Plugins/Emitters/EmitterInstance.js +46 -16
  17. package/Plugins/Emitters/Emitters.d.ts +3 -1
  18. package/Plugins/Emitters/Emitters.js +17 -2
  19. package/Plugins/Emitters/{EmittersMain.d.ts → EmittersEngine.d.ts} +3 -1
  20. package/Plugins/Emitters/{EmittersMain.js → EmittersEngine.js} +0 -0
  21. package/Plugins/Emitters/IEmitterShape.d.ts +2 -2
  22. package/Plugins/Emitters/Options/Classes/Emitter.d.ts +1 -0
  23. package/Plugins/Emitters/Options/Classes/Emitter.js +1 -0
  24. package/Plugins/Emitters/Options/Interfaces/IEmitter.d.ts +1 -0
  25. package/Plugins/Emitters/ShapeManager.d.ts +6 -3
  26. package/Plugins/Emitters/ShapeManager.js +16 -4
  27. package/Plugins/Emitters/Shapes/Circle/CircleShape.d.ts +2 -2
  28. package/Plugins/Emitters/Shapes/Circle/CircleShape.js +2 -2
  29. package/Plugins/Emitters/Shapes/Square/SquareShape.d.ts +2 -2
  30. package/Plugins/Emitters/Shapes/Square/SquareShape.js +4 -4
  31. package/Plugins/Emitters/index.d.ts +3 -3
  32. package/Plugins/Emitters/index.js +25 -6
  33. package/README.md +1 -1
  34. package/browser/Core/Container.d.ts +4 -1
  35. package/browser/Core/Container.js +29 -13
  36. package/browser/Core/Loader.d.ts +12 -9
  37. package/browser/Core/Loader.js +35 -19
  38. package/browser/Core/Particle.d.ts +3 -1
  39. package/browser/Core/Particle.js +18 -3
  40. package/browser/Core/Particles.d.ts +3 -1
  41. package/browser/Core/Particles.js +21 -6
  42. package/browser/Core/Utils/InteractionManager.d.ts +3 -1
  43. package/browser/Core/Utils/InteractionManager.js +17 -3
  44. package/browser/Core/Utils/Plugins.d.ts +29 -15
  45. package/browser/Core/Utils/Plugins.js +58 -46
  46. package/browser/Options/Classes/Options.d.ts +2 -1
  47. package/browser/Options/Classes/Options.js +13 -6
  48. package/browser/Plugins/Emitters/EmitterInstance.d.ts +6 -3
  49. package/browser/Plugins/Emitters/EmitterInstance.js +46 -16
  50. package/browser/Plugins/Emitters/Emitters.d.ts +3 -1
  51. package/browser/Plugins/Emitters/Emitters.js +17 -2
  52. package/{esm/Plugins/Emitters/EmittersMain.d.ts → browser/Plugins/Emitters/EmittersEngine.d.ts} +3 -1
  53. package/browser/Plugins/Emitters/{EmittersMain.js → EmittersEngine.js} +0 -0
  54. package/browser/Plugins/Emitters/IEmitterShape.d.ts +2 -2
  55. package/browser/Plugins/Emitters/Options/Classes/Emitter.d.ts +1 -0
  56. package/browser/Plugins/Emitters/Options/Classes/Emitter.js +1 -0
  57. package/browser/Plugins/Emitters/Options/Interfaces/IEmitter.d.ts +4 -0
  58. package/browser/Plugins/Emitters/ShapeManager.d.ts +6 -3
  59. package/browser/Plugins/Emitters/ShapeManager.js +16 -4
  60. package/browser/Plugins/Emitters/Shapes/Circle/CircleShape.d.ts +2 -2
  61. package/browser/Plugins/Emitters/Shapes/Circle/CircleShape.js +2 -2
  62. package/browser/Plugins/Emitters/Shapes/Square/SquareShape.d.ts +2 -2
  63. package/browser/Plugins/Emitters/Shapes/Square/SquareShape.js +4 -4
  64. package/browser/Plugins/Emitters/index.d.ts +3 -3
  65. package/browser/Plugins/Emitters/index.js +25 -6
  66. package/browser/engine.d.ts +5 -1
  67. package/browser/engine.js +22 -17
  68. package/engine.d.ts +3 -0
  69. package/engine.js +20 -16
  70. package/esm/Core/Container.d.ts +3 -1
  71. package/esm/Core/Container.js +28 -13
  72. package/esm/Core/Loader.d.ts +12 -9
  73. package/esm/Core/Loader.js +35 -19
  74. package/esm/Core/Particle.d.ts +3 -1
  75. package/esm/Core/Particle.js +18 -3
  76. package/esm/Core/Particles.d.ts +3 -1
  77. package/esm/Core/Particles.js +21 -6
  78. package/esm/Core/Utils/InteractionManager.d.ts +3 -1
  79. package/esm/Core/Utils/InteractionManager.js +17 -3
  80. package/esm/Core/Utils/Plugins.d.ts +29 -15
  81. package/esm/Core/Utils/Plugins.js +58 -46
  82. package/esm/Options/Classes/Options.d.ts +2 -1
  83. package/esm/Options/Classes/Options.js +13 -6
  84. package/esm/Plugins/Emitters/EmitterInstance.d.ts +6 -3
  85. package/esm/Plugins/Emitters/EmitterInstance.js +46 -16
  86. package/esm/Plugins/Emitters/Emitters.d.ts +3 -1
  87. package/esm/Plugins/Emitters/Emitters.js +17 -2
  88. package/{browser/Plugins/Emitters/EmittersMain.d.ts → esm/Plugins/Emitters/EmittersEngine.d.ts} +3 -1
  89. package/esm/Plugins/Emitters/{EmittersMain.js → EmittersEngine.js} +0 -0
  90. package/esm/Plugins/Emitters/IEmitterShape.d.ts +2 -2
  91. package/esm/Plugins/Emitters/Options/Classes/Emitter.d.ts +1 -0
  92. package/esm/Plugins/Emitters/Options/Classes/Emitter.js +1 -0
  93. package/esm/Plugins/Emitters/Options/Interfaces/IEmitter.d.ts +1 -0
  94. package/esm/Plugins/Emitters/ShapeManager.d.ts +6 -3
  95. package/esm/Plugins/Emitters/ShapeManager.js +16 -4
  96. package/esm/Plugins/Emitters/Shapes/Circle/CircleShape.d.ts +2 -2
  97. package/esm/Plugins/Emitters/Shapes/Circle/CircleShape.js +2 -2
  98. package/esm/Plugins/Emitters/Shapes/Square/SquareShape.d.ts +2 -2
  99. package/esm/Plugins/Emitters/Shapes/Square/SquareShape.js +4 -4
  100. package/esm/Plugins/Emitters/index.d.ts +3 -3
  101. package/esm/Plugins/Emitters/index.js +25 -6
  102. package/esm/engine.d.ts +3 -0
  103. package/esm/engine.js +20 -16
  104. package/package.json +1 -1
  105. package/report.html +2 -2
  106. package/report.slim.html +2 -2
  107. package/tsparticles.engine.js +221 -114
  108. package/tsparticles.engine.min.js +2 -2
  109. package/tsparticles.interaction.external.attract.js +199 -96
  110. package/tsparticles.interaction.external.attract.min.js +2 -2
  111. package/tsparticles.interaction.external.bounce.js +199 -96
  112. package/tsparticles.interaction.external.bounce.min.js +2 -2
  113. package/tsparticles.interaction.external.bubble.js +199 -96
  114. package/tsparticles.interaction.external.bubble.min.js +2 -2
  115. package/tsparticles.interaction.external.connect.js +199 -96
  116. package/tsparticles.interaction.external.connect.min.js +2 -2
  117. package/tsparticles.interaction.external.grab.js +199 -96
  118. package/tsparticles.interaction.external.grab.min.js +2 -2
  119. package/tsparticles.interaction.external.repulse.js +199 -96
  120. package/tsparticles.interaction.external.repulse.min.js +2 -2
  121. package/tsparticles.interaction.external.trail.js +199 -96
  122. package/tsparticles.interaction.external.trail.min.js +2 -2
  123. package/tsparticles.interaction.particles.attract.js +199 -96
  124. package/tsparticles.interaction.particles.attract.min.js +2 -2
  125. package/tsparticles.interaction.particles.collisions.js +199 -96
  126. package/tsparticles.interaction.particles.collisions.min.js +2 -2
  127. package/tsparticles.interaction.particles.links.js +199 -96
  128. package/tsparticles.interaction.particles.links.min.js +2 -2
  129. package/tsparticles.js +341 -152
  130. package/tsparticles.min.js +2 -2
  131. package/tsparticles.pathseg.min.js +1 -1
  132. package/tsparticles.plugins.absorbers.js +199 -96
  133. package/tsparticles.plugins.absorbers.min.js +2 -2
  134. package/tsparticles.plugins.emitters.js +324 -139
  135. package/tsparticles.plugins.emitters.min.js +2 -2
  136. package/tsparticles.plugins.polygonMask.js +199 -96
  137. package/tsparticles.plugins.polygonMask.min.js +2 -2
  138. package/tsparticles.shape.circle.min.js +1 -1
  139. package/tsparticles.shape.image.js +202 -99
  140. package/tsparticles.shape.image.min.js +2 -2
  141. package/tsparticles.shape.line.min.js +1 -1
  142. package/tsparticles.shape.polygon.min.js +1 -1
  143. package/tsparticles.shape.square.min.js +1 -1
  144. package/tsparticles.shape.star.min.js +1 -1
  145. package/tsparticles.shape.text.js +199 -96
  146. package/tsparticles.shape.text.min.js +2 -2
  147. package/tsparticles.slim.js +221 -114
  148. package/tsparticles.slim.min.js +2 -2
  149. package/tsparticles.updater.angle.js +199 -96
  150. package/tsparticles.updater.angle.min.js +2 -2
  151. package/tsparticles.updater.color.js +199 -96
  152. package/tsparticles.updater.color.min.js +2 -2
  153. package/tsparticles.updater.life.js +199 -96
  154. package/tsparticles.updater.life.min.js +2 -2
  155. package/tsparticles.updater.opacity.js +199 -96
  156. package/tsparticles.updater.opacity.min.js +2 -2
  157. package/tsparticles.updater.outModes.js +199 -96
  158. package/tsparticles.updater.outModes.min.js +2 -2
  159. package/tsparticles.updater.roll.js +199 -96
  160. package/tsparticles.updater.roll.min.js +2 -2
  161. package/tsparticles.updater.size.js +199 -96
  162. package/tsparticles.updater.size.min.js +2 -2
  163. package/tsparticles.updater.strokeColor.js +199 -96
  164. package/tsparticles.updater.strokeColor.min.js +2 -2
  165. package/tsparticles.updater.tilt.js +199 -96
  166. package/tsparticles.updater.tilt.min.js +2 -2
  167. package/tsparticles.updater.wobble.js +199 -96
  168. package/tsparticles.updater.wobble.min.js +2 -2
@@ -1,2 +1,2 @@
1
- /*! tsParticles v1.39.3 by Matteo Bruni */
2
- !function(t,n){if("object"==typeof exports&&"object"==typeof module)module.exports=n();else if("function"==typeof define&&define.amd)define([],n);else{var i=n();for(var e in i)("object"==typeof exports?exports:t)[e]=i[e]}}(window,(function(){return function(){"use strict";var t={d:function(n,i){for(var e in i)t.o(i,e)&&!t.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:i[e]})},o:function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},r:function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},n={};function i(t,n,i,e){return Math.floor((t*i+n*e)/(i+e))}function e(t){const n=s(t);let i=o(t);return n===i&&(i=0),Math.random()*(n-i)+i}function o(t){return"number"==typeof t?t:t.min}function s(t){return"number"==typeof t?t:t.max}function r(t,n){if(t===n||void 0===n&&"number"==typeof t)return t;const i=o(t),e=s(t);return void 0!==n?{min:Math.min(i,n),max:Math.max(e,n)}:r(i,e)}function a(t,n){const i=t.x-n.x,e=t.y-n.y;return{dx:i,dy:e,distance:Math.sqrt(i*i+e*e)}}function l(t,n){return a(t,n).distance}function c(t,n,i=!0){return t[void 0!==n&&i?n%t.length:function(t){return Math.floor(Math.random()*t.length)}(t)]}function u(t,n,i){let e=i;return e<0&&(e+=1),e>1&&(e-=1),e<1/6?t+6*(n-t)*e:e<.5?n:e<2/3?t+(n-t)*(2/3-e)*6:t}function d(t){if(t.startsWith("rgb")){const n=/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([\d.]+)\s*)?\)/i.exec(t);return n?{a:n.length>4?parseFloat(n[5]):1,b:parseInt(n[3],10),g:parseInt(n[2],10),r:parseInt(n[1],10)}:void 0}if(t.startsWith("hsl")){const n=/hsla?\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i.exec(t);return n?function(t){const n=f(t);return{a:t.a,b:n.b,g:n.g,r:n.r}}({a:n.length>4?parseFloat(n[5]):1,h:parseInt(n[1],10),l:parseInt(n[3],10),s:parseInt(n[2],10)}):void 0}if(t.startsWith("hsv")){const n=/hsva?\(\s*(\d+)°\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i.exec(t);return n?function(t){const n=p(t);return{a:t.a,b:n.b,g:n.g,r:n.r}}({a:n.length>4?parseFloat(n[5]):1,h:parseInt(n[1],10),s:parseInt(n[2],10),v:parseInt(n[3],10)}):void 0}{const n=/^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i,i=t.replace(n,((t,n,i,e,o)=>n+n+i+i+e+e+(void 0!==o?o+o:""))),e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i.exec(i);return e?{a:void 0!==e[4]?parseInt(e[4],16)/255:1,b:parseInt(e[3],16),g:parseInt(e[2],16),r:parseInt(e[1],16)}:void 0}}function h(t,n,i=!0){var e,o,s;if(void 0===t)return;const r="string"==typeof t?{value:t}:t;let a;if("string"==typeof r.value)a=r.value===M.randomColorValue?y():function(t){return d(t)}(r.value);else if(r.value instanceof Array){a=h({value:c(r.value,n,i)})}else{const t=r.value,n=null!==(e=t.rgb)&&void 0!==e?e:r.value;if(void 0!==n.r)a=n;else{const n=null!==(o=t.hsl)&&void 0!==o?o:r.value;if(void 0!==n.h&&void 0!==n.l)a=f(n);else{const n=null!==(s=t.hsv)&&void 0!==s?s:r.value;void 0!==n.h&&void 0!==n.v&&(a=p(n))}}}return a}function f(t){const n={b:0,g:0,r:0},i={h:t.h/360,l:t.l/100,s:t.s/100};if(0===i.s)n.b=i.l,n.g=i.l,n.r=i.l;else{const t=i.l<.5?i.l*(1+i.s):i.l+i.s-i.l*i.s,e=2*i.l-t;n.r=u(e,t,i.h+1/3),n.g=u(e,t,i.h),n.b=u(e,t,i.h-1/3)}return n.r=Math.floor(255*n.r),n.g=Math.floor(255*n.g),n.b=Math.floor(255*n.b),n}function p(t){const n={b:0,g:0,r:0},i=t.h/60,e=t.s/100,o=t.v/100,s=o*e,r=s*(1-Math.abs(i%2-1));let a;if(i>=0&&i<=1?a={r:s,g:r,b:0}:i>1&&i<=2?a={r:r,g:s,b:0}:i>2&&i<=3?a={r:0,g:s,b:r}:i>3&&i<=4?a={r:0,g:r,b:s}:i>4&&i<=5?a={r:r,g:0,b:s}:i>5&&i<=6&&(a={r:s,g:0,b:r}),a){const t=o-s;n.r=Math.floor(255*(a.r+t)),n.g=Math.floor(255*(a.g+t)),n.b=Math.floor(255*(a.b+t))}return n}function y(t){const n=null!=t?t:0;return{b:Math.floor(e(r(n,256))),g:Math.floor(e(r(n,256))),r:Math.floor(e(r(n,256)))}}function g(t,n){return`rgba(${t.r}, ${t.g}, ${t.b}, ${null!=n?n:1})`}function v(t,n,e){var o,s;if(e===M.randomColorValue)return y();if("mid"!==e)return e;{const e=null!==(o=t.getFillColor())&&void 0!==o?o:t.getStrokeColor(),r=null!==(s=null==n?void 0:n.getFillColor())&&void 0!==s?s:null==n?void 0:n.getStrokeColor();if(e&&r&&n)return function(t,n,e,o){let s=t,r=n;return void 0===s.r&&(s=f(t)),void 0===r.r&&(r=f(n)),{b:i(s.b,r.b,e,o),g:i(s.g,r.g,e,o),r:i(s.r,r.r,e,o)}}(e,r,t.getRadius(),n.getRadius());{const t=null!=e?e:r;if(t)return f(t)}}}function x(t,n,i){t.beginPath(),t.moveTo(n.x,n.y),t.lineTo(i.x,i.y),t.closePath()}t.r(n),t.d(n,{loadParticlesLinksInteraction:function(){return I}});class b{constructor(t,n){this.position={x:t,y:n}}}class k extends b{constructor(t,n,i){super(t,n),this.radius=i}contains(t){return l(t,this.position)<=this.radius}intersects(t){const n=t,i=t,e=this.position,o=t.position,s=Math.abs(o.x-e.x),r=Math.abs(o.y-e.y),a=this.radius;if(void 0!==i.radius){return a+i.radius>Math.sqrt(s*s+r+r)}if(void 0!==n.size){const t=n.size.width,i=n.size.height,e=Math.pow(s-t,2)+Math.pow(r-i,2);return!(s>a+t||r>a+i)&&(s<=t||r<=i||e<=a*a)}return!1}}class w extends b{constructor(t,n,i,e){super(t,n),this.size={height:e,width:i}}contains(t){const n=this.size.width,i=this.size.height,e=this.position;return t.x>=e.x&&t.x<=e.x+n&&t.y>=e.y&&t.y<=e.y+i}intersects(t){const n=t,i=t,e=this.size.width,o=this.size.height,s=this.position,r=t.position;if(void 0!==i.radius)return i.intersects(this);if(void 0!==n.size){const t=n.size,i=t.width,a=t.height;return r.x<s.x+e&&r.x+i>s.x&&r.y<s.y+o&&r.y+a>s.y}return!1}}class m extends k{constructor(t,n,i,e){super(t,n,i),this.canvasSize=e,this.canvasSize={height:e.height,width:e.width}}contains(t){if(super.contains(t))return!0;const n={x:t.x-this.canvasSize.width,y:t.y};if(super.contains(n))return!0;const i={x:t.x-this.canvasSize.width,y:t.y-this.canvasSize.height};if(super.contains(i))return!0;const e={x:t.x,y:t.y-this.canvasSize.height};return super.contains(e)}intersects(t){if(super.intersects(t))return!0;const n=t,i=t,e={x:t.position.x-this.canvasSize.width,y:t.position.y-this.canvasSize.height};if(void 0!==i.radius){const t=new k(e.x,e.y,2*i.radius);return super.intersects(t)}if(void 0!==n.size){const t=new w(e.x,e.y,2*n.size.width,2*n.size.height);return super.intersects(t)}return!1}}class M{}M.generatedAttribute="generated",M.randomColorValue="random",M.midColorValue="mid",M.touchEndEvent="touchend",M.mouseDownEvent="mousedown",M.mouseUpEvent="mouseup",M.mouseMoveEvent="mousemove",M.touchStartEvent="touchstart",M.touchMoveEvent="touchmove",M.mouseLeaveEvent="mouseleave",M.mouseOutEvent="mouseout",M.touchCancelEvent="touchcancel",M.resizeEvent="resize",M.visibilityChangeEvent="visibilitychange",M.noPolygonDataLoaded="No polygon data loaded.",M.noPolygonFound="No polygon found, you need to specify SVG url in config.";new Map,new Map,new Map,new Map,new Map,new Map,new Map;new WeakSet;function C(t,n,i,e,o){let s=l(t,n);if(!o||s<=i)return s;if(s=l(t,{x:n.x-e.width,y:n.y}),s<=i)return s;if(s=l(t,{x:n.x-e.width,y:n.y-e.height}),s<=i)return s;return s=l(t,{x:n.x,y:n.y-e.height}),s}class z extends class{constructor(t){this.container=t,this.type=1}}{constructor(t){super(t)}isEnabled(t){return t.options.links.enable}reset(){}interact(t){var n;t.links=[];const i=t.getPosition(),e=this.container,o=e.canvas.size;if(i.x<0||i.y<0||i.x>o.width||i.y>o.height)return;const s=t.options.links,r=s.opacity,a=null!==(n=t.retina.linksDistance)&&void 0!==n?n:e.retina.linksDistance,l=s.warp,c=l?new m(i.x,i.y,a,o):new k(i.x,i.y,a),u=e.particles.quadTree.query(c);for(const n of u){const e=n.options.links;if(t===n||!e.enable||s.id!==e.id||n.spawning||n.destroyed||-1!==t.links.map((t=>t.destination)).indexOf(n)||-1!==n.links.map((t=>t.destination)).indexOf(t))continue;const c=n.getPosition();if(c.x<0||c.y<0||c.x>o.width||c.y>o.height)continue;const u=C(i,c,a,o,l&&e.warp);if(u>a)return;const d=(1-u/a)*r;this.setColor(t),t.links.push({destination:n,opacity:d})}}setColor(t){const n=this.container,i=t.options.links;let e=void 0===i.id?n.particles.linksColor:n.particles.linksColors.get(i.id);if(!e){e=function(t,n,i){const e="string"==typeof t?t:t.value;return e===M.randomColorValue?i?h({value:e}):n?M.randomColorValue:M.midColorValue:h({value:e})}(i.color,i.blink,i.consent),void 0===i.id?n.particles.linksColor=e:n.particles.linksColors.set(i.id,e)}}}class P{constructor(t){this.container=t}particleCreated(t){t.links=[]}particleDestroyed(t){t.links=[]}drawParticle(t,n){const i=n,e=this.container,o=e.particles,s=n.options;if(i.links.length>0){t.save();const n=i.links.filter((t=>e.particles.getLinkFrequency(i,t.destination)<=s.links.frequency));for(const t of n){const r=t.destination;if(s.links.triangles.enable){const a=n.map((t=>t.destination)),l=r.links.filter((t=>e.particles.getLinkFrequency(r,t.destination)<=r.options.links.frequency&&a.indexOf(t.destination)>=0));if(l.length)for(const n of l){const e=n.destination;o.getTriangleFrequency(i,r,e)>s.links.triangles.frequency||this.drawLinkTriangle(i,t,n)}}t.opacity>0&&e.retina.linksWidth>0&&this.drawLinkLine(i,t)}t.restore()}}drawLinkTriangle(t,n,i){var e;const o=this.container,s=o.actualOptions,r=n.destination,a=i.destination,c=t.options.links.triangles,u=null!==(e=c.opacity)&&void 0!==e?e:(n.opacity+i.opacity)/2;if(u<=0)return;const d=t.getPosition(),f=r.getPosition(),p=a.getPosition();o.canvas.draw((n=>{if(l(d,f)>o.retina.linksDistance||l(p,f)>o.retina.linksDistance||l(p,d)>o.retina.linksDistance)return;let i=h(c.color);if(!i){const n=t.options.links,e=void 0!==n.id?o.particles.linksColors.get(n.id):o.particles.linksColor;i=v(t,r,e)}i&&function(t,n,i,e,o,s,r,a){!function(t,n,i,e){t.beginPath(),t.moveTo(n.x,n.y),t.lineTo(i.x,i.y),t.lineTo(e.x,e.y),t.closePath()}(t,n,i,e),o&&(t.globalCompositeOperation=s),t.fillStyle=g(r,a),t.fill()}(n,d,f,p,s.backgroundMask.enable,s.backgroundMask.composite,i,u)}))}drawLinkLine(t,n){const i=this.container,e=i.actualOptions,o=n.destination;let s=n.opacity;const r=t.getPosition(),c=o.getPosition();i.canvas.draw((n=>{var u,d;let f;const p=t.options.twinkle.lines;if(p.enable){const t=p.frequency,n=h(p.color);Math.random()<t&&void 0!==n&&(f=n,s=p.opacity)}if(!f){const n=t.options.links,e=void 0!==n.id?i.particles.linksColors.get(n.id):i.particles.linksColor;f=v(t,o,e)}if(!f)return;const y=null!==(u=t.retina.linksWidth)&&void 0!==u?u:i.retina.linksWidth,b=null!==(d=t.retina.linksDistance)&&void 0!==d?d:i.retina.linksDistance;!function(t,n,i,e,o,s,r,c,u,d,f,p){let y=!1;if(l(i,e)<=o)x(t,i,e),y=!0;else if(r){let n,r;const l=a(i,{x:e.x-s.width,y:e.y});if(l.distance<=o){const t=i.y-l.dy/l.dx*i.x;n={x:0,y:t},r={x:s.width,y:t}}else{const t=a(i,{x:e.x,y:e.y-s.height});if(t.distance<=o){const e=-(i.y-t.dy/t.dx*i.x)/(t.dy/t.dx);n={x:e,y:0},r={x:e,y:s.height}}else{const t=a(i,{x:e.x-s.width,y:e.y-s.height});if(t.distance<=o){const e=i.y-t.dy/t.dx*i.x;n={x:-e/(t.dy/t.dx),y:e},r={x:n.x+s.width,y:n.y+s.height}}}}n&&r&&(x(t,i,n),x(t,e,r),y=!0)}if(y){if(t.lineWidth=n,c&&(t.globalCompositeOperation=u),t.strokeStyle=g(d,f),p.enable){const n=h(p.color);n&&(t.shadowBlur=p.blur,t.shadowColor=g(n))}t.stroke()}}(n,y,r,c,b,i.canvas.size,t.options.links.warp,e.backgroundMask.enable,e.backgroundMask.composite,f,s,t.options.links.shadow)}))}}class S{constructor(){this.id="links"}getPlugin(t){return new P(t)}needsPlugin(){return!0}loadOptions(){}}async function I(t){await async function(t){await t.addInteractor("particlesLinks",(t=>new z(t)))}(t),await async function(t){const n=new S;await t.addPlugin(n)}(t)}return n}()}));
1
+ /*! tsParticles v1.40.0 by Matteo Bruni */
2
+ !function(t,n){if("object"==typeof exports&&"object"==typeof module)module.exports=n();else if("function"==typeof define&&define.amd)define([],n);else{var i=n();for(var e in i)("object"==typeof exports?exports:t)[e]=i[e]}}(window,(function(){return function(){"use strict";var t={d:function(n,i){for(var e in i)t.o(i,e)&&!t.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:i[e]})},o:function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},r:function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},n={};function i(t,n,i,e){return Math.floor((t*i+n*e)/(i+e))}function e(t){const n=s(t);let i=o(t);return n===i&&(i=0),Math.random()*(n-i)+i}function o(t){return"number"==typeof t?t:t.min}function s(t){return"number"==typeof t?t:t.max}function r(t,n){if(t===n||void 0===n&&"number"==typeof t)return t;const i=o(t),e=s(t);return void 0!==n?{min:Math.min(i,n),max:Math.max(e,n)}:r(i,e)}function a(t,n){const i=t.x-n.x,e=t.y-n.y;return{dx:i,dy:e,distance:Math.sqrt(i*i+e*e)}}function l(t,n){return a(t,n).distance}function c(t,n,i=!0){return t[void 0!==n&&i?n%t.length:function(t){return Math.floor(Math.random()*t.length)}(t)]}function u(t,n,i){let e=i;return e<0&&(e+=1),e>1&&(e-=1),e<1/6?t+6*(n-t)*e:e<.5?n:e<2/3?t+(n-t)*(2/3-e)*6:t}function d(t){if(t.startsWith("rgb")){const n=/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([\d.]+)\s*)?\)/i.exec(t);return n?{a:n.length>4?parseFloat(n[5]):1,b:parseInt(n[3],10),g:parseInt(n[2],10),r:parseInt(n[1],10)}:void 0}if(t.startsWith("hsl")){const n=/hsla?\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i.exec(t);return n?function(t){const n=f(t);return{a:t.a,b:n.b,g:n.g,r:n.r}}({a:n.length>4?parseFloat(n[5]):1,h:parseInt(n[1],10),l:parseInt(n[3],10),s:parseInt(n[2],10)}):void 0}if(t.startsWith("hsv")){const n=/hsva?\(\s*(\d+)°\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i.exec(t);return n?function(t){const n=p(t);return{a:t.a,b:n.b,g:n.g,r:n.r}}({a:n.length>4?parseFloat(n[5]):1,h:parseInt(n[1],10),s:parseInt(n[2],10),v:parseInt(n[3],10)}):void 0}{const n=/^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i,i=t.replace(n,((t,n,i,e,o)=>n+n+i+i+e+e+(void 0!==o?o+o:""))),e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i.exec(i);return e?{a:void 0!==e[4]?parseInt(e[4],16)/255:1,b:parseInt(e[3],16),g:parseInt(e[2],16),r:parseInt(e[1],16)}:void 0}}function h(t,n,i=!0){var e,o,s;if(void 0===t)return;const r="string"==typeof t?{value:t}:t;let a;if("string"==typeof r.value)a=r.value===M.randomColorValue?y():function(t){return d(t)}(r.value);else if(r.value instanceof Array){a=h({value:c(r.value,n,i)})}else{const t=r.value,n=null!==(e=t.rgb)&&void 0!==e?e:r.value;if(void 0!==n.r)a=n;else{const n=null!==(o=t.hsl)&&void 0!==o?o:r.value;if(void 0!==n.h&&void 0!==n.l)a=f(n);else{const n=null!==(s=t.hsv)&&void 0!==s?s:r.value;void 0!==n.h&&void 0!==n.v&&(a=p(n))}}}return a}function f(t){const n={b:0,g:0,r:0},i={h:t.h/360,l:t.l/100,s:t.s/100};if(0===i.s)n.b=i.l,n.g=i.l,n.r=i.l;else{const t=i.l<.5?i.l*(1+i.s):i.l+i.s-i.l*i.s,e=2*i.l-t;n.r=u(e,t,i.h+1/3),n.g=u(e,t,i.h),n.b=u(e,t,i.h-1/3)}return n.r=Math.floor(255*n.r),n.g=Math.floor(255*n.g),n.b=Math.floor(255*n.b),n}function p(t){const n={b:0,g:0,r:0},i=t.h/60,e=t.s/100,o=t.v/100,s=o*e,r=s*(1-Math.abs(i%2-1));let a;if(i>=0&&i<=1?a={r:s,g:r,b:0}:i>1&&i<=2?a={r:r,g:s,b:0}:i>2&&i<=3?a={r:0,g:s,b:r}:i>3&&i<=4?a={r:0,g:r,b:s}:i>4&&i<=5?a={r:r,g:0,b:s}:i>5&&i<=6&&(a={r:s,g:0,b:r}),a){const t=o-s;n.r=Math.floor(255*(a.r+t)),n.g=Math.floor(255*(a.g+t)),n.b=Math.floor(255*(a.b+t))}return n}function y(t){const n=null!=t?t:0;return{b:Math.floor(e(r(n,256))),g:Math.floor(e(r(n,256))),r:Math.floor(e(r(n,256)))}}function g(t,n){return`rgba(${t.r}, ${t.g}, ${t.b}, ${null!=n?n:1})`}function v(t,n,e){var o,s;if(e===M.randomColorValue)return y();if("mid"!==e)return e;{const e=null!==(o=t.getFillColor())&&void 0!==o?o:t.getStrokeColor(),r=null!==(s=null==n?void 0:n.getFillColor())&&void 0!==s?s:null==n?void 0:n.getStrokeColor();if(e&&r&&n)return function(t,n,e,o){let s=t,r=n;return void 0===s.r&&(s=f(t)),void 0===r.r&&(r=f(n)),{b:i(s.b,r.b,e,o),g:i(s.g,r.g,e,o),r:i(s.r,r.r,e,o)}}(e,r,t.getRadius(),n.getRadius());{const t=null!=e?e:r;if(t)return f(t)}}}function x(t,n,i){t.beginPath(),t.moveTo(n.x,n.y),t.lineTo(i.x,i.y),t.closePath()}t.r(n),t.d(n,{loadParticlesLinksInteraction:function(){return I}});class k{constructor(t,n){this.position={x:t,y:n}}}class b extends k{constructor(t,n,i){super(t,n),this.radius=i}contains(t){return l(t,this.position)<=this.radius}intersects(t){const n=t,i=t,e=this.position,o=t.position,s=Math.abs(o.x-e.x),r=Math.abs(o.y-e.y),a=this.radius;if(void 0!==i.radius){return a+i.radius>Math.sqrt(s*s+r+r)}if(void 0!==n.size){const t=n.size.width,i=n.size.height,e=Math.pow(s-t,2)+Math.pow(r-i,2);return!(s>a+t||r>a+i)&&(s<=t||r<=i||e<=a*a)}return!1}}class w extends k{constructor(t,n,i,e){super(t,n),this.size={height:e,width:i}}contains(t){const n=this.size.width,i=this.size.height,e=this.position;return t.x>=e.x&&t.x<=e.x+n&&t.y>=e.y&&t.y<=e.y+i}intersects(t){const n=t,i=t,e=this.size.width,o=this.size.height,s=this.position,r=t.position;if(void 0!==i.radius)return i.intersects(this);if(void 0!==n.size){const t=n.size,i=t.width,a=t.height;return r.x<s.x+e&&r.x+i>s.x&&r.y<s.y+o&&r.y+a>s.y}return!1}}class m extends b{constructor(t,n,i,e){super(t,n,i),this.canvasSize=e,this.canvasSize={height:e.height,width:e.width}}contains(t){if(super.contains(t))return!0;const n={x:t.x-this.canvasSize.width,y:t.y};if(super.contains(n))return!0;const i={x:t.x-this.canvasSize.width,y:t.y-this.canvasSize.height};if(super.contains(i))return!0;const e={x:t.x,y:t.y-this.canvasSize.height};return super.contains(e)}intersects(t){if(super.intersects(t))return!0;const n=t,i=t,e={x:t.position.x-this.canvasSize.width,y:t.position.y-this.canvasSize.height};if(void 0!==i.radius){const t=new b(e.x,e.y,2*i.radius);return super.intersects(t)}if(void 0!==n.size){const t=new w(e.x,e.y,2*n.size.width,2*n.size.height);return super.intersects(t)}return!1}}class M{}M.generatedAttribute="generated",M.randomColorValue="random",M.midColorValue="mid",M.touchEndEvent="touchend",M.mouseDownEvent="mousedown",M.mouseUpEvent="mouseup",M.mouseMoveEvent="mousemove",M.touchStartEvent="touchstart",M.touchMoveEvent="touchmove",M.mouseLeaveEvent="mouseleave",M.mouseOutEvent="mouseout",M.touchCancelEvent="touchcancel",M.resizeEvent="resize",M.visibilityChangeEvent="visibilitychange",M.noPolygonDataLoaded="No polygon data loaded.",M.noPolygonFound="No polygon found, you need to specify SVG url in config.";new WeakMap;new WeakMap;new WeakMap,new WeakSet;new WeakMap;new WeakMap;new WeakMap;function C(t,n,i,e,o){let s=l(t,n);if(!o||s<=i)return s;if(s=l(t,{x:n.x-e.width,y:n.y}),s<=i)return s;if(s=l(t,{x:n.x-e.width,y:n.y-e.height}),s<=i)return s;return s=l(t,{x:n.x,y:n.y-e.height}),s}new WeakMap;class z extends class{constructor(t){this.container=t,this.type=1}}{constructor(t){super(t)}isEnabled(t){return t.options.links.enable}reset(){}interact(t){var n;t.links=[];const i=t.getPosition(),e=this.container,o=e.canvas.size;if(i.x<0||i.y<0||i.x>o.width||i.y>o.height)return;const s=t.options.links,r=s.opacity,a=null!==(n=t.retina.linksDistance)&&void 0!==n?n:e.retina.linksDistance,l=s.warp,c=l?new m(i.x,i.y,a,o):new b(i.x,i.y,a),u=e.particles.quadTree.query(c);for(const n of u){const e=n.options.links;if(t===n||!e.enable||s.id!==e.id||n.spawning||n.destroyed||-1!==t.links.map((t=>t.destination)).indexOf(n)||-1!==n.links.map((t=>t.destination)).indexOf(t))continue;const c=n.getPosition();if(c.x<0||c.y<0||c.x>o.width||c.y>o.height)continue;const u=C(i,c,a,o,l&&e.warp);if(u>a)return;const d=(1-u/a)*r;this.setColor(t),t.links.push({destination:n,opacity:d})}}setColor(t){const n=this.container,i=t.options.links;let e=void 0===i.id?n.particles.linksColor:n.particles.linksColors.get(i.id);if(!e){e=function(t,n,i){const e="string"==typeof t?t:t.value;return e===M.randomColorValue?i?h({value:e}):n?M.randomColorValue:M.midColorValue:h({value:e})}(i.color,i.blink,i.consent),void 0===i.id?n.particles.linksColor=e:n.particles.linksColors.set(i.id,e)}}}class P{constructor(t){this.container=t}particleCreated(t){t.links=[]}particleDestroyed(t){t.links=[]}drawParticle(t,n){const i=n,e=this.container,o=e.particles,s=n.options;if(i.links.length>0){t.save();const n=i.links.filter((t=>e.particles.getLinkFrequency(i,t.destination)<=s.links.frequency));for(const t of n){const r=t.destination;if(s.links.triangles.enable){const a=n.map((t=>t.destination)),l=r.links.filter((t=>e.particles.getLinkFrequency(r,t.destination)<=r.options.links.frequency&&a.indexOf(t.destination)>=0));if(l.length)for(const n of l){const e=n.destination;o.getTriangleFrequency(i,r,e)>s.links.triangles.frequency||this.drawLinkTriangle(i,t,n)}}t.opacity>0&&e.retina.linksWidth>0&&this.drawLinkLine(i,t)}t.restore()}}drawLinkTriangle(t,n,i){var e;const o=this.container,s=o.actualOptions,r=n.destination,a=i.destination,c=t.options.links.triangles,u=null!==(e=c.opacity)&&void 0!==e?e:(n.opacity+i.opacity)/2;if(u<=0)return;const d=t.getPosition(),f=r.getPosition(),p=a.getPosition();o.canvas.draw((n=>{if(l(d,f)>o.retina.linksDistance||l(p,f)>o.retina.linksDistance||l(p,d)>o.retina.linksDistance)return;let i=h(c.color);if(!i){const n=t.options.links,e=void 0!==n.id?o.particles.linksColors.get(n.id):o.particles.linksColor;i=v(t,r,e)}i&&function(t,n,i,e,o,s,r,a){!function(t,n,i,e){t.beginPath(),t.moveTo(n.x,n.y),t.lineTo(i.x,i.y),t.lineTo(e.x,e.y),t.closePath()}(t,n,i,e),o&&(t.globalCompositeOperation=s),t.fillStyle=g(r,a),t.fill()}(n,d,f,p,s.backgroundMask.enable,s.backgroundMask.composite,i,u)}))}drawLinkLine(t,n){const i=this.container,e=i.actualOptions,o=n.destination;let s=n.opacity;const r=t.getPosition(),c=o.getPosition();i.canvas.draw((n=>{var u,d;let f;const p=t.options.twinkle.lines;if(p.enable){const t=p.frequency,n=h(p.color);Math.random()<t&&void 0!==n&&(f=n,s=p.opacity)}if(!f){const n=t.options.links,e=void 0!==n.id?i.particles.linksColors.get(n.id):i.particles.linksColor;f=v(t,o,e)}if(!f)return;const y=null!==(u=t.retina.linksWidth)&&void 0!==u?u:i.retina.linksWidth,k=null!==(d=t.retina.linksDistance)&&void 0!==d?d:i.retina.linksDistance;!function(t,n,i,e,o,s,r,c,u,d,f,p){let y=!1;if(l(i,e)<=o)x(t,i,e),y=!0;else if(r){let n,r;const l=a(i,{x:e.x-s.width,y:e.y});if(l.distance<=o){const t=i.y-l.dy/l.dx*i.x;n={x:0,y:t},r={x:s.width,y:t}}else{const t=a(i,{x:e.x,y:e.y-s.height});if(t.distance<=o){const e=-(i.y-t.dy/t.dx*i.x)/(t.dy/t.dx);n={x:e,y:0},r={x:e,y:s.height}}else{const t=a(i,{x:e.x-s.width,y:e.y-s.height});if(t.distance<=o){const e=i.y-t.dy/t.dx*i.x;n={x:-e/(t.dy/t.dx),y:e},r={x:n.x+s.width,y:n.y+s.height}}}}n&&r&&(x(t,i,n),x(t,e,r),y=!0)}if(y){if(t.lineWidth=n,c&&(t.globalCompositeOperation=u),t.strokeStyle=g(d,f),p.enable){const n=h(p.color);n&&(t.shadowBlur=p.blur,t.shadowColor=g(n))}t.stroke()}}(n,y,r,c,k,i.canvas.size,t.options.links.warp,e.backgroundMask.enable,e.backgroundMask.composite,f,s,t.options.links.shadow)}))}}class S{constructor(){this.id="links"}getPlugin(t){return new P(t)}needsPlugin(){return!0}loadOptions(){}}async function I(t){await async function(t){await t.addInteractor("particlesLinks",(t=>new z(t)))}(t),await async function(t){const n=new S;await t.addPlugin(n)}(t)}return n}()}));