@versatiles/style 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/LICENSE.md +24 -0
  2. package/README.MD +94 -0
  3. package/dist/index.d.ts +4 -0
  4. package/dist/index.js +3 -0
  5. package/dist/index.test.d.ts +1 -0
  6. package/dist/index.test.js +38 -0
  7. package/dist/lib/decorator.d.ts +3 -0
  8. package/dist/lib/decorator.js +123 -0
  9. package/dist/lib/decorator.test.d.ts +1 -0
  10. package/dist/lib/decorator.test.js +56 -0
  11. package/dist/lib/recolor.d.ts +13 -0
  12. package/dist/lib/recolor.js +92 -0
  13. package/dist/lib/recolor.test.d.ts +1 -0
  14. package/dist/lib/recolor.test.js +179 -0
  15. package/dist/lib/shortbread/layers.d.ts +7 -0
  16. package/dist/lib/shortbread/layers.js +508 -0
  17. package/dist/lib/shortbread/layers.test.d.ts +1 -0
  18. package/dist/lib/shortbread/layers.test.js +27 -0
  19. package/dist/lib/shortbread/properties.d.ts +7 -0
  20. package/dist/lib/shortbread/properties.js +124 -0
  21. package/dist/lib/shortbread/properties.test.d.ts +1 -0
  22. package/dist/lib/shortbread/properties.test.js +36 -0
  23. package/dist/lib/shortbread/template.d.ts +2 -0
  24. package/dist/lib/shortbread/template.js +339 -0
  25. package/dist/lib/shortbread/template.test.d.ts +1 -0
  26. package/dist/lib/shortbread/template.test.js +57 -0
  27. package/dist/lib/style_builder.d.ts +32 -0
  28. package/dist/lib/style_builder.js +84 -0
  29. package/dist/lib/style_builder.test.d.ts +1 -0
  30. package/dist/lib/style_builder.test.js +77 -0
  31. package/dist/lib/utils.d.ts +4 -0
  32. package/dist/lib/utils.js +106 -0
  33. package/dist/lib/utils.test.d.ts +1 -0
  34. package/dist/lib/utils.test.js +97 -0
  35. package/dist/styles/colorful.d.ts +53 -0
  36. package/dist/styles/colorful.js +871 -0
  37. package/dist/styles/graybeard.d.ts +5 -0
  38. package/dist/styles/graybeard.js +9 -0
  39. package/dist/styles/neutrino.d.ts +24 -0
  40. package/dist/styles/neutrino.js +356 -0
  41. package/package.json +60 -0
@@ -0,0 +1,5 @@
1
+ import Colorful from './colorful.js';
2
+ export default class Graybeard extends Colorful {
3
+ readonly name: string;
4
+ constructor();
5
+ }
@@ -0,0 +1,9 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ import Colorful from './colorful.js';
3
+ export default class Graybeard extends Colorful {
4
+ name = 'graybeard';
5
+ constructor() {
6
+ super();
7
+ this.resetColors(color => color.desaturate(1));
8
+ }
9
+ }
@@ -0,0 +1,24 @@
1
+ import StyleBuilder from '../lib/style_builder.js';
2
+ import type { StyleRules, StyleRulesOptions } from '../lib/style_builder.js';
3
+ export default class Neutrino extends StyleBuilder {
4
+ readonly name: string;
5
+ fonts: {
6
+ regular: string;
7
+ bold: string;
8
+ };
9
+ colors: {
10
+ land: string;
11
+ water: string;
12
+ grass: string;
13
+ wood: string;
14
+ agriculture: string;
15
+ site: string;
16
+ building: string;
17
+ street: string;
18
+ boundary: string;
19
+ foot: string;
20
+ rail: string;
21
+ label: string;
22
+ };
23
+ protected getStyleRules(options: StyleRulesOptions): StyleRules;
24
+ }
@@ -0,0 +1,356 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ import StyleBuilder from '../lib/style_builder.js';
3
+ export default class Neutrino extends StyleBuilder {
4
+ name = 'neutrino';
5
+ fonts = {
6
+ regular: 'noto_sans_regular',
7
+ bold: 'noto_sans_bold',
8
+ };
9
+ colors = {
10
+ land: '#f6f0f6',
11
+ water: '#cbd2df',
12
+ grass: '#e7e9e5',
13
+ wood: '#d9e3d9',
14
+ agriculture: '#f8eeee',
15
+ site: '#ebe8e6',
16
+ building: '#e0d1d9',
17
+ street: '#ffffff',
18
+ boundary: '#e6ccd8',
19
+ foot: '#fef8ff',
20
+ rail: '#e8d5e0',
21
+ label: '#cbb7b7',
22
+ };
23
+ getStyleRules(options) {
24
+ const { colors, fonts } = options;
25
+ return {
26
+ 'background': {
27
+ color: colors.land,
28
+ },
29
+ 'boundary-{country,state}': {
30
+ color: colors.boundary,
31
+ },
32
+ 'boundary-country:outline': {
33
+ size: { 2: 2, 10: 6 },
34
+ opacity: { 2: 0, 4: 0.3 },
35
+ color: colors.land.lighten(0.05),
36
+ lineBlur: 1,
37
+ },
38
+ 'boundary-country': {
39
+ size: { 2: 1, 10: 4 },
40
+ opacity: { 2: 0, 4: 1 },
41
+ },
42
+ 'boundary-state:outline': {
43
+ size: { 7: 3, 10: 5 },
44
+ opacity: { 7: 0, 8: 0.3 },
45
+ color: colors.land.lighten(0.05),
46
+ lineBlur: 1,
47
+ },
48
+ 'boundary-state': {
49
+ size: { 7: 2, 10: 3 },
50
+ opacity: { 7: 0, 8: 1 },
51
+ lineDasharray: [0, 1.5, 1, 1.5],
52
+ lineCap: 'round',
53
+ lineJoin: 'round',
54
+ },
55
+ 'water-*': {
56
+ color: colors.water,
57
+ },
58
+ 'water-area': {
59
+ opacity: { 4: 0, 6: 1 },
60
+ },
61
+ 'water-area-*': {
62
+ opacity: { 4: 0, 6: 1 },
63
+ },
64
+ 'water-{pier,dam}-area': {
65
+ color: colors.land,
66
+ opacity: { 12: 0, 13: 1 },
67
+ },
68
+ 'land-*': {
69
+ color: colors.land,
70
+ },
71
+ 'land-forest': {
72
+ color: colors.wood,
73
+ opacity: { 7: 0, 8: 1 },
74
+ },
75
+ 'land-grass': {
76
+ color: colors.grass,
77
+ opacity: { 11: 0, 12: 1 },
78
+ },
79
+ 'land-{park,garden,vegetation}': {
80
+ color: colors.grass.darken(0.05).saturate(0.05),
81
+ opacity: { 11: 0, 12: 1 },
82
+ },
83
+ 'land-agriculture': {
84
+ color: colors.agriculture,
85
+ opacity: { 10: 0, 11: 1 },
86
+ },
87
+ 'land-{commercial,industrial,residential}': {
88
+ color: colors.land.darken(0.03),
89
+ opacity: { 10: 0, 11: 1 },
90
+ },
91
+ 'site-{bicycleparking,parking}': {
92
+ color: colors.site,
93
+ },
94
+ 'building': {
95
+ color: colors.building,
96
+ opacity: { 14: 0, 15: 1 },
97
+ },
98
+ 'bridge': {
99
+ color: colors.land.darken(0.01),
100
+ },
101
+ '{tunnel-,bridge-,}street-*': {
102
+ color: colors.street,
103
+ size: 1,
104
+ lineJoin: 'round',
105
+ lineCap: 'round',
106
+ },
107
+ '{tunnel-,}street-*:outline': {
108
+ color: colors.street.darken(0.1),
109
+ lineJoin: 'round',
110
+ lineCap: 'round',
111
+ },
112
+ 'tunnel-street-*': {
113
+ color: colors.street.darken(0.03),
114
+ },
115
+ 'tunnel-street-*:outline': {
116
+ color: colors.street.darken(0.13),
117
+ lineDasharray: [1, 2],
118
+ },
119
+ 'bridge-street-*:outline': {
120
+ color: colors.street.darken(0.15),
121
+ },
122
+ // motorway
123
+ '{bridge-street,tunnel-street,street}-motorway:outline': {
124
+ size: { 5: 2, 10: 5, 14: 5, 16: 14, 18: 38, 19: 84, 20: 168 },
125
+ opacity: { 5: 0, 6: 1 },
126
+ },
127
+ '{bridge-street,tunnel-street,street}-motorway': {
128
+ size: { 5: 1, 10: 4, 14: 4, 16: 12, 18: 36, 19: 80, 20: 160 },
129
+ opacity: { 5: 0, 6: 1 },
130
+ },
131
+ // trunk
132
+ '{bridge-street,tunnel-street,street}-trunk:outline': {
133
+ size: { 7: 2, 10: 4, 14: 6, 16: 12, 18: 36, 19: 74, 20: 144 },
134
+ opacity: { 7: 0, 8: 1 },
135
+ },
136
+ '{bridge-street,tunnel-street,street}-trunk': {
137
+ size: { 7: 1, 10: 3, 14: 5, 16: 10, 18: 34, 19: 70, 20: 140 },
138
+ opacity: { 7: 0, 8: 1 },
139
+ },
140
+ // primary
141
+ '{bridge-street,tunnel-street,street}-primary:outline': {
142
+ size: { 7: 2, 10: 4, 14: 6, 16: 12, 18: 36, 19: 74, 20: 144 },
143
+ opacity: { 7: 0, 8: 1 },
144
+ },
145
+ '{bridge-street,tunnel-street,street}-primary': {
146
+ size: { 7: 1, 10: 3, 14: 5, 16: 10, 18: 34, 19: 70, 20: 140 },
147
+ opacity: { 7: 0, 8: 1 },
148
+ },
149
+ // secondary
150
+ '{bridge-street,tunnel-street,street}-secondary:outline': {
151
+ size: { 11: 2, 14: 5, 16: 8, 18: 30, 19: 68, 20: 138 },
152
+ opacity: { 11: 0, 12: 1 },
153
+ },
154
+ '{bridge-street,tunnel-street,street}-secondary': {
155
+ size: { 11: 1, 14: 4, 16: 6, 18: 28, 19: 64, 20: 130 },
156
+ opacity: { 11: 0, 12: 1 },
157
+ },
158
+ // links
159
+ '{bridge-street,tunnel-street,street}-motorway-link:outline': {
160
+ minzoom: 12,
161
+ size: { 12: 2, 14: 3, 16: 7, 18: 14, 20: 40 },
162
+ opacity: { 12: 0, 13: 1 },
163
+ },
164
+ '{bridge-street,tunnel-street,street}-motorway-link': {
165
+ minzoom: 12,
166
+ size: { 12: 1, 14: 2, 16: 5, 18: 12, 20: 38 },
167
+ opacity: { 12: 0, 13: 1 },
168
+ },
169
+ '{bridge-street,tunnel-street,street}-{trunk,primary,secondary}-link:outline': {
170
+ minzoom: 13,
171
+ size: { 12: 2, 14: 3, 16: 7, 18: 14, 20: 40 },
172
+ opacity: { 13: 0, 14: 1 },
173
+ },
174
+ '{bridge-street,tunnel-street,street}-{trunk,primary,secondary}-link': {
175
+ minzoom: 13,
176
+ size: { 12: 1, 14: 2, 16: 5, 18: 12, 20: 38 },
177
+ opacity: { 13: 0, 14: 1 },
178
+ },
179
+ // minor streets
180
+ '{bridge-street,tunnel-street,street}-{tertiary,tertiary-link,unclassified,residential,living_street,pedestrian}:outline': {
181
+ size: { 12: 2, 14: 3, 16: 6, 18: 26, 19: 64, 20: 128 },
182
+ opacity: { 12: 0, 13: 1 },
183
+ },
184
+ '{bridge-street,tunnel-street,street}-{tertiary,tertiary-link,unclassified,residential,living_street,pedestrian}': {
185
+ size: { 12: 1, 14: 2, 16: 5, 18: 24, 19: 60, 20: 120 },
186
+ opacity: { 12: 0, 13: 1 },
187
+ },
188
+ // service and tracks
189
+ '{bridge-street,tunnel-street,street}-{service,track}:outline': {
190
+ size: { 14: 2, 16: 4, 18: 18, 19: 48, 20: 96 },
191
+ opacity: { 14: 0, 15: 1 },
192
+ },
193
+ '{bridge-street,tunnel-street,street}-{service,track}': {
194
+ size: { 14: 1, 16: 3, 18: 16, 19: 44, 20: 88 },
195
+ opacity: { 14: 0, 15: 1 },
196
+ },
197
+ // ways, surface only
198
+ 'way-{footway,path,steps}:outline': {
199
+ size: { 17: 0, 18: 3 },
200
+ opacity: { 17: 0, 18: 1 },
201
+ minzoom: 17,
202
+ color: colors.foot.darken(0.05),
203
+ },
204
+ 'way-{footway,path,steps}': {
205
+ size: { 17: 0, 18: 2 },
206
+ opacity: { 17: 0, 18: 1 },
207
+ minzoom: 17,
208
+ color: colors.foot,
209
+ },
210
+ 'street-pedestrian': {
211
+ size: { 13: 1, 15: 3 },
212
+ opacity: { 13: 0, 14: 1 },
213
+ color: colors.foot,
214
+ },
215
+ 'street-pedestrian-zone': {
216
+ color: colors.foot,
217
+ opacity: { 14: 0, 15: 1 },
218
+ },
219
+ // rail
220
+ '{tunnel-,bridge-,}transport-{rail,lightrail}:outline': {
221
+ color: colors.rail,
222
+ size: { 8: 1, 12: 1, 15: 3 },
223
+ },
224
+ '{tunnel-,bridge-,}transport-{rail,lightrail}': {
225
+ color: colors.rail.lighten(0.1),
226
+ size: { 8: 1, 12: 1, 15: 2 },
227
+ lineDasharray: [2, 2],
228
+ },
229
+ // bridge
230
+ '{bridge-,}transport-rail:outline': {
231
+ opacity: { 8: 0, 9: 1 },
232
+ },
233
+ '{bridge-,}transport-rail': {
234
+ opacity: { 14: 0, 15: 1 },
235
+ },
236
+ '{bridge-,}transport-lightrail:outline': {
237
+ opacity: { 11: 0, 12: 1 },
238
+ },
239
+ '{bridge-,}transport-lightrail': {
240
+ opacity: { 14: 0, 15: 1 },
241
+ },
242
+ // tunnel
243
+ 'tunnel-transport-rail:outline': {
244
+ opacity: { 8: 0, 9: 0.3 },
245
+ },
246
+ 'tunnel-transport-rail': {
247
+ opacity: { 14: 0, 15: 0.3 },
248
+ },
249
+ 'tunnel-transport-lightrail:outline': {
250
+ opacity: { 11: 0, 12: 0.3 },
251
+ },
252
+ 'tunnel-transport-lightrail': {
253
+ opacity: { 14: 0, 15: 0.3 },
254
+ },
255
+ // labels
256
+ 'label-boundary-*': {
257
+ color: colors.label,
258
+ font: fonts.bold,
259
+ textTransform: 'uppercase',
260
+ textHaloColor: colors.label.lighten(0.5),
261
+ textHaloWidth: 0.1,
262
+ textHaloBlur: 1,
263
+ },
264
+ 'label-boundary-country-large': {
265
+ minzoom: 2,
266
+ size: { 2: 11, 5: 16 },
267
+ },
268
+ 'label-boundary-country-medium': {
269
+ minzoom: 3,
270
+ size: { 3: 11, 5: 15 },
271
+ },
272
+ 'label-boundary-country-small': {
273
+ minzoom: 4,
274
+ size: { 4: 11, 5: 14 },
275
+ },
276
+ 'label-boundary-state': {
277
+ minzoom: 5,
278
+ color: colors.label.lighten(0.05),
279
+ size: { 5: 8, 8: 12 },
280
+ },
281
+ 'label-place-*': {
282
+ color: colors.label.rotate(-15).saturate(1).darken(0.05),
283
+ font: fonts.regular,
284
+ textHaloColor: colors.label.lighten(0.5),
285
+ textHaloWidth: 0.1,
286
+ textHaloBlur: 1,
287
+ size: 1,
288
+ },
289
+ 'label-place-capital': {
290
+ minzoom: 5,
291
+ size: { 5: 12, 10: 16 },
292
+ },
293
+ 'label-place-statecapital': {
294
+ minzoom: 6,
295
+ size: { 6: 11, 10: 15 },
296
+ },
297
+ 'label-place-city': {
298
+ minzoom: 7,
299
+ size: { 7: 11, 10: 14 },
300
+ },
301
+ 'label-place-town': {
302
+ minzoom: 8,
303
+ size: { 8: 11, 12: 14 },
304
+ },
305
+ 'label-place-village': {
306
+ minzoom: 9,
307
+ size: { 9: 11, 12: 14 },
308
+ },
309
+ 'label-place-hamlet': {
310
+ minzoom: 10,
311
+ size: { 10: 11, 12: 14 },
312
+ },
313
+ // all the city things
314
+ 'label-place-suburb': {
315
+ minzoom: 11,
316
+ size: { 11: 11, 13: 14 },
317
+ textTransform: 'uppercase',
318
+ color: colors.label.rotate(-30).saturate(1).darken(0.05),
319
+ },
320
+ 'label-place-quarter': {
321
+ minzoom: 13,
322
+ size: { 13: 13 },
323
+ textTransform: 'uppercase',
324
+ color: colors.label.rotate(-40).saturate(1).darken(0.05),
325
+ },
326
+ 'label-place-neighbourhood': {
327
+ minzoom: 14,
328
+ size: { 14: 12 },
329
+ textTransform: 'uppercase',
330
+ color: colors.label.rotate(-50).saturate(1).darken(0.05),
331
+ },
332
+ 'label-motorway-shield': {
333
+ color: colors.label,
334
+ font: fonts.regular,
335
+ textHaloColor: colors.label.desaturate(0.5).lighten(0.1),
336
+ textHaloWidth: 0.1,
337
+ textHaloBlur: 1,
338
+ symbolPlacement: 'line',
339
+ textAnchor: 'center',
340
+ minzoom: 14,
341
+ size: { 14: 8, 18: 10, 20: 16 },
342
+ },
343
+ 'label-street-*': {
344
+ color: colors.label,
345
+ font: fonts.regular,
346
+ textHaloColor: colors.label.desaturate(0.5).lighten(0.1),
347
+ textHaloWidth: 0.1,
348
+ textHaloBlur: 1,
349
+ symbolPlacement: 'line',
350
+ textAnchor: 'center',
351
+ minzoom: 12,
352
+ size: { 12: 10, 15: 13 },
353
+ },
354
+ };
355
+ }
356
+ }
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@versatiles/style",
3
+ "version": "3.4.0",
4
+ "description": "Generate StyleJSON for MapLibre",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "complete-check": "npm run lint && npm run build && npm run test",
9
+ "build": "npm run build-browser && npm run build-node && npm run build-styles",
10
+ "build-browser": "rollup -c=rollup.config.js",
11
+ "build-node": "rm -rf dist && tsc -p tsconfig.node.json",
12
+ "build-styles": "tsx scripts/build-styles.ts",
13
+ "lint": "eslint .",
14
+ "release": "tsx scripts/release.ts",
15
+ "test": "npm run test-node && npm run test-coverage && npm run test-browser",
16
+ "test-browser": "npm run build-browser && echo 'add browser test'",
17
+ "test-coverage": "NODE_OPTIONS=--experimental-vm-modules jest -c=jest.config.coverage.ts",
18
+ "test-node": "npm run build-node && NODE_OPTIONS=--experimental-vm-modules jest -c=jest.config.node.ts"
19
+ },
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/versatiles-org/versatiles-styles.git"
23
+ },
24
+ "author": "yetzt <versatiles@yetzt.me>, Michael Kreil <versatiles@michael-kreil.de>",
25
+ "license": "MIT",
26
+ "type": "module",
27
+ "dependencies": {
28
+ "@types/color": "^3.0.5",
29
+ "@types/mapbox-gl": "^2.7.17",
30
+ "brace-expansion": "^3.0.0",
31
+ "color": "^4.2.3"
32
+ },
33
+ "files": [
34
+ "dist/**/*.js",
35
+ "dist/**/*.d.ts"
36
+ ],
37
+ "devDependencies": {
38
+ "@maplibre/maplibre-gl-style-spec": "^19.3.3",
39
+ "@rollup/plugin-commonjs": "^25.0.7",
40
+ "@rollup/plugin-node-resolve": "^15.2.3",
41
+ "@rollup/plugin-terser": "^0.4.4",
42
+ "@rollup/plugin-typescript": "^11.1.5",
43
+ "@types/brace-expansion": "^1.1.1",
44
+ "@types/inquirer": "^9.0.6",
45
+ "@types/jest": "^29.5.7",
46
+ "@types/node": "^20.8.10",
47
+ "@typescript-eslint/eslint-plugin": "^6.10.0",
48
+ "@typescript-eslint/parser": "^6.10.0",
49
+ "eslint": "^8.53.0",
50
+ "inquirer": "^9.2.11",
51
+ "jest": "^29.7.0",
52
+ "jest-ts-webcompat-resolver": "^1.0.0",
53
+ "rollup": "^4.3.0",
54
+ "rollup-plugin-dts": "^6.1.0",
55
+ "ts-jest": "^29.1.1",
56
+ "ts-node": "^10.9.1",
57
+ "tsx": "^3.14.0",
58
+ "typescript": "^5.2.2"
59
+ }
60
+ }