Skip to content

Latest commit

 

History

History
780 lines (549 loc) · 35.9 KB

CHANGELOG.md

File metadata and controls

780 lines (549 loc) · 35.9 KB

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

Note: Unlisted patch versions only involve non-code or otherwise excluded changes and/or version bumps of transitive dependencies.

7.0.0 (2024-05-08)

🛑 Breaking changes

  • update Path to support sub-paths (holes), update impls (#464) (9329d27)
  • BREAKING CHANGE: update path related ctors & functions
    • add subPaths argument for Path ctor/factory fn
    • rename Path.add() => Path.addSegments()
    • add Path.addSubPaths()
    • update Path.toHiccup() to include sub-paths
    • update pathFromSvg() to always return a single path only
      • sub-paths are included in main path now
    • update impls for following ops to also process sub-paths:
      • bounds()
      • rotate()
      • scale()
      • simplify()
      • translate()
      • transform()
      • transformVertices()
  • update asPolyline(), add support for multiple boundaries (#464) (0616b96)
  • BREAKING CHANGE: update asPolygon() to return array of polylines
    • add/update impls for complexpoly & path to produce multiple results
    • update other internal callsites
    • update tests
  • update Path closing logic (ce3a922)
  • BREAKING CHANGE: update Path closing logic, Path.closed now a readonly property
    • add Path.closed() getter
    • add Path.close() to add a Z-type segment, check if not closed already
    • update Path.addSegments() to check each segment, throw error if path already closed
    • refactor PathBuilder.closePath()
  • add asPolygon() support for complexpoly & path (e3c9f20)
  • BREAKING CHANGE: update asPolygon() to return array of polygons (rather than single only)
    • add support for complexpoly & path (incl. sub-shapes, holes)
    • refactor internal call sites
  • update asPath(), add AsPathOpts (ef0ebdf)
  • BREAKING CHANGE: update asPath() args, add AsPathOpts as 2nd arg
    • add option for using only linear path segments (no cubics)
    • update impls for complexpoly & other polygon types
  • update Path & PathBuilder.close() (b2134c2)
  • BREAKING CHANGE: rename PathBuilder.closePath() => PathBuilder.close()
    • update Path.close() to return path itself
  • rewrite roundedRect() to allow individual corner radii (a4817aa)
  • BREAKING CHANGE: update roundedRect() radius handling to allow individual corner radii
    • update docs
    • add tests

🚀 Features

  • initial import ComplexPolygon & impls (#464) (ded007c)
    • add complexPolygon() factory fn
    • add bounds() & centroid() impls
  • add ops for complex polygons (#464) (35ce854)
    • add implementations for:
      • arcLength()
      • area()
      • asPath()
      • closestPoint()
      • convexHull()
      • edges()
      • flip()
      • pointInside()
      • resample()
      • rotate()
      • scale()
      • simplify()
      • subdivCurve()
      • transform()
      • transformVertices()
      • translate()
      • vertices()
    • add tests
  • add proximity() (5d5951c)
  • update vertices() impl for Path, incl. sub-path vertices (824067f)
  • update simplify() default threshold (bdba298)
  • add arcLength() for Path, refactor complexpoly impl (d133bbe)
  • add/update asCubic() impls for complex poly & path (7f9e927)
  • update pathFromCubics() to auto-create sub-paths if needed (1170e45)
  • add closestPoint() impl for Path (f0cf2f1)
  • add pointInside() impl for Polyline (d10bf43)
  • add centroid() & convexHull() impl for Path (76aa229)
  • add complexPolygonFromPath() (cd526f1)
  • update PathBuilder.close(), fix attrib handling (e68d0bc)
    • only insert closing line segment if needed
    • copy attribs for each new path
    • add docs
  • add opt attribs for pathFromSvg() (2da31f6)
    • update docs
    • add/update tests
  • add scaleWithCenter() (e328494)
  • add complexpoly & path support for clipConvex() (7665dc1)

🩹 Bug fixes

  • update vertices() (2afc05e)
    • update impl for points, poly, polyline to return shallow copy of point array if no opts given

♻️ Refactoring

  • update withAttribs(), make new attribs optional (688e1bf)
  • update geom examples (recent API changes) (f0f5ea7)
  • update area() impl for Path (0960817)
  • update/simplify asPath() impls (cbc71bb)
  • update centroid() for complexpoly (58ac296)
  • update path segment transformations (88b2c40)

6.1.7 (2024-04-20)

♻️ Refactoring

6.1.0 (2024-03-21)

🚀 Features

  • update intersects(), support more shape types (21ce0d4)
    • add IntersectOpts & as optional arg
      • update impl for ray-poly/ray-polyline
    • add support for new shape pairings:
      • line-polygon
      • line-polyline
      • ray-line
      • ray-group
  • update intersects(), add line-group support (1e270fa)
    • add line-group impl
    • refactor/simplify ray-group impl

6.0.6 (2023-12-03)

🩹 Bug fixes

  • fix #431 update Path.withAttribs() impl (eaad1cd)
    • keep closed state of new path the same as original

6.0.2 (2023-11-09)

♻️ Refactoring

  • update all tests (packages A-S) (e3085e4)

6.0.0 (2023-11-01)

🛑 Breaking changes

  • update tessellate() for groups, update return type (1bb1752)
  • BREAKING CHANGE: update tessellate() for groups, update return type to Iterable

5.2.13 (2023-10-27)

♻️ Refactoring

5.2.0 (2023-08-29)

🚀 Features

  • update various shape ctors to accept iterables (ae0cf5b)
    • update shared APC ctor
    • update other shape ctors: BPatch, Group, Path
    • add assertions to verify vertex counts in these ctors:
      • BPatch
      • Cubic
      • Line
      • Quad/Quad3
      • Quadratic
      • Triangle

5.1.0 (2023-08-06)

🚀 Features

  • update API for various shape types (3a45c5f)
    • add IClear impls for APC, Group, Path
    • add .add() methods for APC, Group, Polygon, Polyline
    • update Path.add() to accept multiple args

5.0.0 (2023-04-08)

🛑 Breaking changes

  • update asSVG() bleed handling (cf3eafb)
  • BREAKING CHANGE: rename bleed attrib to __bleed
    • for consistency, keep all control attribs prefixed as __xxx
    • add asSvg() support for __prec
    • update docs
  • update splitArcLength() group handling (6b97085)
  • BREAKING CHANGE: update splitArcLength() group handling & return type
    • update group handling to form sub-groups of predictable length (e.g. grouping shorter shapes and/or splitting longer shapes until desired arc length is reached)
    • remove support for nested groups
    • update docs, add example
    • update all impls to return single group

🚀 Features

  • update inscribedSquare/Hex() args, add attribs (317f630)

4.4.0 (2023-03-24)

🚀 Features

  • avoid recursive application of __samples attrib (189446d)
    • add internal __copyAttribsNoSamples() helper
    • update implementations for:
      • asPolygon()
      • asPolyline()
      • edges()
      • resample()
      • splitArcLength()
    • update Group ctor to make attribs optional
  • add/expose subdiv & tessellation presets (0f79c6d)

4.3.0 (2023-03-22)

🚀 Features

  • add splitArclength() (906a326)
  • add spiral() polyline factory fn (572e0ef)

4.2.0 (2023-01-10)

🚀 Features

  • update vertices() for circle, ellipse, group (9ff890a)
    • add support for SamplingOpts.start (circle/ellipse)
    • add SamplingOpts support for groups
    • migrate internal helpers
    • update export maps

4.1.0 (2022-12-22)

🚀 Features

  • add SVG default attribs & setter (3cb07a6)
    • set defaults to no fill & black stroke
    • add setSvgDefaultAttribs()

4.0.0 (2022-12-10)

🛑 Breaking changes

  • unify function naming (980f625)
  • BREAKING CHANGE: rename rect & aabb ctor fns
    • rename rectFromCentroid => rectWithCentroid
    • rename rectFromCentroidWithMargin => rectWithCentroidAndMargin
    • same for aabb versions

🚀 Features

  • add AABB.toHiccup() impl (2c419cc)
  • add startWithCentroid(), add docs (6b4df6a)
  • update vertices(), config via attribs (b5a53ba)
    • add support for per-shape config overrides via __samples attrib object
    • add docs

🩹 Bug fixes

  • correct withAttribs() return type (867c302)
  • update applyTransforms() (b6262c2)
    • always remove all spatial transform attribs

3.4.6 (2022-08-06)

⏱ Performance improvements

3.4.0 (2022-06-28)

🚀 Features

  • add IAttributed impls for all shape types (ccb40f1)
  • add new transform ops & helpers (cd8217c)
    • add applyTransforms(), rotate(), scale()
    • add internal helpers
    • update transform() rect coercion (now => Quad, previous Polygon)
  • update edges(), support more types (3e1b340)
  • update warpPoints() args, add docs (50cb467)
  • add AABB support for intersects() (768dddd)

🩹 Bug fixes

  • update AABB/Rect.offset(), clamp size to zero (620121d)

3.3.1 (2022-06-23)

♻️ Refactoring

  • update size handling in various ctors (ab4b93d)

3.3.0 (2022-06-20)

🚀 Features

  • update rect/aabb, add new factory fns (f74e377)
    • add ...WithMargin() factory fns
    • add AABBLike.offset() impls
  • update bounds() to support opt. margin (8cdc372)

3.2.1 (2022-04-07)

🩹 Bug fixes

  • fix #336, update attrib ctor arg handling (cb8e52a)
    • update internal __argAttribs() helper
    • add tests

3.2.0 (2022-03-11)

🚀 Features

  • add opt. bleed attrib for svgDoc() (fb3ed1e)
  • add BPatch type, ctors and warp fn (ea81cb5)
  • update/refactor various shape ops (0e3b99a)

3.1.0 (2021-11-17)

🚀 Features

  • Using workspaces for local tools (bf7a404) Improving the overall build ergonomics
    • introduced a tools workspaces
    • imported it in all needed packages/examples
    • inclusive project root

♻️ Refactoring

  • testrunner to binary (4ebbbb2) this commit reverts (partly) changes made in: ef346d7a8753590dc9094108a3d861a8dbd5dd2c overall purpose is better testament ergonomics: instead of having to pass NODE_OPTIONS with every invocation having a binary to handle this for us.

3.0.10 (2021-11-10)

♻️ Refactoring

  • update all countdown loops (a5f374b)

3.0.1 (2021-10-13)

♻️ Refactoring

  • update imports in all pkgs (5fa2b6f)
    • add .js suffix for all relative imports
  • update imports in all tests/pkgs (effd591)

3.0.0 (2021-10-12)

🛑 Breaking changes

  • major update of ALL pkgs (export maps, ESM only) (0d1d6ea)
  • BREAKING CHANGE: discontinue CommonJS & UMD versions
    • only ESM modules will be published from now on
    • CJS obsolete due to ESM support in recent versions of node:
      • i.e. launch NodeJS via:
      • node --experimental-specifier-resolution=node --experimental-repl-await
      • in the node REPL use await import(...) instead of require()
    • UMD obsolete due to widespread browser support for ESM Also:
    • normalize/restructure/reorg all package.json files
    • cleanup all build scripts, remove obsolete
    • switch from mocha to @thi.ng/testament for all tests

♻️ Refactoring

  • update all tests in all pkgs (8b582bc)
  • update all test stubs (f2d6d53)
  • update imports (5ef5559)
  • remove obsolete import (7893fd0)
  • update imports (transducers) (25b674f)
  • update deps & imports in various pkgs (e1cf29e)
    • largely related to recent updates/restructuring of these packages:
      • api
      • defmulti
      • errors
      • logger
  • sideeffect-free defmulti specs (2721c1d)
  • restructure package (2439102)
    • migrate/lift /src/ops source files to /src for easier use
  • restructure package (ca56975)
    • migrate/lift /src/ctors source files to /src for easier use
  • rename/restructure internals (94622fe)
    • remove internal fns from pkg exports

2.1.29 (2021-09-03)

♻️ Refactoring

2.1.0 (2021-02-20)

🚀 Features

  • add tangentAt() support for cubic/quadratic (4302f58)

🩹 Bug fixes

  • fix regression/update buffer arg types (9cf5e5d)
    • switch from Vec => NumericArray for backing buffers
    • update remap() / collateWith()

2.0.0 (2020-12-22)

🛑 Breaking changes

  • fix #256 replace enum w/ type alias (67988ad)
  • BREAKING CHANGE: replace SegmentType w/ type alias
  • fix #256 replace Type enum w/ alias (ef7ba74)
  • BREAKING CHANGE: replace Type enum returned by IShape.type w/ string consts
    • update all shape classes
    • update all ops/multimethod dispatches

🩹 Bug fixes

  • fix #268 add Group.copyTransformed() (2da6c63)
    • update transformVertices(), transform(), translate() impls

1.13.3 (2020-12-07)

♻️ Refactoring

  • update type-only imports in various tests/pkgs (3fd9c24)
  • update type-only imports (b8e96cc)

1.13.1 (2020-11-24)

🩹 Bug fixes

  • update whitespace check in pathFromSvg() (2ce5ec1)
  • add missing translate() impls for Cubic/Quadratic (fe4c027)

1.13.0 (2020-10-03)

🩹 Bug fixes

  • arg order pointAt() impl (RAY/RAY3) (6ec9b46)

1.12.0 (2020-09-22)

🚀 Features

♻️ Refactoring

  • de-dupe asCubic() for polygon/polyline (65ea389)
  • update fitIntoBounds() fns (19095b0)

1.11.7 (2020-08-28)

🩹 Bug fixes

  • update asPolyline() for PATH/POLYGON (243962c)
    • ensure last point is unique (copy of 1st)

1.11.0 (2020-07-17)

🚀 Features

  • add/update clipVertex() impls (a87c31c)
    • add support for Line and Group shape types
    • update boundary arg type to support raw point arrays (rather than only IShape). this allows for certain optimizations, esp. for group impl.
  • add PathBuilderOpts, update Path.toHiccup() (deb9892)
    • add support to disable auto-splitting paths in PathBuilder
    • update toHiccup() impl to support multiple M cmds

🩹 Bug fixes

  • update svgDoc() attrib inject (add null check) (6898975)

♻️ Refactoring

  • update various shape ctors (8b63f9d)

1.10.0 (2020-06-20)

🚀 Features

  • add rectFromCentroid() (7837961)
  • add offset() & initial impls (819afd1)
    • add impls for circle, line, rect

♻️ Refactoring

  • update offset() line impl (6958280)

1.9.3 (2020-05-14)

🩹 Bug fixes

  • Path.copy() deep-clone behavior (2ade10e)

1.9.0 (2020-04-27)

🚀 Features

  • add transformVertices() op (ef68a27)
  • update asPolyline() impls (cca8574)
    • add arc & quadratic support

1.8.4 (2020-03-06)

♻️ Refactoring

  • update skipWS() helper for pathFromSVG() (ec07ddd)

1.8.0 (2020-02-25)

🚀 Features

  • add intersectionAABB/Rect() (ecc9706)
  • add edges() impl for AABB (b800686)
  • add Points3 and supporting ops (7e1adb7)
    • points3() ctor
    • area()
    • bounds()
    • centroid()
    • flip()
    • pointInside()
    • transform()
    • translate()
    • vertices()
  • add fitIntoBounds3, fix #202, #206 (19be3fa)
  • add cubic polyline impls (263f2f9)

🩹 Bug fixes

  • add missing type annotation (asCubic) (c4f7eae)

♻️ Refactoring

1.7.7 (2019-11-09)

♻️ Refactoring

  • update wrapSides/tween call sites in various pkgs (ee8200c)

1.7.5 (2019-08-21)

♻️ Refactoring

  • split api.ts, extract PathBuilder / pathFromSVG (071c346)
  • improve internal re-use PathBuilder (c8ef0cf)
  • add internal helpers for improved re-use (b3dc83f)
    • add copyAttribs()
    • add pointArraysAsShapes()
  • add pclike(), simplify shape factory fns (ef0d102)
  • asCubic() Arc impl (re-use cubicFromArc) (df5c881)
  • update PCLike copy() impls, add copyShape() helper (bc20135)

1.7.3 (2019-08-16)

♻️ Refactoring

  • update pathFromSVG() arc parsing, add readFlag (2a36128)

1.7.1 (2019-07-31)

♻️ Refactoring

  • update asCubic for circle (b890838)
    • use full 0..TAU range

1.7.0 (2019-07-12)

🚀 Features

  • add polygon impl for asCubic(), add pathFromCubics() (2faec7f)
  • add asCubic() impls for circle, group, rect (5ca4166)
    • re-use arc impl from geom-splines
  • add asPath(), update pathFromCubics() to accept opt attribs (980af9f)
  • add ellipse support for asCubic() (4247801)
  • add/update transform impls: arc, circle, ellipse, path, rect (e77e7c2)
    • arc, circle, ellipse now converted to paths, instead of polygons

🩹 Bug fixes

  • update asCubic() circle impl (only 99.99% closed) (36cdb4f)

1.6.0 (2019-07-07)

🚀 Features

  • enable TS strict compiler flags (refactor) (aa10de0)
  • TS strictNullChecks, update various classes & ops (636dea7)
    • make attribs field optional in all shape types
    • update return types of various fns to potentially return undefined

🩹 Bug fixes

1.5.0 (2019-05-22)

🚀 Features

  • add Plane, Quad3 factories & ops (2079bfe)

1.4.0 (2019-04-15)

🚀 Features

  • add new shape factories & impls (1a5ead1)
    • add AABB, Plane, Sphere factories
    • add closestPoint() impls

1.3.0 (2019-04-11)

🚀 Features

  • add AABB impls for vertices() & volume() (a9ba010)
  • add inscribedSquare*() fns (b1790b3)

1.2.2 (2019-02-15)

♻️ Refactoring

1.2.0 (2019-02-05)

♻️ Refactoring

1.1.1 (2019-01-31)

🚀 Features

  • add ray-rect/aabb impls for intersects() (5f7dd63)

♻️ Refactoring

  • remove obsolete/extracted internal ops, update publics (fb532b8)
  • update to use geom-api types (b223603)
  • remove obsolete/migrated fns, update deps, readme (df8332d)
  • update pointInside & classifyPoint impls (delegate) (226645f)
  • swap Group ctor & factory arg order (6d14f2b)
    • first attribs, then children...
  • minor update clippedLine() (4b85288)

1.1.0 (2019-01-22)

🚀 Features

  • add attrib support to PathBuilder (a017b10)
  • add asPolyline() multi-fn (c602379)

🩹 Bug fixes

  • update Rect.toHiccup() format (separate widht/height vals) (8c1df49)

1.0.1 (2019-01-21)

♻️ Refactoring

  • update tangentAt(), use direction() from vectors pkg (3d499ad)

1.0.0 (2019-01-21)

🛑 Breaking changes

  • update package build scripts & outputs, imports in ~50 packages (b54b703)
  • BREAKING CHANGE: enabled multi-outputs (ES6 modules, CJS, UMD)
    • build scripts now first build ES6 modules in package root, then call scripts/bundle-module to build minified CJS & UMD bundles in /lib
    • all imports MUST be updated to only refer to package level (not individual files anymore). tree shaking in user land will get rid of all unused imported symbols.

🚀 Features

  • add temp geom3 package (another refactored version of geom2) (c0e3a0b)
  • re-add arc, cubic, quadratic ops, splitAt & other ops (fea8fbe)
  • add path builder, path & arc op impls (61cfb0f)
  • add clipConvex, scatter, warpPoints (d09cc79)
  • re-add tessellators (f1f428a)
  • add intersection checks & intersects() multi-fn (66267e2)
  • re-add pathFromSvg() (3c9a7b0)
  • re-add vertices() impls for Cubic/Quadratic (f5a53ca)
  • add/update edges(), pointInside() & classifyPoint() impls (e834597)
  • add clippedLine(), minor update liangBarsky() (d763621)
  • add transform() impls for Cubic/Quadratic (627e20d)
  • add closestPoint() impls for splines, line, polygons, polyline (eaf1a1b)
  • add pointAt() impls for Cubic/Quadratic (ebc9a98)
  • add flip() impls (56f6037)
  • add splitNearPoint(), Sampler.closestT(), internal restructure (1d754eb)
  • add splitNearPoint() for line & polyline, update Sampler (910529d)
  • add arcPointAt() helper, refactor Arc, minor other updates (0e5e776)
  • update closestPoint(), add support for Arc (63b3a5d)
  • re-add barycentric conversions, collation mappers (still unused) (db4a201)

🩹 Bug fixes

  • update arcFrom2Points() (62ec49f)

⏱ Performance improvements

  • use squared dist for classifyPoint() (circle) (cd59f66)

♻️ Refactoring

  • update imports, fix tests (c41b96f)
  • add tessellate() multi-fn, move/rename tessellators (499e14b)
  • update withAttribs() return type (8e2c8b5)

0.2.11 (2019-01-02)

🚀 Features

  • add/rename type ids, add sphere, isec fns (161199f)

0.2.3 (2018-12-01)

🚀 Features

  • re-add arcLength() impls, update imports (896855d)

♻️ Refactoring

  • update everything to use new vectors package (d4172ee)

0.2.0 (2018-10-21)

🚀 Features

  • add IToCubic, add/update impls (ce131d4)
    • add/update .toCubic() impls for Arc2, Line2, Polyline2
    • add Path2.normalize() to convert all segments to cubics
    • remove mixCubic/mixQuadratic()

0.1.0 (2018-10-17)

🚀 Features

  • update all shape types, add interfaces & ops, update tests (9c27c77)
  • add ICollate & ICopy impls, re-add/update convexHull2 (3b1bf64)
  • re-add Arc2, update Circle2, update helper fns (aa6b120)
  • add/update interfaces & impls (2657df6)
    • add CollateOpts, update collate() in both containers
    • add generics for IVertices
    • add ArcSamplingOpts
    • update edges(), vertices() for Arc2 & Circle2
    • add .toJSON() impls
    • add @thi.ng/checks dep
  • re-import & refactor partial port of @thi.ng/geom (clojure) (d655ec2)
  • add/update various shape impls & ops (3a20ef3)
  • add/update factory fns, arg handling, tessel, poly area (555fc51)
  • add/update tessellate() impls (fa87f1e)

♻️ Refactoring