@mailwoman/cartographer 1.0.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 (100) hide show
  1. package/README.md +3 -0
  2. package/base/buildings.ts +124 -0
  3. package/base/composition.ts +119 -0
  4. package/base/index.ts +10 -0
  5. package/base/layers.ts +52 -0
  6. package/base/terrain.ts +33 -0
  7. package/base/theme.ts +118 -0
  8. package/bdc/index.ts +395 -0
  9. package/coverage/index.ts +89 -0
  10. package/hspa/index.ts +20 -0
  11. package/index.ts +12 -0
  12. package/out/base/buildings.d.ts +11 -0
  13. package/out/base/buildings.d.ts.map +1 -0
  14. package/out/base/buildings.js +109 -0
  15. package/out/base/buildings.js.map +1 -0
  16. package/out/base/composition.d.ts +33 -0
  17. package/out/base/composition.d.ts.map +1 -0
  18. package/out/base/composition.js +86 -0
  19. package/out/base/composition.js.map +1 -0
  20. package/out/base/index.d.ts +10 -0
  21. package/out/base/index.d.ts.map +1 -0
  22. package/out/base/index.js +10 -0
  23. package/out/base/index.js.map +1 -0
  24. package/out/base/layers.d.ts +9 -0
  25. package/out/base/layers.d.ts.map +1 -0
  26. package/out/base/layers.js +49 -0
  27. package/out/base/layers.js.map +1 -0
  28. package/out/base/terrain.d.ts +20 -0
  29. package/out/base/terrain.d.ts.map +1 -0
  30. package/out/base/terrain.js +29 -0
  31. package/out/base/terrain.js.map +1 -0
  32. package/out/base/theme.d.ts +20 -0
  33. package/out/base/theme.d.ts.map +1 -0
  34. package/out/base/theme.js +103 -0
  35. package/out/base/theme.js.map +1 -0
  36. package/out/bdc/index.d.ts +27 -0
  37. package/out/bdc/index.d.ts.map +1 -0
  38. package/out/bdc/index.js +344 -0
  39. package/out/bdc/index.js.map +1 -0
  40. package/out/coverage/index.d.ts +58 -0
  41. package/out/coverage/index.d.ts.map +1 -0
  42. package/out/coverage/index.js +77 -0
  43. package/out/coverage/index.js.map +1 -0
  44. package/out/hspa/index.d.ts +12 -0
  45. package/out/hspa/index.d.ts.map +1 -0
  46. package/out/hspa/index.js +18 -0
  47. package/out/hspa/index.js.map +1 -0
  48. package/out/index.d.ts +12 -0
  49. package/out/index.d.ts.map +1 -0
  50. package/out/index.js +12 -0
  51. package/out/index.js.map +1 -0
  52. package/out/race-dots/index.d.ts +61 -0
  53. package/out/race-dots/index.d.ts.map +1 -0
  54. package/out/race-dots/index.js +59 -0
  55. package/out/race-dots/index.js.map +1 -0
  56. package/out/styles/index.d.ts +8 -0
  57. package/out/styles/index.d.ts.map +1 -0
  58. package/out/styles/index.js +8 -0
  59. package/out/styles/index.js.map +1 -0
  60. package/out/styles/layers.d.ts +33 -0
  61. package/out/styles/layers.d.ts.map +1 -0
  62. package/out/styles/layers.js +108 -0
  63. package/out/styles/layers.js.map +1 -0
  64. package/out/styles/sources.d.ts +22 -0
  65. package/out/styles/sources.d.ts.map +1 -0
  66. package/out/styles/sources.js +12 -0
  67. package/out/styles/sources.js.map +1 -0
  68. package/out/tiger/index.d.ts +11 -0
  69. package/out/tiger/index.d.ts.map +1 -0
  70. package/out/tiger/index.js +64 -0
  71. package/out/tiger/index.js.map +1 -0
  72. package/out/tiles/api.d.ts +20 -0
  73. package/out/tiles/api.d.ts.map +1 -0
  74. package/out/tiles/api.js +41 -0
  75. package/out/tiles/api.js.map +1 -0
  76. package/out/tiles/coords.d.ts +16 -0
  77. package/out/tiles/coords.d.ts.map +1 -0
  78. package/out/tiles/coords.js +34 -0
  79. package/out/tiles/coords.js.map +1 -0
  80. package/out/tiles/index.d.ts +9 -0
  81. package/out/tiles/index.d.ts.map +1 -0
  82. package/out/tiles/index.js +9 -0
  83. package/out/tiles/index.js.map +1 -0
  84. package/out/tiles/schema.d.ts +41 -0
  85. package/out/tiles/schema.d.ts.map +1 -0
  86. package/out/tiles/schema.js +7 -0
  87. package/out/tiles/schema.js.map +1 -0
  88. package/out/tsconfig.tsbuildinfo +1 -0
  89. package/package.json +46 -0
  90. package/race-dots/index.ts +68 -0
  91. package/styles/index.ts +8 -0
  92. package/styles/layers.ts +148 -0
  93. package/styles/sources.ts +26 -0
  94. package/tiger/index.ts +71 -0
  95. package/tiles/api.ts +53 -0
  96. package/tiles/coords.ts +46 -0
  97. package/tiles/index.ts +9 -0
  98. package/tiles/schema.ts +42 -0
  99. package/tsconfig.json +22 -0
  100. package/typedoc.json +4 -0
@@ -0,0 +1,86 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import { LayerSpecificationList, } from "../styles/layers.js";
7
+ import {} from "../styles/sources.js";
8
+ import { BaseLayers } from "./layers.js";
9
+ import { createTerrainDEMSource, HillshadeTileSetID, TerrainTileSetID } from "./terrain.js";
10
+ //#endregion
11
+ //#region Spec Creators
12
+ export function createLightSpec(spec) {
13
+ return {
14
+ color: "white",
15
+ intensity: 0.85,
16
+ anchor: "viewport",
17
+ position: [
18
+ 10, // Radial
19
+ 20, // Azimuthal
20
+ -5, // Polar
21
+ ],
22
+ ...spec,
23
+ };
24
+ }
25
+ export function createSkySpec(spec) {
26
+ return {
27
+ "sky-color": "#000535",
28
+ "horizon-color": "hsl(54deg 100% 16%)",
29
+ "fog-color": "hsl(54deg 100% 5%)",
30
+ "sky-horizon-blend": 0.75,
31
+ "horizon-fog-blend": 0.75,
32
+ "fog-ground-blend": 0.1,
33
+ ...spec,
34
+ };
35
+ }
36
+ /**
37
+ * A stateful class for composing a style specification.
38
+ */
39
+ export class StyleSpecificationComposer {
40
+ layersList;
41
+ light;
42
+ sky;
43
+ terrain;
44
+ sources;
45
+ constructor(spec) {
46
+ this.light = createLightSpec(spec.light);
47
+ this.sky = createSkySpec(spec.sky);
48
+ this.terrain = {
49
+ source: TerrainTileSetID,
50
+ ...spec.terrain,
51
+ };
52
+ this.sources = {
53
+ ...spec.sources,
54
+ [TerrainTileSetID]: createTerrainDEMSource(),
55
+ [HillshadeTileSetID]: createTerrainDEMSource(),
56
+ };
57
+ this.layersList = new LayerSpecificationList(BaseLayers);
58
+ for (const layer of spec.layers || []) {
59
+ this.layersList.insert(layer);
60
+ }
61
+ }
62
+ get layers() {
63
+ return Array.from(this.layersList);
64
+ }
65
+ toJSON() {
66
+ const styleSpec = {
67
+ version: 8,
68
+ // Sprite must match the basemap schema version — v4 sprites carry the icons referenced
69
+ // by the v4 theme spec. Currently upstream URLs; we mirror these to nexus-assets/{fonts,
70
+ // sprites/v4}/ for self-hosting, but no public route fronts that bucket yet.
71
+ glyphs: "https://public.sister.software/protomaps/fonts/{fontstack}/{range}.pbf",
72
+ sprite: "https://public.sister.software/protomaps/sprites/v4/light",
73
+ light: createLightSpec(this.light),
74
+ sky: createSkySpec(this.sky),
75
+ terrain: this.terrain,
76
+ sources: this.sources,
77
+ layers: this.layers,
78
+ };
79
+ return styleSpec;
80
+ }
81
+ toJS() {
82
+ return this.toJSON();
83
+ }
84
+ }
85
+ //#endregion
86
+ //# sourceMappingURL=composition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition.js","sourceRoot":"","sources":["../../base/composition.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACN,sBAAsB,GAGtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAA4B,MAAM,sBAAsB,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE3F,YAAY;AAEZ,uBAAuB;AAEvB,MAAM,UAAU,eAAe,CAAC,IAAkC;IACjE,OAAO;QACN,KAAK,EAAE,OAAO;QACd,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE;YACT,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,YAAY;YAChB,CAAC,CAAC,EAAE,QAAQ;SACZ;QACD,GAAG,IAAI;KACP,CAAA;AACF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAgC;IAC7D,OAAO;QACN,WAAW,EAAE,SAAS;QACtB,eAAe,EAAE,qBAAqB;QACtC,WAAW,EAAE,oBAAoB;QACjC,mBAAmB,EAAE,IAAI;QACzB,mBAAmB,EAAE,IAAI;QACzB,kBAAkB,EAAE,GAAG;QACvB,GAAG,IAAI;KACP,CAAA;AACF,CAAC;AAcD;;GAEG;AACH,MAAM,OAAO,0BAA0B;IACtC,UAAU,CAAwB;IAClC,KAAK,CAAoB;IACzB,GAAG,CAAkB;IACrB,OAAO,CAAsB;IAC7B,OAAO,CAAqB;IAE5B,YAAY,IAAmC;QAC9C,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxC,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAElC,IAAI,CAAC,OAAO,GAAG;YACd,MAAM,EAAE,gBAAgB;YACxB,GAAG,IAAI,CAAC,OAAO;SACf,CAAA;QAED,IAAI,CAAC,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,OAAO;YACf,CAAC,gBAAgB,CAAC,EAAE,sBAAsB,EAAE;YAC5C,CAAC,kBAAkB,CAAC,EAAE,sBAAsB,EAAE;SAC9C,CAAA;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,sBAAsB,CAAC,UAAU,CAAC,CAAA;QAExD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;IACF,CAAC;IAED,IAAW,MAAM;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACnC,CAAC;IAED,MAAM;QACL,MAAM,SAAS,GAAuB;YACrC,OAAO,EAAE,CAAC;YACV,uFAAuF;YACvF,yFAAyF;YACzF,6EAA6E;YAC7E,MAAM,EAAE,wEAAwE;YAChF,MAAM,EAAE,2DAA2D;YACnE,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;YAClC,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;SACnB,CAAA;QAED,OAAO,SAAS,CAAA;IACjB,CAAC;IAED,IAAI;QACH,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;IACrB,CAAC;CACD;AAED,YAAY"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ export * from "./buildings.js";
7
+ export * from "./composition.js";
8
+ export * from "./layers.js";
9
+ export * from "./theme.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../base/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ export * from "./buildings.js";
7
+ export * from "./composition.js";
8
+ export * from "./layers.js";
9
+ export * from "./theme.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../base/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import { type LayerSpecification } from "maplibre-gl";
7
+ export declare const HillsLayerID: `${import("../index.js").TileSetSourceID<"hillshade">}/hills`;
8
+ export declare const BaseLayers: LayerSpecification[];
9
+ //# sourceMappingURL=layers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layers.d.ts","sourceRoot":"","sources":["../../base/layers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAMrD,eAAO,MAAM,YAAY,+DAAuC,CAAA;AAahE,eAAO,MAAM,UAAU,EAAE,kBAAkB,EAyB1C,CAAA"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import { layers } from "@protomaps/basemaps";
7
+ import {} from "maplibre-gl";
8
+ import { BuildingLayers } from "../base/buildings.js";
9
+ import { MailwomanBaseFlavor, MailwomanBaseTileSetID } from "../base/theme.js";
10
+ import { LayerID } from "../styles/layers.js";
11
+ import { HillshadeTileSetID } from "./terrain.js";
12
+ export const HillsLayerID = LayerID(HillshadeTileSetID, "hills");
13
+ /**
14
+ * Splits `layers()` into non-label + label groups so building footprints, water outlines, and
15
+ * hillshade sit between base geometry and labels. `@protomaps/basemaps@5.x` doesn't expose a
16
+ * `noLabels` helper — `labelsOnly: true` gives only the label layers; subtracting that set from the
17
+ * full list yields the non-label group.
18
+ */
19
+ const allBaseLayers = layers(MailwomanBaseTileSetID, MailwomanBaseFlavor, { lang: "en" });
20
+ const labelLayers = layers(MailwomanBaseTileSetID, MailwomanBaseFlavor, { lang: "en", labelsOnly: true });
21
+ const labelLayerIDs = new Set(labelLayers.map((layer) => layer.id));
22
+ const nonLabelLayers = allBaseLayers.filter((layer) => !labelLayerIDs.has(layer.id));
23
+ export const BaseLayers = [
24
+ ...nonLabelLayers,
25
+ {
26
+ id: LayerID(MailwomanBaseTileSetID, "water-outline"),
27
+ type: "line",
28
+ source: MailwomanBaseTileSetID,
29
+ "source-layer": "water",
30
+ filter: ["any", ["in", "water", "river", "lake", "other"]],
31
+ paint: {
32
+ "line-color": "hsl(194deg 100% 30% / 0.5)",
33
+ "line-width": 1,
34
+ },
35
+ },
36
+ {
37
+ id: HillsLayerID,
38
+ type: "hillshade",
39
+ source: HillshadeTileSetID,
40
+ paint: {
41
+ "hillshade-exaggeration": 0.25,
42
+ "hillshade-accent-color": "hsl(240deg 100% 95%)",
43
+ "hillshade-shadow-color": "hsl(240deg 100% 5%)",
44
+ },
45
+ },
46
+ ...BuildingLayers,
47
+ ...labelLayers,
48
+ ];
49
+ //# sourceMappingURL=layers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layers.js","sourceRoot":"","sources":["../../base/layers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAA2B,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;AAEhE;;;;;GAKG;AACH,MAAM,aAAa,GAAG,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;AACzF,MAAM,WAAW,GAAG,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;AACzG,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;AACnE,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;AAEpF,MAAM,CAAC,MAAM,UAAU,GAAyB;IAC/C,GAAG,cAAc;IACjB;QACC,EAAE,EAAE,OAAO,CAAC,sBAAsB,EAAE,eAAe,CAAC;QACpD,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,sBAAsB;QAC9B,cAAc,EAAE,OAAO;QACvB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1D,KAAK,EAAE;YACN,YAAY,EAAE,4BAA4B;YAC1C,YAAY,EAAE,CAAC;SACf;KACD;IACD;QACC,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE;YACN,wBAAwB,EAAE,IAAI;YAC9B,wBAAwB,EAAE,sBAAsB;YAChD,wBAAwB,EAAE,qBAAqB;SAC/C;KACD;IACD,GAAG,cAAc;IACjB,GAAG,WAAW;CACd,CAAA"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import { type RasterDEMSourceSpecification } from "@maplibre/maplibre-gl-style-spec";
7
+ import { TileSetSourceID } from "../styles/sources.js";
8
+ /**
9
+ * Creates a raster DEM source specification for terrain data.
10
+ */
11
+ export declare function createTerrainDEMSource(): RasterDEMSourceSpecification;
12
+ /**
13
+ * Identifier for the Nexus terrain tileset.
14
+ */
15
+ export declare const TerrainTileSetID: TileSetSourceID<"terrain">;
16
+ /**
17
+ * Identifier for the Nexus terrain tileset.
18
+ */
19
+ export declare const HillshadeTileSetID: TileSetSourceID<"hillshade">;
20
+ //# sourceMappingURL=terrain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terrain.d.ts","sourceRoot":"","sources":["../../base/terrain.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,kCAAkC,CAAA;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,4BAA4B,CAUrE;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,4BAA6B,CAAA;AAE1D;;GAEG;AACH,eAAO,MAAM,kBAAkB,8BAA+B,CAAA"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import {} from "@maplibre/maplibre-gl-style-spec";
7
+ import { TileSetSourceID } from "../styles/sources.js";
8
+ /**
9
+ * Creates a raster DEM source specification for terrain data.
10
+ */
11
+ export function createTerrainDEMSource() {
12
+ const terrainSource = {
13
+ type: "raster-dem",
14
+ encoding: "terrarium",
15
+ tiles: ["https://elevation-tiles-prod.s3.amazonaws.com/terrarium/{z}/{x}/{y}.png"],
16
+ tileSize: 256,
17
+ maxzoom: 15,
18
+ };
19
+ return terrainSource;
20
+ }
21
+ /**
22
+ * Identifier for the Nexus terrain tileset.
23
+ */
24
+ export const TerrainTileSetID = TileSetSourceID("terrain");
25
+ /**
26
+ * Identifier for the Nexus terrain tileset.
27
+ */
28
+ export const HillshadeTileSetID = TileSetSourceID("hillshade");
29
+ //# sourceMappingURL=terrain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terrain.js","sourceRoot":"","sources":["../../base/terrain.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAqC,MAAM,kCAAkC,CAAA;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACrC,MAAM,aAAa,GAAiC;QACnD,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,WAAW;QACrB,KAAK,EAAE,CAAC,yEAAyE,CAAC;QAClF,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,EAAE;KACX,CAAA;IAED,OAAO,aAAa,CAAA;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC,WAAW,CAAC,CAAA"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import { type Flavor } from "@protomaps/basemaps";
7
+ import { TileSetSourceID } from "../styles/sources.js";
8
+ /**
9
+ * Identifier for the Mailwoman base tileset. Matches the R2 object basename
10
+ * (`nexus-assets/tiles/basemap-v4.pmtiles`) — `tiles.sister.software/basemap-v4.json` returns its
11
+ * tilejson, `tiles.sister.software/basemap-v4/{z}/{x}/{y}.mvt` returns vector tiles.
12
+ */
13
+ export declare const MailwomanBaseTileSetID: TileSetSourceID<"basemap-v4">;
14
+ /**
15
+ * The Mailwoman theme for Protomaps via MapLibre. Keys follow `@protomaps/basemaps@5.x` which
16
+ * targets the v4 tile schema (`["==","kind","..."]` filters), matching the basemap-v4 PMTiles on
17
+ * R2.
18
+ */
19
+ export declare const MailwomanBaseFlavor: Flavor;
20
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../base/theme.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,+BAAgC,CAAA;AAEnE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAgGjC,CAAA"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import {} from "@protomaps/basemaps";
7
+ import { TileSetSourceID } from "../styles/sources.js";
8
+ /**
9
+ * Identifier for the Mailwoman base tileset. Matches the R2 object basename
10
+ * (`nexus-assets/tiles/basemap-v4.pmtiles`) — `tiles.sister.software/basemap-v4.json` returns its
11
+ * tilejson, `tiles.sister.software/basemap-v4/{z}/{x}/{y}.mvt` returns vector tiles.
12
+ */
13
+ export const MailwomanBaseTileSetID = TileSetSourceID("basemap-v4");
14
+ /**
15
+ * The Mailwoman theme for Protomaps via MapLibre. Keys follow `@protomaps/basemaps@5.x` which
16
+ * targets the v4 tile schema (`["==","kind","..."]` filters), matching the basemap-v4 PMTiles on
17
+ * R2.
18
+ */
19
+ export const MailwomanBaseFlavor = {
20
+ //#region Base
21
+ background: "hsl(0deg 10% 5%)",
22
+ earth: "hsl(0deg 10% 5%)",
23
+ park_a: "hsl(120deg 45.75% 1%)",
24
+ park_b: "hsl(120deg 65.75% 10%)",
25
+ hospital: "#252424",
26
+ industrial: "#222222",
27
+ school: "#262323",
28
+ wood_a: "#202121",
29
+ wood_b: "#202121",
30
+ pedestrian: "#1e1e1e",
31
+ scrub_a: "#222323",
32
+ scrub_b: "#222323",
33
+ glacier: "#1c1c1c",
34
+ sand: "#212123",
35
+ beach: "hsl(44.24deg 100% 20% / 0.1)",
36
+ aerodrome: "#1e1e1e",
37
+ runway: "#333333",
38
+ water: "hsl(194deg 100% 10%)",
39
+ pier: "#222222",
40
+ zoo: "#222323",
41
+ military: "#242323",
42
+ //#endregion
43
+ //#region Tunnel
44
+ tunnel_other_casing: "#141414",
45
+ tunnel_minor_casing: "#141414",
46
+ tunnel_link_casing: "#141414",
47
+ tunnel_major_casing: "#141414",
48
+ tunnel_highway_casing: "#141414",
49
+ tunnel_other: "#292929",
50
+ tunnel_minor: "#292929",
51
+ tunnel_link: "#292929",
52
+ tunnel_major: "#292929",
53
+ tunnel_highway: "#292929",
54
+ //#endregion
55
+ buildings: "#111111",
56
+ //#region Casing
57
+ minor_service_casing: "#1f1f1f",
58
+ minor_casing: "#1f1f1f",
59
+ link_casing: "#1f1f1f",
60
+ major_casing_late: "#1f1f1f",
61
+ highway_casing_late: "#1f1f1f",
62
+ other: "#333333",
63
+ minor_service: "#333333",
64
+ minor_a: "#3d3d3d",
65
+ minor_b: "#333333",
66
+ link: "#3d3d3d",
67
+ major_casing_early: "#1f1f1f",
68
+ major: "#3d3d3d",
69
+ highway_casing_early: "#1f1f1f",
70
+ highway: "hsl(36deg 10% 50%)",
71
+ //#endregion
72
+ railway: "#000000",
73
+ boundaries: "hsl(240deg 100% 90%)",
74
+ //#region Bridges
75
+ bridges_other_casing: "#2b2b2b",
76
+ bridges_minor_casing: "#1f1f1f",
77
+ bridges_link_casing: "#1f1f1f",
78
+ bridges_major_casing: "#1f1f1f",
79
+ bridges_highway_casing: "#1f1f1f",
80
+ bridges_other: "#333333",
81
+ bridges_minor: "#333333",
82
+ bridges_link: "#3d3d3d",
83
+ bridges_major: "#3d3d3d",
84
+ bridges_highway: "#474747",
85
+ //#endregion
86
+ //#region Roads
87
+ roads_label_minor: "hsl(240deg 100% 90%)",
88
+ roads_label_minor_halo: "#1f1f1f",
89
+ roads_label_major: "hsl(240deg 100% 90%)",
90
+ roads_label_major_halo: "#1f1f1f",
91
+ //#endregion
92
+ ocean_label: "#717784",
93
+ subplace_label: "hsl(50deg 50% 70%)",
94
+ subplace_label_halo: "hsl(40deg 100% 10%)",
95
+ city_label: "hsl(50deg 100% 90%)",
96
+ city_label_halo: "hsl(240deg 100% 10%)",
97
+ state_label: "hsl(240deg 100% 90%)",
98
+ state_label_halo: "#1f1f1f",
99
+ country_label: "hsl(240deg 50% 80% / 0.5)",
100
+ address_label: "hsl(240deg 100% 90%)",
101
+ address_label_halo: "hsl(240deg 100% 10%)",
102
+ };
103
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../base/theme.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAe,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAW;IAC1C,cAAc;IACd,UAAU,EAAE,kBAAkB;IAC9B,KAAK,EAAE,kBAAkB;IAEzB,MAAM,EAAE,uBAAuB;IAC/B,MAAM,EAAE,wBAAwB;IAEhC,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,SAAS;IACrB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,8BAA8B;IACrC,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,SAAS;IAEjB,KAAK,EAAE,sBAAsB;IAE7B,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IACd,QAAQ,EAAE,SAAS;IAEnB,YAAY;IACZ,gBAAgB;IAChB,mBAAmB,EAAE,SAAS;IAC9B,mBAAmB,EAAE,SAAS;IAC9B,kBAAkB,EAAE,SAAS;IAC7B,mBAAmB,EAAE,SAAS;IAC9B,qBAAqB,EAAE,SAAS;IAChC,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IAEzB,YAAY;IACZ,SAAS,EAAE,SAAS;IAEpB,gBAAgB;IAChB,oBAAoB,EAAE,SAAS;IAC/B,YAAY,EAAE,SAAS;IACvB,WAAW,EAAE,SAAS;IACtB,iBAAiB,EAAE,SAAS;IAC5B,mBAAmB,EAAE,SAAS;IAC9B,KAAK,EAAE,SAAS;IAChB,aAAa,EAAE,SAAS;IACxB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,kBAAkB,EAAE,SAAS;IAC7B,KAAK,EAAE,SAAS;IAChB,oBAAoB,EAAE,SAAS;IAC/B,OAAO,EAAE,oBAAoB;IAE7B,YAAY;IACZ,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,sBAAsB;IAElC,iBAAiB;IACjB,oBAAoB,EAAE,SAAS;IAC/B,oBAAoB,EAAE,SAAS;IAC/B,mBAAmB,EAAE,SAAS;IAC9B,oBAAoB,EAAE,SAAS;IAC/B,sBAAsB,EAAE,SAAS;IACjC,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,YAAY,EAAE,SAAS;IACvB,aAAa,EAAE,SAAS;IACxB,eAAe,EAAE,SAAS;IAE1B,YAAY;IACZ,eAAe;IACf,iBAAiB,EAAE,sBAAsB;IACzC,sBAAsB,EAAE,SAAS;IACjC,iBAAiB,EAAE,sBAAsB;IACzC,sBAAsB,EAAE,SAAS;IAEjC,YAAY;IACZ,WAAW,EAAE,SAAS;IACtB,cAAc,EAAE,oBAAoB;IACpC,mBAAmB,EAAE,qBAAqB;IAE1C,UAAU,EAAE,qBAAqB;IACjC,eAAe,EAAE,sBAAsB;IAEvC,WAAW,EAAE,sBAAsB;IACnC,gBAAgB,EAAE,SAAS;IAC3B,aAAa,EAAE,2BAA2B;IAC1C,aAAa,EAAE,sBAAsB;IACrC,kBAAkB,EAAE,sBAAsB;CAC1C,CAAA"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @copyright Sister Software.
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import { type CircleLayerSpecification, type FillExtrusionLayerSpecification, type FillLayerSpecification, type HeatmapLayerSpecification, type LineLayerSpecification, type SymbolLayerSpecification } from "@maplibre/maplibre-gl-style-spec";
7
+ import { type LayerSpecificationListInput } from "../styles/layers.js";
8
+ import { TileSetSourceID } from "../styles/sources.js";
9
+ /**
10
+ * Identifier for the Broadband Data Collection tile set.
11
+ */
12
+ export declare const BDCTileSetID: TileSetSourceID<"bdc">;
13
+ /**
14
+ * Broadband Data Collection layer specifications.
15
+ *
16
+ * @internal
17
+ */
18
+ export type BDCLayerSpecificationInput = LayerSpecificationListInput<FillLayerSpecification | LineLayerSpecification | CircleLayerSpecification | HeatmapLayerSpecification | SymbolLayerSpecification | FillExtrusionLayerSpecification>;
19
+ /**
20
+ * Base specification for a Broadband Data Collection layer.
21
+ *
22
+ * @internal
23
+ */
24
+ export type BaseBDCLayerSpecification<T> = T extends BDCLayerSpecificationInput ? Omit<T, "source-layer" | "source"> : never;
25
+ export declare function createBDCLayer<T extends BDCLayerSpecificationInput>(spec: BaseBDCLayerSpecification<T>): T[];
26
+ export declare const BroadbandDataCollectionLayers: BDCLayerSpecificationInput[];
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../bdc/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACN,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD;;GAEG;AACH,eAAO,MAAM,YAAY,wBAAyB,CAAA;AAElD;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,GAAG,2BAA2B,CACjE,sBAAsB,GACtB,sBAAsB,GACtB,wBAAwB,GACxB,yBAAyB,GACzB,wBAAwB,GACxB,+BAA+B,CACjC,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI,CAAC,SAAS,0BAA0B,GAC5E,IAAI,CAAC,CAAC,EAAE,cAAc,GAAG,QAAQ,CAAC,GAClC,KAAK,CAAA;AAkCR,wBAAgB,cAAc,CAAC,CAAC,SAAS,0BAA0B,EAAE,IAAI,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAE5G;AAID,eAAO,MAAM,6BAA6B,EAAE,0BAA0B,EAqTrE,CAAA"}