@thi.ng/geom-fuzz 1.0.7 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,7 +3,7 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [1.0.7](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-fuzz@1.0.6...@thi.ng/geom-fuzz@1.0.7) (2021-08-22)
6
+ ## [2.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-fuzz@2.0.2...@thi.ng/geom-fuzz@2.0.3) (2021-10-15)
7
7
 
8
8
  **Note:** Version bump only for package @thi.ng/geom-fuzz
9
9
 
@@ -11,10 +11,58 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
11
11
 
12
12
 
13
13
 
14
- # 0.1.0 (2020-06-20)
14
+ ## [2.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-fuzz@2.0.1...@thi.ng/geom-fuzz@2.0.2) (2021-10-15)
15
15
 
16
+ **Note:** Version bump only for package @thi.ng/geom-fuzz
17
+
18
+
19
+
20
+
21
+
22
+ ## [2.0.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-fuzz@2.0.0...@thi.ng/geom-fuzz@2.0.1) (2021-10-13)
23
+
24
+ **Note:** Version bump only for package @thi.ng/geom-fuzz
25
+
26
+
27
+
28
+
29
+
30
+ # [2.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-fuzz@1.0.8...@thi.ng/geom-fuzz@2.0.0) (2021-10-12)
31
+
32
+
33
+ ### Build System
34
+
35
+ * major update of ALL pkgs (export maps, ESM only) ([0d1d6ea](https://github.com/thi-ng/umbrella/commit/0d1d6ea9fab2a645d6c5f2bf2591459b939c09b6))
36
+
37
+
38
+ ### BREAKING CHANGES
39
+
40
+ * discontinue CommonJS & UMD versions
41
+
42
+ - only ESM modules will be published from now on
43
+ - CJS obsolete due to ESM support in recent versions of node:
44
+ - i.e. launch NodeJS via:
45
+ - `node --experimental-specifier-resolution=node --experimental-repl-await`
46
+ - in the node REPL use `await import(...)` instead of `require()`
47
+ - UMD obsolete due to widespread browser support for ESM
48
+
49
+ Also:
50
+ - normalize/restructure/reorg all package.json files
51
+ - cleanup all build scripts, remove obsolete
52
+ - switch from mocha to @thi.ng/testament for all tests
53
+
54
+
55
+
56
+
57
+
58
+
59
+ ## [1.0.7](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-fuzz@1.0.6...@thi.ng/geom-fuzz@1.0.7) (2021-08-22)
60
+
61
+ **Note:** Version bump only for package @thi.ng/geom-fuzz
62
+
63
+ # 0.1.0 (2020-06-20)
16
64
 
17
- ### Features
65
+ ### Features
18
66
 
19
- * **examples:** add geom-fuzz-basics example ([8b82723](https://github.com/thi-ng/umbrella/commit/8b82723c3708c78d5a67376036b661baec8e4ce0))
20
- * **geom-fuzz:** import as new pkg ([3ff1484](https://github.com/thi-ng/umbrella/commit/3ff14848f277bd9dc7b2a009aa0a98d6e1d3df6c))
67
+ - **examples:** add geom-fuzz-basics example ([8b82723](https://github.com/thi-ng/umbrella/commit/8b82723c3708c78d5a67376036b661baec8e4ce0))
68
+ - **geom-fuzz:** import as new pkg ([3ff1484](https://github.com/thi-ng/umbrella/commit/3ff14848f277bd9dc7b2a009aa0a98d6e1d3df6c))
package/README.md CHANGED
@@ -42,15 +42,24 @@ Highly configurable, fuzzy line & polygon creation with presets and composable f
42
42
  yarn add @thi.ng/geom-fuzz
43
43
  ```
44
44
 
45
+ ES module import:
46
+
45
47
  ```html
46
- // ES module
47
- <script type="module" src="https://unpkg.com/@thi.ng/geom-fuzz?module" crossorigin></script>
48
+ <script type="module" src="https://cdn.skypack.dev/@thi.ng/geom-fuzz"></script>
49
+ ```
50
+
51
+ [Skypack documentation](https://docs.skypack.dev/)
52
+
53
+ For Node.js REPL:
54
+
55
+ ```text
56
+ # with flag only for < v16
57
+ node --experimental-repl-await
48
58
 
49
- // UMD
50
- <script src="https://unpkg.com/@thi.ng/geom-fuzz/lib/index.umd.js" crossorigin></script>
59
+ > const geomFuzz = await import("@thi.ng/geom-fuzz");
51
60
  ```
52
61
 
53
- Package sizes (gzipped, pre-treeshake): ESM: 1.02 KB / CJS: 1.10 KB / UMD: 1.19 KB
62
+ Package sizes (gzipped, pre-treeshake): ESM: 1.12 KB
54
63
 
55
64
  ## Dependencies
56
65
 
@@ -74,7 +83,7 @@ directory are using this package.
74
83
  A selection:
75
84
 
76
85
  | Screenshot | Description | Live demo | Source |
77
- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------- |
86
+ |:-------------------------------------------------------------------------------------------------------------|:--------------------------------------|:-------------------------------------------------------|:------------------------------------------------------------------------------------|
78
87
  | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/geom/geom-fuzz.png" width="240"/> | geom-fuzz basic shape & fill examples | [Demo](https://demo.thi.ng/umbrella/geom-fuzz-basics/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-fuzz-basics) |
79
88
 
80
89
  ## API
package/comp.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import type { FillFn } from "./api";
1
+ import type { FillFn } from "./api.js";
2
2
  export declare const compFill: (a: FillFn, b: FillFn) => FillFn;
3
3
  //# sourceMappingURL=comp.d.ts.map
package/comp.js CHANGED
@@ -1,2 +1,2 @@
1
- import { group } from "@thi.ng/geom";
1
+ import { group } from "@thi.ng/geom/group";
2
2
  export const compFill = (a, b) => (poly) => group({}, [a(poly), b(poly)]);
package/dots.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import type { DotFillOpts, FillFn } from "./api";
1
+ import type { DotFillOpts, FillFn } from "./api.js";
2
2
  export declare const defDots: (opts?: Partial<DotFillOpts>) => FillFn;
3
3
  //# sourceMappingURL=dots.d.ts.map
package/dots.js CHANGED
@@ -1,7 +1,11 @@
1
- import { mergeDeepObj } from "@thi.ng/associative";
2
- import { bounds, pointInside, points, unmapPoint } from "@thi.ng/geom";
3
- import { range2d } from "@thi.ng/transducers";
4
- import { div2, jitter } from "@thi.ng/vectors";
1
+ import { mergeDeepObj } from "@thi.ng/associative/merge-deep";
2
+ import { bounds } from "@thi.ng/geom/bounds";
3
+ import { pointInside } from "@thi.ng/geom/point-inside";
4
+ import { points } from "@thi.ng/geom/points";
5
+ import { unmapPoint } from "@thi.ng/geom/unmap-point";
6
+ import { range2d } from "@thi.ng/transducers/range2d";
7
+ import { div2 } from "@thi.ng/vectors/div";
8
+ import { jitter } from "@thi.ng/vectors/jitter";
5
9
  export const defDots = (opts = {}) => {
6
10
  opts = mergeDeepObj({
7
11
  space: 5,
package/hatch.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { FillFn, HatchOpts } from "./api";
1
+ import { FillFn, HatchOpts } from "./api.js";
2
2
  export declare const defHatch: (opts?: Partial<HatchOpts>) => FillFn;
3
3
  //# sourceMappingURL=hatch.d.ts.map
package/hatch.js CHANGED
@@ -1,11 +1,16 @@
1
- import { mergeDeepObj } from "@thi.ng/associative";
2
- import { bounds, group, offset, unmapPoint } from "@thi.ng/geom";
3
- import { clipLinePoly } from "@thi.ng/geom-clip-line";
4
- import { columnEnds2d, diagonalEnds2d, rowEnds2d, } from "@thi.ng/grid-iterators";
5
- import { partition } from "@thi.ng/transducers";
6
- import { div2 } from "@thi.ng/vectors";
7
- import { DEFAULT_LINE } from "./api";
8
- import { defLine } from "./line";
1
+ import { mergeDeepObj } from "@thi.ng/associative/merge-deep";
2
+ import { clipLinePoly } from "@thi.ng/geom-clip-line/clip-poly";
3
+ import { bounds } from "@thi.ng/geom/bounds";
4
+ import { group } from "@thi.ng/geom/group";
5
+ import { offset } from "@thi.ng/geom/offset";
6
+ import { unmapPoint } from "@thi.ng/geom/unmap-point";
7
+ import { columnEnds2d } from "@thi.ng/grid-iterators/column-ends";
8
+ import { diagonalEnds2d } from "@thi.ng/grid-iterators/diagonal-ends";
9
+ import { rowEnds2d } from "@thi.ng/grid-iterators/row-ends";
10
+ import { partition } from "@thi.ng/transducers/partition";
11
+ import { div2 } from "@thi.ng/vectors/div";
12
+ import { DEFAULT_LINE } from "./api.js";
13
+ import { defLine } from "./line.js";
9
14
  const HATCH_DIRS = {
10
15
  d: diagonalEnds2d,
11
16
  h: rowEnds2d,
package/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- export * from "./api";
2
- export * from "./comp";
3
- export * from "./dots";
4
- export * from "./hatch";
5
- export * from "./line";
6
- export * from "./points";
7
- export * from "./polygon";
8
- export * from "./presets";
1
+ export * from "./api.js";
2
+ export * from "./comp.js";
3
+ export * from "./dots.js";
4
+ export * from "./hatch.js";
5
+ export * from "./line.js";
6
+ export * from "./points.js";
7
+ export * from "./polygon.js";
8
+ export * from "./presets.js";
9
9
  //# sourceMappingURL=index.d.ts.map
package/index.js CHANGED
@@ -1,8 +1,8 @@
1
- export * from "./api";
2
- export * from "./comp";
3
- export * from "./dots";
4
- export * from "./hatch";
5
- export * from "./line";
6
- export * from "./points";
7
- export * from "./polygon";
8
- export * from "./presets";
1
+ export * from "./api.js";
2
+ export * from "./comp.js";
3
+ export * from "./dots.js";
4
+ export * from "./hatch.js";
5
+ export * from "./line.js";
6
+ export * from "./points.js";
7
+ export * from "./polygon.js";
8
+ export * from "./presets.js";
package/line.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { Fn3 } from "@thi.ng/api";
2
2
  import type { IHiccupShape } from "@thi.ng/geom-api";
3
- import { ReadonlyVec } from "@thi.ng/vectors";
4
- import { FuzzyLineOpts } from "./api";
3
+ import type { ReadonlyVec } from "@thi.ng/vectors";
4
+ import { FuzzyLineOpts } from "./api.js";
5
5
  export declare const defLine: (opts?: Partial<FuzzyLineOpts>) => Fn3<ReadonlyVec, ReadonlyVec, boolean, IHiccupShape>;
6
6
  //# sourceMappingURL=line.d.ts.map
package/line.js CHANGED
@@ -1,9 +1,10 @@
1
- import { mergeDeepObj } from "@thi.ng/associative";
2
- import { line, polyline } from "@thi.ng/geom";
3
- import { resample } from "@thi.ng/geom-resample";
4
- import { jitter } from "@thi.ng/vectors";
5
- import { DEFAULT_LINE } from "./api";
6
- import { jitterPoints } from "./points";
1
+ import { mergeDeepObj } from "@thi.ng/associative/merge-deep";
2
+ import { resample } from "@thi.ng/geom-resample/resample";
3
+ import { line } from "@thi.ng/geom/line";
4
+ import { polyline } from "@thi.ng/geom/polyline";
5
+ import { jitter } from "@thi.ng/vectors/jitter";
6
+ import { DEFAULT_LINE } from "./api.js";
7
+ import { jitterPoints } from "./points.js";
7
8
  export const defLine = (opts = {}) => {
8
9
  opts = mergeDeepObj(DEFAULT_LINE, opts);
9
10
  return opts.resample > 1
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@thi.ng/geom-fuzz",
3
- "version": "1.0.7",
3
+ "version": "2.0.3",
4
4
  "description": "Highly configurable, fuzzy line & polygon creation with presets and composable fill & stroke styles. Canvas & SVG support",
5
+ "type": "module",
5
6
  "module": "./index.js",
6
- "main": "./lib/index.js",
7
- "umd:main": "./lib/index.umd.js",
8
7
  "typings": "./index.d.ts",
8
+ "sideEffects": false,
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "https://github.com/thi-ng/umbrella.git"
@@ -24,35 +24,30 @@
24
24
  "author": "Karsten Schmidt <k+npm@thi.ng>",
25
25
  "license": "Apache-2.0",
26
26
  "scripts": {
27
- "build": "yarn clean && yarn build:es6 && node ../../scripts/bundle-module",
28
- "build:release": "yarn clean && yarn build:es6 && node ../../scripts/bundle-module all",
29
- "build:es6": "tsc --declaration",
30
- "build:test": "rimraf build && tsc -p test/tsconfig.json",
31
- "test": "mocha test",
32
- "cover": "nyc mocha test && nyc report --reporter=lcov",
33
- "clean": "rimraf *.js *.d.ts *.map .nyc_output build coverage doc lib",
34
- "doc:readme": "ts-node -P ../../tools/tsconfig.json ../../tools/src/readme.ts",
27
+ "build": "yarn clean && tsc --declaration",
28
+ "clean": "rimraf *.js *.d.ts *.map doc",
29
+ "doc": "typedoc --excludePrivate --excludeInternal --out doc src/index.ts",
35
30
  "doc:ae": "mkdir -p .ae/doc .ae/temp && node_modules/.bin/api-extractor run --local --verbose",
36
- "doc": "typedoc --excludePrivate --out doc --theme ../../tools/doc/typedoc-theme src/index.ts",
37
- "pub": "yarn build:release && yarn publish --access public"
31
+ "doc:readme": "yarn doc:stats && ../../scripts/node-esm ../../tools/src/readme.ts",
32
+ "doc:stats": "../../scripts/node-esm ../../tools/src/module-stats.ts",
33
+ "pub": "yarn build && yarn publish --access public",
34
+ "test": "testament test"
38
35
  },
39
36
  "dependencies": {
40
- "@thi.ng/api": "^7.1.9",
41
- "@thi.ng/associative": "^5.2.15",
42
- "@thi.ng/color": "^3.2.6",
43
- "@thi.ng/geom": "^2.1.28",
44
- "@thi.ng/geom-api": "^2.0.30",
45
- "@thi.ng/geom-clip-line": "^1.2.44",
46
- "@thi.ng/geom-resample": "^1.0.4",
47
- "@thi.ng/grid-iterators": "^1.0.4",
48
- "@thi.ng/transducers": "^7.9.1",
49
- "@thi.ng/vectors": "^6.1.2"
37
+ "@thi.ng/api": "^8.0.3",
38
+ "@thi.ng/associative": "^6.0.3",
39
+ "@thi.ng/color": "^4.0.3",
40
+ "@thi.ng/geom": "^3.0.3",
41
+ "@thi.ng/geom-api": "^3.0.3",
42
+ "@thi.ng/geom-clip-line": "^2.0.3",
43
+ "@thi.ng/geom-resample": "^2.0.3",
44
+ "@thi.ng/grid-iterators": "^2.0.3",
45
+ "@thi.ng/transducers": "^8.0.3",
46
+ "@thi.ng/vectors": "^7.0.3"
47
+ },
48
+ "devDependencies": {
49
+ "@thi.ng/testament": "^0.1.3"
50
50
  },
51
- "files": [
52
- "*.js",
53
- "*.d.ts",
54
- "lib"
55
- ],
56
51
  "keywords": [
57
52
  "2d",
58
53
  "animation",
@@ -76,7 +71,42 @@
76
71
  "publishConfig": {
77
72
  "access": "public"
78
73
  },
79
- "sideEffects": false,
74
+ "engines": {
75
+ "node": ">=12.7"
76
+ },
77
+ "files": [
78
+ "*.js",
79
+ "*.d.ts"
80
+ ],
81
+ "exports": {
82
+ ".": {
83
+ "import": "./index.js"
84
+ },
85
+ "./api": {
86
+ "import": "./api.js"
87
+ },
88
+ "./comp": {
89
+ "import": "./comp.js"
90
+ },
91
+ "./dots": {
92
+ "import": "./dots.js"
93
+ },
94
+ "./hatch": {
95
+ "import": "./hatch.js"
96
+ },
97
+ "./line": {
98
+ "import": "./line.js"
99
+ },
100
+ "./points": {
101
+ "import": "./points.js"
102
+ },
103
+ "./polygon": {
104
+ "import": "./polygon.js"
105
+ },
106
+ "./presets": {
107
+ "import": "./presets.js"
108
+ }
109
+ },
80
110
  "thi.ng": {
81
111
  "parent": "@thi.ng/geom",
82
112
  "related": [
@@ -85,5 +115,5 @@
85
115
  ],
86
116
  "year": 2020
87
117
  },
88
- "gitHead": "8ead409ded4bf8dceb0f24a538ba5ca00d07108d"
118
+ "gitHead": "1fb38cac74d6c009d96855c28784a267a81badf1"
89
119
  }
package/points.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { Vec } from "@thi.ng/vectors";
1
+ import type { Vec } from "@thi.ng/vectors";
2
2
  export declare const jitterPoints: (pts: Vec[], scl?: number) => Vec[];
3
3
  //# sourceMappingURL=points.d.ts.map
package/points.js CHANGED
@@ -1,2 +1,2 @@
1
- import { jitter } from "@thi.ng/vectors";
1
+ import { jitter } from "@thi.ng/vectors/jitter";
2
2
  export const jitterPoints = (pts, scl = 5) => pts.map((p) => jitter([], p, scl));
package/polygon.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import type { ReadonlyVec } from "@thi.ng/vectors";
2
- import type { FuzzyPolygonOpts } from "./api";
2
+ import type { FuzzyPolygonOpts } from "./api.js";
3
3
  export declare const fuzzyPoly: (pts: ReadonlyVec[], attribs?: {}, opts?: Partial<FuzzyPolygonOpts>) => import("@thi.ng/geom").Group;
4
4
  //# sourceMappingURL=polygon.d.ts.map
package/polygon.js CHANGED
@@ -1,7 +1,16 @@
1
- import { asCubic, group, pathFromCubics, polygon } from "@thi.ng/geom";
2
- import { jitterPoints } from "./points";
1
+ import { asCubic } from "@thi.ng/geom/as-cubic";
2
+ import { group } from "@thi.ng/geom/group";
3
+ import { pathFromCubics } from "@thi.ng/geom/path";
4
+ import { polygon } from "@thi.ng/geom/polygon";
5
+ import { jitterPoints } from "./points.js";
3
6
  export const fuzzyPoly = (pts, attribs = {}, opts = {}) => {
4
- opts = Object.assign({ num: 2, jitter: 2, curveBreakPoints: true, curveScale: 0.1 }, opts);
7
+ opts = {
8
+ num: 2,
9
+ jitter: 2,
10
+ curveBreakPoints: true,
11
+ curveScale: 0.1,
12
+ ...opts,
13
+ };
5
14
  const acc = group(attribs, []);
6
15
  for (; --opts.num >= 0;) {
7
16
  const poly = polygon(jitterPoints(pts, opts.jitter));
package/presets.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import type { Color, HatchDir } from "./api";
2
- export declare const defHatchPen: (color: Color, dir?: HatchDir, thick?: number, space?: number, steps?: number) => import("./api").FillFn;
1
+ import type { Color, HatchDir } from "./api.js";
2
+ export declare const defHatchPen: (color: Color, dir?: HatchDir, thick?: number, space?: number, steps?: number) => import("./api.js").FillFn;
3
3
  //# sourceMappingURL=presets.d.ts.map
package/presets.js CHANGED
@@ -1,4 +1,4 @@
1
- import { defHatch } from "./hatch";
1
+ import { defHatch } from "./hatch.js";
2
2
  export const defHatchPen = (color, dir = "d", thick = 8, space = 1, steps = 4) => defHatch({
3
3
  dir,
4
4
  space: thick * space,
package/lib/index.js DELETED
@@ -1,133 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var geom = require('@thi.ng/geom');
6
- var associative = require('@thi.ng/associative');
7
- var transducers = require('@thi.ng/transducers');
8
- var vectors = require('@thi.ng/vectors');
9
- var geomClipLine = require('@thi.ng/geom-clip-line');
10
- var gridIterators = require('@thi.ng/grid-iterators');
11
- var geomResample = require('@thi.ng/geom-resample');
12
-
13
- const DEFAULT_LINE = {
14
- resample: 0,
15
- jitter: 2,
16
- attribs: {
17
- lineCap: "butt",
18
- lineJoin: "round",
19
- stroke: "black",
20
- },
21
- };
22
-
23
- const compFill = (a, b) => (poly) => geom.group({}, [a(poly), b(poly)]);
24
-
25
- const defDots = (opts = {}) => {
26
- opts = associative.mergeDeepObj({
27
- space: 5,
28
- jitter: 0.5,
29
- attribs: {
30
- shape: "circle",
31
- stroke: "black",
32
- fill: "none",
33
- },
34
- }, opts);
35
- return (shape) => {
36
- const box = geom.bounds(shape);
37
- const [w, h] = box.size;
38
- const cols = ~~(w / opts.space);
39
- const rows = ~~(h / opts.space);
40
- const maxg = [cols - 1, rows - 1];
41
- const acc = [];
42
- for (let p of transducers.range2d(cols, rows)) {
43
- if (p[1] & 1)
44
- p[0] += 0.5;
45
- geom.unmapPoint(box, vectors.div2(null, p, maxg), p);
46
- vectors.jitter(p, p, opts.jitter);
47
- if (geom.pointInside(shape, p)) {
48
- acc.push(p);
49
- }
50
- }
51
- return geom.points(acc, opts.attribs);
52
- };
53
- };
54
-
55
- const jitterPoints = (pts, scl = 5) => pts.map((p) => vectors.jitter([], p, scl));
56
-
57
- const defLine = (opts = {}) => {
58
- opts = associative.mergeDeepObj(DEFAULT_LINE, opts);
59
- return opts.resample > 1
60
- ? (a, b, useAttr = true) => geom.polyline(jitterPoints(geomResample.resample([a, b], { num: opts.resample, last: true }), opts.jitter), useAttr ? opts.attribs : undefined)
61
- : (a, b, useAttr = true) => geom.line(vectors.jitter(null, a, opts.jitter), vectors.jitter(null, b, opts.jitter), useAttr ? opts.attribs : undefined);
62
- };
63
-
64
- const HATCH_DIRS = {
65
- d: gridIterators.diagonalEnds2d,
66
- h: gridIterators.rowEnds2d,
67
- v: gridIterators.columnEnds2d,
68
- };
69
- const defHatch = (opts = {}) => {
70
- opts = associative.mergeDeepObj({
71
- dir: "d",
72
- space: 5,
73
- line: DEFAULT_LINE,
74
- }, opts);
75
- const line = defLine(opts.line);
76
- return (shape) => {
77
- const box = geom.offset(geom.bounds(shape), 1);
78
- const [w, h] = box.size;
79
- const cols = ~~(w / opts.space);
80
- const rows = ~~(h / opts.space);
81
- const maxg = [cols - 1, rows - 1];
82
- const acc = geom.group(opts.line ? opts.line.attribs : null);
83
- for (let [a, b] of transducers.partition(2, HATCH_DIRS[opts.dir](cols, rows))) {
84
- geom.unmapPoint(box, vectors.div2(null, a, maxg), a);
85
- geom.unmapPoint(box, vectors.div2(null, b, maxg), b);
86
- const segments = geomClipLine.clipLinePoly(a, b, shape.points);
87
- if (segments) {
88
- for (let s of segments) {
89
- acc.children.push(line(s[0], s[1], false));
90
- }
91
- }
92
- }
93
- return acc;
94
- };
95
- };
96
-
97
- const fuzzyPoly = (pts, attribs = {}, opts = {}) => {
98
- opts = Object.assign({ num: 2, jitter: 2, curveBreakPoints: true, curveScale: 0.1 }, opts);
99
- const acc = geom.group(attribs, []);
100
- for (; --opts.num >= 0;) {
101
- const poly = geom.polygon(jitterPoints(pts, opts.jitter));
102
- acc.children.push(geom.pathFromCubics(geom.asCubic(poly, {
103
- breakPoints: opts.curveBreakPoints,
104
- scale: opts.curveScale,
105
- })));
106
- if (!opts.num && opts.fill) {
107
- acc.children.push(opts.fill(poly));
108
- }
109
- }
110
- return acc;
111
- };
112
-
113
- const defHatchPen = (color, dir = "d", thick = 8, space = 1, steps = 4) => defHatch({
114
- dir,
115
- space: thick * space,
116
- line: {
117
- attribs: {
118
- stroke: color,
119
- weight: thick,
120
- },
121
- jitter: thick * space * 0.25,
122
- resample: steps,
123
- },
124
- });
125
-
126
- exports.DEFAULT_LINE = DEFAULT_LINE;
127
- exports.compFill = compFill;
128
- exports.defDots = defDots;
129
- exports.defHatch = defHatch;
130
- exports.defHatchPen = defHatchPen;
131
- exports.defLine = defLine;
132
- exports.fuzzyPoly = fuzzyPoly;
133
- exports.jitterPoints = jitterPoints;
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../api.js","../comp.js","../dots.js","../points.js","../line.js","../hatch.js","../polygon.js","../presets.js"],"sourcesContent":null,"names":["group","mergeDeepObj","bounds","range2d","unmapPoint","div2","jitter","pointInside","points","polyline","resample","line","diagonalEnds2d","rowEnds2d","columnEnds2d","offset","partition","clipLinePoly","polygon","pathFromCubics","asCubic"],"mappings":"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"}
package/lib/index.umd.js DELETED
@@ -1 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@thi.ng/geom"),require("@thi.ng/associative"),require("@thi.ng/transducers"),require("@thi.ng/vectors"),require("@thi.ng/geom-clip-line"),require("@thi.ng/grid-iterators"),require("@thi.ng/geom-resample")):"function"==typeof define&&define.amd?define(["exports","@thi.ng/geom","@thi.ng/associative","@thi.ng/transducers","@thi.ng/vectors","@thi.ng/geom-clip-line","@thi.ng/grid-iterators","@thi.ng/geom-resample"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).thi=e.thi||{},e.thi.ng=e.thi.ng||{},e.thi.ng.geomFuzz={}),e.thi.ng.geom,e.thi.ng.associative,e.thi.ng.transducers,e.thi.ng.vectors,e.thi.ng.geomClipLine,e.thi.ng.gridIterators,e.thi.ng.geomResample)}(this,(function(e,t,i,n,r,s,o,l){"use strict";const a={resample:0,jitter:2,attribs:{lineCap:"butt",lineJoin:"round",stroke:"black"}},u=(e,t=5)=>e.map((e=>r.jitter([],e,t))),c=(e={})=>(e=i.mergeDeepObj(a,e)).resample>1?(i,n,r=!0)=>t.polyline(u(l.resample([i,n],{num:e.resample,last:!0}),e.jitter),r?e.attribs:void 0):(i,n,s=!0)=>t.line(r.jitter(null,i,e.jitter),r.jitter(null,n,e.jitter),s?e.attribs:void 0),p={d:o.diagonalEnds2d,h:o.rowEnds2d,v:o.columnEnds2d},g=(e={})=>{e=i.mergeDeepObj({dir:"d",space:5,line:a},e);const o=c(e.line);return i=>{const l=t.offset(t.bounds(i),1),[a,u]=l.size,c=~~(a/e.space),g=~~(u/e.space),d=[c-1,g-1],h=t.group(e.line?e.line.attribs:null);for(let[a,u]of n.partition(2,p[e.dir](c,g))){t.unmapPoint(l,r.div2(null,a,d),a),t.unmapPoint(l,r.div2(null,u,d),u);const e=s.clipLinePoly(a,u,i.points);if(e)for(let t of e)h.children.push(o(t[0],t[1],!1))}return h}};e.DEFAULT_LINE=a,e.compFill=(e,i)=>n=>t.group({},[e(n),i(n)]),e.defDots=(e={})=>(e=i.mergeDeepObj({space:5,jitter:.5,attribs:{shape:"circle",stroke:"black",fill:"none"}},e),i=>{const s=t.bounds(i),[o,l]=s.size,a=~~(o/e.space),u=~~(l/e.space),c=[a-1,u-1],p=[];for(let o of n.range2d(a,u))1&o[1]&&(o[0]+=.5),t.unmapPoint(s,r.div2(null,o,c),o),r.jitter(o,o,e.jitter),t.pointInside(i,o)&&p.push(o);return t.points(p,e.attribs)}),e.defHatch=g,e.defHatchPen=(e,t="d",i=8,n=1,r=4)=>g({dir:t,space:i*n,line:{attribs:{stroke:e,weight:i},jitter:i*n*.25,resample:r}}),e.defLine=c,e.fuzzyPoly=(e,i={},n={})=>{n=Object.assign({num:2,jitter:2,curveBreakPoints:!0,curveScale:.1},n);const r=t.group(i,[]);for(;--n.num>=0;){const i=t.polygon(u(e,n.jitter));r.children.push(t.pathFromCubics(t.asCubic(i,{breakPoints:n.curveBreakPoints,scale:n.curveScale}))),!n.num&&n.fill&&r.children.push(n.fill(i))}return r},e.jitterPoints=u,Object.defineProperty(e,"__esModule",{value:!0})}));
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.umd.js","sources":["../api.js","../comp.js","../dots.js","../points.js","../line.js","../hatch.js","../polygon.js","../presets.js"],"sourcesContent":null,"names":["group","mergeDeepObj","bounds","range2d","unmapPoint","div2","jitter","pointInside","points","polyline","resample","line","diagonalEnds2d","rowEnds2d","columnEnds2d","offset","partition","clipLinePoly","polygon","pathFromCubics","asCubic"],"mappings":"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"}