@maptiler/sdk 3.2.2 → 3.3.0-rc3

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/src/Map.d.ts CHANGED
@@ -4,6 +4,8 @@ import { SdkConfig } from './config';
4
4
  import { LanguageInfo } from './language';
5
5
  import { MinimapOptionsInput } from './controls/Minimap';
6
6
  import { Telemetry } from './Telemetry';
7
+ import { CubemapDefinition, CubemapLayer, CubemapLayerConstructorOptions } from './custom-layers/CubemapLayer';
8
+ import { GradientDefinition, RadialGradientLayer, RadialGradientLayerOptions } from './custom-layers/RadialGradientLayer';
7
9
  export type LoadWithTerrainEvent = {
8
10
  type: "loadWithTerrain";
9
11
  target: Map;
@@ -125,13 +127,32 @@ export type MapOptions = Omit<MapOptionsML, "style" | "maplibreLogo"> & {
125
127
  * If not provided, the style takes precedence. If provided, overwrite the style.
126
128
  */
127
129
  projection?: ProjectionTypes;
130
+ /**
131
+ * Turn on/off spacebox.
132
+ *
133
+ * Default: { color: "#1D29F1" }
134
+ */
135
+ space?: CubemapLayerConstructorOptions | boolean;
136
+ halo?: RadialGradientLayerOptions | boolean;
128
137
  };
129
138
  /**
130
139
  * The Map class can be instanciated to display a map in a `<div>`
131
140
  */
132
141
  export declare class Map extends maplibregl.Map {
133
- private options;
134
142
  readonly telemetry: Telemetry;
143
+ private space?;
144
+ private halo?;
145
+ getSpace(): CubemapLayer | undefined;
146
+ setSpace(space: CubemapDefinition): void;
147
+ private setSpaceFromStyle;
148
+ private setHaloFromStyle;
149
+ private setSpaceFromCurrentStyle;
150
+ private setHaloFromCurrentStyle;
151
+ private initSpace;
152
+ private initHalo;
153
+ getHalo(): RadialGradientLayer | undefined;
154
+ setHalo(halo: GradientDefinition): void;
155
+ private options;
135
156
  private isTerrainEnabled;
136
157
  private terrainExaggeration;
137
158
  private primaryLanguage;
@@ -0,0 +1,33 @@
1
+ import { CustomLayerInterface, CustomRenderMethodInput } from 'maplibre-gl';
2
+ import { Map as MapSDK } from '../../Map';
3
+ import { WebGLContext } from '../../utils/webgl-utils';
4
+ import { CubemapDefinition, CubemapLayerConstructorOptions } from './types';
5
+ declare class CubemapLayer implements CustomLayerInterface {
6
+ id: string;
7
+ type: CustomLayerInterface["type"];
8
+ renderingMode: CustomLayerInterface["renderingMode"];
9
+ private map;
10
+ private faces?;
11
+ private useCubemapTexture;
12
+ private currentFadeOpacity;
13
+ private cubeMapNeedsUpdate;
14
+ private bgColor;
15
+ private previousBgColor;
16
+ private targetBgColor;
17
+ private transitionDelta;
18
+ private gl;
19
+ private cubemap?;
20
+ private texture?;
21
+ constructor(cubemapConfig: CubemapLayerConstructorOptions | true);
22
+ updateCubemap(): void;
23
+ onAdd(map: MapSDK, gl: WebGLRenderingContext | WebGL2RenderingContext): void;
24
+ onRemove(_map: MapSDK, gl: WebGLRenderingContext | WebGL2RenderingContext): void;
25
+ prerender(gl: WebGLContext, _options: CustomRenderMethodInput): void;
26
+ private animateTo;
27
+ private animateIn;
28
+ render(gl: WebGLRenderingContext | WebGL2RenderingContext, _options: CustomRenderMethodInput): void;
29
+ setCubemap(cubemap: CubemapDefinition): void;
30
+ show(): void;
31
+ hide(): void;
32
+ }
33
+ export { CubemapLayer };
@@ -0,0 +1,3 @@
1
+ declare const VERTICES: number[];
2
+ declare const INDICES: number[];
3
+ export { VERTICES, INDICES };
@@ -0,0 +1,2 @@
1
+ export * from './CubemapLayer';
2
+ export * from './types';
@@ -0,0 +1,6 @@
1
+ import { CubemapFaces } from './types';
2
+ export declare function loadCubemapTexture({ gl, faces, onLoadedCallback }: {
3
+ gl: WebGLRenderingContext | WebGL2RenderingContext;
4
+ faces?: CubemapFaces;
5
+ onLoadedCallback?: () => void;
6
+ }): WebGLTexture | undefined;
@@ -0,0 +1,37 @@
1
+ export declare enum CubemapImagesPresets {
2
+ UNIVERSE_DARK = "universe-dark"
3
+ }
4
+ export type CubemapLayerConstructorOptions = CubemapDefinition & {};
5
+ export type CubemapDefinition = {
6
+ path: {
7
+ baseUrl: string;
8
+ format?: "png" | "jpg" | "webp";
9
+ };
10
+ faces?: never;
11
+ preset?: never;
12
+ color?: string;
13
+ } | {
14
+ faces: CubemapFaces;
15
+ path?: never;
16
+ preset?: never;
17
+ color?: string;
18
+ } | {
19
+ preset: string;
20
+ path?: never;
21
+ faces?: never;
22
+ color?: string;
23
+ } | {
24
+ color: string;
25
+ path?: never;
26
+ faces?: never;
27
+ preset?: never;
28
+ };
29
+ export declare enum CubemapFaceNames {
30
+ POSITIVE_X = "pX",
31
+ NEGATIVE_X = "nX",
32
+ POSITIVE_Y = "pY",
33
+ NEGATIVE_Y = "nY",
34
+ POSITIVE_Z = "pZ",
35
+ NEGATIVE_Z = "nZ"
36
+ }
37
+ export type CubemapFaces = Record<CubemapFaceNames, string>;
@@ -0,0 +1,26 @@
1
+ import { CustomLayerInterface, CustomRenderMethodInput } from 'maplibre-gl';
2
+ import { Map as MapSDK } from '../../Map';
3
+ import { GradientDefinition, RadialGradientLayerOptions } from './types';
4
+ export declare class RadialGradientLayer implements CustomLayerInterface {
5
+ id: string;
6
+ type: CustomLayerInterface["type"];
7
+ renderingMode: CustomLayerInterface["renderingMode"];
8
+ private gradient;
9
+ private scale;
10
+ private animationDelta;
11
+ private map;
12
+ private plane?;
13
+ constructor(gradient: RadialGradientLayerOptions | boolean);
14
+ onAdd(map: MapSDK, gl: WebGLRenderingContext | WebGL2RenderingContext): void;
15
+ private animateIn;
16
+ private animateOut;
17
+ onRemove(_map: MapSDK, gl: WebGLRenderingContext | WebGL2RenderingContext): void;
18
+ prerender(_gl: WebGLRenderingContext | WebGL2RenderingContext, _options: CustomRenderMethodInput): void;
19
+ render(gl: WebGLRenderingContext | WebGL2RenderingContext, options: CustomRenderMethodInput): void;
20
+ /**
21
+ * Value settings methods
22
+ */
23
+ setGradient(gradient: GradientDefinition): Promise<void>;
24
+ show(): void;
25
+ hide(): void;
26
+ }
@@ -0,0 +1,2 @@
1
+ export * from './RadialGradientLayer';
2
+ export * from './types';
@@ -0,0 +1,11 @@
1
+ import { Object3D } from '../../utils/webgl-utils';
2
+ export type Color = string;
3
+ export type GradientStop = number;
4
+ export type RadialGradientLayerOptions = GradientDefinition;
5
+ export type GradientDefinition = {
6
+ stops: Array<[GradientStop, Color]>;
7
+ scale: number;
8
+ };
9
+ export type GradientAttributeKey = "vertexPosition";
10
+ export type GradientUniformKey = "stopsNumber" | "stops" | "colors";
11
+ export type GradientPlaneObject3D = Pick<Object3D<GradientAttributeKey, GradientUniformKey>, "shaderProgram" | "programInfo" | "positionBuffer">;
@@ -0,0 +1,17 @@
1
+ import { Map as MapSDK } from '../Map';
2
+ import { StyleSpecification } from 'maplibre-gl';
3
+ import { CubemapLayerConstructorOptions, RadialGradientLayerOptions } from 'custom-layers';
4
+ export type StyleSpecificationWithMetaData = StyleSpecification & {
5
+ metadata?: {
6
+ "maptiler:copyright": string;
7
+ maptiler?: {
8
+ halo: RadialGradientLayerOptions;
9
+ space: CubemapLayerConstructorOptions;
10
+ };
11
+ };
12
+ };
13
+ export interface IExtractCustomLayerStyleOptions {
14
+ map: MapSDK;
15
+ property: "halo" | "space";
16
+ }
17
+ export default function extractCustomLayerStyle<T extends CubemapLayerConstructorOptions | RadialGradientLayerOptions | null>(options: IExtractCustomLayerStyleOptions): T | null;
@@ -0,0 +1,5 @@
1
+ import { RadialGradientLayer } from './RadialGradientLayer';
2
+ import { CubemapLayer } from './CubemapLayer';
3
+ export { RadialGradientLayer, CubemapLayer };
4
+ export * from './RadialGradientLayer/types';
5
+ export * from './CubemapLayer/types';
@@ -1,3 +1,13 @@
1
- export * from './screenshot';
2
- export * from './vectorlayerhelpers';
3
- export * from './stylehelper';
1
+ import { takeScreenshot } from './screenshot';
2
+ import { addPolyline, addPolygon, addPoint, addHeatmap } from './vectorlayerhelpers';
3
+ export type { ZoomStringValues, ZoomNumberValues, PropertyValues, CommonShapeLayerOptions, PolylineLayerOptions, PolygonLayerOptions, PointLayerOptions, HeatmapLayerOptions, } from './vectorlayerhelpers';
4
+ /**
5
+ * Helpers are a set of functions to facilitate the creation of sources and layers
6
+ */
7
+ export declare const helpers: {
8
+ addPolyline: typeof addPolyline;
9
+ addPolygon: typeof addPolygon;
10
+ addPoint: typeof addPoint;
11
+ addHeatmap: typeof addHeatmap;
12
+ takeScreenshot: typeof takeScreenshot;
13
+ };
@@ -0,0 +1,6 @@
1
+ import { LngLat } from 'maplibre-gl';
2
+ declare function getAntipode(lngLat: LngLat): {
3
+ lat: number;
4
+ lng: number;
5
+ };
6
+ export { getAntipode };
@@ -0,0 +1,8 @@
1
+ import { Vec4 } from './webgl-utils';
2
+ declare function minMax(value: number, min: number, max: number): number;
3
+ declare function normalize(value: number, min: number, max: number): number;
4
+ declare function diagonalOfSquare(side: number): number;
5
+ type Lerpable = [number, number, number, number] | Vec4;
6
+ declare function lerpVec4(a: Lerpable, b: Lerpable, t: number): Vec4;
7
+ declare function lerp(a: number, b: number, t: number): number;
8
+ export { minMax, normalize, diagonalOfSquare, lerpVec4, lerp };
@@ -0,0 +1,49 @@
1
+ export type WebGLContext = WebGLRenderingContext | WebGL2RenderingContext;
2
+ /**
3
+ * Load a shader from a source string
4
+ */
5
+ export declare function loadShader({ gl, type, source }: {
6
+ gl: WebGLContext;
7
+ type: GLenum;
8
+ source: string;
9
+ }): WebGLShader;
10
+ /**
11
+ * Create a set of shaders (vertex and fragment) and link them into a program
12
+ *
13
+ * @param gl WebGL context
14
+ * @param vertexShaderSource Vertex shader source code
15
+ * @param fragmentShaderSource Fragment shader source code
16
+ *
17
+ * @returns WebGL program
18
+ */
19
+ export declare function createShadersSetProgram({ gl, vertexShaderSource, fragmentShaderSource }: {
20
+ gl: WebGLContext;
21
+ vertexShaderSource: string;
22
+ fragmentShaderSource: string;
23
+ }): WebGLProgram;
24
+ /**
25
+ * null-free version of getUniformLocation
26
+ */
27
+ export declare function getUniformLocation(gl: WebGLRenderingContext | WebGL2RenderingContext, program: WebGLProgram, name: string): WebGLUniformLocation;
28
+ export type Object3D<Attribute extends string, Uniform extends string> = {
29
+ shaderProgram: WebGLProgram;
30
+ programInfo: {
31
+ attributesLocations: Record<Attribute, number>;
32
+ uniformsLocations: Record<Uniform, WebGLUniformLocation>;
33
+ };
34
+ positionBuffer: WebGLBuffer;
35
+ indexBuffer?: WebGLBuffer;
36
+ indexBufferLength?: number;
37
+ };
38
+ export declare function createObject3D<Attribute extends string, Uniform extends string>({ gl, vertexShaderSource, fragmentShaderSource, attributesKeys, uniformsKeys, vertices, indices, }: {
39
+ gl: WebGLContext;
40
+ vertexShaderSource: string;
41
+ fragmentShaderSource: string;
42
+ attributesKeys: readonly Attribute[];
43
+ uniformsKeys: readonly Uniform[];
44
+ vertices: Array<number>;
45
+ indices?: Array<number>;
46
+ }): Object3D<Attribute, Uniform>;
47
+ export type Vec4 = [number, number, number, number];
48
+ export declare function parseColorStringToVec4(color?: string): Vec4;
49
+ export declare function degreesToRadians(degrees: number): number;
package/eslint.config.mjs CHANGED
@@ -8,77 +8,6 @@ export default tseslint.config(
8
8
  tseslint.configs.strictTypeChecked,
9
9
  tseslint.configs.stylisticTypeChecked,
10
10
  tseslint.configs.recommendedTypeChecked,
11
- {
12
- // forked from https://www.npmjs.com/package/eslint-plugin-restrict-imports
13
- plugins: {
14
- import: {
15
- rules: {
16
- "default-imports-only": {
17
- meta: {
18
- type: "suggestion",
19
- docs: {},
20
- schema: [
21
- {
22
- bannedImport: {
23
- locations: ["filePaths"],
24
- message: "string",
25
- fixedLocation: "string",
26
- },
27
- },
28
- ],
29
- },
30
- create: function (context) {
31
- const filePath = context.getFilename();
32
- const options = context.options[0] || {
33
- "^/(.*)": {
34
- locations: ["(.*)"],
35
- },
36
- };
37
-
38
- return {
39
- ImportDeclaration: (node) => {
40
- Object.entries(options).forEach(([bannedImport, config]) => {
41
- const importLocationRegex = new RegExp(bannedImport);
42
-
43
- if (config.ignoreTypeImports && node.importKind === "type") return;
44
-
45
- if (importLocationRegex.test(node.source.value)) {
46
- config.locations.forEach((fp) => {
47
- const bannedLocationRegex = new RegExp(fp);
48
-
49
- if (bannedLocationRegex.test(filePath)) {
50
- node.specifiers.forEach((specifier) => {
51
- if (specifier.type !== "ImportDefaultSpecifier") {
52
- context.report({
53
- message: config.message ?? `Importing from '${bannedImport}' is banned in '${fp}'`,
54
- node,
55
- });
56
- }
57
- });
58
- }
59
- });
60
- }
61
- });
62
- },
63
- };
64
- },
65
- },
66
- },
67
- },
68
- },
69
- rules: {
70
- "import/default-imports-only": [
71
- "error",
72
- {
73
- "maplibre-gl$": {
74
- locations: ["^(?!.*\.d\.ts$).*\.((ts|js))$"],
75
- message: `Maplibre-gl uses CJS modules, only default imports are supported, named imports may fail on some setups.`,
76
- ignoreTypeImports: true,
77
- },
78
- },
79
- ],
80
- },
81
- },
82
11
  {
83
12
  languageOptions: {
84
13
  parserOptions: {
@@ -106,7 +35,7 @@ export default tseslint.config(
106
35
  "@typescript-eslint/no-unnecessary-condition": "warn",
107
36
  "@typescript-eslint/no-unnecessary-type-arguments": "off",
108
37
  "@typescript-eslint/no-unnecessary-type-assertion": "off",
109
- "@typescript-eslint/no-unnecessary-type-parameters": "warn",
38
+ "@typescript-eslint/no-unnecessary-type-parameters": "off", // as we are a lib, types serve as documentation
110
39
  "@typescript-eslint/no-unused-vars": "warn",
111
40
  "@typescript-eslint/no-unsafe-argument": "warn",
112
41
  "@typescript-eslint/no-unsafe-assignment": "warn",
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@maptiler/sdk",
3
- "version": "3.2.2",
3
+ "version": "3.3.0-rc3",
4
4
  "description": "The Javascript & TypeScript map SDK tailored for MapTiler Cloud",
5
5
  "author": "MapTiler",
6
6
  "module": "dist/maptiler-sdk.mjs",
7
7
  "types": "dist/maptiler-sdk.d.ts",
8
8
  "style": "dist/maptiler-sdk.css",
9
9
  "type": "module",
10
+ "main": "dist/maptiler-sdk.mjs",
10
11
  "exports": {
11
12
  ".": {
12
13
  "import": "./dist/maptiler-sdk.mjs",
@@ -54,9 +55,14 @@
54
55
  "lint-staged": {
55
56
  "*.ts": "npm run lint:fix"
56
57
  },
58
+ "ts-typecheck": {
59
+ "*.ts": "npm tsc --noEmit"
60
+ },
57
61
  "devDependencies": {
58
62
  "@canvas/image-data": "^1.0.0",
59
63
  "@eslint/js": "^9.21.0",
64
+ "@types/color-convert": "^2.0.4",
65
+ "@types/color-name": "^2.0.0",
60
66
  "@types/uuid": "^10.0.0",
61
67
  "@types/xmldom": "^0.1.31",
62
68
  "@vitest/web-worker": "^3.0.9",
@@ -78,10 +84,11 @@
78
84
  },
79
85
  "dependencies": {
80
86
  "@maplibre/maplibre-gl-style-spec": "^23.0.0",
81
- "@maptiler/client": "^2.3.2",
87
+ "@maptiler/client": "^2.3.0",
82
88
  "events": "^3.3.0",
89
+ "gl-matrix": "^3.4.3",
83
90
  "js-base64": "^3.7.7",
84
- "maplibre-gl": "^5.3.1",
91
+ "maplibre-gl": "^5.0.1",
85
92
  "uuid": "^11.0.5"
86
93
  }
87
94
  }
package/tsconfig.json CHANGED
@@ -26,6 +26,7 @@
26
26
  },
27
27
  "include": [
28
28
  "src",
29
+ "./eslint.config.mjs",
29
30
  "test",
30
31
  "./vite.config-test.ts",
31
32
  "./vitest-setup-tests.ts"