flo-mat 3.0.13 → 3.0.15

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 (138) hide show
  1. package/__tests__/cp-node/check-clone-eql-calc.spec.ts +58 -0
  2. package/__tests__/cp-node/compare-cp-nodes-by-value.ts +35 -0
  3. package/__tests__/cp-node/compare-loops-by-value.ts +40 -0
  4. package/__tests__/cp-node/compare-poss-by-value.ts +25 -0
  5. package/__tests__/cp-node/fs/clone.spec.ts +19 -3
  6. package/__tests__/cp-node/fs/find-first.spec.ts +13 -3
  7. package/__tests__/cp-node/fs/get-all-between.spec.ts +20 -3
  8. package/__tests__/cp-node/fs/get-all-on-circle.spec.ts +2 -2
  9. package/__tests__/cp-node/fs/get-all-on-loop.spec.ts +16 -3
  10. package/__tests__/cp-node/fs/get-all-vertices.spec.ts +14 -3
  11. package/__tests__/cp-node/fs/get-children.spec.ts +18 -3
  12. package/__tests__/cp-node/fs/get-non-terminating-on-circle.spec.ts +14 -3
  13. package/__tests__/cp-node/fs/get-prong-count.spec.ts +16 -3
  14. package/__tests__/cp-node/fs/get-real-prong-count.spec.ts +11 -3
  15. package/__tests__/cp-node/fs/get-terminating-on-circle.spec.ts +20 -3
  16. package/__tests__/cp-node/fs/is-fully-terminating.spec.ts +16 -3
  17. package/__tests__/cp-node/fs/is-on-same-circle.spec.ts +20 -3
  18. package/__tests__/cp-node/fs/is-one-prong.spec.ts +16 -3
  19. package/__tests__/cp-node/fs/is-sharp.spec.ts +10 -3
  20. package/__tests__/cp-node/fs/is-single-3-prong.spec.ts +13 -3
  21. package/__tests__/cp-node/fs/is-special.spec.ts +12 -3
  22. package/__tests__/cp-node/fs/is-terminating.spec.ts +15 -3
  23. package/__tests__/cp-node/fs/is-trivial.spec.ts +13 -3
  24. package/__tests__/cp-node/fs/is-two-prong.spec.ts +11 -3
  25. package/__tests__/cp-node/fs/is-vertex-special.spec.ts +13 -3
  26. package/__tests__/cp-node/fs/is-vertex.spec.ts +14 -3
  27. package/__tests__/cp-node/fs/iterate-all-on-loop.spec.ts +13 -3
  28. package/__tests__/cp-node/fs/traverse-all-forward.spec.ts +10 -3
  29. package/__tests__/cp-node/fs/traverse-cp.spec.ts +9 -3
  30. package/__tests__/cp-node/fs/traverse-edges.spec.ts +13 -3
  31. package/__tests__/cp-node/fs/traverse-vertices.spec.ts +12 -3
  32. package/__tests__/cp-node/random-walk.ts +33 -0
  33. package/__tests__/cp-node/stringification/from-stringifyable.spec.ts +3 -0
  34. package/__tests__/cp-node/stringification/loop-from-stringifyable.spec.ts +4 -0
  35. package/__tests__/cp-node/stringification/loop-to-stringifyable.spec.ts +19 -0
  36. package/__tests__/cp-node/stringification/to-stringifyable.spec.ts +34 -0
  37. package/__tests__/get-mats1.ts +125 -0
  38. package/__tests__/jsog/check-jsog-eql-calc.spec.ts +47 -67
  39. package/__tests__/jsog/decode-jsog.ts +88 -85
  40. package/__tests__/jsog/mat-dummy-1.ts +19 -0
  41. package/__tests__/jsog/mat-dummys.ts +6197 -6195
  42. package/__tests__/jsog/to-jsog-breath-first.ts +110 -107
  43. package/__tests__/jsog/to-jsog-depth-first.ts +58 -55
  44. package/browser/index.js +7002 -6298
  45. package/browser/index.min.js +1 -1
  46. package/jest.config.cjs +1 -0
  47. package/node/closest-boundary-point/foot-and-endpoint-info.d.ts +1 -1
  48. package/node/closest-boundary-point/get-close-boundary-points-certified.d.ts +3 -3
  49. package/node/closest-boundary-point/get-close-boundary-points-certified.js +1 -1
  50. package/node/closest-boundary-point/get-close-boundary-points-certified.js.map +1 -1
  51. package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.d.ts +2 -2
  52. package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.js +7 -7
  53. package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.js.map +1 -1
  54. package/node/cp-node/cp-node.d.ts +2 -2
  55. package/node/cp-node/fs/clone.d.ts +1 -1
  56. package/node/cp-node/fs/clone.js +17 -13
  57. package/node/cp-node/fs/clone.js.map +1 -1
  58. package/node/cp-node/fs/enhance-cp-node.d.ts +2 -2
  59. package/node/cp-node/fs/find-first.d.ts +9 -2
  60. package/node/cp-node/fs/find-first.js +12 -9
  61. package/node/cp-node/fs/find-first.js.map +1 -1
  62. package/node/cp-node/fs/get-all-on-loop.js +5 -6
  63. package/node/cp-node/fs/get-all-on-loop.js.map +1 -1
  64. package/node/cp-node/fs/get-edge-direction.d.ts +1 -1
  65. package/node/cp-node/fs/get-edge-direction.js.map +1 -1
  66. package/node/cp-node/fs/is-on-same-circle.d.ts +1 -0
  67. package/node/cp-node/fs/is-on-same-circle.js +1 -0
  68. package/node/cp-node/fs/is-on-same-circle.js.map +1 -1
  69. package/node/debug/functions/draw-elem/draw-dull-corner.d.ts +1 -1
  70. package/node/debug/functions/draw-elem/draw-dull-corner.js +1 -1
  71. package/node/debug/functions/draw-elem/draw-dull-corner.js.map +1 -1
  72. package/node/debug/functions/draw-elem/draw-sharp-corner.d.ts +1 -1
  73. package/node/debug/functions/draw-elem/draw-sharp-corner.js +2 -1
  74. package/node/debug/functions/draw-elem/draw-sharp-corner.js.map +1 -1
  75. package/node/find-mat/find-mats.js +7 -2
  76. package/node/find-mat/find-mats.js.map +1 -1
  77. package/node/find-mat/get-meta.d.ts +4 -4
  78. package/node/find-mat/get-meta.js +1 -1
  79. package/node/find-mat/get-meta.js.map +1 -1
  80. package/node/geometry/circle.d.ts +4 -3
  81. package/node/geometry/circle.js +0 -7
  82. package/node/geometry/circle.js.map +1 -1
  83. package/node/index.d.ts +2 -2
  84. package/node/index.js +1 -0
  85. package/node/index.js.map +1 -1
  86. package/node/mat/curve-piece.d.ts +3 -3
  87. package/node/mat/get-boundary-piece-beziers.d.ts +2 -2
  88. package/node/mat/mat-meta.d.ts +4 -4
  89. package/node/mat/simplify-mat.d.ts +10 -8
  90. package/node/mat/simplify-mat.js +12 -10
  91. package/node/mat/simplify-mat.js.map +1 -1
  92. package/node/point-on-shape/create-pos.d.ts +2 -2
  93. package/node/point-on-shape/create-pos.js.map +1 -1
  94. package/node/point-on-shape/point-on-shape.d.ts +6 -6
  95. package/node/svg/get-loop-bounds.d.ts +2 -2
  96. package/node/svg/get-loop-bounds.js +1 -1
  97. package/node/svg/get-loop-bounds.js.map +1 -1
  98. package/package.json +10 -10
  99. package/src/closest-boundary-point/foot-and-endpoint-info.ts +1 -1
  100. package/src/closest-boundary-point/get-close-boundary-points-certified.ts +5 -5
  101. package/src/closest-boundary-point/get-potential-closest-points-on-curve-certified.ts +9 -9
  102. package/src/cp-node/cp-node.ts +8 -3
  103. package/src/cp-node/fs/add-distance-from.ts +37 -37
  104. package/src/cp-node/fs/clone.ts +23 -17
  105. package/src/cp-node/fs/find-first.ts +14 -11
  106. package/src/cp-node/fs/get-all-on-loop.ts +5 -6
  107. package/src/cp-node/fs/get-boundary-bezier-parts-to-next.ts +1 -1
  108. package/src/cp-node/fs/get-edge-direction.ts +3 -5
  109. package/src/cp-node/fs/is-on-same-circle.ts +1 -0
  110. package/src/cp-node/stringification/cp-node-stringifyable.ts +68 -0
  111. package/src/cp-node/stringification/from-stringifyable.ts +57 -0
  112. package/src/cp-node/stringification/loop-from-stringifyable.ts +15 -0
  113. package/src/cp-node/stringification/loop-stringifyable.ts +8 -0
  114. package/src/cp-node/stringification/loop-to-stringifyable.ts +14 -0
  115. package/src/cp-node/stringification/to-stringifyable.ts +71 -0
  116. package/src/curve/curve.ts +31 -33
  117. package/src/debug/functions/draw-elem/draw-dull-corner.ts +2 -2
  118. package/src/debug/functions/draw-elem/draw-sharp-corner.ts +4 -3
  119. package/src/find-mat/find-mats.ts +8 -2
  120. package/src/find-mat/get-meta.ts +7 -6
  121. package/src/geometry/circle.ts +5 -12
  122. package/src/index.ts +3 -4
  123. package/src/mat/curve-piece.ts +3 -3
  124. package/src/mat/get-boundary-piece-beziers.ts +3 -3
  125. package/src/mat/mat-meta.ts +4 -4
  126. package/src/mat/simplify-mat-map-only.ts +110 -110
  127. package/src/mat/simplify-mat.ts +15 -13
  128. package/src/point-on-shape/create-pos.ts +3 -3
  129. package/src/point-on-shape/point-on-shape.ts +6 -6
  130. package/src/svg/get-loop-bounds.ts +4 -5
  131. package/__tests__/cp-node/fs/add-distance-from.spec.ts +0 -7
  132. package/__tests__/cp-node/fs/cp-nodes-to-boundary-beziers.spec.ts +0 -7
  133. package/__tests__/cp-node/fs/create-cp-node.spec.ts +0 -7
  134. package/__tests__/cp-node/fs/enhance-cp-node.spec.ts +0 -7
  135. package/__tests__/jsog/get-mats1.ts +0 -41
  136. package/node/curve/curve.d.ts +0 -33
  137. package/node/curve/curve.js +0 -2
  138. package/node/curve/curve.js.map +0 -1
package/jest.config.cjs CHANGED
@@ -23,6 +23,7 @@ module.exports = {
23
23
  collectCoverage: false, // Make true again!
24
24
  coverageProvider: 'v8',
25
25
  testTimeout: 15000,
26
+ passWithNoTests: true,
26
27
  transform: {
27
28
  "^.+\\.(t|j)sx?$": "@swc/jest"
28
29
  },
@@ -1,4 +1,4 @@
1
- import { Curve } from "../curve/curve.js";
1
+ import { Curve } from "flo-boolean";
2
2
  type FootAndEndpointInfo = {
3
3
  curve: Curve;
4
4
  p: number[];
@@ -1,6 +1,6 @@
1
- import { CurvePiece } from '../mat/curve-piece.js';
2
- import { Curve } from '../curve/curve.js';
3
- import { PointOnShape } from '../point-on-shape/point-on-shape.js';
1
+ import type { Curve } from 'flo-boolean';
2
+ import type { CurvePiece } from '../mat/curve-piece.js';
3
+ import type { PointOnShape } from '../point-on-shape/point-on-shape.js';
4
4
  /**
5
5
  * @internal
6
6
  * Returns the closest boundary point to the given point, limited to the given
@@ -1,6 +1,6 @@
1
+ import { createPos } from '../point-on-shape/create-pos.js';
1
2
  import { getPotentialClosestPointsOnCurveCertified } from './get-potential-closest-points-on-curve-certified.js';
2
3
  import { cullCurvePieces1 } from './cull-bezier-pieces.js';
3
- import { createPos } from '../point-on-shape/create-pos.js';
4
4
  /**
5
5
  * @internal
6
6
  * Returns the closest boundary point to the given point, limited to the given
@@ -1 +1 @@
1
- {"version":3,"file":"get-close-boundary-points-certified.js","sourceRoot":"","sources":["../../src/closest-boundary-point/get-close-boundary-points-certified.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yCAAyC,EAAE,MAAM,sDAAsD,CAAC;AACjH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAI3D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D;;;;;;;;;;;;GAYG;AACH,SAAS,+BAA+B,CAChC,GAAW,EACX,WAAyB,EACzB,CAAW,EACX,eAAkC,SAAS,EAC3C,IAAwB,SAAS,EACjC,SAAS,GAAG,KAAK,EACjB,KAAK,GAAG,CAAC;IAEb,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAE/C,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,MAAM,GAAG,yCAAyC,CACpD,GAAG,EACH,UAAU,CAAC,KAAK,EAChB,CAAC,EACD,UAAU,CAAC,EAAE,EACb,YAAY,EACZ,CAAC,EACD,SAAS,EACT,KAAK,CACR,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,qCAAqC;IACrC,IAAI,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACtC,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;YACjB,MAAM,GAAG,KAAK,CAAC;QACnB,CAAC;IACL,CAAC;IAED,MAAM,iBAAiB,GAA0B,EAAE,CAAC;IAEpD,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;YAC9B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAED,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/E,CAAC;AAGD,OAAO,EAAE,+BAA+B,EAAE,CAAC"}
1
+ {"version":3,"file":"get-close-boundary-points-certified.js","sourceRoot":"","sources":["../../src/closest-boundary-point/get-close-boundary-points-certified.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,yCAAyC,EAAE,MAAM,sDAAsD,CAAC;AACjH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D;;;;;;;;;;;;GAYG;AACH,SAAS,+BAA+B,CAChC,GAAW,EACX,WAAyB,EACzB,CAAW,EACX,eAAkC,SAAS,EAC3C,IAAwB,SAAS,EACjC,SAAS,GAAG,KAAK,EACjB,KAAK,GAAG,CAAC;IAEb,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAE/C,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,MAAM,GAAG,yCAAyC,CACpD,GAAG,EACH,UAAU,CAAC,KAAK,EAChB,CAAC,EACD,UAAU,CAAC,EAAE,EACb,YAAY,EACZ,CAAC,EACD,SAAS,EACT,KAAK,CACR,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,qCAAqC;IACrC,IAAI,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACtC,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;YACjB,MAAM,GAAG,KAAK,CAAC;QACnB,CAAC;IACL,CAAC;IAED,MAAM,iBAAiB,GAA0B,EAAE,CAAC;IAEpD,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;YAC9B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAED,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/E,CAAC;AAGD,OAAO,EAAE,+BAA+B,EAAE,CAAC"}
@@ -1,5 +1,5 @@
1
- import { Curve } from "../curve/curve.js";
2
- import { FootAndEndpointInfo } from './foot-and-endpoint-info.js';
1
+ import type { Curve } from "flo-boolean";
2
+ import type { FootAndEndpointInfo } from './foot-and-endpoint-info.js';
3
3
  /**
4
4
  * @internal
5
5
  *
@@ -1,7 +1,7 @@
1
1
  import { allRootsCertified } from 'flo-poly';
2
+ import { eDeflate } from 'flo-poly';
2
3
  import { getFootPointsOnBezierPolysCertified, getIntervalBox } from 'flo-bezier3';
3
4
  import { ddDeflateWithRunningError } from './dd-deflate-with-running-error.js';
4
- import { eDeflate } from 'flo-poly';
5
5
  import { γγ } from '../error-analysis/gamma.js';
6
6
  import { rootIntervalToDistanceSquaredInterval } from './root-interval-to-distance-squared-interval.js';
7
7
  import { getPFromBox } from './get-p-from-box.js';
@@ -57,29 +57,29 @@ function getPotentialClosestPointsOnCurveCertified(pow, curve, x, tRange = [0, 1
57
57
  (t === 1 && curve === touchedCurve));
58
58
  if (tS === 0) {
59
59
  if (!dontPush0) {
60
- ris.push({ tS: 0, tE: 0, multiplicity: 1 });
60
+ ris.push({ t: 0, tS: 0, tE: 0, multiplicity: 1 });
61
61
  }
62
62
  }
63
63
  else if (tS === 1) {
64
64
  if (!dontPush1) {
65
- ris.push({ tS: 1, tE: 1, multiplicity: 1 });
65
+ ris.push({ t: 1, tS: 1, tE: 1, multiplicity: 1 });
66
66
  }
67
67
  }
68
68
  else {
69
- ris.push({ tS: tS, tE: tS, multiplicity: 1 });
69
+ ris.push({ t: tS, tS: tS, tE: tS, multiplicity: 1 });
70
70
  }
71
71
  if (tE === 0) {
72
72
  if (!dontPush0) {
73
- ris.push({ tS: 0, tE: 0, multiplicity: 1 });
73
+ ris.push({ t: 0, tS: 0, tE: 0, multiplicity: 1 });
74
74
  }
75
75
  }
76
76
  else if (tE === 1) {
77
77
  if (!dontPush1) {
78
- ris.push({ tS: 1, tE: 1, multiplicity: 1 });
78
+ ris.push({ t: 1, tS: 1, tE: 1, multiplicity: 1 });
79
79
  }
80
80
  }
81
81
  else {
82
- ris.push({ tS: tE, tE: tE, multiplicity: 1 });
82
+ ris.push({ t: tE, tS: tE, tE: tE, multiplicity: 1 });
83
83
  }
84
84
  const infos = ris
85
85
  .map(ri => {
@@ -1 +1 @@
1
- {"version":3,"file":"get-potential-closest-points-on-curve-certified.js","sourceRoot":"","sources":["../../src/closest-boundary-point/get-potential-closest-points-on-curve-certified.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-potential-closest-points-on-curve-certified.js","sourceRoot":"","sources":["../../src/closest-boundary-point/get-potential-closest-points-on-curve-certified.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,8 @@ import { ContactPoint } from '../contact-point/contact-point.js';
48
48
  * in opposite directions.
49
49
  */
50
50
  interface CpNode {
51
+ /** For debugging / easy identification only */
52
+ id: number;
51
53
  /** The shape boundary contact point, i.e. a `CpNode` without its edges. */
52
54
  cp: ContactPoint;
53
55
  /** If true, this `CpNode` belongs to a hole-closing maximal disk. */
@@ -74,7 +76,5 @@ interface CpNode {
74
76
  * next `CpNode` on the same loop.
75
77
  */
76
78
  holeCloserTwin?: CpNode | undefined;
77
- /** For debugging / easy identification only */
78
- id: number;
79
79
  }
80
80
  export { CpNode };
@@ -1,4 +1,4 @@
1
- import { CpNode } from "../cp-node.js";
1
+ import type { CpNode } from "../cp-node.js";
2
2
  /**
3
3
  * Returns a deep clone of this `CpNode`. Can be used to copy the MAT
4
4
  * since cloning a single `CpNode` necessarily implies cloning all
@@ -1,5 +1,5 @@
1
1
  /** @internal */
2
- const EDGES = ['prev', 'next', 'prevOnCircle', 'nextOnCircle'];
2
+ const EDGES = ['prev', 'next', 'prevOnCircle', 'nextOnCircle', 'holeCloserTwin'];
3
3
  /**
4
4
  * Returns a deep clone of this `CpNode`. Can be used to copy the MAT
5
5
  * since cloning a single `CpNode` necessarily implies cloning all
@@ -7,37 +7,41 @@ const EDGES = ['prev', 'next', 'prevOnCircle', 'nextOnCircle'];
7
7
  */
8
8
  function clone(cpNode) {
9
9
  // Don't change this function to be recursive, the call stack may
10
- // overflow if there are too many CpNodes.
10
+ // overflow if there are too many `CpNode`s.
11
11
  const nodeMap = new Map();
12
- const newCpNode = cloneWithoutLinks(cpNode);
12
+ const newCpNode = cloneWithoutEdges(cpNode);
13
13
  nodeMap.set(cpNode, newCpNode);
14
14
  const cpStack = [{ cpNode, newCpNode }];
15
15
  while (cpStack.length) {
16
16
  const { cpNode, newCpNode } = cpStack.pop();
17
17
  for (const edge of EDGES) {
18
18
  const node = cpNode[edge];
19
- let newNode = nodeMap.get(node);
20
- if (!newNode) {
21
- newNode = cloneWithoutLinks(node);
22
- nodeMap.set(node, newNode);
23
- cpStack.push({ cpNode: node, newCpNode: newNode });
19
+ if (node === undefined) {
20
+ continue;
24
21
  }
25
- newCpNode[edge] = newNode;
22
+ let node_ = nodeMap.get(node);
23
+ if (!node_) {
24
+ node_ = cloneWithoutEdges(node);
25
+ nodeMap.set(node, node_);
26
+ cpStack.push({ cpNode: node, newCpNode: node_ });
27
+ }
28
+ newCpNode[edge] = node_;
26
29
  }
27
30
  }
28
31
  return newCpNode;
29
32
  }
30
- function cloneWithoutLinks(cpNode) {
31
- const newNode = {
33
+ function cloneWithoutEdges(cpNode) {
34
+ const cpNode_ = {
32
35
  ...cpNode,
33
36
  ...{
34
37
  prev: undefined,
35
38
  next: undefined,
36
39
  prevOnCircle: undefined,
37
- nextOnCircle: undefined
40
+ nextOnCircle: undefined,
41
+ holeCloserTwin: undefined
38
42
  }
39
43
  };
40
- return newNode;
44
+ return cpNode_;
41
45
  }
42
46
  export { clone };
43
47
  //# sourceMappingURL=clone.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../src/cp-node/fs/clone.ts"],"names":[],"mappings":"AAUA,gBAAgB;AAChB,MAAM,KAAK,GAAW,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;AAOvE;;;;GAIG;AACH,SAAS,KAAK,CAAC,MAAc;IACzB,kEAAkE;IAClE,0CAA0C;IAE1C,MAAM,OAAO,GAAoC,IAAI,GAAG,EAAE,CAAC;IAE3D,MAAM,SAAS,GAAuB,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEhE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAG,CAAC;QAE7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAElC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YACtD,CAAC;YACA,SAAoB,CAAC,IAAI,CAAC,GAAG,OAAiB,CAAC;QACpD,CAAC;IACL,CAAC;IAED,OAAO,SAAmB,CAAC;AAC/B,CAAC;AAGD,SAAS,iBAAiB,CAAC,MAAc;IACrC,MAAM,OAAO,GAAG;QACZ,GAAG,MAAM;QACT,GAAG;YACC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,SAAS;YACvB,YAAY,EAAE,SAAS;SAC1B;KACJ,CAAC;IAEF,OAAO,OAAO,CAAC;AACnB,CAAC;AAGD,OAAO,EAAE,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../src/cp-node/fs/clone.ts"],"names":[],"mappings":"AAWA,gBAAgB;AAChB,MAAM,KAAK,GAAW,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;AAOzF;;;;GAIG;AACH,SAAS,KAAK,CACN,MAAc;IAElB,kEAAkE;IAClE,4CAA4C;IAE5C,MAAM,OAAO,GAAoC,IAAI,GAAG,EAAE,CAAC;IAE3D,MAAM,SAAS,GAAuB,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEhE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAG,CAAC;QAE7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAErC,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAEhC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YACrD,CAAC;YACA,SAAoB,CAAC,IAAI,CAAC,GAAG,KAAe,CAAC;QAClD,CAAC;IACL,CAAC;IAED,OAAO,SAAmB,CAAC;AAC/B,CAAC;AAGD,SAAS,iBAAiB,CAAC,MAAc;IACrC,MAAM,OAAO,GAAG;QACZ,GAAG,MAAM;QACT,GAAG;YACC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,SAAS;YACvB,YAAY,EAAE,SAAS;YACvB,cAAc,EAAE,SAAS;SAC5B;KACJ,CAAC;IAEF,OAAO,OAAO,CAAC;AACnB,CAAC;AAGD,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -18,8 +18,9 @@ declare function enhanceCpNode(cpNode: CpNode): {
18
18
  order: number;
19
19
  order2: number;
20
20
  };
21
- curve: import("../../index.js").Curve;
21
+ curve: import("flo-boolean").Curve;
22
22
  loop: import("flo-boolean").Loop;
23
+ id: number;
23
24
  cp: import("../../index.js").ContactPoint;
24
25
  isHoleClosing: boolean;
25
26
  isIntersection: boolean;
@@ -28,6 +29,5 @@ declare function enhanceCpNode(cpNode: CpNode): {
28
29
  prevOnCircle: CpNode;
29
30
  nextOnCircle: CpNode;
30
31
  holeCloserTwin?: CpNode | undefined;
31
- id: number;
32
32
  };
33
33
  export { enhanceCpNode };
@@ -1,3 +1,10 @@
1
- import { CpNode } from "../cp-node.js";
2
- declare function findFirst(f: (cpNode: CpNode) => CpNode | undefined, cpNode: CpNode): CpNode | undefined;
1
+ import type { CpNode } from "../cp-node.js";
2
+ /**
3
+ * Finds the first `CpNode` in the same MAT tree for which `f` returns a
4
+ * truthy value. Returns `undefined` if no such `CpNode` exists.
5
+ *
6
+ * @param f a function that takes a `CpNode` and returns a `CpNode` or `undefined`
7
+ * @param cpNode a `CpNode` on the MAT tree to search from
8
+ */
9
+ declare function findFirst(f: (cpNode: CpNode) => boolean, cpNode: CpNode): CpNode | undefined;
3
10
  export { findFirst };
@@ -1,15 +1,18 @@
1
+ /**
2
+ * Finds the first `CpNode` in the same MAT tree for which `f` returns a
3
+ * truthy value. Returns `undefined` if no such `CpNode` exists.
4
+ *
5
+ * @param f a function that takes a `CpNode` and returns a `CpNode` or `undefined`
6
+ * @param cpNode a `CpNode` on the MAT tree to search from
7
+ */
1
8
  function findFirst(f, cpNode) {
2
9
  const cpStart = cpNode;
3
- if (f(cpStart)) {
4
- return cpStart;
5
- }
6
- let cpNode_ = cpNode.next;
7
- while (cpNode_ !== cpStart) {
8
- if (f(cpNode_)) {
9
- return cpNode_;
10
+ do {
11
+ if (f(cpNode)) {
12
+ return cpNode;
10
13
  }
11
- cpNode_ = cpNode_.next;
12
- }
14
+ cpNode = cpNode.next;
15
+ } while (cpNode !== cpStart);
13
16
  return undefined;
14
17
  }
15
18
  export { findFirst };
@@ -1 +1 @@
1
- {"version":3,"file":"find-first.js","sourceRoot":"","sources":["../../../src/cp-node/fs/find-first.ts"],"names":[],"mappings":"AAIA,SAAS,SAAS,CACV,CAAyC,EACzC,MAAc;IAElB,MAAM,OAAO,GAAG,MAAM,CAAC;IAEvB,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAAC,OAAO,OAAO,CAAC;IAAC,CAAC;IAEnC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,OAAO,OAAO,KAAK,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YACb,OAAO,OAAO,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAGD,OAAO,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"find-first.js","sourceRoot":"","sources":["../../../src/cp-node/fs/find-first.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,SAAS,SAAS,CACV,CAA8B,EAC9B,MAAc;IAElB,MAAM,OAAO,GAAG,MAAM,CAAC;IAEvB,GAAG,CAAC;QACA,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,CAAC,QAAQ,MAAM,KAAK,OAAO,EAAE;IAE7B,OAAO,SAAS,CAAC;AACrB,CAAC;AAGD,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -4,12 +4,11 @@
4
4
  */
5
5
  function getAllOnLoop(cpNode) {
6
6
  const cpStart = cpNode;
7
- const cpNodes = [cpStart];
8
- let cpNode_ = cpNode.next;
9
- while (cpNode_ !== cpStart) {
10
- cpNodes.push(cpNode_);
11
- cpNode_ = cpNode_.next;
12
- }
7
+ const cpNodes = [];
8
+ do {
9
+ cpNodes.push(cpNode);
10
+ cpNode = cpNode.next;
11
+ } while (cpNode !== cpStart);
13
12
  return cpNodes;
14
13
  }
15
14
  export { getAllOnLoop };
@@ -1 +1 @@
1
- {"version":3,"file":"get-all-on-loop.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-all-on-loop.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,SAAS,YAAY,CACb,MAAc;IAElB,MAAM,OAAO,GAAG,MAAM,CAAC;IACvB,MAAM,OAAO,GAAa,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;IAE1B,OAAO,OAAO,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"get-all-on-loop.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-all-on-loop.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,SAAS,YAAY,CACb,MAAc;IAElB,MAAM,OAAO,GAAG,MAAM,CAAC;IACvB,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,GAAG,CAAC;QACA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,CAAC,QAAQ,MAAM,KAAK,OAAO,EAAE;IAE7B,OAAO,OAAO,CAAC;AACnB,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -1,4 +1,4 @@
1
- import { CpNode } from '../cp-node.js';
1
+ import type { CpNode } from '../cp-node.js';
2
2
  /**
3
3
  * @internal
4
4
  * Returns a line segment of unit length starting in the given Vertex center and
@@ -1 +1 @@
1
- {"version":3,"file":"get-edge-direction.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-edge-direction.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EACzE,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAI/E;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,MAAc;IACpC,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;IAE7C,MAAM,GAAG,GAAG,MAAM,CAAC;IACnB,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;IAEhC,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC;IACjC,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC;IAEjC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAClB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAElB,IAAI,IAAI,CAAC;IAET,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,IAAI,GAAG,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY;QACjD,CAAC;aAAM,CAAC;YACJ,IAAI,GAAG,eAAe,CAAE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAE,CAAC,CAAC,iBAAiB;QAC/D,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAElB,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACf,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;YACpB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,MAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,OAAO,CAAE,YAAY,CAAC,OAAO,CAAC,MAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;QAE7D,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,+DAA+D;QAC/D,oEAAoE;QACpE,iBAAiB;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;QAElC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,GAAG,SAAS,CACf,YAAY,CAAC,IAAI,CAAC,EAClB,YAAY,CACf,CAAC;IAEF,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"get-edge-direction.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-edge-direction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACtG,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAG/E;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,MAAc;IACpC,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;IAE7C,MAAM,GAAG,GAAG,MAAM,CAAC;IACnB,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;IAEhC,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC;IACjC,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC;IAEjC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAClB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAElB,IAAI,IAAI,CAAC;IAET,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,IAAI,GAAG,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY;QACjD,CAAC;aAAM,CAAC;YACJ,IAAI,GAAG,eAAe,CAAE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAE,CAAC,CAAC,iBAAiB;QAC/D,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAElB,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACf,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;YACpB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,MAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,OAAO,CAAE,YAAY,CAAC,OAAO,CAAC,MAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;QAE7D,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,+DAA+D;QAC/D,oEAAoE;QACpE,iBAAiB;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;QAElC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,GAAG,SAAS,CACf,YAAY,CAAC,IAAI,CAAC,EAClB,YAAY,CACf,CAAC;IAEF,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
@@ -2,6 +2,7 @@ import { CpNode } from "../cp-node.js";
2
2
  /**
3
3
  * Returns true if the 2 given `CpNode`s are on the same maximal disk
4
4
  * circle.
5
+ *
5
6
  * @param cpNode1 A `CpNode`.
6
7
  * @param cpNode2 Another `CpNode`
7
8
  */
@@ -2,6 +2,7 @@ import { getAllOnCircle } from "./get-all-on-circle.js";
2
2
  /**
3
3
  * Returns true if the 2 given `CpNode`s are on the same maximal disk
4
4
  * circle.
5
+ *
5
6
  * @param cpNode1 A `CpNode`.
6
7
  * @param cpNode2 Another `CpNode`
7
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"is-on-same-circle.js","sourceRoot":"","sources":["../../../src/cp-node/fs/is-on-same-circle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD;;;;;GAKG;AACH,SAAS,cAAc,CACf,OAAe,EACf,OAAe;IAEnB,iDAAiD;IACjD,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAGD,OAAO,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"is-on-same-circle.js","sourceRoot":"","sources":["../../../src/cp-node/fs/is-on-same-circle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD;;;;;;GAMG;AACH,SAAS,cAAc,CACf,OAAe,EACf,OAAe;IAEnB,iDAAiD;IACjD,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAGD,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -1,4 +1,4 @@
1
- import { Curve } from '../../../curve/curve.js';
1
+ import type { Curve } from 'flo-boolean';
2
2
  /** @internal */
3
3
  declare function dullCorner(g: SVGGElement, curve: Curve, classes?: string, delay?: number, scaleFactor?: number): SVGCircleElement[];
4
4
  export { dullCorner };
@@ -2,7 +2,7 @@ import { drawFs } from 'flo-draw';
2
2
  /** @internal */
3
3
  function dullCorner(g, curve, classes = 'orange', delay = 0, scaleFactor = 1) {
4
4
  const ps = curve.ps;
5
- const p = curve.ps[ps.length - 1];
5
+ const p = ps[ps.length - 1];
6
6
  const $pos = drawFs.dot(g, p, 0.1 * 0.5 * scaleFactor, classes, delay);
7
7
  return $pos;
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"draw-dull-corner.js","sourceRoot":"","sources":["../../../../src/debug/functions/draw-elem/draw-dull-corner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC,gBAAgB;AAChB,SAAS,UAAU,CACX,CAAc,EACd,KAAY,EACZ,OAAO,GAAG,QAAQ,EAClB,KAAK,GAAG,CAAC,EACT,WAAW,GAAG,CAAC;IAEnB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAC,GAAG,GAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAEnE,OAAO,IAAI,CAAC;AAChB,CAAC;AAGD,OAAO,EAAE,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"draw-dull-corner.js","sourceRoot":"","sources":["../../../../src/debug/functions/draw-elem/draw-dull-corner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,gBAAgB;AAChB,SAAS,UAAU,CACX,CAAc,EACd,KAAY,EACZ,OAAO,GAAG,QAAQ,EAClB,KAAK,GAAG,CAAC,EACT,WAAW,GAAG,CAAC;IAEnB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAC,GAAG,GAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAEnE,OAAO,IAAI,CAAC;AAChB,CAAC;AAGD,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -1,4 +1,4 @@
1
- import { Curve } from '../../../curve/curve.js';
1
+ import type { Curve } from 'flo-boolean';
2
2
  /** @internal */
3
3
  declare function sharpCorner(g: SVGGElement, curve: Curve, classes?: string, delay?: number, scaleFactor?: number): SVGCircleElement[];
4
4
  export { sharpCorner };
@@ -1,7 +1,8 @@
1
1
  import { drawFs } from 'flo-draw';
2
2
  /** @internal */
3
3
  function sharpCorner(g, curve, classes = 'green', delay = 0, scaleFactor = 1) {
4
- const p = curve.ps[curve.ps.length - 1];
4
+ const { ps } = curve;
5
+ const p = ps[ps.length - 1];
5
6
  const $pos = drawFs.dot(g, p, 0.6 * scaleFactor, 'green', delay);
6
7
  return $pos;
7
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"draw-sharp-corner.js","sourceRoot":"","sources":["../../../../src/debug/functions/draw-elem/draw-sharp-corner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC,gBAAgB;AAChB,SAAS,WAAW,CACZ,CAAc,EACd,KAAY,EACZ,OAAO,GAAG,OAAO,EACjB,KAAK,GAAG,CAAC,EACT,WAAW,GAAG,CAAC;IAEnB,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAE/D,OAAO,IAAI,CAAC;AAChB,CAAC;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"draw-sharp-corner.js","sourceRoot":"","sources":["../../../../src/debug/functions/draw-elem/draw-sharp-corner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,gBAAgB;AAChB,SAAS,WAAW,CACZ,CAAc,EACd,KAAY,EACZ,OAAO,GAAG,OAAO,EACjB,KAAK,GAAG,CAAC,EACT,WAAW,GAAG,CAAC;IAEnB,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IACrB,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAE/D,OAAO,IAAI,CAAC;AAChB,CAAC;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -37,10 +37,15 @@ function findMats(bezierLoops, options) {
37
37
  ...(options || {})
38
38
  });
39
39
  const { applySat, simplify, satScale, simplifyTolerance } = options_;
40
- const loopss = simplifyPaths(bezierLoops);
40
+ const loopss = simplifyPaths(bezierLoops, undefined, { forceOrientationNegative: true });
41
41
  // console.log(loopsToSvgPathStr(bezierLoops));
42
+ // console.log(loopsToSvgPathStr(loopss[0].map(loop => loop.beziers.map(ps => ps.map(p => p.map(c => Math.round(c*1)/1))))));
43
+ // console.log(loopsToSvgPathStr(loopss[1].map(loop => loop.beziers.map(ps => ps.map(p => p.map(c => Math.round(c*1)/1))))));
44
+ // console.log(loopsToSvgPathStr(loopss[0].map(loop => loop.beziers.map(ps => ps.map(p => p.map(c => Math.round(c*1000)/1000))))));
45
+ // console.log(loopsToSvgPathStr(loopss[1].map(loop => loop.beziers.map(ps => ps.map(p => p.map(c => Math.round(c*1000)/1000))))));
46
+ // console.log(loopss.map(loops => loops.map(loop => loop.beziers)));
47
+ // console.log(loopss.map(loops => loopsToSvgPathStr(loops.map(loop => loop.beziers))));
42
48
  // const loopss = [bezierLoops.map(loop => loopFromBeziers(loop,0))];
43
- // console.log(loopsToSvgPathStr(bezierLoops.map(v => v.map(v => v.map(v => v.map(v => v*2**4))))));
44
49
  // console.log(loopsToSvgPathStr(bezierLoops.map(v => v.map(v => v.map(v => [-v[0],v[1]])))));
45
50
  // console.log(loopsToSvgPathStr(loopss[0].map(loop => loop.beziers)));
46
51
  const mats = [];
@@ -1 +1 @@
1
- {"version":3,"file":"find-mats.js","sourceRoot":"","sources":["../../src/find-mat/find-mats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAG,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAc,MAAM,kBAAkB,CAAC;AAGjE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAS,QAAQ,CACT,WAA2B,EAC3B,OAAoB;IAExB,+EAA+E;IAC/E,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAElE,MAAM,QAAQ,GAAyB,WAAW,CAC9C,aAAa,EACb,SAAS,EAAE;QACX,GAAG,iBAAiB;QACpB,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;KACrB,CAAC,CAAC;IAEH,MAAM,EACF,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,iBAAiB,EAC9B,GAAG,QAAQ,CAAC;IAGb,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1C,+CAA+C;IAC/C,qEAAqE;IACrE,oGAAoG;IACpG,8FAA8F;IAC9F,uEAAuE;IAEvE,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAEpC,IAAI,QAAQ,EAAE,CAAC;YACX,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACX,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAA;QACjD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAID;;;;GAIG;AACH,SAAS,iBAAiB,CAClB,KAAqB;IAEzB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,GAAG,GAAG,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACjD,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,OAAO,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"find-mats.js","sourceRoot":"","sources":["../../src/find-mat/find-mats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAG,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAc,MAAM,kBAAkB,CAAC;AAGjE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAS,QAAQ,CACT,WAA2B,EAC3B,OAAoB;IAExB,+EAA+E;IAC/E,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAElE,MAAM,QAAQ,GAAyB,WAAW,CAC9C,aAAa,EACb,SAAS,EAAE;QACX,GAAG,iBAAiB;QACpB,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;KACrB,CAAC,CAAC;IAEH,MAAM,EACF,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,iBAAiB,EAC9B,GAAG,QAAQ,CAAC;IAGb,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzF,+CAA+C;IAC/C,6HAA6H;IAC7H,6HAA6H;IAC7H,mIAAmI;IACnI,mIAAmI;IACnI,qEAAqE;IACrE,wFAAwF;IACxF,qEAAqE;IACrE,8FAA8F;IAC9F,uEAAuE;IAEvE,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAEpC,IAAI,QAAQ,EAAE,CAAC;YACX,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACX,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAA;QACjD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAID;;;;GAIG;AACH,SAAS,iBAAiB,CAClB,KAAqB;IAEzB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,GAAG,GAAG,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACjD,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -1,8 +1,8 @@
1
- import { Loop } from 'flo-boolean';
1
+ import type { Loop } from 'flo-boolean';
2
+ import type { CpNode } from '../cp-node/cp-node.js';
3
+ import type { TriMap } from '../utils/tri-map.js';
4
+ import type { MatMeta } from '../mat/mat-meta.js';
2
5
  import { LlRbTree } from 'flo-ll-rb-tree';
3
- import { CpNode } from '../cp-node/cp-node.js';
4
- import { TriMap } from '../utils/tri-map.js';
5
- import { MatMeta } from '../mat/mat-meta.js';
6
6
  /** @internal */
7
7
  declare function getPointToCpNode(loops: Loop[], cpTrees: Map<Loop, LlRbTree<CpNode>>): TriMap<Loop, number, number, CpNode>;
8
8
  /** @internal */
@@ -1,6 +1,6 @@
1
+ import { TriMapFs } from '../utils/tri-map.js';
1
2
  import { getBoundingHull, getBoundingBoxTight } from 'flo-bezier3';
2
3
  import { getBoundingBox$ } from '../geometry/get-bounding-box-.js';
3
- import { TriMapFs } from '../utils/tri-map.js';
4
4
  import { getCorner } from '../corner/get-corner.js';
5
5
  let timingStart;
6
6
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"get-meta.js","sourceRoot":"","sources":["../../src/find-mat/get-meta.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-meta.js","sourceRoot":"","sources":["../../src/find-mat/get-meta.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@
2
2
  * Canonical circle representation.
3
3
  */
4
4
  interface Circle {
5
- center: number[];
6
- radius: number;
5
+ readonly center: number[];
6
+ readonly radius: number;
7
7
  }
8
8
  /**
9
9
  * Returns a scaled version of the given circle without changing its center.
@@ -17,4 +17,5 @@ declare function scaleCircle(circle: Circle, s: number): Circle;
17
17
  * @param c2
18
18
  */
19
19
  declare function engulfsCircle(c1: Circle, c2: Circle): boolean;
20
- export { Circle, scaleCircle, engulfsCircle };
20
+ export type { Circle };
21
+ export { scaleCircle, engulfsCircle };
@@ -21,12 +21,5 @@ function engulfsCircle(c1, c2) {
21
21
  const δ = dr * dr;
22
22
  return δ > d;
23
23
  }
24
- /**
25
- * Returns a human-readable string description of the given circle.
26
- * @param circle
27
- */
28
- function toString(circle) {
29
- return 'c: ' + circle.center + ' r: ' + circle.radius;
30
- }
31
24
  export { scaleCircle, engulfsCircle };
32
25
  //# sourceMappingURL=circle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"circle.js","sourceRoot":"","sources":["../../src/geometry/circle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAYtD;;;;GAIG;AACH,SAAS,WAAW,CAAC,MAAc,EAAE,CAAS;IAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;AAChE,CAAC;AAGD;;;;GAIG;AACH,SAAS,aAAa,CAAC,EAAU,EAAE,EAAU;IACzC,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,GAAG,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IACjC,MAAM,CAAC,GAAG,EAAE,GAAC,EAAE,CAAC;IAEhB,OAAO,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAGD;;;GAGG;AACH,SAAS,QAAQ,CAAC,MAAc;IAC5B,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC1D,CAAC;AAED,OAAO,EAAU,WAAW,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"circle.js","sourceRoot":"","sources":["../../src/geometry/circle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAYtD;;;;GAIG;AACH,SAAS,WAAW,CAAC,MAAc,EAAE,CAAS;IAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;AAChE,CAAC;AAGD;;;;GAIG;AACH,SAAS,aAAa,CAAC,EAAU,EAAE,EAAU;IACzC,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,GAAG,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IACjC,MAAM,CAAC,GAAG,EAAE,GAAC,EAAE,CAAC;IAEhB,OAAO,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAID,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAA"}
package/node/index.d.ts CHANGED
@@ -1,8 +1,7 @@
1
+ export type { Curve, Loop } from 'flo-boolean';
1
2
  export { loopFromBeziers, beziersToSvgPathStr, getPathsFromStr } from 'flo-boolean';
2
3
  export type { MatMeta } from './mat/mat-meta.js';
3
- export type { Loop } from 'flo-boolean';
4
4
  export type { Mat } from './mat/mat.js';
5
- export type { Curve } from './curve/curve.js';
6
5
  export type { CpNode } from './cp-node/cp-node.js';
7
6
  export type { PointOnShape } from './point-on-shape/point-on-shape.js';
8
7
  export type { Circle } from './geometry/circle.js';
@@ -82,3 +81,4 @@ export { getSpeed } from './cp-node/fs/get-speed.js';
82
81
  export { getSmoothedSpeed$ } from './cp-node/fs/get-smoothed-speed.js';
83
82
  export { getInitialDegAngleBetweenMatCurves } from './cp-node/fs/get-angle-between-mat-curves.js';
84
83
  export { getAllVertices } from './cp-node/fs/get-all-vertices.js';
84
+ export { isTrivial } from './cp-node/fs/is-trivial.js';
package/node/index.js CHANGED
@@ -67,4 +67,5 @@ export { getSpeed } from './cp-node/fs/get-speed.js';
67
67
  export { getSmoothedSpeed$ } from './cp-node/fs/get-smoothed-speed.js';
68
68
  export { getInitialDegAngleBetweenMatCurves } from './cp-node/fs/get-angle-between-mat-curves.js';
69
69
  export { getAllVertices } from './cp-node/fs/get-all-vertices.js';
70
+ export { isTrivial } from './cp-node/fs/is-trivial.js';
70
71
  //# sourceMappingURL=index.js.map
package/node/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { Curve } from '../curve/curve.js';
1
+ import type { Curve } from 'flo-boolean';
2
2
  /**
3
3
  * @internal
4
4
  * Represents a part of a bezier within the shape boundary.
5
5
  */
6
6
  interface CurvePiece {
7
7
  /** A bezier curve within the shape boundary. */
8
- curve: Curve;
8
+ readonly curve: Curve;
9
9
  /** The start and end t parameter values of the bezier curve. */
10
- ts: number[];
10
+ readonly ts: number[];
11
11
  }
12
12
  export { CurvePiece };
@@ -1,5 +1,5 @@
1
- import { CpNode } from '../cp-node/cp-node.js';
2
- import { CurvePiece } from './curve-piece.js';
1
+ import type { CpNode } from '../cp-node/cp-node.js';
2
+ import type { CurvePiece } from './curve-piece.js';
3
3
  /**
4
4
  * @internal
5
5
  * Returns the ordered cubic bezier pieces (i.e a bezier with a t range)
@@ -1,8 +1,8 @@
1
+ import type { Loop } from 'flo-boolean';
2
+ import type { CpNode } from '../cp-node/cp-node.js';
3
+ import type { Curve } from 'flo-boolean';
4
+ import type { TriMap } from '../utils/tri-map.js';
1
5
  import { LlRbTree } from 'flo-ll-rb-tree';
2
- import { Loop } from 'flo-boolean';
3
- import { CpNode } from '../cp-node/cp-node.js';
4
- import { Curve } from '../curve/curve.js';
5
- import { TriMap } from '../utils/tri-map.js';
6
6
  interface MatMeta {
7
7
  readonly maxCoordinate: number;
8
8
  readonly squaredDiagonalLength: number;