@retikz/core 0.3.0-alpha.4 → 0.3.0-beta.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/dist/es/arrows/define.d.ts +9 -0
- package/dist/es/arrows/define.d.ts.map +1 -0
- package/dist/es/arrows/define.js +10 -0
- package/dist/es/arrows/index.d.ts +3 -1
- package/dist/es/arrows/index.d.ts.map +1 -1
- package/dist/es/arrows/index.js +14 -1
- package/dist/es/arrows/types.d.ts +4 -2
- package/dist/es/arrows/types.d.ts.map +1 -1
- package/dist/es/compile/anchor-cache.d.ts +3 -3
- package/dist/es/compile/anchor-cache.d.ts.map +1 -1
- package/dist/es/compile/anchor-cache.js +18 -5
- package/dist/es/compile/compile.d.ts +5 -14
- package/dist/es/compile/compile.d.ts.map +1 -1
- package/dist/es/compile/compile.js +73 -41
- package/dist/es/compile/{lowerComposites.d.ts → composite.d.ts} +9 -2
- package/dist/es/compile/composite.d.ts.map +1 -0
- package/dist/es/compile/{lowerComposites.js → composite.js} +9 -1
- package/dist/es/compile/constant.d.ts +32 -0
- package/dist/es/compile/constant.d.ts.map +1 -0
- package/dist/es/compile/constant.js +23 -0
- package/dist/es/compile/direction.d.ts +27 -0
- package/dist/es/compile/direction.d.ts.map +1 -0
- package/dist/es/compile/direction.js +30 -0
- package/dist/es/compile/index.d.ts +3 -1
- package/dist/es/compile/index.d.ts.map +1 -1
- package/dist/es/compile/name-stack.d.ts +3 -1
- package/dist/es/compile/name-stack.d.ts.map +1 -1
- package/dist/es/compile/name-stack.js +5 -1
- package/dist/es/compile/node.d.ts +20 -7
- package/dist/es/compile/node.d.ts.map +1 -1
- package/dist/es/compile/node.js +42 -63
- package/dist/es/compile/paint.js +1 -1
- package/dist/es/compile/path/anchor.d.ts +4 -3
- package/dist/es/compile/path/anchor.d.ts.map +1 -1
- package/dist/es/compile/path/anchor.js +9 -12
- package/dist/es/compile/path/index.d.ts +6 -8
- package/dist/es/compile/path/index.d.ts.map +1 -1
- package/dist/es/compile/path/index.js +59 -34
- package/dist/es/compile/path/relative.d.ts +1 -1
- package/dist/es/compile/path/relative.js +1 -1
- package/dist/es/compile/path/shrink.d.ts +3 -1
- package/dist/es/compile/path/shrink.d.ts.map +1 -1
- package/dist/es/compile/path/shrink.js +16 -11
- package/dist/es/compile/position.d.ts +2 -2
- package/dist/es/compile/position.d.ts.map +1 -1
- package/dist/es/compile/position.js +6 -19
- package/dist/es/compile/precision.d.ts +1 -1
- package/dist/es/compile/precision.d.ts.map +1 -1
- package/dist/es/compile/precision.js +2 -2
- package/dist/es/compile/scope.d.ts +7 -5
- package/dist/es/compile/scope.d.ts.map +1 -1
- package/dist/es/compile/scope.js +29 -13
- package/dist/es/compile/style.d.ts +2 -2
- package/dist/es/compile/style.d.ts.map +1 -1
- package/dist/es/compile/style.js +2 -2
- package/dist/es/composites/define.d.ts +8 -0
- package/dist/es/composites/define.d.ts.map +1 -0
- package/dist/es/composites/{types.js → define.js} +2 -2
- package/dist/es/composites/index.d.ts +1 -1
- package/dist/es/composites/index.d.ts.map +1 -1
- package/dist/es/composites/types.d.ts +0 -6
- package/dist/es/composites/types.d.ts.map +1 -1
- package/dist/es/geometry/anchor.d.ts +33 -0
- package/dist/es/geometry/anchor.d.ts.map +1 -0
- package/dist/es/geometry/anchor.js +45 -0
- package/dist/es/geometry/bend.d.ts +1 -1
- package/dist/es/geometry/bend.js +2 -2
- package/dist/es/geometry/circle.d.ts +4 -4
- package/dist/es/geometry/circle.d.ts.map +1 -1
- package/dist/es/geometry/circle.js +3 -3
- package/dist/es/geometry/{roundedContour.d.ts → contour.d.ts} +4 -5
- package/dist/es/geometry/contour.d.ts.map +1 -0
- package/dist/es/geometry/{roundedContour.js → contour.js} +22 -34
- package/dist/es/geometry/diamond.d.ts +3 -3
- package/dist/es/geometry/diamond.d.ts.map +1 -1
- package/dist/es/geometry/diamond.js +2 -2
- package/dist/{lib/geometry/_edge.d.ts → es/geometry/edge.d.ts} +1 -1
- package/dist/es/geometry/edge.d.ts.map +1 -0
- package/dist/es/geometry/{_edge.js → edge.js} +1 -1
- package/dist/es/geometry/ellipse.d.ts +3 -3
- package/dist/es/geometry/ellipse.d.ts.map +1 -1
- package/dist/es/geometry/ellipse.js +2 -2
- package/dist/es/geometry/index.d.ts +2 -1
- package/dist/es/geometry/index.d.ts.map +1 -1
- package/dist/es/geometry/point.d.ts +6 -0
- package/dist/es/geometry/point.d.ts.map +1 -1
- package/dist/es/geometry/point.js +17 -0
- package/dist/es/geometry/rect.d.ts +4 -17
- package/dist/es/geometry/rect.d.ts.map +1 -1
- package/dist/es/geometry/rect.js +4 -16
- package/dist/es/geometry/segment.d.ts.map +1 -1
- package/dist/es/geometry/segment.js +25 -47
- package/dist/{lib/geometry/_transform.d.ts → es/geometry/transform.d.ts} +1 -1
- package/dist/es/geometry/transform.d.ts.map +1 -0
- package/dist/es/geometry/{_transform.js → transform.js} +1 -1
- package/dist/es/index.d.ts +13 -10
- package/dist/es/index.d.ts.map +1 -1
- package/dist/es/index.js +19 -14
- package/dist/es/ir/animation.d.ts +219 -0
- package/dist/es/ir/animation.d.ts.map +1 -0
- package/dist/es/ir/animation.js +118 -0
- package/dist/es/ir/boundary.d.ts +1 -1
- package/dist/es/ir/boundary.d.ts.map +1 -1
- package/dist/es/ir/coordinate.d.ts +8 -8
- package/dist/es/ir/index.d.ts +1 -0
- package/dist/es/ir/index.d.ts.map +1 -1
- package/dist/es/ir/node.d.ts +249 -92
- package/dist/es/ir/node.d.ts.map +1 -1
- package/dist/es/ir/node.js +25 -23
- package/dist/es/ir/paint.d.ts +19 -18
- package/dist/es/ir/paint.d.ts.map +1 -1
- package/dist/es/ir/paint.js +10 -10
- package/dist/es/ir/path/arrow.d.ts +39 -38
- package/dist/es/ir/path/arrow.d.ts.map +1 -1
- package/dist/es/ir/path/arrow.js +18 -16
- package/dist/es/ir/path/path.d.ts +1106 -209
- package/dist/es/ir/path/path.d.ts.map +1 -1
- package/dist/es/ir/path/path.js +3 -1
- package/dist/es/ir/path/step.d.ts +932 -20
- package/dist/es/ir/path/step.d.ts.map +1 -1
- package/dist/es/ir/path/step.js +73 -22
- package/dist/es/ir/path/target.js +3 -3
- package/dist/es/ir/position/at-position.d.ts +18 -18
- package/dist/es/ir/position/at-position.d.ts.map +1 -1
- package/dist/es/ir/position/at-position.js +11 -11
- package/dist/es/ir/scene.d.ts +156 -0
- package/dist/es/ir/scene.d.ts.map +1 -1
- package/dist/es/ir/scene.js +3 -1
- package/dist/es/ir/scope.d.ts +3446 -1306
- package/dist/es/ir/scope.d.ts.map +1 -1
- package/dist/es/ir/scope.js +10 -6
- package/dist/es/ir/transform.d.ts +44 -17
- package/dist/es/ir/transform.d.ts.map +1 -1
- package/dist/es/ir/transform.js +10 -3
- package/dist/es/parsers/index.d.ts +3 -3
- package/dist/es/parsers/index.d.ts.map +1 -1
- package/dist/es/parsers/{parseNodeTarget.d.ts → node-target.d.ts} +1 -1
- package/dist/es/parsers/node-target.d.ts.map +1 -0
- package/dist/es/parsers/{parseNodeTarget.js → node-target.js} +10 -8
- package/dist/{lib/parsers/parseTargetSugar.d.ts → es/parsers/target-sugar.d.ts} +1 -1
- package/dist/es/parsers/target-sugar.d.ts.map +1 -0
- package/dist/es/parsers/{parseTargetSugar.js → target-sugar.js} +9 -4
- package/dist/{lib/parsers/parseWay.d.ts → es/parsers/way.d.ts} +1 -1
- package/dist/es/parsers/way.d.ts.map +1 -0
- package/dist/es/parsers/{parseWay.js → way.js} +9 -5
- package/dist/es/path-generators/define.d.ts.map +1 -0
- package/dist/es/{pathGenerators → path-generators}/define.js +1 -1
- package/dist/es/path-generators/index.d.ts.map +1 -0
- package/dist/es/path-generators/types.d.ts.map +1 -0
- package/dist/es/patterns/define.d.ts +9 -0
- package/dist/es/patterns/define.d.ts.map +1 -0
- package/dist/es/patterns/define.js +10 -0
- package/dist/es/patterns/index.d.ts +1 -0
- package/dist/es/patterns/index.d.ts.map +1 -1
- package/dist/es/patterns/index.js +42 -35
- package/dist/es/presets/animation.d.ts +123 -0
- package/dist/es/presets/animation.d.ts.map +1 -0
- package/dist/es/presets/animation.js +272 -0
- package/dist/es/presets/index.d.ts +3 -0
- package/dist/es/presets/index.d.ts.map +1 -0
- package/dist/es/primitive/ellipse.d.ts +3 -0
- package/dist/es/primitive/ellipse.d.ts.map +1 -1
- package/dist/es/primitive/group.d.ts +3 -0
- package/dist/es/primitive/group.d.ts.map +1 -1
- package/dist/es/primitive/marker.d.ts +1 -1
- package/dist/es/primitive/paint.d.ts +1 -1
- package/dist/es/primitive/path.d.ts +4 -1
- package/dist/es/primitive/path.d.ts.map +1 -1
- package/dist/es/primitive/rect.d.ts +3 -0
- package/dist/es/primitive/rect.d.ts.map +1 -1
- package/dist/es/primitive/scene.d.ts +3 -0
- package/dist/es/primitive/scene.d.ts.map +1 -1
- package/dist/es/primitive/text.d.ts +3 -0
- package/dist/es/primitive/text.d.ts.map +1 -1
- package/dist/es/shapes/arc.js +2 -2
- package/dist/{lib/shapes/_contour.d.ts → es/shapes/contour.d.ts} +6 -3
- package/dist/es/shapes/contour.d.ts.map +1 -0
- package/dist/es/shapes/{_contour.js → contour.js} +14 -2
- package/dist/es/shapes/ellipse.js +2 -2
- package/dist/es/shapes/index.d.ts +1 -1
- package/dist/es/shapes/index.d.ts.map +1 -1
- package/dist/es/shapes/index.js +1 -1
- package/dist/es/shapes/polygon.d.ts +1 -1
- package/dist/es/shapes/polygon.d.ts.map +1 -1
- package/dist/es/shapes/polygon.js +26 -21
- package/dist/es/shapes/rectangle.js +5 -5
- package/dist/es/shapes/sector.d.ts.map +1 -1
- package/dist/es/shapes/sector.js +30 -22
- package/dist/es/shapes/{_shared.d.ts → shared.d.ts} +4 -8
- package/dist/es/shapes/shared.d.ts.map +1 -0
- package/dist/es/shapes/{_shared.js → shared.js} +8 -12
- package/dist/es/shapes/star.d.ts.map +1 -1
- package/dist/es/shapes/star.js +4 -14
- package/dist/lib/arrows/define.cjs +10 -0
- package/dist/lib/arrows/define.d.ts +9 -0
- package/dist/lib/arrows/define.d.ts.map +1 -0
- package/dist/lib/arrows/index.cjs +14 -1
- package/dist/lib/arrows/index.d.ts +3 -1
- package/dist/lib/arrows/index.d.ts.map +1 -1
- package/dist/lib/arrows/types.d.ts +4 -2
- package/dist/lib/arrows/types.d.ts.map +1 -1
- package/dist/lib/compile/anchor-cache.cjs +17 -4
- package/dist/lib/compile/anchor-cache.d.ts +3 -3
- package/dist/lib/compile/anchor-cache.d.ts.map +1 -1
- package/dist/lib/compile/compile.cjs +71 -39
- package/dist/lib/compile/compile.d.ts +5 -14
- package/dist/lib/compile/compile.d.ts.map +1 -1
- package/dist/lib/compile/{lowerComposites.cjs → composite.cjs} +9 -1
- package/dist/lib/compile/{lowerComposites.d.ts → composite.d.ts} +9 -2
- package/dist/lib/compile/composite.d.ts.map +1 -0
- package/dist/lib/compile/constant.cjs +24 -0
- package/dist/lib/compile/constant.d.ts +32 -0
- package/dist/lib/compile/constant.d.ts.map +1 -0
- package/dist/lib/compile/direction.cjs +31 -0
- package/dist/lib/compile/direction.d.ts +27 -0
- package/dist/lib/compile/direction.d.ts.map +1 -0
- package/dist/lib/compile/index.d.ts +3 -1
- package/dist/lib/compile/index.d.ts.map +1 -1
- package/dist/lib/compile/name-stack.cjs +5 -1
- package/dist/lib/compile/name-stack.d.ts +3 -1
- package/dist/lib/compile/name-stack.d.ts.map +1 -1
- package/dist/lib/compile/node.cjs +42 -62
- package/dist/lib/compile/node.d.ts +20 -7
- package/dist/lib/compile/node.d.ts.map +1 -1
- package/dist/lib/compile/paint.cjs +1 -1
- package/dist/lib/compile/path/anchor.cjs +10 -12
- package/dist/lib/compile/path/anchor.d.ts +4 -3
- package/dist/lib/compile/path/anchor.d.ts.map +1 -1
- package/dist/lib/compile/path/index.cjs +58 -33
- package/dist/lib/compile/path/index.d.ts +6 -8
- package/dist/lib/compile/path/index.d.ts.map +1 -1
- package/dist/lib/compile/path/relative.cjs +1 -1
- package/dist/lib/compile/path/relative.d.ts +1 -1
- package/dist/lib/compile/path/shrink.cjs +16 -11
- package/dist/lib/compile/path/shrink.d.ts +3 -1
- package/dist/lib/compile/path/shrink.d.ts.map +1 -1
- package/dist/lib/compile/position.cjs +6 -19
- package/dist/lib/compile/position.d.ts +2 -2
- package/dist/lib/compile/position.d.ts.map +1 -1
- package/dist/lib/compile/precision.cjs +2 -2
- package/dist/lib/compile/precision.d.ts +1 -1
- package/dist/lib/compile/precision.d.ts.map +1 -1
- package/dist/lib/compile/scope.cjs +29 -13
- package/dist/lib/compile/scope.d.ts +7 -5
- package/dist/lib/compile/scope.d.ts.map +1 -1
- package/dist/lib/compile/style.cjs +2 -2
- package/dist/lib/compile/style.d.ts +2 -2
- package/dist/lib/compile/style.d.ts.map +1 -1
- package/dist/lib/composites/{types.cjs → define.cjs} +2 -2
- package/dist/lib/composites/define.d.ts +8 -0
- package/dist/lib/composites/define.d.ts.map +1 -0
- package/dist/lib/composites/index.d.ts +1 -1
- package/dist/lib/composites/index.d.ts.map +1 -1
- package/dist/lib/composites/types.d.ts +0 -6
- package/dist/lib/composites/types.d.ts.map +1 -1
- package/dist/lib/geometry/anchor.cjs +47 -0
- package/dist/lib/geometry/anchor.d.ts +33 -0
- package/dist/lib/geometry/anchor.d.ts.map +1 -0
- package/dist/lib/geometry/bend.cjs +2 -2
- package/dist/lib/geometry/bend.d.ts +1 -1
- package/dist/lib/geometry/circle.cjs +9 -9
- package/dist/lib/geometry/circle.d.ts +4 -4
- package/dist/lib/geometry/circle.d.ts.map +1 -1
- package/dist/lib/geometry/{roundedContour.cjs → contour.cjs} +21 -32
- package/dist/lib/geometry/{roundedContour.d.ts → contour.d.ts} +4 -5
- package/dist/lib/geometry/contour.d.ts.map +1 -0
- package/dist/lib/geometry/diamond.cjs +7 -7
- package/dist/lib/geometry/diamond.d.ts +3 -3
- package/dist/lib/geometry/diamond.d.ts.map +1 -1
- package/dist/lib/geometry/{_edge.cjs → edge.cjs} +1 -1
- package/dist/{es/geometry/_edge.d.ts → lib/geometry/edge.d.ts} +1 -1
- package/dist/lib/geometry/edge.d.ts.map +1 -0
- package/dist/lib/geometry/ellipse.cjs +8 -8
- package/dist/lib/geometry/ellipse.d.ts +3 -3
- package/dist/lib/geometry/ellipse.d.ts.map +1 -1
- package/dist/lib/geometry/index.d.ts +2 -1
- package/dist/lib/geometry/index.d.ts.map +1 -1
- package/dist/lib/geometry/point.cjs +17 -0
- package/dist/lib/geometry/point.d.ts +6 -0
- package/dist/lib/geometry/point.d.ts.map +1 -1
- package/dist/lib/geometry/rect.cjs +9 -22
- package/dist/lib/geometry/rect.d.ts +4 -17
- package/dist/lib/geometry/rect.d.ts.map +1 -1
- package/dist/lib/geometry/segment.cjs +25 -47
- package/dist/lib/geometry/segment.d.ts.map +1 -1
- package/dist/lib/geometry/{_transform.cjs → transform.cjs} +1 -1
- package/dist/{es/geometry/_transform.d.ts → lib/geometry/transform.d.ts} +1 -1
- package/dist/lib/geometry/transform.d.ts.map +1 -0
- package/dist/lib/index.cjs +56 -22
- package/dist/lib/index.d.ts +13 -10
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/ir/animation.cjs +127 -0
- package/dist/lib/ir/animation.d.ts +219 -0
- package/dist/lib/ir/animation.d.ts.map +1 -0
- package/dist/lib/ir/boundary.d.ts +1 -1
- package/dist/lib/ir/boundary.d.ts.map +1 -1
- package/dist/lib/ir/coordinate.d.ts +8 -8
- package/dist/lib/ir/index.d.ts +1 -0
- package/dist/lib/ir/index.d.ts.map +1 -1
- package/dist/lib/ir/node.cjs +25 -23
- package/dist/lib/ir/node.d.ts +249 -92
- package/dist/lib/ir/node.d.ts.map +1 -1
- package/dist/lib/ir/paint.cjs +10 -10
- package/dist/lib/ir/paint.d.ts +19 -18
- package/dist/lib/ir/paint.d.ts.map +1 -1
- package/dist/lib/ir/path/arrow.cjs +18 -16
- package/dist/lib/ir/path/arrow.d.ts +39 -38
- package/dist/lib/ir/path/arrow.d.ts.map +1 -1
- package/dist/lib/ir/path/path.cjs +3 -1
- package/dist/lib/ir/path/path.d.ts +1106 -209
- package/dist/lib/ir/path/path.d.ts.map +1 -1
- package/dist/lib/ir/path/step.cjs +73 -21
- package/dist/lib/ir/path/step.d.ts +932 -20
- package/dist/lib/ir/path/step.d.ts.map +1 -1
- package/dist/lib/ir/path/target.cjs +3 -3
- package/dist/lib/ir/position/at-position.cjs +11 -11
- package/dist/lib/ir/position/at-position.d.ts +18 -18
- package/dist/lib/ir/position/at-position.d.ts.map +1 -1
- package/dist/lib/ir/scene.cjs +3 -1
- package/dist/lib/ir/scene.d.ts +156 -0
- package/dist/lib/ir/scene.d.ts.map +1 -1
- package/dist/lib/ir/scope.cjs +10 -6
- package/dist/lib/ir/scope.d.ts +3446 -1306
- package/dist/lib/ir/scope.d.ts.map +1 -1
- package/dist/lib/ir/transform.cjs +9 -2
- package/dist/lib/ir/transform.d.ts +44 -17
- package/dist/lib/ir/transform.d.ts.map +1 -1
- package/dist/lib/parsers/index.d.ts +3 -3
- package/dist/lib/parsers/index.d.ts.map +1 -1
- package/dist/lib/parsers/{parseNodeTarget.cjs → node-target.cjs} +10 -8
- package/dist/lib/parsers/{parseNodeTarget.d.ts → node-target.d.ts} +1 -1
- package/dist/lib/parsers/node-target.d.ts.map +1 -0
- package/dist/lib/parsers/{parseTargetSugar.cjs → target-sugar.cjs} +9 -4
- package/dist/{es/parsers/parseTargetSugar.d.ts → lib/parsers/target-sugar.d.ts} +1 -1
- package/dist/lib/parsers/target-sugar.d.ts.map +1 -0
- package/dist/lib/parsers/{parseWay.cjs → way.cjs} +12 -8
- package/dist/{es/parsers/parseWay.d.ts → lib/parsers/way.d.ts} +1 -1
- package/dist/lib/parsers/way.d.ts.map +1 -0
- package/dist/lib/{pathGenerators → path-generators}/define.cjs +1 -1
- package/dist/lib/path-generators/define.d.ts.map +1 -0
- package/dist/lib/path-generators/index.d.ts.map +1 -0
- package/dist/lib/path-generators/types.d.ts.map +1 -0
- package/dist/lib/patterns/define.cjs +10 -0
- package/dist/lib/patterns/define.d.ts +9 -0
- package/dist/lib/patterns/define.d.ts.map +1 -0
- package/dist/lib/patterns/index.cjs +42 -35
- package/dist/lib/patterns/index.d.ts +1 -0
- package/dist/lib/patterns/index.d.ts.map +1 -1
- package/dist/lib/presets/animation.cjs +286 -0
- package/dist/lib/presets/animation.d.ts +123 -0
- package/dist/lib/presets/animation.d.ts.map +1 -0
- package/dist/lib/presets/index.d.ts +3 -0
- package/dist/lib/presets/index.d.ts.map +1 -0
- package/dist/lib/primitive/ellipse.d.ts +3 -0
- package/dist/lib/primitive/ellipse.d.ts.map +1 -1
- package/dist/lib/primitive/group.d.ts +3 -0
- package/dist/lib/primitive/group.d.ts.map +1 -1
- package/dist/lib/primitive/marker.d.ts +1 -1
- package/dist/lib/primitive/paint.d.ts +1 -1
- package/dist/lib/primitive/path.d.ts +4 -1
- package/dist/lib/primitive/path.d.ts.map +1 -1
- package/dist/lib/primitive/rect.d.ts +3 -0
- package/dist/lib/primitive/rect.d.ts.map +1 -1
- package/dist/lib/primitive/scene.d.ts +3 -0
- package/dist/lib/primitive/scene.d.ts.map +1 -1
- package/dist/lib/primitive/text.d.ts +3 -0
- package/dist/lib/primitive/text.d.ts.map +1 -1
- package/dist/lib/shapes/arc.cjs +4 -4
- package/dist/lib/shapes/{_contour.cjs → contour.cjs} +14 -1
- package/dist/{es/shapes/_contour.d.ts → lib/shapes/contour.d.ts} +6 -3
- package/dist/lib/shapes/contour.d.ts.map +1 -0
- package/dist/lib/shapes/ellipse.cjs +2 -2
- package/dist/lib/shapes/index.cjs +1 -1
- package/dist/lib/shapes/index.d.ts +1 -1
- package/dist/lib/shapes/index.d.ts.map +1 -1
- package/dist/lib/shapes/polygon.cjs +29 -24
- package/dist/lib/shapes/polygon.d.ts +1 -1
- package/dist/lib/shapes/polygon.d.ts.map +1 -1
- package/dist/lib/shapes/rectangle.cjs +11 -11
- package/dist/lib/shapes/sector.cjs +41 -33
- package/dist/lib/shapes/sector.d.ts.map +1 -1
- package/dist/lib/shapes/{_shared.cjs → shared.cjs} +7 -12
- package/dist/lib/shapes/{_shared.d.ts → shared.d.ts} +4 -8
- package/dist/lib/shapes/shared.d.ts.map +1 -0
- package/dist/lib/shapes/star.cjs +7 -17
- package/dist/lib/shapes/star.d.ts.map +1 -1
- package/package.json +2 -3
- package/dist/es/compile/lowerComposites.d.ts.map +0 -1
- package/dist/es/geometry/_edge.d.ts.map +0 -1
- package/dist/es/geometry/_transform.d.ts.map +0 -1
- package/dist/es/geometry/roundedContour.d.ts.map +0 -1
- package/dist/es/parsers/parseNodeTarget.d.ts.map +0 -1
- package/dist/es/parsers/parseTargetSugar.d.ts.map +0 -1
- package/dist/es/parsers/parseWay.d.ts.map +0 -1
- package/dist/es/pathGenerators/define.d.ts.map +0 -1
- package/dist/es/pathGenerators/index.d.ts.map +0 -1
- package/dist/es/pathGenerators/types.d.ts.map +0 -1
- package/dist/es/shapes/_contour.d.ts.map +0 -1
- package/dist/es/shapes/_shared.d.ts.map +0 -1
- package/dist/lib/compile/lowerComposites.d.ts.map +0 -1
- package/dist/lib/geometry/_edge.d.ts.map +0 -1
- package/dist/lib/geometry/_transform.d.ts.map +0 -1
- package/dist/lib/geometry/roundedContour.d.ts.map +0 -1
- package/dist/lib/parsers/parseNodeTarget.d.ts.map +0 -1
- package/dist/lib/parsers/parseTargetSugar.d.ts.map +0 -1
- package/dist/lib/parsers/parseWay.d.ts.map +0 -1
- package/dist/lib/pathGenerators/define.d.ts.map +0 -1
- package/dist/lib/pathGenerators/index.d.ts.map +0 -1
- package/dist/lib/pathGenerators/types.d.ts.map +0 -1
- package/dist/lib/shapes/_contour.d.ts.map +0 -1
- package/dist/lib/shapes/_shared.d.ts.map +0 -1
- /package/dist/es/{pathGenerators → path-generators}/define.d.ts +0 -0
- /package/dist/es/{pathGenerators → path-generators}/index.d.ts +0 -0
- /package/dist/es/{pathGenerators → path-generators}/types.d.ts +0 -0
- /package/dist/lib/{pathGenerators → path-generators}/define.d.ts +0 -0
- /package/dist/lib/{pathGenerators → path-generators}/index.d.ts +0 -0
- /package/dist/lib/{pathGenerators → path-generators}/types.d.ts +0 -0
package/dist/es/compile/scope.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { rect } from "../geometry/rect.js";
|
|
2
2
|
import { BUILTIN_SHAPES } from "../shapes/index.js";
|
|
3
3
|
import { resolvePosition } from "./position.js";
|
|
4
|
+
import { outerRectOf } from "./node.js";
|
|
4
5
|
//#region src/compile/scope.ts
|
|
5
6
|
/**
|
|
6
|
-
* 把 IR
|
|
7
|
-
* @description
|
|
7
|
+
* 把 IR 7 变体 transforms 展平为 Scene 3 变体(Cartesian translate / rotate / scale)
|
|
8
|
+
* @description 5 个 translate 变体(translate / polar-translate / at-translate / offset-translate / between-translate)
|
|
8
9
|
* 各自构造对应 Position 字面量并调用 `resolvePosition` 拿到 Cartesian (x, y),再写成 Cartesian translate;
|
|
9
10
|
* rotate / scale 直接透传。referent 未解析时返回 null(上游负责发 warn / throw)
|
|
10
11
|
*/
|
|
11
|
-
var lowerScopeTransforms = (transforms, nameStack, nodeDistance) => {
|
|
12
|
+
var lowerScopeTransforms = (transforms, nameStack, nodeDistance, resolveBetweenGlobal) => {
|
|
12
13
|
const out = [];
|
|
13
14
|
for (const t of transforms) switch (t.kind) {
|
|
14
15
|
case "translate":
|
|
@@ -61,6 +62,19 @@ var lowerScopeTransforms = (transforms, nameStack, nodeDistance) => {
|
|
|
61
62
|
});
|
|
62
63
|
break;
|
|
63
64
|
}
|
|
65
|
+
case "between-translate": {
|
|
66
|
+
const resolved = resolvePosition({
|
|
67
|
+
between: t.between,
|
|
68
|
+
t: t.t
|
|
69
|
+
}, nameStack, nodeDistance, [], resolveBetweenGlobal);
|
|
70
|
+
if (!resolved) return null;
|
|
71
|
+
out.push({
|
|
72
|
+
kind: "translate",
|
|
73
|
+
x: resolved[0],
|
|
74
|
+
y: resolved[1]
|
|
75
|
+
});
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
64
78
|
case "rotate": {
|
|
65
79
|
const r = {
|
|
66
80
|
kind: "rotate",
|
|
@@ -159,7 +173,7 @@ var inverseTransformChain = (global, chain) => {
|
|
|
159
173
|
* scale 乘进 rect.width / height / margin——这样 path 端点的 boundary clip 取的是与 SVG `<g>`
|
|
160
174
|
* 实际渲染一致的视觉尺寸 / 朝向,跨 / 入 / 出 rotate / scale scope 的 path 都贴节点视觉边界。
|
|
161
175
|
* 非均匀 scale 与 rotate 在 chain 中混合时,按"累加 rotate + 分量相乘 scale"近似(uniform scale 精确,
|
|
162
|
-
* anisotropic + rotate
|
|
176
|
+
* anisotropic + rotate 的剪切耦合不展开——当前投影模型限制)。
|
|
163
177
|
*/
|
|
164
178
|
var projectLayoutToGlobal = (layout, chain) => {
|
|
165
179
|
const [gx, gy] = applyTransformChain([layout.rect.x, layout.rect.y], chain);
|
|
@@ -176,13 +190,14 @@ var projectLayoutToGlobal = (layout, chain) => {
|
|
|
176
190
|
x: gx,
|
|
177
191
|
y: gy,
|
|
178
192
|
rotate: (layout.rect.rotate ?? 0) + rotateAccumRad,
|
|
179
|
-
width: layout.rect.width * scaleX,
|
|
180
|
-
height: layout.rect.height * scaleY
|
|
193
|
+
width: layout.rect.width * Math.abs(scaleX),
|
|
194
|
+
height: layout.rect.height * Math.abs(scaleY)
|
|
181
195
|
};
|
|
182
196
|
const marginScale = Math.max(Math.abs(scaleX), Math.abs(scaleY));
|
|
183
197
|
return {
|
|
184
198
|
...layout,
|
|
185
199
|
rect: globalRect,
|
|
200
|
+
rotateDeg: layout.rotateDeg + rotateAccumRad * (180 / Math.PI),
|
|
186
201
|
margin: layout.margin * marginScale
|
|
187
202
|
};
|
|
188
203
|
};
|
|
@@ -201,11 +216,12 @@ var computeScopeBoundingBox = (layouts) => {
|
|
|
201
216
|
let maxX = -Infinity;
|
|
202
217
|
let maxY = -Infinity;
|
|
203
218
|
for (const layout of layouts) {
|
|
219
|
+
const outerRect = outerRectOf(layout);
|
|
204
220
|
const corners = [
|
|
205
|
-
rect.anchor(
|
|
206
|
-
rect.anchor(
|
|
207
|
-
rect.anchor(
|
|
208
|
-
rect.anchor(
|
|
221
|
+
rect.anchor(outerRect, "north-west"),
|
|
222
|
+
rect.anchor(outerRect, "north-east"),
|
|
223
|
+
rect.anchor(outerRect, "south-west"),
|
|
224
|
+
rect.anchor(outerRect, "south-east")
|
|
209
225
|
];
|
|
210
226
|
for (const [cx, cy] of corners) {
|
|
211
227
|
if (cx < minX) minX = cx;
|
|
@@ -227,7 +243,7 @@ var computeScopeBoundingBox = (layouts) => {
|
|
|
227
243
|
* synthetic layout 完全复用 rectangle 路径:`scope.id.<keyword>` / `scope.id.<deg>` / `scope.id` 作为 referent
|
|
228
244
|
* 走与普通 rectangle Node 完全一致的 anchorOf / boundaryPointOf / 中心点取值
|
|
229
245
|
*/
|
|
230
|
-
var registerScopeAsLayout = (id, bbox, fallbackOrigin) => {
|
|
246
|
+
var registerScopeAsLayout = (id, bbox, fallbackOrigin, shapes = BUILTIN_SHAPES) => {
|
|
231
247
|
const box = bbox ?? {
|
|
232
248
|
x: fallbackOrigin[0],
|
|
233
249
|
y: fallbackOrigin[1],
|
|
@@ -237,7 +253,7 @@ var registerScopeAsLayout = (id, bbox, fallbackOrigin) => {
|
|
|
237
253
|
return {
|
|
238
254
|
id,
|
|
239
255
|
shapeName: "rectangle",
|
|
240
|
-
shapeDef:
|
|
256
|
+
shapeDef: shapes.rectangle,
|
|
241
257
|
rect: {
|
|
242
258
|
x: box.x,
|
|
243
259
|
y: box.y,
|
|
@@ -252,7 +268,7 @@ var registerScopeAsLayout = (id, bbox, fallbackOrigin) => {
|
|
|
252
268
|
align: "middle",
|
|
253
269
|
lineHeight: 0,
|
|
254
270
|
fontSize: 0,
|
|
255
|
-
shapes
|
|
271
|
+
shapes
|
|
256
272
|
};
|
|
257
273
|
};
|
|
258
274
|
//#endregion
|
|
@@ -6,7 +6,7 @@ import { IRArrowDetail, IRLabelDefault, IRNode, IRPath, IRScope } from '../ir';
|
|
|
6
6
|
type CascadeState = Pick<IRScope, 'color' | 'stroke' | 'fill' | 'strokeWidth' | 'opacity' | 'fillOpacity' | 'drawOpacity'>;
|
|
7
7
|
/**
|
|
8
8
|
* 单层 scope 的样式 frame——compile 维护 frame 栈做 inside-out per-field 解析
|
|
9
|
-
* @description 级联 graphic state + 四通道 every-X 默认 + resetStyle 屏障;从 IRScope 抽取(
|
|
9
|
+
* @description 级联 graphic state + 四通道 every-X 默认 + resetStyle 屏障;从 IRScope 抽取(createStyleFrame)
|
|
10
10
|
*/
|
|
11
11
|
export type StyleFrame = {
|
|
12
12
|
/** 级联 graphic state(主色 + 跨类共享分项) */
|
|
@@ -26,7 +26,7 @@ export type StyleFrame = {
|
|
|
26
26
|
* 从 IRScope 抽取样式 frame
|
|
27
27
|
* @description 只摘样式相关字段(级联 graphic state + 四通道 + resetStyle);transforms / id / localNamespace 与样式正交,不进 frame
|
|
28
28
|
*/
|
|
29
|
-
export declare const
|
|
29
|
+
export declare const createStyleFrame: (scope: IRScope) => StyleFrame;
|
|
30
30
|
/**
|
|
31
31
|
* 解析 node 最终样式——fold 外→内 frame 栈 + 元素显式
|
|
32
32
|
* @description 优先级链(每分项就近 model A):元素显式分项 > 元素 color > nodeDefault 分项 > nodeDefault color
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/compile/style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAGb,cAAc,EACd,MAAM,EACN,MAAM,EACN,OAAO,EAIR,MAAM,OAAO,CAAC;AAEf;;;GAGG;AACH,KAAK,YAAY,GAAG,IAAI,CACtB,OAAO,EACP,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CACxF,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,oCAAoC;IACpC,OAAO,EAAE,YAAY,CAAC;IACtB,oBAAoB;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACrC,oBAAoB;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACrC,iDAAiD;IACjD,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,qBAAqB;IACrB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,sBAAsB;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CACpC,CAAC;AAYF;;;GAGG;AACH,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/compile/style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAGb,cAAc,EACd,MAAM,EACN,MAAM,EACN,OAAO,EAIR,MAAM,OAAO,CAAC;AAEf;;;GAGG;AACH,KAAK,YAAY,GAAG,IAAI,CACtB,OAAO,EACP,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CACxF,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,oCAAoC;IACpC,OAAO,EAAE,YAAY,CAAC;IACtB,oBAAoB;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACrC,oBAAoB;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACrC,iDAAiD;IACjD,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,qBAAqB;IACrB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,sBAAsB;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CACpC,CAAC;AAYF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,UAgBjD,CAAC;AAiEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,OAAO,aAAa,CAAC,UAAU,CAAC,KAC/B,MAYF,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,GAC9B,OAAO,aAAa,CAAC,UAAU,CAAC,KAC/B,cAOF,CAAC;AAyHF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,MAAM,EACZ,OAAO,aAAa,CAAC,UAAU,CAAC,KAC/B,MA2BF,CAAC"}
|
package/dist/es/compile/style.js
CHANGED
|
@@ -12,7 +12,7 @@ var pickDefinedKeys = (src) => {
|
|
|
12
12
|
* 从 IRScope 抽取样式 frame
|
|
13
13
|
* @description 只摘样式相关字段(级联 graphic state + 四通道 + resetStyle);transforms / id / localNamespace 与样式正交,不进 frame
|
|
14
14
|
*/
|
|
15
|
-
var
|
|
15
|
+
var createStyleFrame = (scope) => {
|
|
16
16
|
const cascade = {};
|
|
17
17
|
if (scope.color !== void 0) cascade.color = scope.color;
|
|
18
18
|
if (scope.stroke !== void 0) cascade.stroke = scope.stroke;
|
|
@@ -256,4 +256,4 @@ var resolveEffectivePath = (path, stack) => {
|
|
|
256
256
|
return effective;
|
|
257
257
|
};
|
|
258
258
|
//#endregion
|
|
259
|
-
export {
|
|
259
|
+
export { createStyleFrame, resolveEffectivePath, resolveLabelDefault, resolveNodeStyle };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CompositeDefinition } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 注册一个 Tier 2 composite(保留 `expand` 的强类型节点参数)
|
|
4
|
+
* @description domain 包用它注册:`expand` 的 node 自动推断为 `z.infer<typeof schema>`;返回值擦除泛型,
|
|
5
|
+
* 可放进 `CompileOptions.composites: Array<CompositeDefinition>`。对齐其他扩展面的 `define*` helper。
|
|
6
|
+
*/
|
|
7
|
+
export declare const defineComposite: <T>(definition: CompositeDefinition<T>) => CompositeDefinition;
|
|
8
|
+
//# sourceMappingURL=define.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/composites/define.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,YAAY,mBAAmB,CAAC,CAAC,CAAC,KAAG,mBACrC,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
//#region src/composites/
|
|
1
|
+
//#region src/composites/define.ts
|
|
2
2
|
/**
|
|
3
3
|
* 注册一个 Tier 2 composite(保留 `expand` 的强类型节点参数)
|
|
4
4
|
* @description domain 包用它注册:`expand` 的 node 自动推断为 `z.infer<typeof schema>`;返回值擦除泛型,
|
|
5
|
-
* 可放进 `CompileOptions.composites: Array<CompositeDefinition
|
|
5
|
+
* 可放进 `CompileOptions.composites: Array<CompositeDefinition>`。对齐其他扩展面的 `define*` helper。
|
|
6
6
|
*/
|
|
7
7
|
var defineComposite = (definition) => definition;
|
|
8
8
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/composites/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/composites/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -12,10 +12,4 @@ export type CompositeDefinition<T = unknown> = {
|
|
|
12
12
|
/** 把该 composite 节点展开成 Tier 1 IR 的纯函数;据节点字段不同产不同子树 */
|
|
13
13
|
expand: (node: T) => IRChild | Array<IRChild>;
|
|
14
14
|
};
|
|
15
|
-
/**
|
|
16
|
-
* 注册一个 Tier 2 composite(保留 `expand` 的强类型节点参数)
|
|
17
|
-
* @description domain 包用它注册:`expand` 的 node 自动推断为 `z.infer<typeof schema>`;返回值擦除泛型,
|
|
18
|
-
* 可放进 `CompileOptions.composites: Array<CompositeDefinition>`。对齐 `definePathGenerator`。
|
|
19
|
-
*/
|
|
20
|
-
export declare const defineComposite: <T>(definition: CompositeDefinition<T>) => CompositeDefinition;
|
|
21
15
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/composites/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,OAAO,IAAI;IAC7C,yEAAyE;IACzE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,qDAAqD;IACrD,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;CAC/C,CAAC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/composites/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,OAAO,IAAI;IAC7C,yEAAyE;IACzE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,qDAAqD;IACrD,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;CAC/C,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ValueOf } from '../types';
|
|
2
|
+
/** 9 个标准方位 anchor,采用 TikZ 语义作为 canonical 值。 */
|
|
3
|
+
export declare const CompassAnchor: {
|
|
4
|
+
readonly Center: "center";
|
|
5
|
+
readonly North: "north";
|
|
6
|
+
readonly South: "south";
|
|
7
|
+
readonly East: "east";
|
|
8
|
+
readonly West: "west";
|
|
9
|
+
readonly NorthEast: "north-east";
|
|
10
|
+
readonly NorthWest: "north-west";
|
|
11
|
+
readonly SouthEast: "south-east";
|
|
12
|
+
readonly SouthWest: "south-west";
|
|
13
|
+
};
|
|
14
|
+
export type CompassAnchorValue = ValueOf<typeof CompassAnchor>;
|
|
15
|
+
/** Web/CSS 心智下的方位 anchor 输入别名,编译前归一到 CompassAnchor。 */
|
|
16
|
+
export declare const WebAnchor: {
|
|
17
|
+
readonly Top: "top";
|
|
18
|
+
readonly Bottom: "bottom";
|
|
19
|
+
readonly Right: "right";
|
|
20
|
+
readonly Left: "left";
|
|
21
|
+
readonly TopRight: "top-right";
|
|
22
|
+
readonly TopLeft: "top-left";
|
|
23
|
+
readonly BottomRight: "bottom-right";
|
|
24
|
+
readonly BottomLeft: "bottom-left";
|
|
25
|
+
};
|
|
26
|
+
export type WebAnchorValue = ValueOf<typeof WebAnchor>;
|
|
27
|
+
export type AnchorInput = CompassAnchorValue | WebAnchorValue;
|
|
28
|
+
/**
|
|
29
|
+
* 标准化方位 anchor 名。
|
|
30
|
+
* @description TikZ canonical 名原样返回;Web alias(top / top-left 等)归一到 north / north-west 等。
|
|
31
|
+
*/
|
|
32
|
+
export declare const normalizeCompassAnchor: (name: string) => CompassAnchorValue | undefined;
|
|
33
|
+
//# sourceMappingURL=anchor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../../../src/geometry/anchor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,+CAA+C;AAC/C,eAAO,MAAM,aAAa;;;;;;;;;;CAUhB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,aAAa,CAAC,CAAC;AAE/D,uDAAuD;AACvD,eAAO,MAAM,SAAS;;;;;;;;;CASZ,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,SAAS,CAAC,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG,kBAAkB,GAAG,cAAc,CAAC;AAe9D;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,KAAG,kBAAkB,GAAG,SAG1E,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
//#region src/geometry/anchor.ts
|
|
2
|
+
/** 9 个标准方位 anchor,采用 TikZ 语义作为 canonical 值。 */
|
|
3
|
+
var CompassAnchor = {
|
|
4
|
+
Center: "center",
|
|
5
|
+
North: "north",
|
|
6
|
+
South: "south",
|
|
7
|
+
East: "east",
|
|
8
|
+
West: "west",
|
|
9
|
+
NorthEast: "north-east",
|
|
10
|
+
NorthWest: "north-west",
|
|
11
|
+
SouthEast: "south-east",
|
|
12
|
+
SouthWest: "south-west"
|
|
13
|
+
};
|
|
14
|
+
/** Web/CSS 心智下的方位 anchor 输入别名,编译前归一到 CompassAnchor。 */
|
|
15
|
+
var WebAnchor = {
|
|
16
|
+
Top: "top",
|
|
17
|
+
Bottom: "bottom",
|
|
18
|
+
Right: "right",
|
|
19
|
+
Left: "left",
|
|
20
|
+
TopRight: "top-right",
|
|
21
|
+
TopLeft: "top-left",
|
|
22
|
+
BottomRight: "bottom-right",
|
|
23
|
+
BottomLeft: "bottom-left"
|
|
24
|
+
};
|
|
25
|
+
var CompassAnchorSet = new Set(Object.values(CompassAnchor));
|
|
26
|
+
var AnchorAliases = {
|
|
27
|
+
top: CompassAnchor.North,
|
|
28
|
+
bottom: CompassAnchor.South,
|
|
29
|
+
right: CompassAnchor.East,
|
|
30
|
+
left: CompassAnchor.West,
|
|
31
|
+
"top-right": CompassAnchor.NorthEast,
|
|
32
|
+
"top-left": CompassAnchor.NorthWest,
|
|
33
|
+
"bottom-right": CompassAnchor.SouthEast,
|
|
34
|
+
"bottom-left": CompassAnchor.SouthWest
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* 标准化方位 anchor 名。
|
|
38
|
+
* @description TikZ canonical 名原样返回;Web alias(top / top-left 等)归一到 north / north-west 等。
|
|
39
|
+
*/
|
|
40
|
+
var normalizeCompassAnchor = (name) => {
|
|
41
|
+
if (CompassAnchorSet.has(name)) return name;
|
|
42
|
+
return AnchorAliases[name];
|
|
43
|
+
};
|
|
44
|
+
//#endregion
|
|
45
|
+
export { CompassAnchor, WebAnchor, normalizeCompassAnchor };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Position } from './point';
|
|
2
2
|
/**
|
|
3
3
|
* cubic Bezier 拟合 from→to 的弧形 bend
|
|
4
|
-
* @description apex offset
|
|
4
|
+
* @description apex offset =(chord/2)× tan(bendAngle/2),即弦切角为 bendAngle 的圆弧 sagitta;控制点取 chord 1/3 与 2/3 处沿法向偏移,让 cubic 在 t=0.5 穿过 apex 故 ctlOffset = 4/3 × apexOffset。法向(screen y-down):visual-left=(dy,-dx)/|chord|,visual-right=(-dy,dx)/|chord|。chord=0 时两控制点都返回 from
|
|
5
5
|
*/
|
|
6
6
|
export declare const bendControlPoints: (from: Position, to: Position, direction: "left" | "right", bendAngle: number) => [Position, Position];
|
|
7
7
|
/**
|
package/dist/es/geometry/bend.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
//#region src/geometry/bend.ts
|
|
2
2
|
/**
|
|
3
3
|
* cubic Bezier 拟合 from→to 的弧形 bend
|
|
4
|
-
* @description apex offset
|
|
4
|
+
* @description apex offset =(chord/2)× tan(bendAngle/2),即弦切角为 bendAngle 的圆弧 sagitta;控制点取 chord 1/3 与 2/3 处沿法向偏移,让 cubic 在 t=0.5 穿过 apex 故 ctlOffset = 4/3 × apexOffset。法向(screen y-down):visual-left=(dy,-dx)/|chord|,visual-right=(-dy,dx)/|chord|。chord=0 时两控制点都返回 from
|
|
5
5
|
*/
|
|
6
6
|
var bendControlPoints = (from, to, direction, bendAngle) => {
|
|
7
7
|
const dx = to[0] - from[0];
|
|
@@ -11,7 +11,7 @@ var bendControlPoints = (from, to, direction, bendAngle) => {
|
|
|
11
11
|
const sign = direction === "left" ? 1 : -1;
|
|
12
12
|
const nx = dy / chord * sign;
|
|
13
13
|
const ny = -dx / chord * sign;
|
|
14
|
-
const ctlOffset = 4 / 3 * (chord * Math.tan(bendAngle * Math.PI / 180 / 2));
|
|
14
|
+
const ctlOffset = 4 / 3 * (chord / 2 * Math.tan(bendAngle * Math.PI / 180 / 2));
|
|
15
15
|
return [[from[0] + dx / 3 + ctlOffset * nx, from[1] + dy / 3 + ctlOffset * ny], [from[0] + 2 * dx / 3 + ctlOffset * nx, from[1] + 2 * dy / 3 + ctlOffset * ny]];
|
|
16
16
|
};
|
|
17
17
|
/** 默认 looseness(looseness 缺省时) */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Side } from './
|
|
1
|
+
import { Side } from './edge';
|
|
2
|
+
import { CompassAnchorValue } from './anchor';
|
|
2
3
|
import { Position } from './point';
|
|
3
|
-
import { RectAnchor } from './rect';
|
|
4
4
|
/** 圆形:几何中心 + 半径,预留旋转字段保持与 Rect 同形 API */
|
|
5
5
|
export type Circle = {
|
|
6
6
|
x: number;
|
|
@@ -16,8 +16,8 @@ export declare const circle: {
|
|
|
16
16
|
center: (c: Circle) => Position;
|
|
17
17
|
/** 判断点是否在圆内(含边界) */
|
|
18
18
|
contains: (c: Circle, p: Position) => boolean;
|
|
19
|
-
/** 9
|
|
20
|
-
anchor: (c: Circle, name:
|
|
19
|
+
/** 9 个标准方位 anchor 之一的世界坐标 */
|
|
20
|
+
anchor: (c: Circle, name: CompassAnchorValue) => Position;
|
|
21
21
|
/** 从圆心向 toward 方向射线与圆周交点(Path 端点贴 Node 边界用) */
|
|
22
22
|
boundaryPoint: (c: Circle, toward: Position) => Position;
|
|
23
23
|
/** 边上比例点:side 的 90° 周长弧段 t∈[0,1] 处(等角,落真实圆周;含旋转) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circle.d.ts","sourceRoot":"","sources":["../../../src/geometry/circle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"circle.d.ts","sourceRoot":"","sources":["../../../src/geometry/circle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAgB,MAAM,QAAQ,CAAC;AAEjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC,yCAAyC;AACzC,MAAM,MAAM,MAAM,GAAG;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS;IACT,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,eAAe;AACf,eAAO,MAAM,MAAM;IACjB,SAAS;gBACG,MAAM,KAAG,QAAQ;IAC7B,oBAAoB;kBACN,MAAM,KAAK,QAAQ,KAAG,OAAO;IAI3C,6BAA6B;gBACjB,MAAM,QAAQ,kBAAkB,KAAG,QAAQ;IAsCvD,+CAA+C;uBAC5B,MAAM,UAAU,QAAQ,KAAG,QAAQ;IAOtD,oDAAoD;mBACrC,MAAM,QAAQ,IAAI,KAAK,MAAM,KAAG,QAAQ;CAIxD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { edgeAngleDeg } from "./edge.js";
|
|
2
|
+
import { localToWorld, worldToLocal } from "./transform.js";
|
|
3
3
|
//#region src/geometry/circle.ts
|
|
4
4
|
var DEG_TO_RAD = Math.PI / 180;
|
|
5
5
|
var SQRT_HALF = Math.SQRT1_2;
|
|
@@ -12,7 +12,7 @@ var circle = {
|
|
|
12
12
|
const [lx, ly] = worldToLocal(c, p);
|
|
13
13
|
return lx * lx + ly * ly <= c.radius * c.radius;
|
|
14
14
|
},
|
|
15
|
-
/** 9
|
|
15
|
+
/** 9 个标准方位 anchor 之一的世界坐标 */
|
|
16
16
|
anchor: (c, name) => {
|
|
17
17
|
const r = c.radius;
|
|
18
18
|
let lx = 0;
|
|
@@ -47,7 +47,7 @@ export type ContourCommand = {
|
|
|
47
47
|
* @description tangentInPoint = 前段被裁短到此点(前段新终点);tangentOutPoint = 后段从此点起(后段新起点);
|
|
48
48
|
* filletArc 描述连接两切点的圆弧。clampedToZero=true 表示该角夹紧后 r→0,不倒角(保持尖角)。
|
|
49
49
|
*/
|
|
50
|
-
type FilletSolution = {
|
|
50
|
+
export type FilletSolution = {
|
|
51
51
|
/** 前段切点(前段新终点) */
|
|
52
52
|
tangentInPoint: Position;
|
|
53
53
|
/** 后段切点(后段新起点) */
|
|
@@ -76,13 +76,12 @@ export declare const filletContour: (segments: Array<ContourSegment>, cornerRadi
|
|
|
76
76
|
* fillet 出点」走到「本接缝的 fillet 入点」(line 缩短 / arc 裁剪角度),接缝处插 fillet 弧。
|
|
77
77
|
* 夹紧到 0 的角不插弧、按原尖角连接。
|
|
78
78
|
*/
|
|
79
|
-
export declare const contourCommands: (segments: Array<ContourSegment>, cornerRadius?: number) => Array<ContourCommand>;
|
|
79
|
+
export declare const contourCommands: (segments: Array<ContourSegment>, cornerRadius?: number, fillets?: Array<FilletSolution>) => Array<ContourCommand>;
|
|
80
80
|
/**
|
|
81
81
|
* 从 rayOrigin 朝 toward 射线 ∩ fillet 后轮廓全部段,返回最近正向交点
|
|
82
82
|
* @description rayOrigin 显式传(不假设中心);toward 是射线指向的目标点(方向 = toward − rayOrigin)。
|
|
83
83
|
* 遍历 fillet 后的有效段(缩短 line / 裁剪 arc / fillet arc),对每段求 ray∩段、取最小正参数命中点。
|
|
84
84
|
* cornerRadius 省略 / ≤0 → 走原尖角轮廓。无命中返回 undefined(调用方兜底)。
|
|
85
85
|
*/
|
|
86
|
-
export declare const boundaryFromContour: (segments: Array<ContourSegment>, cornerRadius: number | undefined, rayOrigin: Position, toward: Position) => Position | undefined;
|
|
87
|
-
|
|
88
|
-
//# sourceMappingURL=roundedContour.d.ts.map
|
|
86
|
+
export declare const boundaryFromContour: (segments: Array<ContourSegment>, cornerRadius: number | undefined, rayOrigin: Position, toward: Position, fillets?: Array<FilletSolution>) => Position | undefined;
|
|
87
|
+
//# sourceMappingURL=contour.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contour.d.ts","sourceRoot":"","sources":["../../../src/geometry/contour.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAS,MAAM,SAAS,CAAC;AAkB/C,4BAA4B;AAC5B,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB;IAChB,EAAE,EAAE,QAAQ,CAAC;CACd,CAAC;AAEF,oDAAoD;AACpD,MAAM,MAAM,UAAU,GAAG;IACvB,YAAY;IACZ,IAAI,EAAE,KAAK,CAAC;IACZ,gBAAgB;IAChB,MAAM,EAAE,QAAQ,CAAC;IACjB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,6BAA6B;AAC7B,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,UAAU,CAAC;AAEtD,qFAAqF;AACrF,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAA;CAAE,GAC9B;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GACD;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AA6BtB;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,kBAAkB;IAClB,cAAc,EAAE,QAAQ,CAAC;IACzB,kBAAkB;IAClB,eAAe,EAAE,QAAQ,CAAC;IAC1B,gBAAgB;IAChB,MAAM,EAAE,QAAQ,CAAC;IACjB,gBAAgB;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8BAA8B;IAC9B,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAgTF;;;GAGG;AACH,eAAO,MAAM,aAAa,GACxB,UAAU,KAAK,CAAC,cAAc,CAAC,EAC/B,eAAe,MAAM,KACpB,KAAK,CAAC,cAAc,CAUtB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAU,KAAK,CAAC,cAAc,CAAC,EAC/B,eAAe,MAAM,EACrB,UAAS,KAAK,CAAC,cAAc,CAAyC,KACrE,KAAK,CAAC,cAAc,CAsCtB,CAAC;AAwCF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,KAAK,CAAC,cAAc,CAAC,EAC/B,cAAc,MAAM,GAAG,SAAS,EAChC,WAAW,QAAQ,EACnB,QAAQ,QAAQ,EAChB,UAAS,KAAK,CAAC,cAAc,CAAyC,KACrE,QAAQ,GAAG,SA0Eb,CAAC"}
|
|
@@ -1,37 +1,25 @@
|
|
|
1
|
-
import { arcAngleInRange, rayArc } from "./arc.js";
|
|
2
|
-
|
|
1
|
+
import { arcAngleInRange, arcEndPoint, rayArc } from "./arc.js";
|
|
2
|
+
import { point } from "./point.js";
|
|
3
|
+
//#region src/geometry/contour.ts
|
|
3
4
|
var DEG_TO_RAD = Math.PI / 180;
|
|
4
5
|
var RAD_TO_DEG = 180 / Math.PI;
|
|
5
6
|
var EPSILON = 1e-9;
|
|
6
|
-
/** 向量长度 */
|
|
7
|
-
var length = (v) => Math.hypot(v[0], v[1]);
|
|
8
|
-
/** 归一化(零向量回退 [1, 0]) */
|
|
9
|
-
var normalize = (v) => {
|
|
10
|
-
const len = length(v);
|
|
11
|
-
if (len < EPSILON) return [1, 0];
|
|
12
|
-
return [v[0] / len, v[1] / len];
|
|
13
|
-
};
|
|
14
7
|
/** 二维叉积 a × b */
|
|
15
8
|
var cross = (a, b) => a[0] * b[1] - a[1] * b[0];
|
|
16
|
-
/** 点 + 角度(度)→ 圆周点 */
|
|
17
|
-
var arcPoint = (center, radius, angleDeg) => {
|
|
18
|
-
const rad = angleDeg * DEG_TO_RAD;
|
|
19
|
-
return [center[0] + Math.cos(rad) * radius, center[1] + Math.sin(rad) * radius];
|
|
20
|
-
};
|
|
21
9
|
/** 段起点 */
|
|
22
|
-
var segmentStart = (seg) => seg.kind === "line" ? seg.from :
|
|
10
|
+
var segmentStart = (seg) => seg.kind === "line" ? seg.from : arcEndPoint(seg.center, seg.radius, seg.startAngle);
|
|
23
11
|
/** 段终点 */
|
|
24
|
-
var segmentEnd = (seg) => seg.kind === "line" ? seg.to :
|
|
12
|
+
var segmentEnd = (seg) => seg.kind === "line" ? seg.to : arcEndPoint(seg.center, seg.radius, seg.endAngle);
|
|
25
13
|
/**
|
|
26
14
|
* 段在某端的「行进切线」单位向量
|
|
27
15
|
* @description atStart=true 取起点处沿行进方向的切线,否则取终点处。line 两端切线相同;
|
|
28
16
|
* arc 切线垂直于半径,方向随 counterClockwise 翻转(CW: (-sinθ, cosθ),CCW: (sinθ, -cosθ))。
|
|
29
17
|
*/
|
|
30
18
|
var tangentAt = (seg, atStart) => {
|
|
31
|
-
if (seg.kind === "line") return normalize([seg.to[0] - seg.from[0], seg.to[1] - seg.from[1]]);
|
|
19
|
+
if (seg.kind === "line") return point.normalize([seg.to[0] - seg.from[0], seg.to[1] - seg.from[1]]);
|
|
32
20
|
const rad = (atStart ? seg.startAngle : seg.endAngle) * DEG_TO_RAD;
|
|
33
21
|
const sign = seg.counterClockwise ? -1 : 1;
|
|
34
|
-
return normalize([-Math.sin(rad) * sign, Math.cos(rad) * sign]);
|
|
22
|
+
return point.normalize([-Math.sin(rad) * sign, Math.cos(rad) * sign]);
|
|
35
23
|
};
|
|
36
24
|
/** arc 段的角跨度(带符号:CW 为正递增、CCW 为负),单位度 */
|
|
37
25
|
var arcSpan = (seg) => seg.endAngle - seg.startAngle;
|
|
@@ -287,10 +275,9 @@ var filletContour = (segments, cornerRadius) => {
|
|
|
287
275
|
* fillet 出点」走到「本接缝的 fillet 入点」(line 缩短 / arc 裁剪角度),接缝处插 fillet 弧。
|
|
288
276
|
* 夹紧到 0 的角不插弧、按原尖角连接。
|
|
289
277
|
*/
|
|
290
|
-
var contourCommands = (segments, cornerRadius) => {
|
|
278
|
+
var contourCommands = (segments, cornerRadius, fillets = filletContour(segments, cornerRadius)) => {
|
|
291
279
|
const n = segments.length;
|
|
292
280
|
if (n === 0) return [];
|
|
293
|
-
const fillets = filletContour(segments, cornerRadius);
|
|
294
281
|
if (fillets.length === 0) {
|
|
295
282
|
const cmds = [];
|
|
296
283
|
segments.forEach((seg, i) => {
|
|
@@ -348,17 +335,19 @@ var emitSegmentBody = (seg, start, end, cmds) => {
|
|
|
348
335
|
};
|
|
349
336
|
/** 调整 endAngle 使「start→end」沿给定扫描方向(ccw: 递减 / 否则递增),保持裁剪后弧方向不变 */
|
|
350
337
|
var alignSweep = (start, end, ccw) => {
|
|
351
|
-
|
|
352
|
-
if (
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
338
|
+
const sweep = end - start;
|
|
339
|
+
if (sweep === 0) return {
|
|
340
|
+
start,
|
|
341
|
+
end: start
|
|
342
|
+
};
|
|
343
|
+
if (Math.abs(sweep) === 360) return {
|
|
344
|
+
start,
|
|
345
|
+
end: start + (ccw ? -360 : 360)
|
|
346
|
+
};
|
|
347
|
+
const normalized = (sweep % 360 + 360) % 360;
|
|
359
348
|
return {
|
|
360
349
|
start,
|
|
361
|
-
end:
|
|
350
|
+
end: start + (ccw ? normalized === 0 ? -360 : normalized - 360 : normalized === 0 ? 360 : normalized)
|
|
362
351
|
};
|
|
363
352
|
};
|
|
364
353
|
/**
|
|
@@ -367,13 +356,12 @@ var alignSweep = (start, end, ccw) => {
|
|
|
367
356
|
* 遍历 fillet 后的有效段(缩短 line / 裁剪 arc / fillet arc),对每段求 ray∩段、取最小正参数命中点。
|
|
368
357
|
* cornerRadius 省略 / ≤0 → 走原尖角轮廓。无命中返回 undefined(调用方兜底)。
|
|
369
358
|
*/
|
|
370
|
-
var boundaryFromContour = (segments, cornerRadius, rayOrigin, toward) => {
|
|
359
|
+
var boundaryFromContour = (segments, cornerRadius, rayOrigin, toward, fillets = filletContour(segments, cornerRadius)) => {
|
|
371
360
|
const dirRaw = [toward[0] - rayOrigin[0], toward[1] - rayOrigin[1]];
|
|
372
|
-
const dl = length(dirRaw);
|
|
361
|
+
const dl = point.length(dirRaw);
|
|
373
362
|
if (dl < 1e-12) return void 0;
|
|
374
363
|
const dir = [dirRaw[0] / dl, dirRaw[1] / dl];
|
|
375
364
|
const n = segments.length;
|
|
376
|
-
const fillets = filletContour(segments, cornerRadius);
|
|
377
365
|
let best = Infinity;
|
|
378
366
|
const considerLine = (a, b) => {
|
|
379
367
|
const ex = b[0] - a[0];
|
|
@@ -414,4 +402,4 @@ var boundaryFromContour = (segments, cornerRadius, rayOrigin, toward) => {
|
|
|
414
402
|
return [rayOrigin[0] + dir[0] * best, rayOrigin[1] + dir[1] * best];
|
|
415
403
|
};
|
|
416
404
|
//#endregion
|
|
417
|
-
export { boundaryFromContour, contourCommands };
|
|
405
|
+
export { boundaryFromContour, contourCommands, filletContour };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Side } from './
|
|
1
|
+
import { Side } from './edge';
|
|
2
|
+
import { CompassAnchorValue } from './anchor';
|
|
2
3
|
import { Position } from './point';
|
|
3
|
-
import { RectAnchor } from './rect';
|
|
4
4
|
/** 菱形:中心 + halfA/halfB 半轴长 + 可选旋转;顶点在 (±halfA,0) 与 (0,±halfB) */
|
|
5
5
|
export type Diamond = {
|
|
6
6
|
x: number;
|
|
@@ -19,7 +19,7 @@ export declare const diamond: {
|
|
|
19
19
|
/** 点是否在菱形内(含边界,含旋转);方程 |x|/halfA + |y|/halfB ≤ 1 */
|
|
20
20
|
contains: (d: Diamond, p: Position) => boolean;
|
|
21
21
|
/** 9 个 anchor:N/S/E/W=顶点,NE/NW/SE/SW=边中点,center=中心 */
|
|
22
|
-
anchor: (d: Diamond, name:
|
|
22
|
+
anchor: (d: Diamond, name: CompassAnchorValue) => Position;
|
|
23
23
|
/**
|
|
24
24
|
* 从中心向 toward 方向射线与菱形 4 边的交点
|
|
25
25
|
* @description 菱形方程 |x|/halfA + |y|/halfB = 1;沿方向 (lx,ly) 缩放 t 倍命中:t = 1 / (|lx|/halfA + |ly|/halfB)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diamond.d.ts","sourceRoot":"","sources":["../../../src/geometry/diamond.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"diamond.d.ts","sourceRoot":"","sources":["../../../src/geometry/diamond.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAqB,MAAM,QAAQ,CAAC;AAEtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAUxC,iEAAiE;AACjE,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAe;AACf,eAAO,MAAM,OAAO;IAClB,SAAS;gBACG,OAAO,KAAG,QAAQ;IAC9B,oDAAoD;kBACtC,OAAO,KAAK,QAAQ,KAAG,OAAO;IAI5C,sDAAsD;gBAC1C,OAAO,QAAQ,kBAAkB,KAAG,QAAQ;IAqC1D;;;OAGG;uBACkB,OAAO,UAAU,QAAQ,KAAG,QAAQ;IAOvD,yDAAyD;mBAC1C,OAAO,QAAQ,IAAI,KAAK,MAAM,KAAG,QAAQ;CASzD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { polylineViaVertex } from "./edge.js";
|
|
2
|
+
import { localToWorld, worldToLocal } from "./transform.js";
|
|
3
3
|
//#region src/geometry/diamond.ts
|
|
4
4
|
/** 每条 side 的过顶点折线三 anchor:[邻边中点, cardinal 顶点, 邻边中点](方向 north/south=西→东、east/west=北→南) */
|
|
5
5
|
var DIAMOND_EDGE = {
|
|
@@ -26,4 +26,4 @@ export declare const edgeAngleDeg: (side: Side, t: number) => number;
|
|
|
26
26
|
* p0/p1 为相邻边中点 anchor、vertex 为 cardinal 顶点 anchor——全落真实斜边
|
|
27
27
|
*/
|
|
28
28
|
export declare const polylineViaVertex: (p0: Position, vertex: Position, p1: Position, t: number) => Position;
|
|
29
|
-
//# sourceMappingURL=
|
|
29
|
+
//# sourceMappingURL=edge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../../src/geometry/edge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,0DAA0D;AAC1D,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;;;CAK8D,CAAC;AAErF,yBAAyB;AACzB,eAAO,MAAM,SAAS,GAAI,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,KAAG,QAG/D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,IAAI,EAAE,GAAG,MAAM,KAAG,MAWpD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAC5B,IAAI,QAAQ,EACZ,QAAQ,QAAQ,EAChB,IAAI,QAAQ,EACZ,GAAG,MAAM,KACR,QAA4F,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Side } from './
|
|
1
|
+
import { Side } from './edge';
|
|
2
|
+
import { CompassAnchorValue } from './anchor';
|
|
2
3
|
import { Position } from './point';
|
|
3
|
-
import { RectAnchor } from './rect';
|
|
4
4
|
/** 椭圆:中心 + 半长轴 rx / 半短轴 ry + 可选旋转 */
|
|
5
5
|
export type Ellipse = {
|
|
6
6
|
x: number;
|
|
@@ -22,7 +22,7 @@ export declare const ellipse: {
|
|
|
22
22
|
* 9 个 anchor 的世界坐标
|
|
23
23
|
* @description 对角(NE/NW/SE/SW)取参数曲线 t=π/4 处 (rx/√2, ry/√2),与 TikZ 椭圆 anchor 参数等分约定一致
|
|
24
24
|
*/
|
|
25
|
-
anchor: (e: Ellipse, name:
|
|
25
|
+
anchor: (e: Ellipse, name: CompassAnchorValue) => Position;
|
|
26
26
|
/**
|
|
27
27
|
* 从中心向 toward 方向射线与椭圆交点
|
|
28
28
|
* @description 椭圆方程 (x/rx)² + (y/ry)² = 1;沿 (lx,ly) 缩放 t 倍命中 t = 1 / √((lx/rx)² + (ly/ry)²)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ellipse.d.ts","sourceRoot":"","sources":["../../../src/geometry/ellipse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ellipse.d.ts","sourceRoot":"","sources":["../../../src/geometry/ellipse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAgB,MAAM,QAAQ,CAAC;AAEjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC,qCAAqC;AACrC,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,eAAe;AACf,eAAO,MAAM,OAAO;IAClB,SAAS;gBACG,OAAO,KAAG,QAAQ;IAC9B,0BAA0B;kBACZ,OAAO,KAAK,QAAQ,KAAG,OAAO;IAI9C;;;OAGG;gBACW,OAAO,QAAQ,kBAAkB,KAAG,QAAQ;IAqC1D;;;OAGG;uBACkB,OAAO,UAAU,QAAQ,KAAG,QAAQ;IAQvD,qDAAqD;mBACtC,OAAO,QAAQ,IAAI,KAAK,MAAM,KAAG,QAAQ;CAIzD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { edgeAngleDeg } from "./edge.js";
|
|
2
|
+
import { localToWorld, worldToLocal } from "./transform.js";
|
|
3
3
|
//#region src/geometry/ellipse.ts
|
|
4
4
|
var DEG_TO_RAD = Math.PI / 180;
|
|
5
5
|
var SQRT_HALF = Math.SQRT1_2;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './point';
|
|
2
|
+
export * from './anchor';
|
|
2
3
|
export * from './rect';
|
|
3
4
|
export * from './circle';
|
|
4
5
|
export * from './ellipse';
|
|
@@ -7,5 +8,5 @@ export * from './polar';
|
|
|
7
8
|
export * from './bend';
|
|
8
9
|
export * from './arc';
|
|
9
10
|
export * from './segment';
|
|
10
|
-
export * from './
|
|
11
|
+
export * from './contour';
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/geometry/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/geometry/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
|