@rokkit/chart 1.0.0-next.92 → 1.0.0-next.94

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rokkit/chart",
3
- "version": "1.0.0-next.92",
3
+ "version": "1.0.0-next.94",
4
4
  "description": "Components for making interactive charts.",
5
5
  "author": "Jerry Thomas <me@jerrythomas.name>",
6
6
  "license": "MIT",
@@ -14,31 +14,31 @@
14
14
  "devDependencies": {
15
15
  "@sveltejs/vite-plugin-svelte": "^3.0.2",
16
16
  "@testing-library/svelte": "^4.1.0",
17
- "@vitest/coverage-v8": "^1.3.1",
18
- "@vitest/ui": "~1.3.1",
17
+ "@vitest/coverage-v8": "^1.4.0",
18
+ "@vitest/ui": "~1.4.0",
19
19
  "js-yaml": "^4.1.0",
20
20
  "jsdom": "^24.0.0",
21
- "svelte": "^4.2.11",
22
- "typescript": "^5.3.3",
23
- "vite": "^5.1.4",
24
- "vitest": "~1.3.1",
25
- "shared-config": "1.0.0-next.92"
21
+ "svelte": "^4.2.12",
22
+ "typescript": "^5.4.4",
23
+ "vite": "^5.2.8",
24
+ "vitest": "~1.4.0",
25
+ "shared-config": "1.0.0-next.94"
26
26
  },
27
27
  "dependencies": {
28
- "@observablehq/plot": "^0.6.13",
28
+ "@observablehq/plot": "^0.6.14",
29
29
  "d3-array": "^3.2.4",
30
30
  "d3-collection": "^1.0.7",
31
31
  "d3-format": "^3.1.0",
32
32
  "d3-interpolate": "^3.0.1",
33
33
  "d3-scale": "^4.0.2",
34
34
  "d3-shape": "^3.2.0",
35
- "date-fns": "^3.3.1",
35
+ "date-fns": "^3.6.0",
36
36
  "ramda": "^0.29.1",
37
37
  "yootils": "^0.3.1",
38
- "@rokkit/molecules": "1.0.0-next.92",
39
- "@rokkit/atoms": "1.0.0-next.92",
40
- "@rokkit/core": "1.0.0-next.92",
41
- "@rokkit/stores": "1.0.0-next.92"
38
+ "@rokkit/atoms": "1.0.0-next.94",
39
+ "@rokkit/core": "1.0.0-next.94",
40
+ "@rokkit/stores": "1.0.0-next.94",
41
+ "@rokkit/molecules": "1.0.0-next.94"
42
42
  },
43
43
  "files": [
44
44
  "src/**/*.js",
package/src/Chart.svelte CHANGED
@@ -12,7 +12,7 @@
12
12
  export let value = y
13
13
  export let color = x
14
14
  export let fill = x
15
- export let pattern = x
15
+ // export let pattern = x
16
16
  export let width = 2048
17
17
  export let height = 2048
18
18
  export let padding = height / 16
package/src/lib/chart.js CHANGED
@@ -43,8 +43,8 @@ class Chart {
43
43
  // flipCoords = false
44
44
 
45
45
  constructor(data, opts) {
46
- this.width = +opts.width || 2048
47
- this.height = +opts.height || 2048
46
+ this.width = Number(opts.width) || 2048
47
+ this.height = Number(opts.height) || 2048
48
48
  this.flipCoords = opts.flipCoords || false
49
49
  this.x = opts.x
50
50
  this.y = opts.y
@@ -55,14 +55,15 @@ class Chart {
55
55
  this.color = opts.color || opts.fill
56
56
  this.shape = opts.shape || opts.fill
57
57
 
58
- this.padding = opts.padding !== undefined ? +opts.padding : 32
58
+ this.padding = opts.padding !== undefined ? Number(opts.padding) : 32
59
59
 
60
- this.spacing = +opts.spacing >= 0 && +opts.spacing <= 0.5 ? +opts.spacing : 0
60
+ this.spacing =
61
+ Number(opts.spacing) >= 0 && Number(opts.spacing) <= 0.5 ? Number(opts.spacing) : 0
61
62
  this.margin = {
62
- top: +opts.margin?.top || 0,
63
- left: +opts.margin?.left || 0,
64
- right: +opts.margin?.right || 0,
65
- bottom: +opts.margin?.bottom || 0
63
+ top: Number(opts.margin?.top) || 0,
64
+ left: Number(opts.margin?.left) || 0,
65
+ right: Number(opts.margin?.right) || 0,
66
+ bottom: Number(opts.margin?.bottom) || 0
66
67
  }
67
68
  this.domain = {
68
69
  x: [...new Set(data.map((d) => d[this.x]))],
@@ -108,8 +109,8 @@ class Chart {
108
109
  // scale['value'] = this.value === this.x ? scale.x : scale.y
109
110
 
110
111
  this.origin = {
111
- x: scale.x.ticks ? scale.x(Math.max(0, Math.min(...scale.x.domain()))) : scale.x.range()[0],
112
- y: scale.y.ticks ? scale.y(Math.max(0, Math.min(...scale.y.domain()))) : scale.y.range()[0]
112
+ x: getOriginValue(scale.x),
113
+ y: getOriginValue(scale.y)
113
114
  }
114
115
 
115
116
  this.scale = scale
@@ -180,7 +181,7 @@ class Chart {
180
181
  ticks = scale.domain()
181
182
  if (count < scale.domain().length) {
182
183
  let diff = scale.domain().length - count
183
- ticks = ticks.filter((d, i) => i % diff == 0)
184
+ ticks = ticks.filter((d, i) => i % diff === 0)
184
185
  }
185
186
  }
186
187
 
@@ -203,6 +204,10 @@ class Chart {
203
204
  }
204
205
  }
205
206
 
207
+ function getOriginValue(scale) {
208
+ return scale.ticks ? scale(Math.max(0, Math.min(...scale.domain()))) : scale.range()[0]
209
+ }
210
+
206
211
  export function chart(data, aes) {
207
212
  return new Chart(data, aes)
208
213
  }
package/src/lib/swatch.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { writable } from 'svelte/store'
2
- import { palette } from './palette'
2
+ import palette from './palette.json'
3
3
  import * as patterns from '../patterns'
4
4
  import { shapes } from '../symbols'
5
5
 
@@ -0,0 +1,8 @@
1
+ import { scaledPath } from '@rokkit/core'
2
+
3
+ export function scaledPathCollection(paths) {
4
+ return Object.entries(paths).reduce(
5
+ (acc, [key, value]) => ({ ...acc, [key]: (s) => scaledPath(s, value) }),
6
+ {}
7
+ )
8
+ }
@@ -1,7 +1,4 @@
1
- import { scaledPath } from '@rokkit/core'
1
+ import { scaledPathCollection } from '../../lib/utils'
2
2
  import paths from './patterns.json'
3
3
 
4
- export const patterns = Object.entries(paths).reduce(
5
- (acc, [key, value]) => ({ ...acc, [key]: (s) => scaledPath(s, value) }),
6
- {}
7
- )
4
+ export const patterns = scaledPathCollection(paths)
@@ -1,14 +1,4 @@
1
- import { scaledPath } from '@rokkit/core'
1
+ import { scaledPathCollection } from '../../lib/utils'
2
2
  import paths from './shapes.json'
3
3
 
4
- export const namedShapes = Object.entries(paths).reduce(
5
- (acc, [key, value]) => ({ ...acc, [key]: (s) => scaledPath(s, value) }),
6
- {}
7
- )
8
-
9
- //diamond
10
-
11
- // wye
12
- // <path transform="translate(620,15.25)" d="M2.152,1.243L2.152,5.547L-2.152,5.547L-2.152,1.243L-5.88,-0.91L-3.728,-4.638L0,-2.485L3.728,-4.638L5.88,-0.91Z"></path>
13
- //
14
- // outline
4
+ export const namedShapes = scaledPathCollection(paths)
@@ -1,283 +0,0 @@
1
- /**
2
- * @typedef {Object<50|100|200|300|400|500|600|700|800|900|950,string>} Shades
3
- */
4
- /**
5
- * @type {Object<string,Shades>} }
6
- */
7
- export const palette = {
8
- gold: {
9
- 50: '#fffef7',
10
- 100: '#fffdf0',
11
- 200: '#fffadb',
12
- 300: '#fff6c4',
13
- 400: '#ffec96',
14
- 500: '#ffde6b',
15
- 600: '#e6c257',
16
- 700: '#bf953b',
17
- 800: '#996f26',
18
- 900: '#734a16',
19
- 950: '#4a2909'
20
- },
21
- lavender: {
22
- 50: '#fffaff',
23
- 100: '#fcf2fc',
24
- 200: '#fce1fc',
25
- 300: '#facff9',
26
- 400: '#f5abf4',
27
- 500: '#ef89ee',
28
- 600: '#d96fd2',
29
- 700: '#b34da5',
30
- 800: '#8f317a',
31
- 900: '#6b1c55',
32
- 950: '#450c30'
33
- },
34
- teal: {
35
- 50: '#f2fcfc',
36
- 100: '#e3fafa',
37
- 200: '#bdf2f1',
38
- 300: '#96ebe9',
39
- 400: '#51dbd7',
40
- 500: '#15cbc4',
41
- 600: '#11b8aa',
42
- 700: '#0b9984',
43
- 800: '#077a60',
44
- 900: '#045c41',
45
- 950: '#023b25'
46
- },
47
- rose: {
48
- 50: '#fffbf7',
49
- 100: '#fcf6f0',
50
- 200: '#fce8dc',
51
- 300: '#fad7c8',
52
- 400: '#f5aa9d',
53
- 500: '#f07575',
54
- 600: '#d95f5f',
55
- 700: '#b34242',
56
- 800: '#8f2929',
57
- 900: '#6b1818',
58
- 950: '#450a0a'
59
- },
60
- sky: {
61
- 50: '#f2fdff',
62
- 100: '#e6fbff',
63
- 200: '#bff3ff',
64
- 300: '#99ebff',
65
- 400: '#4fd6ff',
66
- 500: '#02b8ff',
67
- 600: '#029ee6',
68
- 700: '#027abf',
69
- 800: '#025799',
70
- 900: '#003b73',
71
- 950: '#00234a'
72
- },
73
- yellow: {
74
- 50: '#fffef2',
75
- 100: '#fffce8',
76
- 200: '#fff8c4',
77
- 300: '#fcf09f',
78
- 400: '#fce25b',
79
- 500: '#facc15',
80
- 600: '#e0b010',
81
- 700: '#ba860b',
82
- 800: '#966208',
83
- 900: '#704304',
84
- 950: '#472601'
85
- },
86
- pink: {
87
- 50: '#fef5ff',
88
- 100: '#fbebfc',
89
- 200: '#f9cffc',
90
- 300: '#f3b4fa',
91
- 400: '#e77af5',
92
- 500: '#d946ef',
93
- 600: '#bb38d9',
94
- 700: '#9227b3',
95
- 800: '#6b188f',
96
- 900: '#490e6b',
97
- 950: '#290645'
98
- },
99
-
100
- lime: {
101
- 50: '#fbfcf2',
102
- 100: '#f7fae8',
103
- 200: '#eaf2c7',
104
- 300: '#ddeba7',
105
- 400: '#c2db6e',
106
- 500: '#a2cb39',
107
- 600: '#8cb82e',
108
- 700: '#6d9920',
109
- 800: '#4e7a15',
110
- 900: '#355c0c',
111
- 950: '#1e3b05'
112
- },
113
- red: {
114
- 50: '#fff5fa',
115
- 100: '#ffebf5',
116
- 200: '#fccce3',
117
- 300: '#faafcd',
118
- 400: '#f77499',
119
- 500: '#f63a57',
120
- 600: '#db304a',
121
- 700: '#b82135',
122
- 800: '#941524',
123
- 900: '#6e0c17',
124
- 950: '#47050c'
125
- },
126
- cyan: {
127
- 50: '#f0fbfc',
128
- 100: '#e1f8fa',
129
- 200: '#baeff5',
130
- 300: '#91e4ed',
131
- 400: '#48cce0',
132
- 500: '#06b6d4',
133
- 600: '#069abf',
134
- 700: '#03779e',
135
- 800: '#035880',
136
- 900: '#013b5e',
137
- 950: '#01223d'
138
- },
139
- orange: {
140
- 50: '#fffdf5',
141
- 100: '#fffae8',
142
- 200: '#fcefc5',
143
- 300: '#fce3a4',
144
- 400: '#fac65f',
145
- 500: '#f79f1e',
146
- 600: '#de8818',
147
- 700: '#ba6b11',
148
- 800: '#944d0a',
149
- 900: '#703406',
150
- 950: '#471d02'
151
- },
152
- violet: {
153
- 50: '#fdfaff',
154
- 100: '#f8f2fc',
155
- 200: '#eedefa',
156
- 300: '#e0cbf7',
157
- 400: '#c4a7f2',
158
- 500: '#9f84ec',
159
- 600: '#866bd6',
160
- 700: '#634bb3',
161
- 800: '#45318f',
162
- 900: '#2b1b6b',
163
- 950: '#150b45'
164
- },
165
- emerald: {
166
- 50: '#f2fcf9',
167
- 100: '#e6faf3',
168
- 200: '#bdf0dc',
169
- 300: '#9be8c6',
170
- 400: '#5ad694',
171
- 500: '#22c55e',
172
- 600: '#1ab04f',
173
- 700: '#13943c',
174
- 800: '#0c752b',
175
- 900: '#07591d',
176
- 950: '#03380f'
177
- },
178
- wood: {
179
- 50: '#faf5f0',
180
- 100: '#f2e6dc',
181
- 200: '#e3c4b1',
182
- 300: '#d19c86',
183
- 400: '#ad5140',
184
- 500: '#890e0e',
185
- 600: '#7d0b0b',
186
- 700: '#660707',
187
- 800: '#520505',
188
- 900: '#3d0202',
189
- 950: '#290101'
190
- },
191
- blue: {
192
- 50: '#f2fcff',
193
- 100: '#e6f9ff',
194
- 200: '#bfeeff',
195
- 300: '#99e0ff',
196
- 400: '#4cbffc',
197
- 500: '#0092fd',
198
- 600: '#007de3',
199
- 700: '#0061bd',
200
- 800: '#004696',
201
- 900: '#003073',
202
- 950: '#001c4a'
203
- },
204
-
205
- amber: {
206
- 50: '#fffbf5',
207
- 100: '#fff7eb',
208
- 200: '#ffe9cc',
209
- 300: '#ffd6ab',
210
- 400: '#ffa86e',
211
- 500: '#ff6e2f',
212
- 600: '#e65b25',
213
- 700: '#bf4519',
214
- 800: '#993111',
215
- 900: '#732009',
216
- 950: '#4a1204'
217
- },
218
- purple: {
219
- 50: '#fdf7ff',
220
- 100: '#faedff',
221
- 200: '#f0d4fc',
222
- 300: '#e7bbfc',
223
- 400: '#ca87fa',
224
- 500: '#a855f7',
225
- 600: '#8f45de',
226
- 700: '#6d2fba',
227
- 800: '#4f1e94',
228
- 900: '#341170',
229
- 950: '#1d0747'
230
- },
231
- zinc: {
232
- 50: '#f7f9fa',
233
- 100: '#edf2f5',
234
- 200: '#d3dde3',
235
- 300: '#bac8d1',
236
- 400: '#8d9eb0',
237
- 500: '#64748b',
238
- 600: '#536580',
239
- 700: '#384a69',
240
- 800: '#243454',
241
- 900: '#142140',
242
- 950: '#091129'
243
- },
244
- stone: {
245
- 50: '#f7f7f7',
246
- 100: '#f2f1f0',
247
- 200: '#dedcd9',
248
- 300: '#c9c6c1',
249
- 400: '#a19b95',
250
- 500: '#78716c',
251
- 600: '#6b5f57',
252
- 700: '#59473c',
253
- 800: '#473227',
254
- 900: '#361f15',
255
- 950: '#241009'
256
- },
257
- indigo: {
258
- 50: '#f7fbff',
259
- 100: '#f0f7ff',
260
- 200: '#d7e5fc',
261
- 300: '#bed1fa',
262
- 400: '#92a3f7',
263
- 500: '#6366f1',
264
- 600: '#5153db',
265
- 700: '#383ab5',
266
- 800: '#242691',
267
- 900: '#14156e',
268
- 950: '#090a47'
269
- },
270
- gray: {
271
- 50: '#f7f9fa',
272
- 100: '#edf0f2',
273
- 200: '#d7dde0',
274
- 300: '#c0c6cc',
275
- 400: '#949ba6',
276
- 500: '#6b7280',
277
- 600: '#576073',
278
- 700: '#3b455e',
279
- 800: '#26304d',
280
- 900: '#151d38',
281
- 950: '#090e24'
282
- }
283
- }