p5bezier 0.7.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -138,7 +138,7 @@ The call of `p5bezier.new` will not draw the curve on canvas automatically. To d
138
138
 
139
139
  ![cover](img/example.png)
140
140
 
141
- Check out the examples page and their [source code](https://github.com/peilingjiang/p5.bezier/tree/main/examples/sketch.js).
141
+ Check out the [examples page](https://p5bezier.netlify.app) and their [source code](https://github.com/peilingjiang/p5.bezier/tree/main/examples/).
142
142
 
143
143
  ### Projects and Demos
144
144
 
@@ -1,3 +1,3 @@
1
1
  /*! For license information please see p5.bezier.min.js.LICENSE.txt */
2
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.initBezier=e():t.initBezier=e()}(this,(()=>(()=>{"use strict";var t={d:(e,n)=>{for(var i in n)t.o(n,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:n[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};t.d(e,{default:()=>m});var n={1:.1,2:.02,3:.001,4:5e-4,5:2e-4},i=[1],o={};function r(t){return i[t]}function s(t,e){return 0===e||e===t?1:o[t][e]}!function(t){for(var e=i.length;e<=t;e++)i[e]=e*i[e-1]}(161),function(t){for(var e=2;e<=t;e++){o[e]={};for(var n=1;n<e;n++)o[e][n]=r(e)/(r(n)*r(e-n))}}(161);var h=function(t,e,n){if(n||2===arguments.length)for(var i,o=0,r=e.length;o<r;o++)!i&&o in e||(i||(i=Array.prototype.slice.call(e,0,o)),i[o]=e[o]);return t.concat(i||Array.prototype.slice.call(e))};function a(t,e){return"WebGLRenderingContext"===t.constructor.name||e?3:2}function c(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t.length;if(4===n){var i=t[0]-t[2],o=t[1]-t[3];return Math.sqrt(i*i+o*o)}if(6===n){i=t[0]-t[3],o=t[1]-t[4];var r=t[2]-t[5];return Math.sqrt(i*i+o*o+r*r)}return 0}function u(t){t.canvas._doFill&&t.ctx.fill(),t.canvas._doStroke&&t.ctx.stroke()}var l=function(){function t(t){this.m=Math.pow(2,31)-1,this.a=1103515245,this.c=12345,this.state=t}return t.prototype.r=function(){return this.state=(this.a*this.state+this.c)%this.m,this.state/this.m},t.prototype.next=function(t,e){return Math.floor(this.r()*(e-t+1))+t},t}();function p(t,e){void 0===e&&(e=!1);var n=160-(e?3:0);if(t.length<=n)return f(t);var i=t.length-n,o=new l(1234),r=new Set;return h([],new Array(i),!0).map((function(t,e){for(var i=o.next(5+e,n-5+e);r.has(i);)i=o.next(5+e,n-5+e);r.add(i)})),f(t.filter((function(t,e){return!r.has(e)})))}function f(t){return t.map((function(t){return t.slice()}))}function v(t){var e=t.length;if(0===e)return[];var n=t[0],i=t[e-1];if(1===e)return f([n]);var o=t[1],r=t[e-2];return f([[2*i[0]-r[0],2*i[1]-r[1]],[2*n[0]-o[0],2*n[1]-o[1]],n])}var d=function(t,e,n){if(n||2===arguments.length)for(var i,o=0,r=e.length;o<r;o++)!i&&o in e||(i||(i=Array.prototype.slice.call(e,0,o)),i[o]=e[o]);return t.concat(i||Array.prototype.slice.call(e))};function b(t,e,n,i){for(var o=new Array(i).fill(0),r=1-n,h=0;h<=e;h++)for(var a=s(e,h)*Math.pow(r,e-h)*Math.pow(n,h),c=0;c<i;c++)o[c]+=a*t[h][c];return o}window.console.log("[p5.bezier] ".concat("0.7.0"));var x=function(){function t(t){if(this.b={canvas:null,ctx:null,dimension:2,useP5:!0,beginPath:function(){},moveTo:function(){},lineTo:function(){},closePath:function(){}},this.b.canvas=t,this.b.ctx=this.b.canvas.drawingContext,"undefined"!=typeof p5&&t instanceof p5.Graphics)this.b.useP5=!0,this.b.dimension=a(this.b.ctx,!1);else{if(!("undefined"!=typeof p5&&t instanceof p5.Renderer||t.drawingContext))throw new Error("[p5.bezier] Canvas is not supported");this.b.useP5=!1,"undefined"!=typeof p5&&("undefined"==typeof p5||t instanceof p5.Renderer)||window.console.warn("[p5.bezier] Support beyond p5.js is not tested"),this.b.dimension=a(this.b.ctx,t.isP3D)}var e;(e=this.b).useP5?(e.beginPath=e.canvas.beginShape,e.moveTo=e.canvas.vertex,e.lineTo=e.canvas.vertex,e.closePath=e.canvas.endShape):e.ctx instanceof WebGLRenderingContext?(e.beginPath=function(){},e.moveTo=function(t,n,i){return void 0===i&&(i=0),e.ctx.vertexAttrib3f(0,t,n,i)},e.lineTo=function(t,n,i){return void 0===i&&(i=0),e.ctx.vertexAttrib3f(0,t,n,i)},e.closePath=function(){}):(e.beginPath=e.ctx.beginPath.bind(e.ctx),e.moveTo=e.ctx.moveTo.bind(e.ctx),e.lineTo=e.ctx.lineTo.bind(e.ctx),e.closePath=e.ctx.closePath.bind(e.ctx))}return t.prototype.draw=function(t,e,i){var o,r;void 0===e&&(e="OPEN"),void 0===i&&(i=3);var s="CLOSE"===e?d(d([],p(t,!0),!0),v(t),!0):p(t);return this.b.beginPath(),(o=this.b).moveTo.apply(o,s[0]),function(t,e,i){for(var o=e.length-1,r=n[i],s=0;s<=1;s+=r){var h=b(e,o,s,t.dimension);t.lineTo.apply(t,h)}}(this.b,s,i),(r=this.b).lineTo.apply(r,s[s.length-1]),this.b.useP5?this.b.closePath(e):"CLOSE"===e&&this.b.closePath(),u(this.b),s},t.prototype.new=function(t,e,i){return void 0===e&&(e="OPEN"),void 0===i&&(i=3),new y(t,e,n[i],this.b)},t}();var y=function(){function t(t,e,n,i,o){var r;void 0===o&&(o=null),this.controlPoints=p(t,"CLOSE"===e),"CLOSE"===e?((r=this.controlPoints).push.apply(r,v(this.controlPoints)),this.closeType="CLOSE"):this.closeType="OPEN",this.dimension=i.dimension,this.increment=n,this.vertexList=[],this.p=this.controlPoints.length,this.n=this.p-1,this.b=i,null===o?this._buildVertexList():this.vertexList=d([],o,!0)}return t.prototype._buildVertexList=function(){this.vertexList=[];for(var t=0;t<=1;t+=this.increment){var e=b(this.controlPoints,this.n,t,this.dimension);this.vertexList.push(e)}return this._addVertex(this.controlPoints[this.controlPoints.length-1]),this.dimension=this.vertexList[0].length,this.vertexList},t.prototype._addVertex=function(t){var e;(e=this.b).lineTo.apply(e,t)},t.prototype._distVertex=function(t,e){return 3===this.dimension&&3===t.length&&3===e.length?c(t[0],t[1],t[2],e[0],e[1],e[2]):2===this.dimension?c(t[0],t[1],e[0],e[1]):0},t.prototype.draw=function(t){t?this._dashedCurve(t):this._solidCurve()},t.prototype._solidCurve=function(){var t=this;this.b.beginPath(),this.vertexList.map((function(e){return t._addVertex(e)})),"CLOSE"===this.closeType&&this.b.closePath(),this.b.useP5?this.b.closePath(this.closeType):"CLOSE"===this.closeType&&this.b.closePath(),u(this.b)},t.prototype._dashedCurve=function(t){var e,n,i,o,r;this.increment>.001&&(this.increment=.001,window.console.warn("[p5.bezier] Smoothness set to 3 for a dashed curve"));var s,h,a,c,l,p=t.map(Math.abs),f=p[0],v=p[1],d=!0,b=this.vertexList[0],x=1,y=b,m=0,P=f;for(this.b.ctx.save(),this.b.ctx.fillStyle="rgba(0, 0, 0, 0)",this.b.beginPath(),(e=this.b).moveTo.apply(e,b);x<this.vertexList.length;){var g=this.vertexList[x];for(m=this._distVertex(b,g);m>=P;)h=g,a=P/m,c=void 0,l=void 0,c=(s=y).length,l=h.length,y=2===c&&2===l?[s[0]+(h[0]-s[0])*a,s[1]+(h[1]-s[1])*a]:3===c&&3===l?[s[0]+(h[0]-s[0])*a,s[1]+(h[1]-s[1])*a,s[2]+(h[2]-s[2])*a]:h,d?(n=this.b).lineTo.apply(n,y):(i=this.b).moveTo.apply(i,y),m-=P,P=(d=!d)?f:v;d?(o=this.b).lineTo.apply(o,g):(r=this.b).moveTo.apply(r,g),P-=this._distVertex(y,g),y=b=g,x++}u(this.b),this.b.ctx.restore()},t.prototype.update=function(t){if(t.length!==this.controlPoints.length)throw new Error("[p5.bezier] The number of control points changed");this.controlPoints.every((function(e,n){return e===t[n]}))||(this.controlPoints=t,this._buildVertexList())},t.prototype.move=function(e,n,i,o,r){if(void 0===i&&(i=null),void 0===o&&(o=!0),null===i&&3===this.dimension)throw new Error("[p5.bezier] X, Y, and Z are needed to move a 3D curve");var s=[e,n];null!==i&&s.push(i);var h=this.vertexList.map((function(t){return t.slice()})),a=new t(this.controlPoints,this.closeType,this.increment,this.b,h);return a.vertexList=a.vertexList.map((function(t){return t.map((function(t,e){return t+s[e]}))})),o&&a.draw(r),a},t.prototype.shortest=function(t,e,n){var i=this;void 0===n&&(n=0);var o=[0,0,0],r=Number.POSITIVE_INFINITY;return this.vertexList.map((function(s){var h=i._distVertex(s,[t,e,n]);r>h&&(r=h,o=d([],s,!0))})),o},t}();const m=function(t){return new x(t)};return e=e.default})()));
2
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.initBezier=e():t.initBezier=e()}(this,(()=>(()=>{"use strict";var t={d:(e,n)=>{for(var i in n)t.o(n,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:n[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};t.d(e,{default:()=>P});var n={1:.1,2:.02,3:.001,4:5e-4,5:2e-4},i=[1],o={};function r(t){return i[t]}function s(t,e){return 0===e||e===t?1:o[t][e]}!function(t){for(var e=i.length;e<=t;e++)i[e]=e*i[e-1]}(161),function(t){for(var e=2;e<=t;e++){o[e]={};for(var n=1;n<e;n++)o[e][n]=r(e)/(r(n)*r(e-n))}}(161);var h=function(t,e,n){if(n||2===arguments.length)for(var i,o=0,r=e.length;o<r;o++)!i&&o in e||(i||(i=Array.prototype.slice.call(e,0,o)),i[o]=e[o]);return t.concat(i||Array.prototype.slice.call(e))};function a(t,e){return"WebGLRenderingContext"===t.constructor.name||e?3:2}function c(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t.length;if(4===n){var i=t[0]-t[2],o=t[1]-t[3];return Math.sqrt(i*i+o*o)}if(6===n){i=t[0]-t[3],o=t[1]-t[4];var r=t[2]-t[5];return Math.sqrt(i*i+o*o+r*r)}return 0}function u(t){t.canvas._doFill&&t.ctx.fill(),t.canvas._doStroke&&t.ctx.stroke()}var l=!1;function p(t){return t<1||t>5||!Number.isInteger(t)?(l||(l=!0,window.console.warn("[p5.bezier] Smoothness should be an integer between 1 and 5")),Math.round(Math.max(1,Math.min(5,t)))):t}var f=function(){function t(t){this.m=Math.pow(2,31)-1,this.a=1103515245,this.c=12345,this.state=t}return t.prototype.r=function(){return this.state=(this.a*this.state+this.c)%this.m,this.state/this.m},t.prototype.next=function(t,e){return Math.floor(this.r()*(e-t+1))+t},t}();function v(t,e){void 0===e&&(e=!1);var n=160-(e?3:0);if(t.length<=n)return d(t);var i=t.length-n,o=new f(1234),r=new Set;return h([],new Array(i),!0).map((function(t,e){for(var i=o.next(5+e,n-5+e);r.has(i);)i=o.next(5+e,n-5+e);r.add(i)})),d(t.filter((function(t,e){return!r.has(e)})))}function d(t){return t.map((function(t){return t.slice()}))}function b(t){var e=t.length;if(0===e)return[];var n=t[0],i=t[e-1];if(1===e)return d([n]);var o=t[1],r=t[e-2];return d([[2*i[0]-r[0],2*i[1]-r[1]],[2*n[0]-o[0],2*n[1]-o[1]],n])}var x=function(t,e,n){if(n||2===arguments.length)for(var i,o=0,r=e.length;o<r;o++)!i&&o in e||(i||(i=Array.prototype.slice.call(e,0,o)),i[o]=e[o]);return t.concat(i||Array.prototype.slice.call(e))};function y(t,e,n,i){for(var o=new Array(i).fill(0),r=1-n,h=0;h<=e;h++)for(var a=s(e,h)*Math.pow(r,e-h)*Math.pow(n,h),c=0;c<i;c++)o[c]+=a*t[h][c];return o}window.console.log("[p5.bezier] ".concat("0.7.1"));var m=function(){function t(t){if(this.b={canvas:null,ctx:null,dimension:2,useP5:!0,beginPath:function(){},moveTo:function(){},lineTo:function(){},closePath:function(){}},this.b.canvas=t,this.b.ctx=this.b.canvas.drawingContext,"undefined"!=typeof p5&&t instanceof p5.Graphics)this.b.useP5=!0,this.b.dimension=a(this.b.ctx,!1);else{if(!("undefined"!=typeof p5&&t instanceof p5.Renderer||t.drawingContext))throw new Error("[p5.bezier] Canvas is not supported");this.b.useP5=!1,"undefined"!=typeof p5&&("undefined"==typeof p5||t instanceof p5.Renderer)||window.console.warn("[p5.bezier] Support beyond p5.js is not tested"),this.b.dimension=a(this.b.ctx,t.isP3D)}var e;(e=this.b).useP5?(e.beginPath=e.canvas.beginShape,e.moveTo=e.canvas.vertex,e.lineTo=e.canvas.vertex,e.closePath=e.canvas.endShape):e.ctx instanceof WebGLRenderingContext?(e.beginPath=function(){},e.moveTo=function(t,n,i){return void 0===i&&(i=0),e.ctx.vertexAttrib3f(0,t,n,i)},e.lineTo=function(t,n,i){return void 0===i&&(i=0),e.ctx.vertexAttrib3f(0,t,n,i)},e.closePath=function(){}):(e.beginPath=e.ctx.beginPath.bind(e.ctx),e.moveTo=e.ctx.moveTo.bind(e.ctx),e.lineTo=e.ctx.lineTo.bind(e.ctx),e.closePath=e.ctx.closePath.bind(e.ctx))}return t.prototype.draw=function(t,e,i){var o,r;if(void 0===e&&(e="OPEN"),void 0===i&&(i=3),t.length<2)throw new Error("[p5.bezier] At least 2 points are needed to draw a curve");var s="CLOSE"===e?x(x([],v(t,!0),!0),b(t),!0):v(t);return this.b.beginPath(),(o=this.b).moveTo.apply(o,s[0]),function(t,e,i){for(var o=e.length-1,r=n[p(i)],s=0;s<=1;s+=r){var h=y(e,o,s,t.dimension);t.lineTo.apply(t,h)}}(this.b,s,i),(r=this.b).lineTo.apply(r,s[s.length-1]),this.b.useP5?this.b.closePath(e):"CLOSE"===e&&this.b.closePath(),u(this.b),s},t.prototype.new=function(t,e,i){void 0===e&&(e="OPEN"),void 0===i&&(i=3);var o=n[p(i)];return new g(t,e,o,this.b)},t}();var g=function(){function t(t,e,n,i,o){var r;void 0===o&&(o=null),this.controlPoints=v(t,"CLOSE"===e),"CLOSE"===e?((r=this.controlPoints).push.apply(r,b(this.controlPoints)),this.closeType="CLOSE"):this.closeType="OPEN",this.dimension=i.dimension,this.increment=n,this.vertexList=[],this.p=this.controlPoints.length,this.n=this.p-1,this.b=i,null===o?this._buildVertexList():this.vertexList=x([],o,!0)}return t.prototype._buildVertexList=function(){this.vertexList=[];for(var t=0;t<=1;t+=this.increment){var e=y(this.controlPoints,this.n,t,this.dimension);this.vertexList.push(e)}return this._addVertex(this.controlPoints[this.controlPoints.length-1]),this.dimension=this.vertexList[0].length,this.vertexList},t.prototype._addVertex=function(t){var e;(e=this.b).lineTo.apply(e,t)},t.prototype._distVertex=function(t,e){return 3===this.dimension&&3===t.length&&3===e.length?c(t[0],t[1],t[2],e[0],e[1],e[2]):2===this.dimension?c(t[0],t[1],e[0],e[1]):0},t.prototype.draw=function(t){t?this._dashedCurve(t):this._solidCurve()},t.prototype._solidCurve=function(){var t=this;this.b.beginPath(),this.vertexList.map((function(e){return t._addVertex(e)})),"CLOSE"===this.closeType&&this.b.closePath(),this.b.useP5?this.b.closePath(this.closeType):"CLOSE"===this.closeType&&this.b.closePath(),u(this.b)},t.prototype._dashedCurve=function(t){var e,n,i,o,r;this.increment>.001&&(this.increment=.001,window.console.warn("[p5.bezier] Smoothness set to 3 for a dashed curve"));var s,h,a,c,l,p=t.map(Math.abs),f=p[0],v=p[1],d=!0,b=this.vertexList[0],x=1,y=b,m=0,g=f;for(this.b.ctx.save(),this.b.ctx.fillStyle="rgba(0, 0, 0, 0)",this.b.beginPath(),(e=this.b).moveTo.apply(e,b);x<this.vertexList.length;){var P=this.vertexList[x];for(m=this._distVertex(b,P);m>=g;)h=P,a=g/m,c=void 0,l=void 0,c=(s=y).length,l=h.length,y=2===c&&2===l?[s[0]+(h[0]-s[0])*a,s[1]+(h[1]-s[1])*a]:3===c&&3===l?[s[0]+(h[0]-s[0])*a,s[1]+(h[1]-s[1])*a,s[2]+(h[2]-s[2])*a]:h,d?(n=this.b).lineTo.apply(n,y):(i=this.b).moveTo.apply(i,y),m-=g,g=(d=!d)?f:v;d?(o=this.b).lineTo.apply(o,P):(r=this.b).moveTo.apply(r,P),g-=this._distVertex(y,P),y=b=P,x++}u(this.b),this.b.ctx.restore()},t.prototype.update=function(t){if(t.length!==this.controlPoints.length)throw new Error("[p5.bezier] The number of control points changed");this.controlPoints.every((function(e,n){return e===t[n]}))||(this.controlPoints=t,this._buildVertexList())},t.prototype.move=function(e,n,i,o,r){if(void 0===i&&(i=null),void 0===o&&(o=!0),null===i&&3===this.dimension)throw new Error("[p5.bezier] X, Y, and Z are needed to move a 3D curve");var s=[e,n];null!==i&&s.push(i);var h=this.vertexList.map((function(t){return t.slice()})),a=new t(this.controlPoints,this.closeType,this.increment,this.b,h);return a.vertexList=a.vertexList.map((function(t){return t.map((function(t,e){return t+s[e]}))})),o&&a.draw(r),a},t.prototype.shortest=function(t,e,n){var i=this;void 0===n&&(n=0);var o=[0,0,0],r=Number.POSITIVE_INFINITY;return this.vertexList.map((function(s){var h=i._distVertex(s,[t,e,n]);r>h&&(r=h,o=x([],s,!0))})),o},t}();const P=function(t){return new m(t)};return e=e.default})()));
3
3
  //# sourceMappingURL=p5.bezier.min.js.map
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  *
3
3
  * @license
4
- * p5bezier Version 0.7.0
4
+ * p5bezier Version 0.7.1
5
5
  * https://github.com/peilingjiang/p5.bezier
6
6
  *
7
7
  * Copyright 2018-2024 Peiling Jiang
@@ -1 +1 @@
1
- {"version":3,"file":"p5.bezier.min.js","mappings":"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","sources":["webpack://initBezier/webpack/universalModuleDefinition","webpack://initBezier/webpack/bootstrap","webpack://initBezier/webpack/runtime/define property getters","webpack://initBezier/webpack/runtime/hasOwnProperty shorthand","webpack://initBezier/./src/coefficients.ts","webpack://initBezier/./src/utils.ts","webpack://initBezier/./src/p5.bezier.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"initBezier\"] = factory();\n\telse\n\t\troot[\"initBezier\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export var MAX_DEGREE = 160;\nexport var _smoothness = {\n 1: 0.1,\n 2: 0.02,\n 3: 0.001,\n 4: 0.0005,\n 5: 0.0002,\n};\nvar _calculatedFactorials = [1];\nvar _binomialCoefficients = {};\n/* -------------------------------------------------------------------------- */\nfunction _helper_ensureFactorials(n) {\n var prevLen = _calculatedFactorials.length;\n for (var i = prevLen; i <= n; i++)\n _calculatedFactorials[i] = i * _calculatedFactorials[i - 1];\n}\nfunction _f(i) {\n return _calculatedFactorials[i];\n}\n/* -------------------------------------------------------------------------- */\nfunction _helper_ensureBinomialCoefficients(_n) {\n for (var n = 2; n <= _n; n++) {\n _binomialCoefficients[n] = {};\n for (var i = 1; i < n; i++) {\n _binomialCoefficients[n][i] = _f(n) / (_f(i) * _f(n - i));\n }\n }\n}\nexport function _binomialCoefficient(n, i) {\n if (i === 0 || i === n)\n return 1;\n return _binomialCoefficients[n][i];\n}\n/* -------------------------------------------------------------------------- */\n_helper_ensureFactorials(MAX_DEGREE + 1);\n_helper_ensureBinomialCoefficients(MAX_DEGREE + 1);\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { MAX_DEGREE } from './coefficients';\nexport function _getDimension(\n// biome-ignore lint/suspicious/noExplicitAny: p5 typing\ncontext, isP3D) {\n return context.constructor.name === 'WebGLRenderingContext' || isP3D ? 3 : 2;\n}\nexport function _getCanvasUtils(b) {\n if (b.useP5) {\n b.beginPath = b.canvas.beginShape;\n b.moveTo = b.canvas.vertex;\n b.lineTo = b.canvas.vertex;\n b.closePath = b.canvas.endShape;\n }\n else {\n if (b.ctx instanceof WebGLRenderingContext) {\n b.beginPath = function () { };\n b.moveTo = function (x, y, z) {\n if (z === void 0) { z = 0; }\n return b.ctx.vertexAttrib3f(0, x, y, z);\n };\n b.lineTo = function (x, y, z) {\n if (z === void 0) { z = 0; }\n return b.ctx.vertexAttrib3f(0, x, y, z);\n };\n b.closePath = function () { };\n }\n else {\n b.beginPath = b.ctx.beginPath.bind(b.ctx);\n b.moveTo = b.ctx.moveTo.bind(b.ctx);\n b.lineTo = b.ctx.lineTo.bind(b.ctx);\n b.closePath = b.ctx.closePath.bind(b.ctx);\n }\n }\n}\nexport function _dist() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var len = args.length;\n if (len === 4) {\n var dx = args[0] - args[2];\n var dy = args[1] - args[3];\n return Math.sqrt(dx * dx + dy * dy);\n }\n if (len === 6) {\n var dx = args[0] - args[3];\n var dy = args[1] - args[4];\n var dz = args[2] - args[5];\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n return 0;\n}\nexport function _setStyles(b) {\n if (b.canvas._doFill)\n b.ctx.fill();\n if (b.canvas._doStroke)\n b.ctx.stroke();\n}\n/* -------------------------------------------------------------------------- */\nvar SeedRandom = /** @class */ (function () {\n function SeedRandom(seed) {\n this.m = Math.pow(2, 31) - 1;\n this.a = 1103515245;\n this.c = 12345;\n this.state = seed;\n }\n SeedRandom.prototype.r = function () {\n this.state = (this.a * this.state + this.c) % this.m;\n return this.state / this.m;\n };\n SeedRandom.prototype.next = function (min, max) {\n return Math.floor(this.r() * (max - min + 1)) + min;\n };\n return SeedRandom;\n}());\nvar seed = 1234;\nexport function _concentrate(pointList, close) {\n if (close === void 0) { close = false; }\n var save = close ? 3 : 0;\n var limit = MAX_DEGREE - save;\n if (pointList.length <= limit)\n return _copy(pointList);\n var excessPoints = pointList.length - limit;\n var rng = new SeedRandom(seed);\n var rmIndex = new Set();\n __spreadArray([], new Array(excessPoints), true).map(function (_, ind) {\n var r = rng.next(5 + ind, limit - 5 + ind);\n while (rmIndex.has(r)) {\n r = rng.next(5 + ind, limit - 5 + ind);\n }\n rmIndex.add(r);\n });\n return _copy(pointList.filter(function (_, index) { return !rmIndex.has(index); }));\n}\nfunction _copy(arr) {\n return arr.map(function (v) { return v.slice(); });\n}\nexport function _getCloseCurvePoints(pointList) {\n var len = pointList.length;\n if (len === 0)\n return [];\n var first = pointList[0];\n var last = pointList[len - 1];\n if (len === 1)\n return _copy([first]);\n var second = pointList[1];\n var secondLast = pointList[len - 2];\n return _copy([\n [2 * last[0] - secondLast[0], 2 * last[1] - secondLast[1]],\n [2 * first[0] - second[0], 2 * first[1] - second[1]],\n first,\n ]);\n}\nexport function _interpolateVertex(v1, v2, t) {\n var len1 = v1.length;\n var len2 = v2.length;\n if (len1 === 2 && len2 === 2) {\n return [v1[0] + (v2[0] - v1[0]) * t, v1[1] + (v2[1] - v1[1]) * t];\n }\n if (len1 === 3 && len2 === 3) {\n return [\n v1[0] + (v2[0] - v1[0]) * t,\n v1[1] + (v2[1] - v1[1]) * t,\n v1[2] + (v2[2] - v1[2]) * t,\n ];\n }\n return v2;\n}\n","/*\np5.bezier library by Peiling Jiang\n2020\n\nupdated Aug 2024\n*/\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport packageJson from '../package.json';\nimport { _binomialCoefficient, _smoothness, } from './coefficients';\nimport { _concentrate, _dist, _getCanvasUtils, _getCloseCurvePoints, _getDimension, _interpolateVertex, _setStyles, } from './utils';\nwindow.console.log(\"[p5.bezier] \".concat(packageJson.version));\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n// helpers\nfunction _bezierVertex(pointList, n, t, dimension) {\n var vertex = new Array(dimension).fill(0);\n var oneMinusT = 1 - t;\n for (var i = 0; i <= n; i++) {\n var coefficient = _binomialCoefficient(n, i) * Math.pow(oneMinusT, (n - i)) * Math.pow(t, i);\n for (var d = 0; d < dimension; d++)\n vertex[d] += coefficient * pointList[i][d];\n }\n return vertex;\n}\nfunction _drawBezierCurve(bezierCanvas, pointList, smoothness) {\n var n = pointList.length - 1;\n var increment = _smoothness[smoothness];\n for (var t = 0; t <= 1; t += increment) {\n var v = _bezierVertex(pointList, n, t, bezierCanvas.dimension);\n bezierCanvas.lineTo.apply(bezierCanvas, v);\n }\n}\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\nvar P5Bezier = /** @class */ (function () {\n // biome-ignore lint/suspicious/noExplicitAny: p5 typing\n function P5Bezier(canvas) {\n this.b = {\n canvas: null,\n ctx: null,\n dimension: 2,\n useP5: true,\n beginPath: function () { },\n moveTo: function () { },\n lineTo: function () { },\n closePath: function () { },\n };\n this.b.canvas = canvas;\n this.b.ctx = this.b.canvas.drawingContext;\n if (typeof p5 !== 'undefined' && canvas instanceof p5.Graphics) {\n this.b.useP5 = true;\n this.b.dimension = _getDimension(this.b.ctx, false);\n }\n else if ((typeof p5 !== 'undefined' && canvas instanceof p5.Renderer) ||\n canvas.drawingContext) {\n this.b.useP5 = false;\n if (typeof p5 === 'undefined' ||\n (typeof p5 !== 'undefined' && !(canvas instanceof p5.Renderer)))\n window.console.warn('[p5.bezier] Support beyond p5.js is not tested');\n this.b.dimension = _getDimension(this.b.ctx, canvas.isP3D);\n }\n else\n throw new Error('[p5.bezier] Canvas is not supported');\n _getCanvasUtils(this.b);\n }\n P5Bezier.prototype.draw = function (pointList, closeType, smoothness) {\n var _a, _b;\n if (closeType === void 0) { closeType = 'OPEN'; }\n if (smoothness === void 0) { smoothness = 3; }\n var _pL = closeType === 'CLOSE'\n ? __spreadArray(__spreadArray([], _concentrate(pointList, true), true), _getCloseCurvePoints(pointList), true) : _concentrate(pointList);\n this.b.beginPath();\n (_a = this.b).moveTo.apply(_a, _pL[0]);\n _drawBezierCurve(this.b, _pL, smoothness);\n (_b = this.b).lineTo.apply(_b, _pL[_pL.length - 1]);\n if (this.b.useP5)\n this.b.closePath(closeType);\n else if (closeType === 'CLOSE')\n this.b.closePath();\n _setStyles(this.b);\n return _pL;\n };\n P5Bezier.prototype.new = function (pointList, closeType, smoothness) {\n if (closeType === void 0) { closeType = 'OPEN'; }\n if (smoothness === void 0) { smoothness = 3; }\n var increment = _smoothness[smoothness];\n return new BezierCurve(pointList, closeType, increment, this.b);\n };\n return P5Bezier;\n}());\n// biome-ignore lint/suspicious/noExplicitAny: p5 typing\nfunction initBezier(canvas) {\n return new P5Bezier(canvas);\n}\n/* -------------------------------------------------------------------------- */\nvar BezierCurve = /** @class */ (function () {\n function BezierCurve(points, closeType, increment, bezierCanvas, vertexList) {\n var _a;\n if (vertexList === void 0) { vertexList = null; }\n this.controlPoints = _concentrate(points, closeType === 'CLOSE');\n if (closeType === 'CLOSE') {\n (_a = this.controlPoints).push.apply(_a, _getCloseCurvePoints(this.controlPoints));\n this.closeType = 'CLOSE';\n }\n else\n this.closeType = 'OPEN';\n this.dimension = bezierCanvas.dimension;\n this.increment = increment;\n this.vertexList = [];\n this.p = this.controlPoints.length; // has p points for (p - 1) degree curves\n this.n = this.p - 1; // degree\n this.b = bezierCanvas;\n if (vertexList === null)\n this._buildVertexList();\n else\n this.vertexList = __spreadArray([], vertexList, true);\n }\n BezierCurve.prototype._buildVertexList = function () {\n this.vertexList = [];\n for (var t = 0; t <= 1; t += this.increment) {\n var v = _bezierVertex(this.controlPoints, this.n, t, this.dimension);\n this.vertexList.push(v);\n }\n this._addVertex(this.controlPoints[this.controlPoints.length - 1]);\n this.dimension = this.vertexList[0].length;\n return this.vertexList;\n };\n BezierCurve.prototype._addVertex = function (vArray) {\n var _a;\n (_a = this.b).lineTo.apply(_a, vArray);\n };\n BezierCurve.prototype._distVertex = function (vArray1, vArray2) {\n return this.dimension === 3 && vArray1.length === 3 && vArray2.length === 3\n ? _dist(vArray1[0], vArray1[1], vArray1[2], vArray2[0], vArray2[1], vArray2[2])\n : this.dimension === 2\n ? _dist(vArray1[0], vArray1[1], vArray2[0], vArray2[1])\n : 0;\n };\n BezierCurve.prototype.draw = function (dash) {\n if (!dash) {\n this._solidCurve();\n }\n else {\n this._dashedCurve(dash);\n }\n };\n BezierCurve.prototype._solidCurve = function () {\n var _this = this;\n this.b.beginPath();\n this.vertexList.map(function (v) { return _this._addVertex(v); });\n if (this.closeType === 'CLOSE')\n this.b.closePath();\n if (this.b.useP5)\n this.b.closePath(this.closeType);\n else if (this.closeType === 'CLOSE')\n this.b.closePath();\n _setStyles(this.b);\n };\n BezierCurve.prototype._dashedCurve = function (dash) {\n var _a, _b, _c, _d, _e;\n if (this.increment > 0.001) {\n this.increment = 0.001;\n window.console.warn('[p5.bezier] Smoothness set to 3 for a dashed curve');\n }\n var _f = dash.map(Math.abs), solidPart = _f[0], gapPart = _f[1];\n var solid = true;\n var lastVertex = this.vertexList[0];\n var toUseVertexInd = 1;\n var currentVirtualVertex = lastVertex;\n var availableDist = 0;\n var neededDist = solidPart;\n this.b.ctx.save();\n this.b.ctx.fillStyle = 'rgba(0, 0, 0, 0)';\n this.b.beginPath();\n (_a = this.b).moveTo.apply(_a, lastVertex);\n while (toUseVertexInd < this.vertexList.length) {\n var toUseVertex = this.vertexList[toUseVertexInd];\n availableDist = this._distVertex(lastVertex, toUseVertex);\n while (availableDist >= neededDist) {\n currentVirtualVertex = _interpolateVertex(currentVirtualVertex, toUseVertex, neededDist / availableDist);\n solid\n ? (_b = this.b).lineTo.apply(_b, currentVirtualVertex) : (_c = this.b).moveTo.apply(_c, currentVirtualVertex);\n availableDist -= neededDist;\n solid = !solid;\n neededDist = solid ? solidPart : gapPart;\n }\n solid ? (_d = this.b).lineTo.apply(_d, toUseVertex) : (_e = this.b).moveTo.apply(_e, toUseVertex);\n neededDist -= this._distVertex(currentVirtualVertex, toUseVertex);\n lastVertex = toUseVertex;\n currentVirtualVertex = lastVertex;\n toUseVertexInd++;\n }\n _setStyles(this.b);\n this.b.ctx.restore();\n };\n BezierCurve.prototype.update = function (newControlPointList) {\n if (newControlPointList.length !== this.controlPoints.length) {\n throw new Error('[p5.bezier] The number of control points changed');\n }\n if (this.controlPoints.every(function (v, i) { return v === newControlPointList[i]; })) {\n return;\n }\n this.controlPoints = newControlPointList;\n this._buildVertexList();\n };\n BezierCurve.prototype.move = function (x, y, z, toDraw, dash) {\n if (z === void 0) { z = null; }\n if (toDraw === void 0) { toDraw = true; }\n if (z === null && this.dimension === 3) {\n throw new Error('[p5.bezier] X, Y, and Z are needed to move a 3D curve');\n }\n var toMove = [x, y];\n if (z !== null)\n toMove.push(z);\n var newCurveV = this.vertexList.map(function (v) { return v.slice(); });\n var newCurveObj = new BezierCurve(this.controlPoints, this.closeType, this.increment, this.b, newCurveV);\n newCurveObj.vertexList = newCurveObj.vertexList.map(function (v) { return v.map(function (val, i) { return val + toMove[i]; }); });\n if (toDraw)\n newCurveObj.draw(dash);\n return newCurveObj;\n };\n BezierCurve.prototype.shortest = function (pX, pY, pZ) {\n var _this = this;\n if (pZ === void 0) { pZ = 0; }\n var minVertex = [0, 0, 0];\n var dMin = Number.POSITIVE_INFINITY;\n this.vertexList.map(function (v) {\n var nowMin = _this._distVertex(v, [pX, pY, pZ]);\n if (dMin > nowMin) {\n dMin = nowMin;\n minVertex = __spreadArray([], v, true);\n }\n });\n return minVertex;\n };\n return BezierCurve;\n}());\nexport default initBezier;\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","_smoothness","_calculatedFactorials","_binomialCoefficients","_f","i","_binomialCoefficient","n","length","_helper_ensureFactorials","MAX_DEGREE","_n","_helper_ensureBinomialCoefficients","__spreadArray","to","from","pack","arguments","ar","l","Array","slice","concat","_getDimension","context","isP3D","constructor","name","_dist","args","_i","len","dx","dy","Math","sqrt","dz","_setStyles","b","canvas","_doFill","ctx","fill","_doStroke","stroke","SeedRandom","seed","m","pow","a","c","state","r","next","min","max","floor","_concentrate","pointList","close","limit","_copy","excessPoints","rng","rmIndex","Set","map","_","ind","has","add","filter","index","arr","v","_getCloseCurvePoints","first","last","second","secondLast","_bezierVertex","t","dimension","vertex","oneMinusT","coefficient","d","window","console","log","P5Bezier","useP5","beginPath","moveTo","lineTo","closePath","drawingContext","p5","Graphics","Renderer","Error","warn","beginShape","endShape","WebGLRenderingContext","x","y","z","vertexAttrib3f","bind","draw","closeType","smoothness","_a","_b","_pL","apply","bezierCanvas","increment","_drawBezierCurve","new","BezierCurve","points","vertexList","controlPoints","push","p","_buildVertexList","_addVertex","vArray","_distVertex","vArray1","vArray2","dash","_dashedCurve","_solidCurve","_this","_c","_d","_e","v1","v2","len1","len2","abs","solidPart","gapPart","solid","lastVertex","toUseVertexInd","currentVirtualVertex","availableDist","neededDist","save","fillStyle","toUseVertex","restore","update","newControlPointList","every","move","toDraw","toMove","newCurveV","newCurveObj","val","shortest","pX","pY","pZ","minVertex","dMin","Number","POSITIVE_INFINITY","nowMin"],"sourceRoot":""}
1
+ {"version":3,"file":"p5.bezier.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAoB,WAAID,IAExBD,EAAiB,WAAIC,GACtB,CATD,CASGK,MAAM,IACT,mBCTA,IAAIC,EAAsB,CCA1BA,EAAwB,CAACL,EAASM,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAER,EAASO,IAC5EE,OAAOC,eAAeV,EAASO,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAE1E,ECNDF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,gCCA3E,IACII,EAAc,CACrB,EAAG,GACH,EAAG,IACH,EAAG,KACH,EAAG,KACH,EAAG,MAEHC,EAAwB,CAAC,GACzBC,EAAwB,CAAC,EAO7B,SAASC,EAAGC,GACR,OAAOH,EAAsBG,EACjC,CAUO,SAASC,EAAqBC,EAAGF,GACpC,OAAU,IAANA,GAAWA,IAAME,EACV,EACJJ,EAAsBI,GAAGF,EACpC,EArBA,SAAkCE,GAE9B,IADA,IACSF,EADKH,EAAsBM,OACdH,GAAKE,EAAGF,IAC1BH,EAAsBG,GAAKA,EAAIH,EAAsBG,EAAI,EACjE,CAmBAI,CAAyBC,KAdzB,SAA4CC,GACxC,IAAK,IAAIJ,EAAI,EAAGA,GAAKI,EAAIJ,IAAK,CAC1BJ,EAAsBI,GAAK,CAAC,EAC5B,IAAK,IAAIF,EAAI,EAAGA,EAAIE,EAAGF,IACnBF,EAAsBI,GAAGF,GAAKD,EAAGG,IAAMH,EAAGC,GAAKD,EAAGG,EAAIF,GAE9D,CACJ,CAQAO,CAAmCF,KCnCnC,IAAIG,EAAgD,SAAUC,EAAIC,EAAMC,GACpE,GAAIA,GAA6B,IAArBC,UAAUT,OAAc,IAAK,IAA4BU,EAAxBb,EAAI,EAAGc,EAAIJ,EAAKP,OAAYH,EAAIc,EAAGd,KACxEa,GAAQb,KAAKU,IACRG,IAAIA,EAAKE,MAAMtB,UAAUuB,MAAMrB,KAAKe,EAAM,EAAGV,IAClDa,EAAGb,GAAKU,EAAKV,IAGrB,OAAOS,EAAGQ,OAAOJ,GAAME,MAAMtB,UAAUuB,MAAMrB,KAAKe,GACtD,EAEO,SAASQ,EAEhBC,EAASC,GACL,MAAoC,0BAA7BD,EAAQE,YAAYC,MAAoCF,EAAQ,EAAI,CAC/E,CA6BO,SAASG,IAEZ,IADA,IAAIC,EAAO,GACFC,EAAK,EAAGA,EAAKb,UAAUT,OAAQsB,IACpCD,EAAKC,GAAMb,UAAUa,GAEzB,IAAIC,EAAMF,EAAKrB,OACf,GAAY,IAARuB,EAAW,CACX,IAAIC,EAAKH,EAAK,GAAKA,EAAK,GACpBI,EAAKJ,EAAK,GAAKA,EAAK,GACxB,OAAOK,KAAKC,KAAKH,EAAKA,EAAKC,EAAKA,EACpC,CACA,GAAY,IAARF,EAAW,CACPC,EAAKH,EAAK,GAAKA,EAAK,GACpBI,EAAKJ,EAAK,GAAKA,EAAK,GADxB,IAEIO,EAAKP,EAAK,GAAKA,EAAK,GACxB,OAAOK,KAAKC,KAAKH,EAAKA,EAAKC,EAAKA,EAAKG,EAAKA,EAC9C,CACA,OAAO,CACX,CACO,SAASC,EAAWC,GACnBA,EAAEC,OAAOC,SACTF,EAAEG,IAAIC,OACNJ,EAAEC,OAAOI,WACTL,EAAEG,IAAIG,QACd,CACA,IAAIC,GAAmB,EAChB,SAASC,EAAoBC,GAChC,OAAIA,EAAa,GAAKA,EAAa,IAAMC,OAAOC,UAAUF,IACjDF,IACDA,GAAmB,EACnBK,OAAOC,QAAQC,KAAK,gEAEjBlB,KAAKmB,MAAMnB,KAAKoB,IAAI,EAAGpB,KAAKqB,IAAI,EAAGR,MAEvCA,CACX,CAEA,IAAIS,EAA4B,WAC5B,SAASA,EAAWC,GAChBtE,KAAKuE,EAAIxB,KAAKyB,IAAI,EAAG,IAAM,EAC3BxE,KAAKyE,EAAI,WACTzE,KAAK0E,EAAI,MACT1E,KAAK2E,MAAQL,CACjB,CAQA,OAPAD,EAAW1D,UAAUiE,EAAI,WAErB,OADA5E,KAAK2E,OAAS3E,KAAKyE,EAAIzE,KAAK2E,MAAQ3E,KAAK0E,GAAK1E,KAAKuE,EAC5CvE,KAAK2E,MAAQ3E,KAAKuE,CAC7B,EACAF,EAAW1D,UAAUkE,KAAO,SAAUT,EAAKD,GACvC,OAAOpB,KAAK+B,MAAM9E,KAAK4E,KAAOT,EAAMC,EAAM,IAAMA,CACpD,EACOC,CACX,CAf+B,GAiBxB,SAASU,EAAaC,EAAWC,QACtB,IAAVA,IAAoBA,GAAQ,GAChC,IACIC,EDpGgB,KCmGTD,EAAQ,EAAI,GAEvB,GAAID,EAAU3D,QAAU6D,EACpB,OAAOC,EAAMH,GACjB,IAAII,EAAeJ,EAAU3D,OAAS6D,EAClCG,EAAM,IAAIhB,EARP,MASHiB,EAAU,IAAIC,IAQlB,OAPA7D,EAAc,GAAI,IAAIO,MAAMmD,IAAe,GAAMI,KAAI,SAAUC,EAAGC,GAE9D,IADA,IAAId,EAAIS,EAAIR,KAAK,EAAIa,EAAKR,EAAQ,EAAIQ,GAC/BJ,EAAQK,IAAIf,IACfA,EAAIS,EAAIR,KAAK,EAAIa,EAAKR,EAAQ,EAAIQ,GAEtCJ,EAAQM,IAAIhB,EAChB,IACOO,EAAMH,EAAUa,QAAO,SAAUJ,EAAGK,GAAS,OAAQR,EAAQK,IAAIG,EAAQ,IACpF,CACA,SAASX,EAAMY,GACX,OAAOA,EAAIP,KAAI,SAAUQ,GAAK,OAAOA,EAAE9D,OAAS,GACpD,CACO,SAAS+D,EAAqBjB,GACjC,IAAIpC,EAAMoC,EAAU3D,OACpB,GAAY,IAARuB,EACA,MAAO,GACX,IAAIsD,EAAQlB,EAAU,GAClBmB,EAAOnB,EAAUpC,EAAM,GAC3B,GAAY,IAARA,EACA,OAAOuC,EAAM,CAACe,IAClB,IAAIE,EAASpB,EAAU,GACnBqB,EAAarB,EAAUpC,EAAM,GACjC,OAAOuC,EAAM,CACT,CAAC,EAAIgB,EAAK,GAAKE,EAAW,GAAI,EAAIF,EAAK,GAAKE,EAAW,IACvD,CAAC,EAAIH,EAAM,GAAKE,EAAO,GAAI,EAAIF,EAAM,GAAKE,EAAO,IACjDF,GAER,CC/HA,IAAI,EAAgD,SAAUvE,EAAIC,EAAMC,GACpE,GAAIA,GAA6B,IAArBC,UAAUT,OAAc,IAAK,IAA4BU,EAAxBb,EAAI,EAAGc,EAAIJ,EAAKP,OAAYH,EAAIc,EAAGd,KACxEa,GAAQb,KAAKU,IACRG,IAAIA,EAAKE,MAAMtB,UAAUuB,MAAMrB,KAAKe,EAAM,EAAGV,IAClDa,EAAGb,GAAKU,EAAKV,IAGrB,OAAOS,EAAGQ,OAAOJ,GAAME,MAAMtB,UAAUuB,MAAMrB,KAAKe,GACtD,EASA,SAAS0E,EAActB,EAAW5D,EAAGmF,EAAGC,GAGpC,IAFA,IAAIC,EAAS,IAAIxE,MAAMuE,GAAWjD,KAAK,GACnCmD,EAAY,EAAIH,EACXrF,EAAI,EAAGA,GAAKE,EAAGF,IAEpB,IADA,IAAIyF,EAAcxF,EAAqBC,EAAGF,GAAK6B,KAAKyB,IAAIkC,EAAYtF,EAAIF,GAAM6B,KAAKyB,IAAI+B,EAAGrF,GACjF0F,EAAI,EAAGA,EAAIJ,EAAWI,IAC3BH,EAAOG,IAAMD,EAAc3B,EAAU9D,GAAG0F,GAEhD,OAAOH,CACX,CAdA1C,OAAOC,QAAQ6C,IAAI,eAAe1E,iBAsDlC,IAAI2E,EAA0B,WAE1B,SAASA,EAAS1D,GAad,GAZApD,KAAKmD,EAAI,CACLC,OAAQ,KACRE,IAAK,KACLkD,UAAW,EACXO,OAAO,EACPC,UAAW,WAAc,EACzBC,OAAQ,WAAc,EACtBC,OAAQ,WAAc,EACtBC,UAAW,WAAc,GAE7BnH,KAAKmD,EAAEC,OAASA,EAChBpD,KAAKmD,EAAEG,IAAMtD,KAAKmD,EAAEC,OAAOgE,eACT,oBAAPC,IAAsBjE,aAAkBiE,GAAGC,SAClDtH,KAAKmD,EAAE4D,OAAQ,EACf/G,KAAKmD,EAAEqD,UAAYpE,EAAcpC,KAAKmD,EAAEG,KAAK,OAE5C,MAAmB,oBAAP+D,IAAsBjE,aAAkBiE,GAAGE,UACxDnE,EAAOgE,gBAQP,MAAM,IAAII,MAAM,uCAPhBxH,KAAKmD,EAAE4D,OAAQ,EACG,oBAAPM,KACQ,oBAAPA,IAAwBjE,aAAkBiE,GAAGE,WACrDxD,OAAOC,QAAQC,KAAK,kDACxBjE,KAAKmD,EAAEqD,UAAYpE,EAAcpC,KAAKmD,EAAEG,IAAKF,EAAOd,MAGE,CDrF3D,IAAyBa,KCsFRnD,KAAKmD,GDrFnB4D,OACF5D,EAAE6D,UAAY7D,EAAEC,OAAOqE,WACvBtE,EAAE8D,OAAS9D,EAAEC,OAAOqD,OACpBtD,EAAE+D,OAAS/D,EAAEC,OAAOqD,OACpBtD,EAAEgE,UAAYhE,EAAEC,OAAOsE,UAGnBvE,EAAEG,eAAeqE,uBACjBxE,EAAE6D,UAAY,WAAc,EAC5B7D,EAAE8D,OAAS,SAAUW,EAAGC,EAAGC,GAEvB,YADU,IAANA,IAAgBA,EAAI,GACjB3E,EAAEG,IAAIyE,eAAe,EAAGH,EAAGC,EAAGC,EACzC,EACA3E,EAAE+D,OAAS,SAAUU,EAAGC,EAAGC,GAEvB,YADU,IAANA,IAAgBA,EAAI,GACjB3E,EAAEG,IAAIyE,eAAe,EAAGH,EAAGC,EAAGC,EACzC,EACA3E,EAAEgE,UAAY,WAAc,IAG5BhE,EAAE6D,UAAY7D,EAAEG,IAAI0D,UAAUgB,KAAK7E,EAAEG,KACrCH,EAAE8D,OAAS9D,EAAEG,IAAI2D,OAAOe,KAAK7E,EAAEG,KAC/BH,EAAE+D,OAAS/D,EAAEG,IAAI4D,OAAOc,KAAK7E,EAAEG,KAC/BH,EAAEgE,UAAYhE,EAAEG,IAAI6D,UAAUa,KAAK7E,EAAEG,KC+D7C,CAqDA,OApDAwD,EAASnG,UAAUsH,KAAO,SAAUjD,EAAWkD,EAAWtE,GACtD,IAAIuE,EAAIC,EAGR,QAFkB,IAAdF,IAAwBA,EAAY,aACrB,IAAftE,IAAyBA,EAAa,GACtCoB,EAAU3D,OAAS,EACnB,MAAM,IAAImG,MAAM,4DAEpB,IAAIa,EAAoB,UAAdH,EACJ,EAAc,EAAc,GAAInD,EAAaC,GAAW,IAAO,GAAOiB,EAAqBjB,IAAY,GAAQD,EAAaC,GAUlI,OATAhF,KAAKmD,EAAE6D,aACNmB,EAAKnI,KAAKmD,GAAG8D,OAAOqB,MAAMH,EAAIE,EAAI,IAhF3C,SAA0BE,EAAcvD,EAAWpB,GAG/C,IAFA,IAAIxC,EAAI4D,EAAU3D,OAAS,EACvBmH,EAAY1H,EAAY6C,EAAoBC,IACvC2C,EAAI,EAAGA,GAAK,EAAGA,GAAKiC,EAAW,CACpC,IAAIxC,EAAIM,EAActB,EAAW5D,EAAGmF,EAAGgC,EAAa/B,WACpD+B,EAAarB,OAAOoB,MAAMC,EAAcvC,EAC5C,CACJ,CA0EQyC,CAAiBzI,KAAKmD,EAAGkF,EAAKzE,IAC7BwE,EAAKpI,KAAKmD,GAAG+D,OAAOoB,MAAMF,EAAIC,EAAIA,EAAIhH,OAAS,IAC5CrB,KAAKmD,EAAE4D,MACP/G,KAAKmD,EAAEgE,UAAUe,GACE,UAAdA,GACLlI,KAAKmD,EAAEgE,YACXjE,EAAWlD,KAAKmD,GACTkF,CACX,EA2BAvB,EAASnG,UAAU+H,IAAM,SAAU1D,EAAWkD,EAAWtE,QACnC,IAAdsE,IAAwBA,EAAY,aACrB,IAAftE,IAAyBA,EAAa,GAC1C,IAAI4E,EAAY1H,EAAY6C,EAAoBC,IAChD,OAAO,IAAI+E,EAAY3D,EAAWkD,EAAWM,EAAWxI,KAAKmD,EACjE,EACO2D,CACX,CApF6B,GA0F7B,IAAI6B,EAA6B,WAC7B,SAASA,EAAYC,EAAQV,EAAWM,EAAWD,EAAcM,GAC7D,IAAIV,OACe,IAAfU,IAAyBA,EAAa,MAC1C7I,KAAK8I,cAAgB/D,EAAa6D,EAAsB,UAAdV,GACxB,UAAdA,IACCC,EAAKnI,KAAK8I,eAAeC,KAAKT,MAAMH,EAAIlC,EAAqBjG,KAAK8I,gBACnE9I,KAAKkI,UAAY,SAGjBlI,KAAKkI,UAAY,OACrBlI,KAAKwG,UAAY+B,EAAa/B,UAC9BxG,KAAKwI,UAAYA,EACjBxI,KAAK6I,WAAa,GAClB7I,KAAKgJ,EAAIhJ,KAAK8I,cAAczH,OAC5BrB,KAAKoB,EAAIpB,KAAKgJ,EAAI,EAClBhJ,KAAKmD,EAAIoF,EACU,OAAfM,EACA7I,KAAKiJ,mBAELjJ,KAAK6I,WAAa,EAAc,GAAIA,GAAY,EACxD,CAuHA,OAtHAF,EAAYhI,UAAUsI,iBAAmB,WACrCjJ,KAAK6I,WAAa,GAClB,IAAK,IAAItC,EAAI,EAAGA,GAAK,EAAGA,GAAKvG,KAAKwI,UAAW,CACzC,IAAIxC,EAAIM,EAActG,KAAK8I,cAAe9I,KAAKoB,EAAGmF,EAAGvG,KAAKwG,WAC1DxG,KAAK6I,WAAWE,KAAK/C,EACzB,CAGA,OAFAhG,KAAKkJ,WAAWlJ,KAAK8I,cAAc9I,KAAK8I,cAAczH,OAAS,IAC/DrB,KAAKwG,UAAYxG,KAAK6I,WAAW,GAAGxH,OAC7BrB,KAAK6I,UAChB,EACAF,EAAYhI,UAAUuI,WAAa,SAAUC,GACzC,IAAIhB,GACHA,EAAKnI,KAAKmD,GAAG+D,OAAOoB,MAAMH,EAAIgB,EACnC,EACAR,EAAYhI,UAAUyI,YAAc,SAAUC,EAASC,GACnD,OAA0B,IAAnBtJ,KAAKwG,WAAsC,IAAnB6C,EAAQhI,QAAmC,IAAnBiI,EAAQjI,OACzDoB,EAAM4G,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIC,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,IACvD,IAAnBtJ,KAAKwG,UACD/D,EAAM4G,EAAQ,GAAIA,EAAQ,GAAIC,EAAQ,GAAIA,EAAQ,IAClD,CACd,EACAX,EAAYhI,UAAUsH,KAAO,SAAUsB,GAC9BA,EAIDvJ,KAAKwJ,aAAaD,GAHlBvJ,KAAKyJ,aAKb,EACAd,EAAYhI,UAAU8I,YAAc,WAChC,IAAIC,EAAQ1J,KACZA,KAAKmD,EAAE6D,YACPhH,KAAK6I,WAAWrD,KAAI,SAAUQ,GAAK,OAAO0D,EAAMR,WAAWlD,EAAI,IACxC,UAAnBhG,KAAKkI,WACLlI,KAAKmD,EAAEgE,YACPnH,KAAKmD,EAAE4D,MACP/G,KAAKmD,EAAEgE,UAAUnH,KAAKkI,WACE,UAAnBlI,KAAKkI,WACVlI,KAAKmD,EAAEgE,YACXjE,EAAWlD,KAAKmD,EACpB,EACAwF,EAAYhI,UAAU6I,aAAe,SAAUD,GAC3C,IAAIpB,EAAIC,EAAIuB,EAAIC,EAAIC,EAChB7J,KAAKwI,UAAY,OACjBxI,KAAKwI,UAAY,KACjBzE,OAAOC,QAAQC,KAAK,uDAExB,IDjG2B6F,EAAIC,EAAIxD,EACnCyD,EACAC,EC+FIhJ,EAAKsI,EAAK/D,IAAIzC,KAAKmH,KAAMC,EAAYlJ,EAAG,GAAImJ,EAAUnJ,EAAG,GACzDoJ,GAAQ,EACRC,EAAatK,KAAK6I,WAAW,GAC7B0B,EAAiB,EACjBC,EAAuBF,EACvBG,EAAgB,EAChBC,EAAaP,EAKjB,IAJAnK,KAAKmD,EAAEG,IAAIqH,OACX3K,KAAKmD,EAAEG,IAAIsH,UAAY,mBACvB5K,KAAKmD,EAAE6D,aACNmB,EAAKnI,KAAKmD,GAAG8D,OAAOqB,MAAMH,EAAImC,GACxBC,EAAiBvK,KAAK6I,WAAWxH,QAAQ,CAC5C,IAAIwJ,EAAc7K,KAAK6I,WAAW0B,GAElC,IADAE,EAAgBzK,KAAKoJ,YAAYkB,EAAYO,GACtCJ,GAAiBC,GD/GGX,ECgHyCc,EDhHrCtE,ECgHkDmE,EAAaD,ED/GlGT,SACAC,SADAD,GAD2BF,ECgHuBU,GD/GxCnJ,OACV4I,EAAOF,EAAG1I,OC8GFmJ,ED7GC,IAATR,GAAuB,IAATC,EACP,CAACH,EAAG,IAAMC,EAAG,GAAKD,EAAG,IAAMvD,EAAGuD,EAAG,IAAMC,EAAG,GAAKD,EAAG,IAAMvD,GAEtD,IAATyD,GAAuB,IAATC,EACP,CACHH,EAAG,IAAMC,EAAG,GAAKD,EAAG,IAAMvD,EAC1BuD,EAAG,IAAMC,EAAG,GAAKD,EAAG,IAAMvD,EAC1BuD,EAAG,IAAMC,EAAG,GAAKD,EAAG,IAAMvD,GAG3BwD,ECoGKM,GACOjC,EAAKpI,KAAKmD,GAAG+D,OAAOoB,MAAMF,EAAIoC,IAAyBb,EAAK3J,KAAKmD,GAAG8D,OAAOqB,MAAMqB,EAAIa,GAC5FC,GAAiBC,EAEjBA,GADAL,GAASA,GACYF,EAAYC,EAErCC,GAAST,EAAK5J,KAAKmD,GAAG+D,OAAOoB,MAAMsB,EAAIiB,IAAgBhB,EAAK7J,KAAKmD,GAAG8D,OAAOqB,MAAMuB,EAAIgB,GACrFH,GAAc1K,KAAKoJ,YAAYoB,EAAsBK,GAErDL,EADAF,EAAaO,EAEbN,GACJ,CACArH,EAAWlD,KAAKmD,GAChBnD,KAAKmD,EAAEG,IAAIwH,SACf,EACAnC,EAAYhI,UAAUoK,OAAS,SAAUC,GACrC,GAAIA,EAAoB3J,SAAWrB,KAAK8I,cAAczH,OAClD,MAAM,IAAImG,MAAM,oDAEhBxH,KAAK8I,cAAcmC,OAAM,SAAUjF,EAAG9E,GAAK,OAAO8E,IAAMgF,EAAoB9J,EAAI,MAGpFlB,KAAK8I,cAAgBkC,EACrBhL,KAAKiJ,mBACT,EACAN,EAAYhI,UAAUuK,KAAO,SAAUtD,EAAGC,EAAGC,EAAGqD,EAAQ5B,GAGpD,QAFU,IAANzB,IAAgBA,EAAI,WACT,IAAXqD,IAAqBA,GAAS,GACxB,OAANrD,GAAiC,IAAnB9H,KAAKwG,UACnB,MAAM,IAAIgB,MAAM,yDAEpB,IAAI4D,EAAS,CAACxD,EAAGC,GACP,OAANC,GACAsD,EAAOrC,KAAKjB,GAChB,IAAIuD,EAAYrL,KAAK6I,WAAWrD,KAAI,SAAUQ,GAAK,OAAOA,EAAE9D,OAAS,IACjEoJ,EAAc,IAAI3C,EAAY3I,KAAK8I,cAAe9I,KAAKkI,UAAWlI,KAAKwI,UAAWxI,KAAKmD,EAAGkI,GAI9F,OAHAC,EAAYzC,WAAayC,EAAYzC,WAAWrD,KAAI,SAAUQ,GAAK,OAAOA,EAAER,KAAI,SAAU+F,EAAKrK,GAAK,OAAOqK,EAAMH,EAAOlK,EAAI,GAAI,IAC5HiK,GACAG,EAAYrD,KAAKsB,GACd+B,CACX,EACA3C,EAAYhI,UAAU6K,SAAW,SAAUC,EAAIC,EAAIC,GAC/C,IAAIjC,EAAQ1J,UACD,IAAP2L,IAAiBA,EAAK,GAC1B,IAAIC,EAAY,CAAC,EAAG,EAAG,GACnBC,EAAOhI,OAAOiI,kBAQlB,OAPA9L,KAAK6I,WAAWrD,KAAI,SAAUQ,GAC1B,IAAI+F,EAASrC,EAAMN,YAAYpD,EAAG,CAACyF,EAAIC,EAAIC,IACvCE,EAAOE,IACPF,EAAOE,EACPH,EAAY,EAAc,GAAI5F,GAAG,GAEzC,IACO4F,CACX,EACOjD,CACX,CA7IgC,GA8IhC,QAlJA,SAAoBvF,GAChB,OAAO,IAAI0D,EAAS1D,EACxB,sBNtJA","sources":["webpack://initBezier/webpack/universalModuleDefinition","webpack://initBezier/webpack/bootstrap","webpack://initBezier/webpack/runtime/define property getters","webpack://initBezier/webpack/runtime/hasOwnProperty shorthand","webpack://initBezier/./src/coefficients.ts","webpack://initBezier/./src/utils.ts","webpack://initBezier/./src/p5.bezier.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"initBezier\"] = factory();\n\telse\n\t\troot[\"initBezier\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export var MAX_DEGREE = 160;\nexport var _smoothness = {\n 1: 0.1,\n 2: 0.02,\n 3: 0.001,\n 4: 0.0005,\n 5: 0.0002,\n};\nvar _calculatedFactorials = [1];\nvar _binomialCoefficients = {};\n/* -------------------------------------------------------------------------- */\nfunction _helper_ensureFactorials(n) {\n var prevLen = _calculatedFactorials.length;\n for (var i = prevLen; i <= n; i++)\n _calculatedFactorials[i] = i * _calculatedFactorials[i - 1];\n}\nfunction _f(i) {\n return _calculatedFactorials[i];\n}\n/* -------------------------------------------------------------------------- */\nfunction _helper_ensureBinomialCoefficients(_n) {\n for (var n = 2; n <= _n; n++) {\n _binomialCoefficients[n] = {};\n for (var i = 1; i < n; i++) {\n _binomialCoefficients[n][i] = _f(n) / (_f(i) * _f(n - i));\n }\n }\n}\nexport function _binomialCoefficient(n, i) {\n if (i === 0 || i === n)\n return 1;\n return _binomialCoefficients[n][i];\n}\n/* -------------------------------------------------------------------------- */\n_helper_ensureFactorials(MAX_DEGREE + 1);\n_helper_ensureBinomialCoefficients(MAX_DEGREE + 1);\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { MAX_DEGREE } from './coefficients';\nexport function _getDimension(\n// biome-ignore lint/suspicious/noExplicitAny: p5 typing\ncontext, isP3D) {\n return context.constructor.name === 'WebGLRenderingContext' || isP3D ? 3 : 2;\n}\nexport function _getCanvasUtils(b) {\n if (b.useP5) {\n b.beginPath = b.canvas.beginShape;\n b.moveTo = b.canvas.vertex;\n b.lineTo = b.canvas.vertex;\n b.closePath = b.canvas.endShape;\n }\n else {\n if (b.ctx instanceof WebGLRenderingContext) {\n b.beginPath = function () { };\n b.moveTo = function (x, y, z) {\n if (z === void 0) { z = 0; }\n return b.ctx.vertexAttrib3f(0, x, y, z);\n };\n b.lineTo = function (x, y, z) {\n if (z === void 0) { z = 0; }\n return b.ctx.vertexAttrib3f(0, x, y, z);\n };\n b.closePath = function () { };\n }\n else {\n b.beginPath = b.ctx.beginPath.bind(b.ctx);\n b.moveTo = b.ctx.moveTo.bind(b.ctx);\n b.lineTo = b.ctx.lineTo.bind(b.ctx);\n b.closePath = b.ctx.closePath.bind(b.ctx);\n }\n }\n}\nexport function _dist() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var len = args.length;\n if (len === 4) {\n var dx = args[0] - args[2];\n var dy = args[1] - args[3];\n return Math.sqrt(dx * dx + dy * dy);\n }\n if (len === 6) {\n var dx = args[0] - args[3];\n var dy = args[1] - args[4];\n var dz = args[2] - args[5];\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n return 0;\n}\nexport function _setStyles(b) {\n if (b.canvas._doFill)\n b.ctx.fill();\n if (b.canvas._doStroke)\n b.ctx.stroke();\n}\nvar warnedSmoothness = false;\nexport function _validateSmoothness(smoothness) {\n if (smoothness < 1 || smoothness > 5 || !Number.isInteger(smoothness)) {\n if (!warnedSmoothness) {\n warnedSmoothness = true;\n window.console.warn('[p5.bezier] Smoothness should be an integer between 1 and 5');\n }\n return Math.round(Math.max(1, Math.min(5, smoothness)));\n }\n return smoothness;\n}\n/* -------------------------------------------------------------------------- */\nvar SeedRandom = /** @class */ (function () {\n function SeedRandom(seed) {\n this.m = Math.pow(2, 31) - 1;\n this.a = 1103515245;\n this.c = 12345;\n this.state = seed;\n }\n SeedRandom.prototype.r = function () {\n this.state = (this.a * this.state + this.c) % this.m;\n return this.state / this.m;\n };\n SeedRandom.prototype.next = function (min, max) {\n return Math.floor(this.r() * (max - min + 1)) + min;\n };\n return SeedRandom;\n}());\nvar seed = 1234;\nexport function _concentrate(pointList, close) {\n if (close === void 0) { close = false; }\n var save = close ? 3 : 0;\n var limit = MAX_DEGREE - save;\n if (pointList.length <= limit)\n return _copy(pointList);\n var excessPoints = pointList.length - limit;\n var rng = new SeedRandom(seed);\n var rmIndex = new Set();\n __spreadArray([], new Array(excessPoints), true).map(function (_, ind) {\n var r = rng.next(5 + ind, limit - 5 + ind);\n while (rmIndex.has(r)) {\n r = rng.next(5 + ind, limit - 5 + ind);\n }\n rmIndex.add(r);\n });\n return _copy(pointList.filter(function (_, index) { return !rmIndex.has(index); }));\n}\nfunction _copy(arr) {\n return arr.map(function (v) { return v.slice(); });\n}\nexport function _getCloseCurvePoints(pointList) {\n var len = pointList.length;\n if (len === 0)\n return [];\n var first = pointList[0];\n var last = pointList[len - 1];\n if (len === 1)\n return _copy([first]);\n var second = pointList[1];\n var secondLast = pointList[len - 2];\n return _copy([\n [2 * last[0] - secondLast[0], 2 * last[1] - secondLast[1]],\n [2 * first[0] - second[0], 2 * first[1] - second[1]],\n first,\n ]);\n}\nexport function _interpolateVertex(v1, v2, t) {\n var len1 = v1.length;\n var len2 = v2.length;\n if (len1 === 2 && len2 === 2) {\n return [v1[0] + (v2[0] - v1[0]) * t, v1[1] + (v2[1] - v1[1]) * t];\n }\n if (len1 === 3 && len2 === 3) {\n return [\n v1[0] + (v2[0] - v1[0]) * t,\n v1[1] + (v2[1] - v1[1]) * t,\n v1[2] + (v2[2] - v1[2]) * t,\n ];\n }\n return v2;\n}\n","/*\np5.bezier library by Peiling Jiang\n2020\n\nupdated Aug 2024\n*/\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport packageJson from '../package.json';\nimport { _binomialCoefficient, _smoothness, } from './coefficients';\nimport { _concentrate, _dist, _getCanvasUtils, _getCloseCurvePoints, _getDimension, _interpolateVertex, _setStyles, _validateSmoothness, } from './utils';\nwindow.console.log(\"[p5.bezier] \".concat(packageJson.version));\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n// helpers\nfunction _bezierVertex(pointList, n, t, dimension) {\n var vertex = new Array(dimension).fill(0);\n var oneMinusT = 1 - t;\n for (var i = 0; i <= n; i++) {\n var coefficient = _binomialCoefficient(n, i) * Math.pow(oneMinusT, (n - i)) * Math.pow(t, i);\n for (var d = 0; d < dimension; d++)\n vertex[d] += coefficient * pointList[i][d];\n }\n return vertex;\n}\nfunction _drawBezierCurve(bezierCanvas, pointList, smoothness) {\n var n = pointList.length - 1;\n var increment = _smoothness[_validateSmoothness(smoothness)];\n for (var t = 0; t <= 1; t += increment) {\n var v = _bezierVertex(pointList, n, t, bezierCanvas.dimension);\n bezierCanvas.lineTo.apply(bezierCanvas, v);\n }\n}\n// function _drawBSplineCurve(\n// bezierCanvas: BezierCanvas,\n// pointList: PointList,\n// smoothness: Smoothness,\n// ): void {\n// const increment = _smoothness[_validateSmoothness(smoothness)]\n// const n = pointList.length - 1\n// for (let i = 0; i < n - 2; i++) {\n// const b0 = pointList[i]\n// const b1 = pointList[i + 1]\n// const b2 = pointList[i + 2]\n// const b3 = pointList[i + 3]\n// for (let t = 0; t <= 1; t += increment) {\n// const t2 = t * t\n// const t3 = t2 * t\n// const vertex = bezierCanvas.dimension === 2 ? [0, 0] : [0, 0, 0]\n// for (let d = 0; d < bezierCanvas.dimension; d++) {\n// vertex[d] =\n// (1 / 6) *\n// ((-b0[d] + 3 * b1[d] - 3 * b2[d] + b3[d]) * t3 +\n// (3 * b0[d] - 6 * b1[d] + 3 * b2[d]) * t2 +\n// (-3 * b0[d] + 3 * b2[d]) * t +\n// (b0[d] + 4 * b1[d] + b2[d]))\n// }\n// bezierCanvas.lineTo(vertex[0], vertex[1], vertex[2])\n// }\n// }\n// }\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\nvar P5Bezier = /** @class */ (function () {\n // biome-ignore lint/suspicious/noExplicitAny: p5 typing\n function P5Bezier(canvas) {\n this.b = {\n canvas: null,\n ctx: null,\n dimension: 2,\n useP5: true,\n beginPath: function () { },\n moveTo: function () { },\n lineTo: function () { },\n closePath: function () { },\n };\n this.b.canvas = canvas;\n this.b.ctx = this.b.canvas.drawingContext;\n if (typeof p5 !== 'undefined' && canvas instanceof p5.Graphics) {\n this.b.useP5 = true;\n this.b.dimension = _getDimension(this.b.ctx, false);\n }\n else if ((typeof p5 !== 'undefined' && canvas instanceof p5.Renderer) ||\n canvas.drawingContext) {\n this.b.useP5 = false;\n if (typeof p5 === 'undefined' ||\n (typeof p5 !== 'undefined' && !(canvas instanceof p5.Renderer)))\n window.console.warn('[p5.bezier] Support beyond p5.js is not tested');\n this.b.dimension = _getDimension(this.b.ctx, canvas.isP3D);\n }\n else\n throw new Error('[p5.bezier] Canvas is not supported');\n _getCanvasUtils(this.b);\n }\n P5Bezier.prototype.draw = function (pointList, closeType, smoothness) {\n var _a, _b;\n if (closeType === void 0) { closeType = 'OPEN'; }\n if (smoothness === void 0) { smoothness = 3; }\n if (pointList.length < 2) {\n throw new Error('[p5.bezier] At least 2 points are needed to draw a curve');\n }\n var _pL = closeType === 'CLOSE'\n ? __spreadArray(__spreadArray([], _concentrate(pointList, true), true), _getCloseCurvePoints(pointList), true) : _concentrate(pointList);\n this.b.beginPath();\n (_a = this.b).moveTo.apply(_a, _pL[0]);\n _drawBezierCurve(this.b, _pL, smoothness);\n (_b = this.b).lineTo.apply(_b, _pL[_pL.length - 1]);\n if (this.b.useP5)\n this.b.closePath(closeType);\n else if (closeType === 'CLOSE')\n this.b.closePath();\n _setStyles(this.b);\n return _pL;\n };\n // bSpline(\n // pointList: PointList,\n // closeType: CloseType = 'OPEN',\n // smoothness: Smoothness = 3,\n // ): PointList {\n // if (pointList.length < 2) {\n // throw new Error(\n // '[p5.bezier] At least 2 points are needed to draw a curve',\n // )\n // }\n // const _pL =\n // closeType === 'CLOSE'\n // ? [...pointList, ...pointList.slice(0, 3)]\n // : pointList\n // this.b.beginPath()\n // // this.b.moveTo(..._pL[0])\n // _drawBSplineCurve(this.b, _pL, smoothness)\n // // this.b.lineTo(..._pL[_pL.length - 1])\n // if (this.b.useP5) {\n // this.b.closePath(closeType)\n // } else if (closeType === 'CLOSE') {\n // this.b.closePath()\n // }\n // _setStyles(this.b)\n // return _pL\n // }\n P5Bezier.prototype.new = function (pointList, closeType, smoothness) {\n if (closeType === void 0) { closeType = 'OPEN'; }\n if (smoothness === void 0) { smoothness = 3; }\n var increment = _smoothness[_validateSmoothness(smoothness)];\n return new BezierCurve(pointList, closeType, increment, this.b);\n };\n return P5Bezier;\n}());\n// biome-ignore lint/suspicious/noExplicitAny: p5 typing\nfunction initBezier(canvas) {\n return new P5Bezier(canvas);\n}\n/* -------------------------------------------------------------------------- */\nvar BezierCurve = /** @class */ (function () {\n function BezierCurve(points, closeType, increment, bezierCanvas, vertexList) {\n var _a;\n if (vertexList === void 0) { vertexList = null; }\n this.controlPoints = _concentrate(points, closeType === 'CLOSE');\n if (closeType === 'CLOSE') {\n (_a = this.controlPoints).push.apply(_a, _getCloseCurvePoints(this.controlPoints));\n this.closeType = 'CLOSE';\n }\n else\n this.closeType = 'OPEN';\n this.dimension = bezierCanvas.dimension;\n this.increment = increment;\n this.vertexList = [];\n this.p = this.controlPoints.length; // has p points for (p - 1) degree curves\n this.n = this.p - 1; // degree\n this.b = bezierCanvas;\n if (vertexList === null)\n this._buildVertexList();\n else\n this.vertexList = __spreadArray([], vertexList, true);\n }\n BezierCurve.prototype._buildVertexList = function () {\n this.vertexList = [];\n for (var t = 0; t <= 1; t += this.increment) {\n var v = _bezierVertex(this.controlPoints, this.n, t, this.dimension);\n this.vertexList.push(v);\n }\n this._addVertex(this.controlPoints[this.controlPoints.length - 1]);\n this.dimension = this.vertexList[0].length;\n return this.vertexList;\n };\n BezierCurve.prototype._addVertex = function (vArray) {\n var _a;\n (_a = this.b).lineTo.apply(_a, vArray);\n };\n BezierCurve.prototype._distVertex = function (vArray1, vArray2) {\n return this.dimension === 3 && vArray1.length === 3 && vArray2.length === 3\n ? _dist(vArray1[0], vArray1[1], vArray1[2], vArray2[0], vArray2[1], vArray2[2])\n : this.dimension === 2\n ? _dist(vArray1[0], vArray1[1], vArray2[0], vArray2[1])\n : 0;\n };\n BezierCurve.prototype.draw = function (dash) {\n if (!dash) {\n this._solidCurve();\n }\n else {\n this._dashedCurve(dash);\n }\n };\n BezierCurve.prototype._solidCurve = function () {\n var _this = this;\n this.b.beginPath();\n this.vertexList.map(function (v) { return _this._addVertex(v); });\n if (this.closeType === 'CLOSE')\n this.b.closePath();\n if (this.b.useP5)\n this.b.closePath(this.closeType);\n else if (this.closeType === 'CLOSE')\n this.b.closePath();\n _setStyles(this.b);\n };\n BezierCurve.prototype._dashedCurve = function (dash) {\n var _a, _b, _c, _d, _e;\n if (this.increment > 0.001) {\n this.increment = 0.001;\n window.console.warn('[p5.bezier] Smoothness set to 3 for a dashed curve');\n }\n var _f = dash.map(Math.abs), solidPart = _f[0], gapPart = _f[1];\n var solid = true;\n var lastVertex = this.vertexList[0];\n var toUseVertexInd = 1;\n var currentVirtualVertex = lastVertex;\n var availableDist = 0;\n var neededDist = solidPart;\n this.b.ctx.save();\n this.b.ctx.fillStyle = 'rgba(0, 0, 0, 0)';\n this.b.beginPath();\n (_a = this.b).moveTo.apply(_a, lastVertex);\n while (toUseVertexInd < this.vertexList.length) {\n var toUseVertex = this.vertexList[toUseVertexInd];\n availableDist = this._distVertex(lastVertex, toUseVertex);\n while (availableDist >= neededDist) {\n currentVirtualVertex = _interpolateVertex(currentVirtualVertex, toUseVertex, neededDist / availableDist);\n solid\n ? (_b = this.b).lineTo.apply(_b, currentVirtualVertex) : (_c = this.b).moveTo.apply(_c, currentVirtualVertex);\n availableDist -= neededDist;\n solid = !solid;\n neededDist = solid ? solidPart : gapPart;\n }\n solid ? (_d = this.b).lineTo.apply(_d, toUseVertex) : (_e = this.b).moveTo.apply(_e, toUseVertex);\n neededDist -= this._distVertex(currentVirtualVertex, toUseVertex);\n lastVertex = toUseVertex;\n currentVirtualVertex = lastVertex;\n toUseVertexInd++;\n }\n _setStyles(this.b);\n this.b.ctx.restore();\n };\n BezierCurve.prototype.update = function (newControlPointList) {\n if (newControlPointList.length !== this.controlPoints.length) {\n throw new Error('[p5.bezier] The number of control points changed');\n }\n if (this.controlPoints.every(function (v, i) { return v === newControlPointList[i]; })) {\n return;\n }\n this.controlPoints = newControlPointList;\n this._buildVertexList();\n };\n BezierCurve.prototype.move = function (x, y, z, toDraw, dash) {\n if (z === void 0) { z = null; }\n if (toDraw === void 0) { toDraw = true; }\n if (z === null && this.dimension === 3) {\n throw new Error('[p5.bezier] X, Y, and Z are needed to move a 3D curve');\n }\n var toMove = [x, y];\n if (z !== null)\n toMove.push(z);\n var newCurveV = this.vertexList.map(function (v) { return v.slice(); });\n var newCurveObj = new BezierCurve(this.controlPoints, this.closeType, this.increment, this.b, newCurveV);\n newCurveObj.vertexList = newCurveObj.vertexList.map(function (v) { return v.map(function (val, i) { return val + toMove[i]; }); });\n if (toDraw)\n newCurveObj.draw(dash);\n return newCurveObj;\n };\n BezierCurve.prototype.shortest = function (pX, pY, pZ) {\n var _this = this;\n if (pZ === void 0) { pZ = 0; }\n var minVertex = [0, 0, 0];\n var dMin = Number.POSITIVE_INFINITY;\n this.vertexList.map(function (v) {\n var nowMin = _this._distVertex(v, [pX, pY, pZ]);\n if (dMin > nowMin) {\n dMin = nowMin;\n minVertex = __spreadArray([], v, true);\n }\n });\n return minVertex;\n };\n return BezierCurve;\n}());\nexport default initBezier;\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","_smoothness","_calculatedFactorials","_binomialCoefficients","_f","i","_binomialCoefficient","n","length","_helper_ensureFactorials","MAX_DEGREE","_n","_helper_ensureBinomialCoefficients","__spreadArray","to","from","pack","arguments","ar","l","Array","slice","concat","_getDimension","context","isP3D","constructor","name","_dist","args","_i","len","dx","dy","Math","sqrt","dz","_setStyles","b","canvas","_doFill","ctx","fill","_doStroke","stroke","warnedSmoothness","_validateSmoothness","smoothness","Number","isInteger","window","console","warn","round","max","min","SeedRandom","seed","m","pow","a","c","state","r","next","floor","_concentrate","pointList","close","limit","_copy","excessPoints","rng","rmIndex","Set","map","_","ind","has","add","filter","index","arr","v","_getCloseCurvePoints","first","last","second","secondLast","_bezierVertex","t","dimension","vertex","oneMinusT","coefficient","d","log","P5Bezier","useP5","beginPath","moveTo","lineTo","closePath","drawingContext","p5","Graphics","Renderer","Error","beginShape","endShape","WebGLRenderingContext","x","y","z","vertexAttrib3f","bind","draw","closeType","_a","_b","_pL","apply","bezierCanvas","increment","_drawBezierCurve","new","BezierCurve","points","vertexList","controlPoints","push","p","_buildVertexList","_addVertex","vArray","_distVertex","vArray1","vArray2","dash","_dashedCurve","_solidCurve","_this","_c","_d","_e","v1","v2","len1","len2","abs","solidPart","gapPart","solid","lastVertex","toUseVertexInd","currentVirtualVertex","availableDist","neededDist","save","fillStyle","toUseVertex","restore","update","newControlPointList","every","move","toDraw","toMove","newCurveV","newCurveObj","val","shortest","pX","pY","pZ","minVertex","dMin","POSITIVE_INFINITY","nowMin"],"sourceRoot":""}
package/lib/utils.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { type Smoothness } from './coefficients';
1
2
  export type CloseType = 'OPEN' | 'CLOSE';
2
3
  export type Dimension = 2 | 3;
3
4
  export type Point = [number, number] | [number, number, number];
@@ -18,6 +19,7 @@ export declare function _getDimension(context: any, isP3D: boolean): Dimension;
18
19
  export declare function _getCanvasUtils(b: BezierCanvas): void;
19
20
  export declare function _dist(...args: number[]): number;
20
21
  export declare function _setStyles(b: BezierCanvas): void;
22
+ export declare function _validateSmoothness(smoothness: number): Smoothness;
21
23
  export declare function _concentrate(pointList: PointList, close?: boolean): PointList;
22
24
  export declare function _getCloseCurvePoints(pointList: PointList): PointList;
23
25
  export declare function _interpolateVertex(v1: Vertex, v2: Vertex, t: number): Vertex;
package/package.json CHANGED
@@ -1,22 +1,22 @@
1
1
  {
2
2
  "name": "p5bezier",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "author": "Peiling Jiang",
5
5
  "repository": {
6
6
  "type": "git",
7
- "url": "https://github.com/peilingjiang/p5.bezier.git"
7
+ "url": "git+https://github.com/peilingjiang/p5.bezier.git"
8
8
  },
9
9
  "main": "lib/p5.bezier.min.js",
10
10
  "devDependencies": {
11
- "@biomejs/biome": "^1.8.3",
11
+ "@biomejs/biome": "^1.9.2",
12
12
  "@types/p5": "^1.7.6",
13
- "husky": "^9.1.5",
14
- "lint-staged": "^15.2.9",
13
+ "husky": "^9.1.6",
14
+ "lint-staged": "^15.2.10",
15
15
  "prettier": "^3.3.3",
16
16
  "terser-webpack-plugin": "^5.3.10",
17
17
  "ts-loader": "^9.5.1",
18
- "typescript": "^5.5.4",
19
- "webpack": "^5.93.0",
18
+ "typescript": "^5.6.2",
19
+ "webpack": "^5.94.0",
20
20
  "webpack-cli": "^5.1.4"
21
21
  },
22
22
  "bugs": {