plotboilerplate 1.23.1 → 1.23.3

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 (136) hide show
  1. package/README.md +1 -1
  2. package/dist/index.esm.js +7055 -6751
  3. package/dist/index.esm.js.map +1 -1
  4. package/dist/index.esm.min.js +1 -1
  5. package/dist/index.esm.min.js.map +1 -1
  6. package/dist/plotboilerplate.browser.min.js +1 -1
  7. package/dist/plotboilerplate.browser.min.js.map +1 -1
  8. package/dist/plotboilerplate.js +342 -34
  9. package/dist/plotboilerplate.min.js +1 -1
  10. package/package.json +4 -2
  11. package/src/cjs/PlotBoilerplate.d.ts +5 -2
  12. package/src/cjs/PlotBoilerplate.js +10 -4
  13. package/src/cjs/PlotBoilerplate.js.map +1 -1
  14. package/src/cjs/Polygon.d.ts +107 -4
  15. package/src/cjs/Polygon.js +215 -9
  16. package/src/cjs/Polygon.js.map +1 -1
  17. package/src/cjs/Triangle.d.ts +23 -3
  18. package/src/cjs/Triangle.js +15 -2
  19. package/src/cjs/Triangle.js.map +1 -1
  20. package/src/cjs/VertTuple.d.ts +12 -7
  21. package/src/cjs/VertTuple.js +14 -9
  22. package/src/cjs/VertTuple.js.map +1 -1
  23. package/src/cjs/Vertex.d.ts +2 -1
  24. package/src/cjs/Vertex.js +5 -2
  25. package/src/cjs/Vertex.js.map +1 -1
  26. package/src/cjs/draw.d.ts +1 -0
  27. package/src/cjs/draw.js +2 -1
  28. package/src/cjs/draw.js.map +1 -1
  29. package/src/cjs/drawutilssvg.d.ts +6 -1
  30. package/src/cjs/drawutilssvg.js +34 -6
  31. package/src/cjs/drawutilssvg.js.map +1 -1
  32. package/src/cjs/geomutils.d.ts +32 -1
  33. package/src/cjs/geomutils.js +47 -1
  34. package/src/cjs/geomutils.js.map +1 -1
  35. package/src/cjs/interfaces/core.d.ts +4 -2
  36. package/src/cjs/interfaces/core.js +1 -0
  37. package/src/cjs/interfaces/core.js.map +1 -1
  38. package/src/cjs/interfaces/externals.d.ts +30 -0
  39. package/src/cjs/utils/InitializationObserver.js +7 -0
  40. package/src/cjs/utils/InitializationObserver.js.map +1 -1
  41. package/src/cjs/utils/Params.d.ts +5 -3
  42. package/src/cjs/utils/Params.js +7 -3
  43. package/src/cjs/utils/Params.js.map +1 -1
  44. package/src/cjs/utils/algorithms/PolygonInset.d.ts +184 -0
  45. package/src/cjs/utils/algorithms/PolygonInset.js +431 -0
  46. package/src/cjs/utils/algorithms/PolygonInset.js.map +1 -0
  47. package/src/cjs/utils/algorithms/clearDuplicateVertices.d.ts +5 -4
  48. package/src/cjs/utils/algorithms/clearDuplicateVertices.js +6 -3
  49. package/src/cjs/utils/algorithms/clearDuplicateVertices.js.map +1 -1
  50. package/src/cjs/utils/algorithms/findPolygonSelfIntersections.d.ts +2 -1
  51. package/src/cjs/utils/algorithms/findPolygonSelfIntersections.js +3 -3
  52. package/src/cjs/utils/algorithms/findPolygonSelfIntersections.js.map +1 -1
  53. package/src/cjs/utils/algorithms/splitPolygonToNonIntersecting.d.ts +3 -2
  54. package/src/cjs/utils/algorithms/splitPolygonToNonIntersecting.js +11 -9
  55. package/src/cjs/utils/algorithms/splitPolygonToNonIntersecting.js.map +1 -1
  56. package/src/cjs/utils/creategui.js +69 -1
  57. package/src/cjs/utils/detectDarkMode.js.map +1 -1
  58. package/src/cjs/utils/dom/guiSizeToggler.d.ts +2 -1
  59. package/src/cjs/utils/dom/guiSizeToggler.js +5 -3
  60. package/src/cjs/utils/dom/guiSizeToggler.js.map +1 -1
  61. package/src/cjs/utils/gup.d.ts +1 -0
  62. package/src/cjs/utils/gup.js +3 -1
  63. package/src/cjs/utils/gup.js.map +1 -1
  64. package/src/esm/PlotBoilerplate.d.ts +5 -2
  65. package/src/esm/PlotBoilerplate.js +10 -4
  66. package/src/esm/PlotBoilerplate.js.map +1 -1
  67. package/src/esm/Polygon.d.ts +107 -4
  68. package/src/esm/Polygon.js +214 -9
  69. package/src/esm/Polygon.js.map +1 -1
  70. package/src/esm/Triangle.d.ts +23 -3
  71. package/src/esm/Triangle.js +15 -2
  72. package/src/esm/Triangle.js.map +1 -1
  73. package/src/esm/VertTuple.d.ts +12 -7
  74. package/src/esm/VertTuple.js +14 -9
  75. package/src/esm/VertTuple.js.map +1 -1
  76. package/src/esm/Vertex.d.ts +2 -1
  77. package/src/esm/Vertex.js +5 -2
  78. package/src/esm/Vertex.js.map +1 -1
  79. package/src/esm/draw.d.ts +1 -0
  80. package/src/esm/draw.js +2 -1
  81. package/src/esm/draw.js.map +1 -1
  82. package/src/esm/drawutilssvg.d.ts +6 -1
  83. package/src/esm/drawutilssvg.js +34 -6
  84. package/src/esm/drawutilssvg.js.map +1 -1
  85. package/src/esm/geomutils.d.ts +32 -1
  86. package/src/esm/geomutils.js +47 -1
  87. package/src/esm/geomutils.js.map +1 -1
  88. package/src/esm/interfaces/core.d.ts +4 -2
  89. package/src/esm/interfaces/core.js +1 -0
  90. package/src/esm/interfaces/core.js.map +1 -1
  91. package/src/esm/interfaces/externals.d.ts +30 -0
  92. package/src/esm/utils/InitializationObserver.js +7 -0
  93. package/src/esm/utils/InitializationObserver.js.map +1 -1
  94. package/src/esm/utils/Params.d.ts +5 -3
  95. package/src/esm/utils/Params.js +7 -3
  96. package/src/esm/utils/Params.js.map +1 -1
  97. package/src/esm/utils/algorithms/PolygonInset.d.ts +184 -0
  98. package/src/esm/utils/algorithms/PolygonInset.js +424 -0
  99. package/src/esm/utils/algorithms/PolygonInset.js.map +1 -0
  100. package/src/esm/utils/algorithms/clearDuplicateVertices.d.ts +5 -4
  101. package/src/esm/utils/algorithms/clearDuplicateVertices.js +6 -3
  102. package/src/esm/utils/algorithms/clearDuplicateVertices.js.map +1 -1
  103. package/src/esm/utils/algorithms/findPolygonSelfIntersections.d.ts +2 -1
  104. package/src/esm/utils/algorithms/findPolygonSelfIntersections.js +3 -3
  105. package/src/esm/utils/algorithms/findPolygonSelfIntersections.js.map +1 -1
  106. package/src/esm/utils/algorithms/splitPolygonToNonIntersecting.d.ts +3 -2
  107. package/src/esm/utils/algorithms/splitPolygonToNonIntersecting.js +11 -9
  108. package/src/esm/utils/algorithms/splitPolygonToNonIntersecting.js.map +1 -1
  109. package/src/esm/utils/detectDarkMode.js.map +1 -1
  110. package/src/esm/utils/dom/guiSizeToggler.d.ts +2 -1
  111. package/src/esm/utils/dom/guiSizeToggler.js +4 -2
  112. package/src/esm/utils/dom/guiSizeToggler.js.map +1 -1
  113. package/src/esm/utils/gup.d.ts +1 -0
  114. package/src/esm/utils/gup.js +3 -1
  115. package/src/esm/utils/gup.js.map +1 -1
  116. package/src/index-gl.js +3 -1
  117. package/src/index.js +2 -1
  118. package/src/ts/PlotBoilerplate.ts +11 -4
  119. package/src/ts/Polygon.ts +230 -9
  120. package/src/ts/Triangle.ts +18 -4
  121. package/src/ts/VertTuple.ts +15 -10
  122. package/src/ts/Vertex.ts +5 -2
  123. package/src/ts/draw.ts +2 -1
  124. package/src/ts/drawutilssvg.ts +46 -6
  125. package/src/ts/geomutils.ts +49 -1
  126. package/src/ts/interfaces/core.ts +5 -2
  127. package/src/ts/interfaces/externals.ts +34 -0
  128. package/src/ts/utils/InitializationObserver.ts +7 -0
  129. package/src/ts/utils/Params.ts +8 -3
  130. package/src/ts/utils/algorithms/PolygonInset.ts +529 -0
  131. package/src/ts/utils/algorithms/clearDuplicateVertices.ts +11 -8
  132. package/src/ts/utils/algorithms/findPolygonSelfIntersections.ts +25 -26
  133. package/src/ts/utils/algorithms/splitPolygonToNonIntersecting.ts +92 -99
  134. package/src/ts/utils/detectDarkMode.ts +1 -3
  135. package/src/ts/utils/dom/guiSizeToggler.ts +4 -2
  136. package/src/ts/utils/gup.ts +3 -1
@@ -6,15 +6,17 @@
6
6
  * @author Ikaros Kappler
7
7
  * @date 2021-07-13
8
8
  * @modified 2023-10-28 Refactored and ported to Typescript.
9
- * @version 1.0.0
9
+ * @modified 2024-12-17 Simplified this method to work with generic sub types of XYCoords as well.
10
+ * @version 1.0.1
10
11
  */
12
+ import { geomutils } from "../../geomutils";
11
13
  const EPS = 0.000001;
12
14
  /**
13
15
  * Filter the array and clear all duplicates.
14
16
  *
15
17
  * The original array is left unchanged. The vertices in the array are not cloned.
16
18
  *
17
- * @param {Vertex[]} vertices
19
+ * @param {XYCoords[]} vertices
18
20
  * @param {number=EPS} epsilon
19
21
  * @return {Vertex[]}
20
22
  */
@@ -31,7 +33,8 @@ export const clearDuplicateVertices = (vertices, epsilon) => {
31
33
  return result;
32
34
  };
33
35
  const isCloseTo = (vertA, vertB, eps) => {
34
- return vertA.distance(vertB) < eps;
36
+ // return vertA.distance(vertB) < eps;
37
+ return geomutils.dist4(vertA.x, vertA.y, vertB.x, vertB.y) < eps;
35
38
  };
36
39
  const containsElementFrom = (vertices, vertex, fromIndex, epsilon) => {
37
40
  for (var i = fromIndex; i < vertices.length; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"clearDuplicateVertices.js","sourceRoot":"","sources":["../../../ts/utils/algorithms/clearDuplicateVertices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,GAAG,GAAW,QAAQ,CAAC;AAE7B;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAkB,EAAE,OAAgB,EAAE,EAAE;IAC7E,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,GAAG,GAAG,CAAC;IAChB,CAAC;IACD,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,GAAW,EAAW,EAAE;IACvE,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,QAAuB,EAAE,MAAc,EAAE,SAAiB,EAAE,OAAe,EAAW,EAAE;IACnH,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
1
+ {"version":3,"file":"clearDuplicateVertices.js","sourceRoot":"","sources":["../../../ts/utils/algorithms/clearDuplicateVertices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,MAAM,GAAG,GAAW,QAAQ,CAAC;AAE7B;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAqB,QAAa,EAAE,OAAgB,EAAE,EAAE;IAC5F,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,GAAG,GAAG,CAAC;IAChB,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAqB,KAAQ,EAAE,KAAQ,EAAE,GAAW,EAAW,EAAE;IACjF,sCAAsC;IACtC,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAqB,QAAkB,EAAE,MAAS,EAAE,SAAiB,EAAE,OAAe,EAAW,EAAE;IAC7H,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -5,6 +5,7 @@
5
5
  * @author Ikaros Kappler
6
6
  * @date 2020-12-04
7
7
  * @modified 2020-12-09 Ported from vanilla JS to Typescript.
8
+ * @modified 2024-11-22 Fixed a type error in line 41.
8
9
  */
9
10
  import { Vertex } from "../../Vertex";
10
11
  import { XYCoords } from "../../interfaces";
@@ -15,6 +16,6 @@ import { XYCoords } from "../../interfaces";
15
16
  *
16
17
  * @name findPolygonSelfIntersections
17
18
  * @param {Array<Vertex>} vertices - The vertices that form the polygon.
18
- * @return Array<Vertex>
19
+ * @return {Array<Vertex>}
19
20
  */
20
21
  export declare const findPolygonSelfIntersections: (vertices: Array<XYCoords>) => Array<Vertex>;
@@ -5,6 +5,7 @@
5
5
  * @author Ikaros Kappler
6
6
  * @date 2020-12-04
7
7
  * @modified 2020-12-09 Ported from vanilla JS to Typescript.
8
+ * @modified 2024-11-22 Fixed a type error in line 41.
8
9
  */
9
10
  import { Line } from "../../Line";
10
11
  import { Vertex } from "../../Vertex";
@@ -15,7 +16,7 @@ import { Vertex } from "../../Vertex";
15
16
  *
16
17
  * @name findPolygonSelfIntersections
17
18
  * @param {Array<Vertex>} vertices - The vertices that form the polygon.
18
- * @return Array<Vertex>
19
+ * @return {Array<Vertex>}
19
20
  */
20
21
  export const findPolygonSelfIntersections = (vertices) => {
21
22
  const pointList = [];
@@ -36,8 +37,7 @@ export const findPolygonSelfIntersections = (vertices) => {
36
37
  // The point is undefined if and only if both line are parallel (co-linear).
37
38
  const intersectionPoint = lineA.intersection(lineB);
38
39
  // Check if the intersection point is on both (finite) edges of the polygon.
39
- if (intersectionPoint
40
- && lineA.hasPoint(intersectionPoint) && lineB.hasPoint(intersectionPoint)) {
40
+ if (intersectionPoint && lineA.hasPoint(intersectionPoint) && lineB.hasPoint(intersectionPoint)) {
41
41
  pointList.push(intersectionPoint);
42
42
  }
43
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"findPolygonSelfIntersections.js","sourceRoot":"","sources":["../../../ts/utils/algorithms/findPolygonSelfIntersections.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAE,QAAwB,EAAmB,EAAE;IACvF,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAU,IAAI,IAAI,CAAE,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,EAAE,CAAE,CAAC;IAC5D,MAAM,KAAK,GAAU,IAAI,IAAI,CAAE,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,EAAE,CAAE,CAAC;IAC5D,MAAM,CAAC,GAAY,QAAQ,CAAC,MAAM,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAG,CAAC;QACjC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAE,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAC;QAC3B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAE,QAAQ,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAE,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAG,CAAC;YAC1B,wDAAwD;YACxD,aAAa;YACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAC,CAAC,IAAI,CAAC,CAAC,IAAE,CAAC,IAAE,CAAC,GAAC,CAAC,IAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAE,CAAC,IAAE,CAAC,GAAC,CAAC,IAAE,CAAC,CAAC;gBACzE,SAAS;YACN,KAAK,CAAC,CAAC,CAAC,GAAG,CAAE,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAC;YAC3B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAE,QAAQ,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAE,CAAC;YAEjC,2DAA2D;YAC3D,4EAA4E;YAC5E,MAAM,iBAAiB,GAAsB,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAEvE,4EAA4E;YAC5E,IAAI,iBAAiB;mBACrB,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAG,CAAC;gBAC7E,SAAS,CAAC,IAAI,CAAE,iBAAiB,CAAE,CAAC;YACjC,CAAC;QACL,CAAC;IACE,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC"}
1
+ {"version":3,"file":"findPolygonSelfIntersections.js","sourceRoot":"","sources":["../../../ts/utils/algorithms/findPolygonSelfIntersections.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,QAAyB,EAAiB,EAAE;IACvF,MAAM,SAAS,GAAkB,EAAE,CAAC;IACpC,MAAM,KAAK,GAAS,IAAI,IAAI,CAAC,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,EAAE,CAAC,CAAC;IACzD,MAAM,KAAK,GAAS,IAAI,IAAI,CAAC,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,GAAW,QAAQ,CAAC,MAAM,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,wDAAwD;YACxD,aAAa;YACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAAE,SAAS;YACrG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAEnC,2DAA2D;YAC3D,4EAA4E;YAC5E,MAAM,iBAAiB,GAAkB,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAEnE,4EAA4E;YAC5E,IAAI,iBAAiB,IAAI,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAChG,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
@@ -5,7 +5,8 @@
5
5
  * @author Ikaros Kappler
6
6
  * @date 2020-12-04
7
7
  * @modified 2020-12-07 Ported from vanilla JS to typescript.
8
- * @version 1.0.1
8
+ * @modified 2024-11-22 Added the `insideBoundsOnly` param to the `splitPolygonToNonIntersecting` algorithm.
9
+ * @version 1.1.0
9
10
  */
10
11
  import { Vertex } from "../../Vertex";
11
12
  /**
@@ -24,4 +25,4 @@ import { Vertex } from "../../Vertex";
24
25
  * @param {number=10} maxDepth - Number of max recursive steps (default is 10).
25
26
  * @return {Array<Array<Vertex>>} A sequence of non-self-intersecting sub polygons.
26
27
  */
27
- export declare const splitPolygonToNonIntersecting: (vertices: Array<Vertex>, maxDepth?: number) => Array<Array<Vertex>>;
28
+ export declare const splitPolygonToNonIntersecting: (vertices: Array<Vertex>, maxDepth?: number, insideBoundsOnly?: boolean) => Array<Array<Vertex>>;
@@ -5,7 +5,8 @@
5
5
  * @author Ikaros Kappler
6
6
  * @date 2020-12-04
7
7
  * @modified 2020-12-07 Ported from vanilla JS to typescript.
8
- * @version 1.0.1
8
+ * @modified 2024-11-22 Added the `insideBoundsOnly` param to the `splitPolygonToNonIntersecting` algorithm.
9
+ * @version 1.1.0
9
10
  */
10
11
  import { Line } from "../../Line";
11
12
  import { Vertex } from "../../Vertex";
@@ -30,12 +31,12 @@ export const splitPolygonToNonIntersecting = (() => {
30
31
  * @param {Array<Vertex>} vertices
31
32
  * @param {number=10} maxDepth
32
33
  */
33
- const splitPolygonToNonIntersecting = (vertices, maxDepth) => {
34
+ const splitPolygonToNonIntersecting = (vertices, maxDepth, insideBoundsOnly) => {
34
35
  if (typeof maxDepth === "undefined")
35
36
  maxDepth = 10;
36
- return _splitPolygonToNonIntersecting(vertices, maxDepth);
37
+ return _splitPolygonToNonIntersecting(vertices, maxDepth, insideBoundsOnly);
37
38
  };
38
- const _splitPolygonToNonIntersecting = (vertices, maxDepth) => {
39
+ const _splitPolygonToNonIntersecting = (vertices, maxDepth, insideBoundsOnly) => {
39
40
  if (maxDepth <= 0) {
40
41
  // aborting at max depth
41
42
  return [vertices];
@@ -53,18 +54,19 @@ export const splitPolygonToNonIntersecting = (() => {
53
54
  for (var b = 0; b < vertices.length; b++) {
54
55
  // Equal edges or neighbour edges intersect by definition.
55
56
  // We ignore them.
56
- if (a == b || a + 1 == b || a == b + 1
57
- || (a == 0 && b + 1 == vertices.length) || (b == 0 && a + 1 == vertices.length))
57
+ if (a == b || a + 1 == b || a == b + 1 || (a == 0 && b + 1 == vertices.length) || (b == 0 && a + 1 == vertices.length))
58
58
  continue;
59
59
  lineB.a.set(vertices[b]);
60
60
  lineB.b.set(vertices[(b + 1) % n]);
61
61
  const intersectionPoint = lineA.intersection(lineB);
62
- if (intersectionPoint && lineA.hasPoint(intersectionPoint) && lineB.hasPoint(intersectionPoint)) {
62
+ if (intersectionPoint &&
63
+ lineA.hasPoint(intersectionPoint, insideBoundsOnly) &&
64
+ lineB.hasPoint(intersectionPoint, insideBoundsOnly)) {
63
65
  // Cut polygon into two here
64
66
  const split = splitPolygonAt(vertices, a, b, intersectionPoint);
65
67
  // Split has 2 elements.
66
- const leftCleaned = _splitPolygonToNonIntersecting(split[0], maxDepth - 1);
67
- const rightCleaned = _splitPolygonToNonIntersecting(split[1], maxDepth - 1);
68
+ const leftCleaned = _splitPolygonToNonIntersecting(split[0], maxDepth - 1, insideBoundsOnly);
69
+ const rightCleaned = _splitPolygonToNonIntersecting(split[1], maxDepth - 1, insideBoundsOnly);
68
70
  return leftCleaned.concat(rightCleaned);
69
71
  }
70
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"splitPolygonToNonIntersecting.js","sourceRoot":"","sources":["../../../ts/utils/algorithms/splitPolygonToNonIntersecting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"splitPolygonToNonIntersecting.js","sourceRoot":"","sources":["../../../ts/utils/algorithms/splitPolygonToNonIntersecting.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"detectDarkMode.js","sourceRoot":"","sources":["../../ts/utils/detectDarkMode.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAA4B,EAAE,EAAE;IAC7D,oBAAoB;IACpB,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACpF,iFAAiF;QACjF,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACpD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,EAAE,CAAC;QAC3F,sBAAsB;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,6BAA6B;IAC7B,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;IAC1C,OAAO,CAAC,SAAS,CAAC;AACpB,CAAC,CAAC"}
1
+ {"version":3,"file":"detectDarkMode.js","sourceRoot":"","sources":["../../ts/utils/detectDarkMode.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAA4B,EAAW,EAAE;IACtE,oBAAoB;IACpB,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACpF,iFAAiF;QACjF,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACpD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,EAAE,CAAC;QAC3F,sBAAsB;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,6BAA6B;IAC7B,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;IAC1C,OAAO,CAAC,SAAS,CAAC;AACpB,CAAC,CAAC"}
@@ -5,7 +5,8 @@
5
5
  * @date 2021-12-13
6
6
  * @modified 2022-01-10
7
7
  * @modified 2024-06-25 Ported to typescript and moved to utils/dom (was located inside demos before).
8
- * @version 1.1.0
8
+ * @modified 2024-10-02 Added a transition time.
9
+ * @version 1.1.1
9
10
  */
10
11
  import { GUI } from "../../interfaces/externals";
11
12
  interface ITogglerConfig {
@@ -5,7 +5,8 @@
5
5
  * @date 2021-12-13
6
6
  * @modified 2022-01-10
7
7
  * @modified 2024-06-25 Ported to typescript and moved to utils/dom (was located inside demos before).
8
- * @version 1.1.0
8
+ * @modified 2024-10-02 Added a transition time.
9
+ * @version 1.1.1
9
10
  */
10
11
  /**
11
12
  * @param {GUI} gui - The GUI (compatible with dat.gui and lil-gui).
@@ -28,7 +29,8 @@ const applyGuiSize = (gui, guiDoubleSize, cssProps) => {
28
29
  gui.domElement.style["transform"] = transform + "scale(1.0)";
29
30
  }
30
31
  };
31
- export const guiSizeToggler /* gst */ = (gui, config, cssProps) => {
32
+ export const guiSizeToggler = (gui, config, cssProps) => {
33
+ gui.domElement.style["transition"] = "transform 0.5s";
32
34
  return {
33
35
  update: function () {
34
36
  applyGuiSize(gui, Boolean(config.guiDoubleSize), cssProps);
@@ -1 +1 @@
1
- {"version":3,"file":"guiSizeToggler.js","sourceRoot":"","sources":["../../../ts/utils/dom/guiSizeToggler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAC,GAAQ,EAAE,aAAsB,EAAE,QAAgC,EAAE,EAAE;IAC1F,IAAI,QAAQ,IAAI,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC;IACvD,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,IAAI,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACpC,IAAI,aAAa,EAAE,CAAC;QAClB,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS,GAAG,YAAY,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS,GAAG,YAAY,CAAC;IAC/D,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,CAAC,SAAS,GAAG,CAAC,GAAQ,EAAE,MAAsB,EAAE,QAAgC,EAAE,EAAE;IAC7G,OAAO;QACL,MAAM,EAAE;YACN,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC7D,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"guiSizeToggler.js","sourceRoot":"","sources":["../../../ts/utils/dom/guiSizeToggler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAC,GAAQ,EAAE,aAAsB,EAAE,QAAgC,EAAE,EAAE;IAC1F,IAAI,QAAQ,IAAI,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC;IACvD,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,IAAI,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACpC,IAAI,aAAa,EAAE,CAAC;QAClB,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS,GAAG,YAAY,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS,GAAG,YAAY,CAAC;IAC/D,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAQ,EAAE,MAAsB,EAAE,QAAgC,EAAE,EAAE;IACnG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,gBAAgB,CAAC;IACtD,OAAO;QACL,MAAM,EAAE;YACN,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC7D,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -9,5 +9,6 @@
9
9
  * Ported to typescript.
10
10
  * @date 2021-05-21
11
11
  * @modified 2024-03-10 Fixed some type for Typescript 5 compatibility.
12
+ * @modified 2024-08-26 Decoding URI components in GET params.
12
13
  */
13
14
  export declare const gup: () => Record<string, string>;
@@ -9,6 +9,7 @@
9
9
  * Ported to typescript.
10
10
  * @date 2021-05-21
11
11
  * @modified 2024-03-10 Fixed some type for Typescript 5 compatibility.
12
+ * @modified 2024-08-26 Decoding URI components in GET params.
12
13
  */
13
14
  // Get the URI GET params as an assoc.
14
15
  //
@@ -18,7 +19,8 @@
18
19
  export const gup = () => {
19
20
  const vars = {};
20
21
  globalThis.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, (_m, key, value) => {
21
- return (vars[key] = value);
22
+ const keyName = key;
23
+ return (vars[decodeURIComponent(keyName)] = value);
22
24
  });
23
25
  return vars;
24
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"gup.js","sourceRoot":"","sources":["../../ts/utils/gup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,sCAAsC;AACtC,EAAE;AACF,6BAA6B;AAC7B,WAAW;AACX,sKAAsK;AACtK,MAAM,CAAC,MAAM,GAAG,GAAG,GAA2B,EAAE;IAC9C,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC,EAAU,EAAE,GAAW,EAAE,KAAa,EAAU,EAAE;QAC7G,OAAO,CAAC,IAAI,CAAC,GAAmB,CAAC,GAAG,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
1
+ {"version":3,"file":"gup.js","sourceRoot":"","sources":["../../ts/utils/gup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,sCAAsC;AACtC,EAAE;AACF,6BAA6B;AAC7B,WAAW;AACX,sKAAsK;AACtK,MAAM,CAAC,MAAM,GAAG,GAAG,GAA2B,EAAE;IAC9C,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC,EAAU,EAAE,GAAW,EAAE,KAAa,EAAU,EAAE;QAC7G,MAAM,OAAO,GAAW,GAAmB,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
package/src/index-gl.js CHANGED
@@ -15,6 +15,8 @@
15
15
 
16
16
  // Fetch the GET params
17
17
  let GUP = gup();
18
+ var isDarkmode = detectDarkMode(GUP);
19
+ var isDarkmode = detectDarkMode(GUP);
18
20
 
19
21
  window.addEventListener("load", function () {
20
22
  // All config params are optional.
@@ -40,7 +42,7 @@
40
42
  autoAdjustOffset: true,
41
43
  offsetAdjustXPercent: 50,
42
44
  offsetAdjustYPercent: 50,
43
- backgroundColor: "#ffffff",
45
+ backgroundColor: isDarkmode ? "#000000" : "#ffffff",
44
46
  enableMouse: true,
45
47
  enableTouch: true,
46
48
  enableKeys: true,
package/src/index.js CHANGED
@@ -23,6 +23,7 @@
23
23
  window.pbInitialized = true;
24
24
  // Fetch the GET params
25
25
  let GUP = gup();
26
+ var isDarkmode = detectDarkMode(GUP);
26
27
  var isInitialized = false;
27
28
 
28
29
  // All config params are optional.
@@ -49,7 +50,7 @@
49
50
  offsetAdjustXPercent: 50,
50
51
  offsetAdjustYPercent: 50,
51
52
  autoDetectRetina: false,
52
- backgroundColor: "#ffffff",
53
+ backgroundColor: isDarkmode ? "#000000" : "#ffffff",
53
54
  enableMouse: true,
54
55
  enableTouch: true,
55
56
  enableKeys: true,
@@ -84,8 +84,10 @@
84
84
  * @modified 2023-02-10 Adding `enableZoom` and `enablePan` (both default true) to have the option to disable these functions.
85
85
  * @modified 2023-09-29 Adding proper dicionary key and value types to the params of `PlotBoilerplate.utils.safeMergeByKeys` (was `object` before).
86
86
  * @modified 2024-07-08 Adding `PlotBoilerplate.getGUI()` to retrieve the GUI instance.
87
+ * @modified 2024-08-25 Extending main class `PlotBoilerplate` optional param `isBackdropFiltersEnabled`.
88
+ * @modified 2024-12-02 Adding the `triggerRedraw` to the `removeAll` method.
87
89
  *
88
- * @version 1.18.0
90
+ * @version 1.20.0
89
91
  *
90
92
  * @file PlotBoilerplate
91
93
  * @fileoverview The main class.
@@ -469,7 +471,9 @@ export class PlotBoilerplate {
469
471
  enablePan: f.bool(config, "enablePan", true), // default=true
470
472
 
471
473
  // Experimental (and unfinished)
472
- enableGL: f.bool(config, "enableGL", false)
474
+ enableGL: f.bool(config, "enableGL", false),
475
+
476
+ isBackdropFiltersEnabled: f.bool(config, "isBackdropFiltersEnabled", true)
473
477
  }; // END confog
474
478
 
475
479
  /**
@@ -1029,16 +1033,19 @@ export class PlotBoilerplate {
1029
1033
  *
1030
1034
  * @method removeAll
1031
1035
  * @param {boolean=false} keepVertices
1036
+ * @param {boolean=true} triggerRedraw - By default this method triggers the redraw routine; passing `false` will suppress redrawing.
1032
1037
  * @instance
1033
1038
  * @memberof PlotBoilerplate
1034
1039
  * @return {void}
1035
1040
  */
1036
- removeAll(keepVertices?: boolean) {
1041
+ removeAll(keepVertices?: boolean, triggerRedraw?: boolean) {
1037
1042
  this.drawables = [];
1038
1043
  if (!Boolean(keepVertices)) {
1039
1044
  this.vertices = [];
1040
1045
  }
1041
- this.redraw();
1046
+ if (triggerRedraw || typeof triggerRedraw === "undefined") {
1047
+ this.redraw();
1048
+ }
1042
1049
  }
1043
1050
 
1044
1051
  /**