@seamos/map-preset 0.1.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.
package/dist/index.cjs ADDED
@@ -0,0 +1,600 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/index.ts
31
+ var index_exports = {};
32
+ __export(index_exports, {
33
+ STYLE_PRESETS: () => STYLE_PRESETS,
34
+ createSeamOSMap: () => createSeamOSMap
35
+ });
36
+ module.exports = __toCommonJS(index_exports);
37
+
38
+ // src/createSeamOSMap.ts
39
+ var import_maplibre_gl2 = __toESM(require("maplibre-gl"), 1);
40
+
41
+ // src/pmtiles/protocol.ts
42
+ var import_maplibre_gl = __toESM(require("maplibre-gl"), 1);
43
+ var import_pmtiles = require("pmtiles");
44
+ var installed = false;
45
+ function ensurePmtilesProtocol() {
46
+ if (installed) return;
47
+ const protocol = new import_pmtiles.Protocol();
48
+ import_maplibre_gl.default.addProtocol("pmtiles", protocol.tile);
49
+ installed = true;
50
+ }
51
+
52
+ // src/presets/basic.json
53
+ var basic_default = {
54
+ version: 8,
55
+ name: "Korea OMT Lite",
56
+ sources: {
57
+ korea: {
58
+ type: "vector",
59
+ url: "pmtiles://{{PMTILES_BASE}}/korea_v1.0.0.pmtiles"
60
+ }
61
+ },
62
+ layers: [
63
+ { id: "bg", type: "background", paint: { "background-color": "#94c2e3" } },
64
+ {
65
+ id: "landcover",
66
+ type: "fill",
67
+ source: "korea",
68
+ "source-layer": "landcover",
69
+ paint: { "fill-color": "#d9e8c9", "fill-opacity": 0.8 }
70
+ },
71
+ {
72
+ id: "landuse",
73
+ type: "fill",
74
+ source: "korea",
75
+ "source-layer": "landuse",
76
+ paint: { "fill-color": "#e4efd7", "fill-opacity": 0.85 }
77
+ },
78
+ {
79
+ id: "landuse-farmland",
80
+ type: "fill",
81
+ source: "korea",
82
+ "source-layer": "landcover",
83
+ filter: [
84
+ "any",
85
+ ["==", ["get", "class"], "farmland"],
86
+ ["==", ["get", "class"], "farm"],
87
+ ["==", ["get", "class"], "orchard"],
88
+ ["==", ["get", "class"], "vineyard"],
89
+ ["==", ["get", "class"], "plant_nursery"],
90
+ ["==", ["get", "class"], "greenhouse_horticulture"]
91
+ ],
92
+ paint: {
93
+ "fill-color": "#eb5b6c",
94
+ "fill-opacity": 0.9
95
+ }
96
+ },
97
+ {
98
+ id: "landuse-paddy",
99
+ type: "fill",
100
+ source: "korea",
101
+ "source-layer": "landcover",
102
+ filter: [
103
+ "any",
104
+ ["==", ["get", "class"], "paddy"],
105
+ ["==", ["get", "subclass"], "paddy"],
106
+ ["==", ["get", "subclass"], "rice"]
107
+ ],
108
+ paint: {
109
+ "fill-color": "#c8f0d6",
110
+ "fill-opacity": 0.95
111
+ }
112
+ },
113
+ {
114
+ id: "landuse-agri-other",
115
+ type: "fill",
116
+ source: "korea",
117
+ "source-layer": "landcover",
118
+ filter: [
119
+ "any",
120
+ ["==", ["get", "class"], "orchard"],
121
+ ["==", ["get", "class"], "vineyard"],
122
+ ["==", ["get", "class"], "plant_nursery"],
123
+ ["==", ["get", "class"], "greenhouse_horticulture"]
124
+ ],
125
+ paint: {
126
+ "fill-color": "#f0e9b8",
127
+ "fill-opacity": 0.9
128
+ }
129
+ },
130
+ {
131
+ id: "park",
132
+ type: "fill",
133
+ source: "korea",
134
+ "source-layer": "park",
135
+ paint: { "fill-color": "#cfe8b4", "fill-opacity": 0.9 }
136
+ },
137
+ {
138
+ id: "water",
139
+ type: "fill",
140
+ source: "korea",
141
+ "source-layer": "water",
142
+ paint: { "fill-color": "#a8d2f0" }
143
+ },
144
+ {
145
+ id: "waterway",
146
+ type: "line",
147
+ source: "korea",
148
+ "source-layer": "waterway",
149
+ paint: { "line-color": "#7fbbe0", "line-width": ["interpolate", ["linear"], ["zoom"], 8, 0.5, 14, 2.5] }
150
+ },
151
+ {
152
+ id: "buildings",
153
+ type: "fill",
154
+ source: "korea",
155
+ "source-layer": "building",
156
+ minzoom: 13,
157
+ paint: { "fill-color": "#d7d2cc", "fill-opacity": 0.8 }
158
+ },
159
+ {
160
+ id: "roads",
161
+ type: "line",
162
+ source: "korea",
163
+ "source-layer": "transportation",
164
+ paint: {
165
+ "line-color": "#ffffff",
166
+ "line-width": ["interpolate", ["linear"], ["zoom"], 6, 0.4, 10, 1.6, 14, 5],
167
+ "line-opacity": 0.95
168
+ }
169
+ },
170
+ {
171
+ id: "roads-outline",
172
+ type: "line",
173
+ source: "korea",
174
+ "source-layer": "transportation",
175
+ paint: {
176
+ "line-color": "#c9c3bb",
177
+ "line-width": ["interpolate", ["linear"], ["zoom"], 6, 0.8, 10, 2.2, 14, 6],
178
+ "line-opacity": 0.5
179
+ }
180
+ },
181
+ {
182
+ id: "place-label",
183
+ type: "symbol",
184
+ source: "korea",
185
+ "source-layer": "place",
186
+ layout: {
187
+ "text-field": ["coalesce", ["get", "name:latin"], ["get", "name"]],
188
+ "text-font": ["Noto Sans Regular"],
189
+ "text-size": ["interpolate", ["linear"], ["zoom"], 5, 10, 12, 14],
190
+ "text-allow-overlap": false
191
+ },
192
+ paint: { "text-color": "#2b2b2b", "text-halo-color": "#ffffff", "text-halo-width": 1.2 }
193
+ },
194
+ {
195
+ id: "road-label",
196
+ type: "symbol",
197
+ source: "korea",
198
+ "source-layer": "transportation_name",
199
+ minzoom: 12,
200
+ layout: {
201
+ "symbol-placement": "line",
202
+ "text-field": ["coalesce", ["get", "name:latin"], ["get", "name"], ["get", "ref"]],
203
+ "text-font": ["Noto Sans Regular"],
204
+ "text-size": 11
205
+ },
206
+ paint: { "text-color": "#4b4b4b", "text-halo-color": "#ffffff", "text-halo-width": 1 }
207
+ }
208
+ ]
209
+ };
210
+
211
+ // src/presets/terrain.json
212
+ var terrain_default = {
213
+ version: 8,
214
+ name: "Korea Farm Basemap (OMT z<=14 + Terrain z6~12, vivid)",
215
+ sources: {
216
+ korea: {
217
+ type: "vector",
218
+ url: "pmtiles://{{PMTILES_BASE}}/korea_v1.0.0.pmtiles"
219
+ },
220
+ terrain: {
221
+ type: "raster-dem",
222
+ url: "pmtiles://{{PMTILES_BASE}}/korea_terrain_v1.0.0.pmtiles",
223
+ tileSize: 256,
224
+ encoding: "mapbox"
225
+ }
226
+ },
227
+ terrain: {
228
+ source: "terrain",
229
+ exaggeration: 1.4
230
+ },
231
+ layers: [
232
+ {
233
+ id: "background",
234
+ type: "background",
235
+ paint: {
236
+ "background-color": "#8ab7da"
237
+ }
238
+ },
239
+ {
240
+ id: "hillshade",
241
+ type: "hillshade",
242
+ source: "terrain",
243
+ paint: {
244
+ "hillshade-shadow-color": "#2b2b2b",
245
+ "hillshade-highlight-color": "#ffffff",
246
+ "hillshade-accent-color": "#9a9a9a",
247
+ "hillshade-exaggeration": 0.35,
248
+ "hillshade-illumination-anchor": "viewport"
249
+ }
250
+ },
251
+ {
252
+ id: "water-fill",
253
+ type: "fill",
254
+ source: "korea",
255
+ "source-layer": "water",
256
+ paint: {
257
+ "fill-color": "#4fb3ff",
258
+ "fill-opacity": 0.78
259
+ }
260
+ },
261
+ {
262
+ id: "landcover-base",
263
+ type: "fill",
264
+ source: "korea",
265
+ "source-layer": "landcover",
266
+ paint: {
267
+ "fill-color": [
268
+ "match",
269
+ ["get", "class"],
270
+ "wood",
271
+ "#84b07a",
272
+ "grass",
273
+ "#a6cf85",
274
+ "scrub",
275
+ "#9fc27e",
276
+ "wetland",
277
+ "#7fc7ad",
278
+ "#b8d8a7"
279
+ ],
280
+ "fill-opacity": 0.2
281
+ }
282
+ },
283
+ {
284
+ id: "landuse-base",
285
+ type: "fill",
286
+ source: "korea",
287
+ "source-layer": "landuse",
288
+ paint: {
289
+ "fill-color": [
290
+ "match",
291
+ ["get", "class"],
292
+ "residential",
293
+ "#e6d3bf",
294
+ "commercial",
295
+ "#e1c2c2",
296
+ "industrial",
297
+ "#d1c8c8",
298
+ "park",
299
+ "#98d28e",
300
+ "cemetery",
301
+ "#9ecaa8",
302
+ "forest",
303
+ "#88b97c",
304
+ "farmland",
305
+ "#bf1d35",
306
+ "farm",
307
+ "#b7ea7a",
308
+ "orchard",
309
+ "#9fe06a",
310
+ "vineyard",
311
+ "#a8df74",
312
+ "#cfe3b2"
313
+ ],
314
+ "fill-opacity": 0.9
315
+ }
316
+ },
317
+ {
318
+ id: "farm-accent",
319
+ type: "fill",
320
+ source: "korea",
321
+ "source-layer": "landcover",
322
+ filter: [
323
+ "any",
324
+ ["==", ["get", "class"], "farmland"],
325
+ ["==", ["get", "class"], "farm"],
326
+ ["==", ["get", "class"], "orchard"],
327
+ ["==", ["get", "class"], "vineyard"],
328
+ ["==", ["get", "subclass"], "farmland"],
329
+ ["==", ["get", "subclass"], "orchard"]
330
+ ],
331
+ paint: {
332
+ "fill-color": "#bf1d35",
333
+ "fill-opacity": 0.22
334
+ }
335
+ },
336
+ {
337
+ id: "waterway-line",
338
+ type: "line",
339
+ source: "korea",
340
+ "source-layer": "waterway",
341
+ paint: {
342
+ "line-color": "#1a7fe0",
343
+ "line-opacity": 0.9,
344
+ "line-width": [
345
+ "interpolate",
346
+ ["linear"],
347
+ ["zoom"],
348
+ 7,
349
+ 0.6,
350
+ 10,
351
+ 1.5,
352
+ 12,
353
+ 2.4,
354
+ 14,
355
+ 3.2,
356
+ 16,
357
+ 4
358
+ ]
359
+ }
360
+ },
361
+ {
362
+ id: "transportation-casing",
363
+ type: "line",
364
+ source: "korea",
365
+ "source-layer": "transportation",
366
+ paint: {
367
+ "line-color": "rgba(0,0,0,0.35)",
368
+ "line-width": [
369
+ "interpolate",
370
+ ["linear"],
371
+ ["zoom"],
372
+ 7,
373
+ 1.2,
374
+ 10,
375
+ 3,
376
+ 12,
377
+ 4.2,
378
+ 14,
379
+ 5.4,
380
+ 16,
381
+ 6.2
382
+ ],
383
+ "line-opacity": 0.5
384
+ }
385
+ },
386
+ {
387
+ id: "transportation-line",
388
+ type: "line",
389
+ source: "korea",
390
+ "source-layer": "transportation",
391
+ paint: {
392
+ "line-color": [
393
+ "match",
394
+ ["get", "class"],
395
+ "motorway",
396
+ "#f0b24b",
397
+ "trunk",
398
+ "#f0b24b",
399
+ "primary",
400
+ "#f1c06a",
401
+ "secondary",
402
+ "#f4d28a",
403
+ "tertiary",
404
+ "#f0e0b6",
405
+ "track",
406
+ "#d6c08a",
407
+ "path",
408
+ "#d9d1c3",
409
+ "#f0e0b6"
410
+ ],
411
+ "line-opacity": 0.85,
412
+ "line-width": [
413
+ "interpolate",
414
+ ["linear"],
415
+ ["zoom"],
416
+ 7,
417
+ 0.7,
418
+ 10,
419
+ 2,
420
+ 12,
421
+ 2.8,
422
+ 14,
423
+ 3.6,
424
+ 16,
425
+ 4.2
426
+ ]
427
+ }
428
+ },
429
+ {
430
+ id: "landuse-outline-glow",
431
+ type: "line",
432
+ source: "korea",
433
+ "source-layer": "landuse",
434
+ paint: {
435
+ "line-color": "rgba(0,0,0,0.20)",
436
+ "line-opacity": 0.18,
437
+ "line-width": [
438
+ "interpolate",
439
+ ["linear"],
440
+ ["zoom"],
441
+ 8,
442
+ 1.2,
443
+ 12,
444
+ 2.6,
445
+ 16,
446
+ 4
447
+ ]
448
+ }
449
+ },
450
+ {
451
+ id: "landuse-outline",
452
+ type: "line",
453
+ source: "korea",
454
+ "source-layer": "landuse",
455
+ paint: {
456
+ "line-color": "rgba(255,255,255,0.92)",
457
+ "line-opacity": [
458
+ "interpolate",
459
+ ["linear"],
460
+ ["zoom"],
461
+ 8,
462
+ 0.16,
463
+ 12,
464
+ 0.3,
465
+ 16,
466
+ 0.42
467
+ ],
468
+ "line-width": [
469
+ "interpolate",
470
+ ["linear"],
471
+ ["zoom"],
472
+ 8,
473
+ 0.35,
474
+ 12,
475
+ 0.95,
476
+ 16,
477
+ 1.4
478
+ ]
479
+ }
480
+ },
481
+ {
482
+ id: "farm-outline",
483
+ type: "line",
484
+ source: "korea",
485
+ "source-layer": "landcover",
486
+ filter: [
487
+ "any",
488
+ ["==", ["get", "class"], "farmland"],
489
+ ["==", ["get", "class"], "farm"],
490
+ ["==", ["get", "class"], "orchard"],
491
+ ["==", ["get", "class"], "vineyard"],
492
+ ["==", ["get", "subclass"], "farmland"],
493
+ ["==", ["get", "subclass"], "orchard"]
494
+ ],
495
+ paint: {
496
+ "line-color": "#bf1d35",
497
+ "line-opacity": 0.9,
498
+ "line-width": [
499
+ "interpolate",
500
+ ["linear"],
501
+ ["zoom"],
502
+ 9,
503
+ 0.7,
504
+ 12,
505
+ 1.5,
506
+ 16,
507
+ 2.4
508
+ ]
509
+ }
510
+ },
511
+ {
512
+ id: "building-fill",
513
+ type: "fill",
514
+ source: "korea",
515
+ "source-layer": "building",
516
+ paint: {
517
+ "fill-color": "#d7d2c9",
518
+ "fill-opacity": 0.6
519
+ }
520
+ },
521
+ {
522
+ id: "place-label",
523
+ type: "symbol",
524
+ source: "korea",
525
+ "source-layer": "place",
526
+ layout: {
527
+ "text-field": ["coalesce", ["get", "name:latin"], ["get", "name"]],
528
+ "text-font": ["Noto Sans Regular"],
529
+ "text-size": ["interpolate", ["linear"], ["zoom"], 5, 10, 12, 14],
530
+ "text-allow-overlap": false
531
+ },
532
+ paint: { "text-color": "#2b2b2b", "text-halo-color": "#ffffff", "text-halo-width": 1.2 }
533
+ },
534
+ {
535
+ id: "road-label",
536
+ type: "symbol",
537
+ source: "korea",
538
+ "source-layer": "transportation_name",
539
+ minzoom: 12,
540
+ layout: {
541
+ "symbol-placement": "line",
542
+ "text-field": ["coalesce", ["get", "name:latin"], ["get", "name"], ["get", "ref"]],
543
+ "text-font": ["Noto Sans Regular"],
544
+ "text-size": 11
545
+ },
546
+ paint: { "text-color": "#4b4b4b", "text-halo-color": "#ffffff", "text-halo-width": 1 }
547
+ }
548
+ ]
549
+ };
550
+
551
+ // src/presets/index.ts
552
+ var STYLE_PRESETS = {
553
+ basic: basic_default,
554
+ terrain: terrain_default
555
+ };
556
+
557
+ // src/style/resolveStyle.ts
558
+ function deepClone(obj) {
559
+ return JSON.parse(JSON.stringify(obj));
560
+ }
561
+ function replaceTokensInString(s, tokens) {
562
+ let out = s;
563
+ for (const [k, v] of Object.entries(tokens)) {
564
+ out = out.replaceAll(`{{${k}}}`, v);
565
+ }
566
+ return out;
567
+ }
568
+ function deepReplace(obj, tokens) {
569
+ if (typeof obj === "string") return replaceTokensInString(obj, tokens);
570
+ if (Array.isArray(obj)) return obj.map((v) => deepReplace(v, tokens));
571
+ if (obj && typeof obj === "object") {
572
+ const out = {};
573
+ for (const [k, v] of Object.entries(obj)) out[k] = deepReplace(v, tokens);
574
+ return out;
575
+ }
576
+ return obj;
577
+ }
578
+ function resolveStyleTemplate(template, tokens) {
579
+ return deepReplace(deepClone(template), tokens);
580
+ }
581
+
582
+ // src/createSeamOSMap.ts
583
+ function createSeamOSMap(opts) {
584
+ ensurePmtilesProtocol();
585
+ let pmtilesBaseUrl = opts.env === "prod" ? "/maps" : "https://seamos-lib.s3.ap-northeast-2.amazonaws.com/pmtiles";
586
+ const template = STYLE_PRESETS[opts.preset];
587
+ const style = resolveStyleTemplate(template, { PMTILES_BASE: pmtilesBaseUrl });
588
+ const map = new import_maplibre_gl2.default.Map({
589
+ container: opts.container,
590
+ style,
591
+ ...opts.maplibre
592
+ });
593
+ return map;
594
+ }
595
+ // Annotate the CommonJS export names for ESM import in node:
596
+ 0 && (module.exports = {
597
+ STYLE_PRESETS,
598
+ createSeamOSMap
599
+ });
600
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/createSeamOSMap.ts","../src/pmtiles/protocol.ts","../src/presets/basic.json","../src/presets/terrain.json","../src/presets/index.ts","../src/style/resolveStyle.ts"],"sourcesContent":["export { createSeamOSMap } from \"./createSeamOSMap\";\nexport type { CreateSeamOSMapOptions, SeamOSEnv } from \"./createSeamOSMap\";\nexport { STYLE_PRESETS } from \"./presets\";\nexport type { StylePresetName } from \"./presets\";","import maplibregl, { Map } from \"maplibre-gl\";\nimport { ensurePmtilesProtocol } from \"./pmtiles/protocol\";\nimport { STYLE_PRESETS, type StylePresetName } from \"./presets\";\nimport { resolveStyleTemplate } from \"./style/resolveStyle\";\n\nexport type SeamOSEnv = \"dev\" | \"prod\";\n\nexport type CreateSeamOSMapOptions = {\n container: string | HTMLElement;\n preset: StylePresetName;\n env: SeamOSEnv;\n maplibre?: Omit<maplibregl.MapOptions, \"container\" | \"style\">;\n onLoad?: (map: Map) => void;\n};\n\nexport function createSeamOSMap(opts: CreateSeamOSMapOptions) {\n ensurePmtilesProtocol();\n\n let pmtilesBaseUrl = opts.env === 'prod' ? \n \"/maps\"\n : \"https://seamos-lib.s3.ap-northeast-2.amazonaws.com/pmtiles\";\n \n const template = STYLE_PRESETS[opts.preset] as any;\n\n const style = resolveStyleTemplate(template, { PMTILES_BASE: pmtilesBaseUrl });\n\n const map = new maplibregl.Map({\n container: opts.container,\n style,\n ...opts.maplibre,\n });\n\n return map;\n}","import maplibregl from \"maplibre-gl\";\nimport { Protocol } from \"pmtiles\";\n\nlet installed = false;\n\nexport function ensurePmtilesProtocol() {\n if (installed) return;\n\n const protocol = new Protocol();\n maplibregl.addProtocol(\"pmtiles\", protocol.tile);\n \n installed = true;\n}","{\n \"version\": 8,\n \"name\": \"Korea OMT Lite\",\n \"sources\": {\n \"korea\": {\n \"type\": \"vector\",\n \"url\": \"pmtiles://{{PMTILES_BASE}}/korea_v1.0.0.pmtiles\"\n }\n },\n\n \"layers\": [\n { \"id\": \"bg\", \"type\": \"background\", \"paint\": { \"background-color\": \"#94c2e3\" } },\n \n {\n \"id\": \"landcover\",\n \"type\": \"fill\",\n \"source\": \"korea\",\n \"source-layer\": \"landcover\",\n \"paint\": { \"fill-color\": \"#d9e8c9\", \"fill-opacity\": 0.8 }\n },\n {\n \"id\": \"landuse\",\n \"type\": \"fill\",\n \"source\": \"korea\",\n \"source-layer\": \"landuse\",\n \"paint\": { \"fill-color\": \"#e4efd7\", \"fill-opacity\": 0.85 }\n },\n\n {\n \"id\": \"landuse-farmland\",\n \"type\": \"fill\",\n \"source\": \"korea\",\n \"source-layer\": \"landcover\",\n \"filter\": [\"any\",\n [\"==\", [\"get\", \"class\"], \"farmland\"],\n [\"==\", [\"get\", \"class\"], \"farm\"],\n [\"==\", [\"get\", \"class\"], \"orchard\"],\n [\"==\", [\"get\", \"class\"], \"vineyard\"],\n [\"==\", [\"get\", \"class\"], \"plant_nursery\"],\n [\"==\", [\"get\", \"class\"], \"greenhouse_horticulture\"]\n ],\n \"paint\": {\n \"fill-color\": \"#eb5b6c\",\n \"fill-opacity\": 0.9\n }\n },\n\n {\n \"id\": \"landuse-paddy\",\n \"type\": \"fill\",\n \"source\": \"korea\",\n \"source-layer\": \"landcover\",\n \"filter\": [\"any\",\n [\"==\", [\"get\", \"class\"], \"paddy\"],\n [\"==\", [\"get\", \"subclass\"], \"paddy\"],\n [\"==\", [\"get\", \"subclass\"], \"rice\"]\n ],\n \"paint\": {\n \"fill-color\": \"#c8f0d6\",\n \"fill-opacity\": 0.95\n }\n },\n {\n \"id\": \"landuse-agri-other\",\n \"type\": \"fill\",\n \"source\": \"korea\",\n \"source-layer\": \"landcover\",\n \"filter\": [\"any\",\n [\"==\", [\"get\", \"class\"], \"orchard\"],\n [\"==\", [\"get\", \"class\"], \"vineyard\"],\n [\"==\", [\"get\", \"class\"], \"plant_nursery\"],\n [\"==\", [\"get\", \"class\"], \"greenhouse_horticulture\"]\n ],\n \"paint\": {\n \"fill-color\": \"#f0e9b8\",\n \"fill-opacity\": 0.9\n }\n },\n\n {\n \"id\": \"park\",\n \"type\": \"fill\",\n \"source\": \"korea\",\n \"source-layer\": \"park\",\n \"paint\": { \"fill-color\": \"#cfe8b4\", \"fill-opacity\": 0.9 }\n },\n\n {\n \"id\": \"water\",\n \"type\": \"fill\",\n \"source\": \"korea\",\n \"source-layer\": \"water\",\n \"paint\": { \"fill-color\": \"#a8d2f0\" }\n },\n {\n \"id\": \"waterway\",\n \"type\": \"line\",\n \"source\": \"korea\",\n \"source-layer\": \"waterway\",\n \"paint\": { \"line-color\": \"#7fbbe0\", \"line-width\": [\"interpolate\", [\"linear\"], [\"zoom\"], 8, 0.5, 14, 2.5] }\n },\n\n {\n \"id\": \"buildings\",\n \"type\": \"fill\",\n \"source\": \"korea\",\n \"source-layer\": \"building\",\n \"minzoom\": 13,\n \"paint\": { \"fill-color\": \"#d7d2cc\", \"fill-opacity\": 0.8 }\n },\n\n {\n \"id\": \"roads\",\n \"type\": \"line\",\n \"source\": \"korea\",\n \"source-layer\": \"transportation\",\n \"paint\": {\n \"line-color\": \"#ffffff\",\n \"line-width\": [\"interpolate\", [\"linear\"], [\"zoom\"], 6, 0.4, 10, 1.6, 14, 5],\n \"line-opacity\": 0.95\n }\n },\n\n {\n \"id\": \"roads-outline\",\n \"type\": \"line\",\n \"source\": \"korea\",\n \"source-layer\": \"transportation\",\n \"paint\": {\n \"line-color\": \"#c9c3bb\",\n \"line-width\": [\"interpolate\", [\"linear\"], [\"zoom\"], 6, 0.8, 10, 2.2, 14, 6],\n \"line-opacity\": 0.5\n }\n },\n\n {\n \"id\": \"place-label\",\n \"type\": \"symbol\",\n \"source\": \"korea\",\n \"source-layer\": \"place\",\n \"layout\": {\n \"text-field\": [\"coalesce\", [\"get\", \"name:latin\"], [\"get\", \"name\"]],\n \"text-font\": [\"Noto Sans Regular\"],\n \"text-size\": [\"interpolate\", [\"linear\"], [\"zoom\"], 5, 10, 12, 14],\n \"text-allow-overlap\": false\n },\n \"paint\": { \"text-color\": \"#2b2b2b\", \"text-halo-color\": \"#ffffff\", \"text-halo-width\": 1.2 }\n },\n\n {\n \"id\": \"road-label\",\n \"type\": \"symbol\",\n \"source\": \"korea\",\n \"source-layer\": \"transportation_name\",\n \"minzoom\": 12,\n \"layout\": {\n \"symbol-placement\": \"line\",\n \"text-field\": [\"coalesce\", [\"get\", \"name:latin\"], [\"get\", \"name\"], [\"get\", \"ref\"]],\n \"text-font\": [\"Noto Sans Regular\"],\n \"text-size\": 11\n },\n \"paint\": { \"text-color\": \"#4b4b4b\", \"text-halo-color\": \"#ffffff\", \"text-halo-width\": 1.0 }\n }\n ]\n}","{\n \"version\": 8,\n \"name\": \"Korea Farm Basemap (OMT z<=14 + Terrain z6~12, vivid)\",\n \"sources\": {\n \"korea\": {\n \"type\": \"vector\",\n \"url\": \"pmtiles://{{PMTILES_BASE}}/korea_v1.0.0.pmtiles\"\n },\n \"terrain\": {\n \"type\": \"raster-dem\",\n \"url\": \"pmtiles://{{PMTILES_BASE}}/korea_terrain_v1.0.0.pmtiles\",\n \"tileSize\": 256,\n \"encoding\": \"mapbox\"\n }\n },\n \"terrain\": {\n \"source\": \"terrain\",\n \"exaggeration\": 1.4\n },\n \"layers\": [\n {\n \"id\": \"background\",\n \"type\": \"background\",\n \"paint\": {\n \"background-color\": \"#8ab7da\"\n }\n },\n {\n \"id\": \"hillshade\",\n \"type\": \"hillshade\",\n \"source\": \"terrain\",\n \"paint\": {\n \"hillshade-shadow-color\": \"#2b2b2b\",\n \"hillshade-highlight-color\": \"#ffffff\",\n \"hillshade-accent-color\": \"#9a9a9a\",\n \"hillshade-exaggeration\": 0.35,\n \"hillshade-illumination-anchor\": \"viewport\"\n }\n },\n {\n \"id\": \"water-fill\",\n \"type\": \"fill\",\n \"source\": \"korea\",\n \"source-layer\": \"water\",\n \"paint\": {\n \"fill-color\": \"#4fb3ff\",\n \"fill-opacity\": 0.78\n }\n },\n {\n \"id\": \"landcover-base\",\n \"type\": \"fill\",\n \"source\": \"korea\",\n \"source-layer\": \"landcover\",\n \"paint\": {\n \"fill-color\": [\n \"match\",\n [\"get\", \"class\"],\n \"wood\",\n \"#84b07a\",\n \"grass\",\n \"#a6cf85\",\n \"scrub\",\n \"#9fc27e\",\n \"wetland\",\n \"#7fc7ad\",\n \"#b8d8a7\"\n ],\n \"fill-opacity\": 0.20\n }\n },\n {\n \"id\": \"landuse-base\",\n \"type\": \"fill\",\n \"source\": \"korea\",\n \"source-layer\": \"landuse\",\n \"paint\": {\n \"fill-color\": [\n \"match\",\n [\"get\", \"class\"],\n \"residential\",\n \"#e6d3bf\",\n \"commercial\",\n \"#e1c2c2\",\n \"industrial\",\n \"#d1c8c8\",\n \"park\",\n \"#98d28e\",\n \"cemetery\",\n \"#9ecaa8\",\n \"forest\",\n \"#88b97c\",\n \"farmland\",\n \"#bf1d35\",\n \"farm\",\n \"#b7ea7a\",\n \"orchard\",\n \"#9fe06a\",\n \"vineyard\",\n \"#a8df74\",\n \"#cfe3b2\"\n ],\n \"fill-opacity\": 0.90\n }\n },\n {\n \"id\": \"farm-accent\",\n \"type\": \"fill\",\n \"source\": \"korea\",\n \"source-layer\": \"landcover\",\n \"filter\": [\n \"any\",\n [\"==\", [\"get\", \"class\"], \"farmland\"],\n [\"==\", [\"get\", \"class\"], \"farm\"],\n [\"==\", [\"get\", \"class\"], \"orchard\"],\n [\"==\", [\"get\", \"class\"], \"vineyard\"],\n [\"==\", [\"get\", \"subclass\"], \"farmland\"],\n [\"==\", [\"get\", \"subclass\"], \"orchard\"]\n ],\n \"paint\": {\n \"fill-color\": \"#bf1d35\",\n \"fill-opacity\": 0.22\n }\n },\n {\n \"id\": \"waterway-line\",\n \"type\": \"line\",\n \"source\": \"korea\",\n \"source-layer\": \"waterway\",\n \"paint\": {\n \"line-color\": \"#1a7fe0\",\n \"line-opacity\": 0.9,\n \"line-width\": [\n \"interpolate\",\n [\"linear\"],\n [\"zoom\"],\n 7,\n 0.6,\n 10,\n 1.5,\n 12,\n 2.4,\n 14,\n 3.2,\n 16,\n 4.0\n ]\n }\n },\n {\n \"id\": \"transportation-casing\",\n \"type\": \"line\",\n \"source\": \"korea\",\n \"source-layer\": \"transportation\",\n \"paint\": {\n \"line-color\": \"rgba(0,0,0,0.35)\",\n \"line-width\": [\n \"interpolate\",\n [\"linear\"],\n [\"zoom\"],\n 7,\n 1.2,\n 10,\n 3.0,\n 12,\n 4.2,\n 14,\n 5.4,\n 16,\n 6.2\n ],\n \"line-opacity\": 0.5\n }\n },\n {\n \"id\": \"transportation-line\",\n \"type\": \"line\",\n \"source\": \"korea\",\n \"source-layer\": \"transportation\",\n \"paint\": {\n \"line-color\": [\n \"match\",\n [\"get\", \"class\"],\n \"motorway\",\n \"#f0b24b\",\n \"trunk\",\n \"#f0b24b\",\n \"primary\",\n \"#f1c06a\",\n \"secondary\",\n \"#f4d28a\",\n \"tertiary\",\n \"#f0e0b6\",\n \"track\",\n \"#d6c08a\",\n \"path\",\n \"#d9d1c3\",\n \"#f0e0b6\"\n ],\n \"line-opacity\": 0.85,\n \"line-width\": [\n \"interpolate\",\n [\"linear\"],\n [\"zoom\"],\n 7,\n 0.7,\n 10,\n 2.0,\n 12,\n 2.8,\n 14,\n 3.6,\n 16,\n 4.2\n ]\n }\n },\n {\n \"id\": \"landuse-outline-glow\",\n \"type\": \"line\",\n \"source\": \"korea\",\n \"source-layer\": \"landuse\",\n \"paint\": {\n \"line-color\": \"rgba(0,0,0,0.20)\",\n \"line-opacity\": 0.18,\n \"line-width\": [\n \"interpolate\",\n [\"linear\"],\n [\"zoom\"],\n 8,\n 1.2,\n 12,\n 2.6,\n 16,\n 4.0\n ]\n }\n },\n {\n \"id\": \"landuse-outline\",\n \"type\": \"line\",\n \"source\": \"korea\",\n \"source-layer\": \"landuse\",\n \"paint\": {\n \"line-color\": \"rgba(255,255,255,0.92)\",\n \"line-opacity\": [\n \"interpolate\",\n [\"linear\"],\n [\"zoom\"],\n 8,\n 0.16,\n 12,\n 0.30,\n 16,\n 0.42\n ],\n \"line-width\": [\n \"interpolate\",\n [\"linear\"],\n [\"zoom\"],\n 8,\n 0.35,\n 12,\n 0.95,\n 16,\n 1.4\n ]\n }\n },\n {\n \"id\": \"farm-outline\",\n \"type\": \"line\",\n \"source\": \"korea\",\n \"source-layer\": \"landcover\",\n \"filter\": [\n \"any\",\n [\"==\", [\"get\", \"class\"], \"farmland\"],\n [\"==\", [\"get\", \"class\"], \"farm\"],\n [\"==\", [\"get\", \"class\"], \"orchard\"],\n [\"==\", [\"get\", \"class\"], \"vineyard\"],\n [\"==\", [\"get\", \"subclass\"], \"farmland\"],\n [\"==\", [\"get\", \"subclass\"], \"orchard\"]\n ],\n \"paint\": {\n \"line-color\": \"#bf1d35\",\n \"line-opacity\": 0.9,\n \"line-width\": [\n \"interpolate\",\n [\"linear\"],\n [\"zoom\"],\n 9,\n 0.7,\n 12,\n 1.5,\n 16,\n 2.4\n ]\n }\n },\n {\n \"id\": \"building-fill\",\n \"type\": \"fill\",\n \"source\": \"korea\",\n \"source-layer\": \"building\",\n \"paint\": {\n \"fill-color\": \"#d7d2c9\",\n \"fill-opacity\": 0.6\n }\n },\n\n {\n \"id\": \"place-label\",\n \"type\": \"symbol\",\n \"source\": \"korea\",\n \"source-layer\": \"place\",\n \"layout\": {\n \"text-field\": [\"coalesce\", [\"get\", \"name:latin\"], [\"get\", \"name\"]],\n \"text-font\": [\"Noto Sans Regular\"],\n \"text-size\": [\"interpolate\", [\"linear\"], [\"zoom\"], 5, 10, 12, 14],\n \"text-allow-overlap\": false\n },\n \"paint\": { \"text-color\": \"#2b2b2b\", \"text-halo-color\": \"#ffffff\", \"text-halo-width\": 1.2 }\n },\n\n {\n \"id\": \"road-label\",\n \"type\": \"symbol\",\n \"source\": \"korea\",\n \"source-layer\": \"transportation_name\",\n \"minzoom\": 12,\n \"layout\": {\n \"symbol-placement\": \"line\",\n \"text-field\": [\"coalesce\", [\"get\", \"name:latin\"], [\"get\", \"name\"], [\"get\", \"ref\"]],\n \"text-font\": [\"Noto Sans Regular\"],\n \"text-size\": 11\n },\n \"paint\": { \"text-color\": \"#4b4b4b\", \"text-halo-color\": \"#ffffff\", \"text-halo-width\": 1.0 }\n }\n ]\n}","import type { StyleSpecification } from \"maplibre-gl\";\nimport basic from \"./basic.json\";\nimport terrain from \"./terrain.json\";\n\nexport const STYLE_PRESETS = {\n basic: basic as StyleSpecification,\n terrain: terrain as StyleSpecification\n} as const;\n\nexport type StylePresetName = keyof typeof STYLE_PRESETS;","import type { StyleSpecification } from \"maplibre-gl\";\n\nfunction deepClone<T>(obj: T): T {\n return JSON.parse(JSON.stringify(obj));\n}\n\nfunction replaceTokensInString(s: string, tokens: Record<string, string>) {\n let out = s;\n for (const [k, v] of Object.entries(tokens)) {\n out = out.replaceAll(`{{${k}}}`, v);\n }\n\n return out;\n}\n\nfunction deepReplace(obj: any, tokens: Record<string, string>): any {\n if (typeof obj === \"string\") return replaceTokensInString(obj, tokens);\n if (Array.isArray(obj)) return obj.map((v) => deepReplace(v, tokens));\n if (obj && typeof obj === \"object\") {\n const out: any = {};\n for (const [k, v] of Object.entries(obj)) out[k] = deepReplace(v, tokens);\n \n return out;\n }\n\n return obj;\n}\n\nexport function resolveStyleTemplate(\n template: StyleSpecification,\n tokens: Record<string, string>\n): StyleSpecification {\n return deepReplace(deepClone(template), tokens) as StyleSpecification;\n}"],"mappings":"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","names":["import_maplibre_gl","maplibregl","maplibregl"]}
@@ -0,0 +1,19 @@
1
+ import maplibregl, { StyleSpecification, Map } from 'maplibre-gl';
2
+
3
+ declare const STYLE_PRESETS: {
4
+ readonly basic: StyleSpecification;
5
+ readonly terrain: StyleSpecification;
6
+ };
7
+ type StylePresetName = keyof typeof STYLE_PRESETS;
8
+
9
+ type SeamOSEnv = "dev" | "prod";
10
+ type CreateSeamOSMapOptions = {
11
+ container: string | HTMLElement;
12
+ preset: StylePresetName;
13
+ env: SeamOSEnv;
14
+ maplibre?: Omit<maplibregl.MapOptions, "container" | "style">;
15
+ onLoad?: (map: Map) => void;
16
+ };
17
+ declare function createSeamOSMap(opts: CreateSeamOSMapOptions): maplibregl.Map;
18
+
19
+ export { type CreateSeamOSMapOptions, STYLE_PRESETS, type SeamOSEnv, type StylePresetName, createSeamOSMap };