maplibre-gl-raster 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/LICENSE +21 -0
- package/README.md +362 -0
- package/dist/LercDecode.es-CZm5toNk.js +442 -0
- package/dist/LercDecode.es-CZm5toNk.js.map +1 -0
- package/dist/RasterControl-B7XdXYSu.js +18838 -0
- package/dist/RasterControl-B7XdXYSu.js.map +1 -0
- package/dist/__vite-browser-external-BgMKmFg9.js +9 -0
- package/dist/__vite-browser-external-BgMKmFg9.js.map +1 -0
- package/dist/assets/LercDecode.es-Bvg6-wb5.js +442 -0
- package/dist/assets/LercDecode.es-Bvg6-wb5.js.map +1 -0
- package/dist/assets/__vite-browser-external-BgMKmFg9.js +9 -0
- package/dist/assets/__vite-browser-external-BgMKmFg9.js.map +1 -0
- package/dist/assets/chunk-FDOR9p9I.js +24 -0
- package/dist/assets/decode-BvR5vy7g.js +940 -0
- package/dist/assets/decode-BvR5vy7g.js.map +1 -0
- package/dist/assets/lerc-By2TvjAX.js +34 -0
- package/dist/assets/lerc-By2TvjAX.js.map +1 -0
- package/dist/assets/lzw-CQJJDca2.js +174 -0
- package/dist/assets/lzw-CQJJDca2.js.map +1 -0
- package/dist/assets/worker-C6cg9T3Y.js +51 -0
- package/dist/assets/worker-C6cg9T3Y.js.map +1 -0
- package/dist/assets/zstd-DBZv9xja.js +569 -0
- package/dist/assets/zstd-DBZv9xja.js.map +1 -0
- package/dist/chunk-FDOR9p9I.js +24 -0
- package/dist/decode-BMFOVF9X.js +1966 -0
- package/dist/decode-BMFOVF9X.js.map +1 -0
- package/dist/index.mjs +223 -0
- package/dist/index.mjs.map +1 -0
- package/dist/lerc-B7WY-v3y.js +34 -0
- package/dist/lerc-B7WY-v3y.js.map +1 -0
- package/dist/lzw-YEsReV21.js +174 -0
- package/dist/lzw-YEsReV21.js.map +1 -0
- package/dist/maplibre-gl-raster.css +670 -0
- package/dist/react.mjs +145 -0
- package/dist/react.mjs.map +1 -0
- package/dist/types/index.d.ts +649 -0
- package/dist/types/react.d.ts +477 -0
- package/dist/zstd-DBZv9xja.js +569 -0
- package/dist/zstd-DBZv9xja.js.map +1 -0
- package/package.json +125 -0
package/dist/react.mjs
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { t as RasterControl } from "./RasterControl-B7XdXYSu.js";
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
3
|
+
//#region src/lib/core/RasterControlReact.tsx
|
|
4
|
+
/**
|
|
5
|
+
* React wrapper component for RasterControl.
|
|
6
|
+
*
|
|
7
|
+
* This component manages the lifecycle of a RasterControl instance,
|
|
8
|
+
* adding it to the map on mount and removing it on unmount.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* import { RasterControlReact } from 'maplibre-gl-raster/react';
|
|
13
|
+
*
|
|
14
|
+
* function MyMap() {
|
|
15
|
+
* const [map, setMap] = useState<Map | null>(null);
|
|
16
|
+
*
|
|
17
|
+
* return (
|
|
18
|
+
* <>
|
|
19
|
+
* <div ref={mapContainer} />
|
|
20
|
+
* {map && (
|
|
21
|
+
* <RasterControlReact
|
|
22
|
+
* map={map}
|
|
23
|
+
* collapsed={false}
|
|
24
|
+
* onReady={(control) => control.addRaster('https://example.com/cog.tif')}
|
|
25
|
+
* />
|
|
26
|
+
* )}
|
|
27
|
+
* </>
|
|
28
|
+
* );
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @param props - Component props including map instance and control options
|
|
33
|
+
* @returns null - This component renders nothing directly
|
|
34
|
+
*/
|
|
35
|
+
function RasterControlReact({ map, onStateChange, onReady, ...options }) {
|
|
36
|
+
const controlRef = useRef(null);
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
if (!map) return;
|
|
39
|
+
const control = new RasterControl(options);
|
|
40
|
+
controlRef.current = control;
|
|
41
|
+
if (onStateChange) control.on("statechange", (event) => {
|
|
42
|
+
onStateChange(event.state);
|
|
43
|
+
});
|
|
44
|
+
map.addControl(control, options.position || "top-right");
|
|
45
|
+
onReady?.(control);
|
|
46
|
+
return () => {
|
|
47
|
+
if (map.hasControl(control)) map.removeControl(control);
|
|
48
|
+
controlRef.current = null;
|
|
49
|
+
};
|
|
50
|
+
}, [map]);
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if (controlRef.current) {
|
|
53
|
+
const currentState = controlRef.current.getState();
|
|
54
|
+
if (options.collapsed !== void 0 && options.collapsed !== currentState.collapsed) if (options.collapsed) controlRef.current.collapse();
|
|
55
|
+
else controlRef.current.expand();
|
|
56
|
+
}
|
|
57
|
+
}, [options.collapsed]);
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
//#endregion
|
|
61
|
+
//#region src/lib/hooks/useRasterState.ts
|
|
62
|
+
/**
|
|
63
|
+
* Default initial state for the plugin
|
|
64
|
+
*/
|
|
65
|
+
var DEFAULT_STATE = {
|
|
66
|
+
collapsed: true,
|
|
67
|
+
panelWidth: 360,
|
|
68
|
+
data: {}
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Custom hook for managing plugin state in React applications.
|
|
72
|
+
*
|
|
73
|
+
* This hook provides a simple way to track and update the state
|
|
74
|
+
* of a RasterControl from React components.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```tsx
|
|
78
|
+
* function MyComponent() {
|
|
79
|
+
* const { state, setCollapsed, setData, reset } = useRasterState();
|
|
80
|
+
*
|
|
81
|
+
* return (
|
|
82
|
+
* <div>
|
|
83
|
+
* <button onClick={() => setCollapsed(!state.collapsed)}>
|
|
84
|
+
* {state.collapsed ? 'Expand' : 'Collapse'}
|
|
85
|
+
* </button>
|
|
86
|
+
* <RasterControlReact
|
|
87
|
+
* map={map}
|
|
88
|
+
* collapsed={state.collapsed}
|
|
89
|
+
* onStateChange={(newState) => setState(newState)}
|
|
90
|
+
* />
|
|
91
|
+
* </div>
|
|
92
|
+
* );
|
|
93
|
+
* }
|
|
94
|
+
* ```
|
|
95
|
+
*
|
|
96
|
+
* @param initialState - Optional initial state values
|
|
97
|
+
* @returns Object containing state and update functions
|
|
98
|
+
*/
|
|
99
|
+
function useRasterState(initialState) {
|
|
100
|
+
const [state, setState] = useState({
|
|
101
|
+
...DEFAULT_STATE,
|
|
102
|
+
...initialState
|
|
103
|
+
});
|
|
104
|
+
return {
|
|
105
|
+
state,
|
|
106
|
+
setState,
|
|
107
|
+
setCollapsed: useCallback((collapsed) => {
|
|
108
|
+
setState((prev) => ({
|
|
109
|
+
...prev,
|
|
110
|
+
collapsed
|
|
111
|
+
}));
|
|
112
|
+
}, []),
|
|
113
|
+
setPanelWidth: useCallback((panelWidth) => {
|
|
114
|
+
setState((prev) => ({
|
|
115
|
+
...prev,
|
|
116
|
+
panelWidth
|
|
117
|
+
}));
|
|
118
|
+
}, []),
|
|
119
|
+
setData: useCallback((data) => {
|
|
120
|
+
setState((prev) => ({
|
|
121
|
+
...prev,
|
|
122
|
+
data: {
|
|
123
|
+
...prev.data,
|
|
124
|
+
...data
|
|
125
|
+
}
|
|
126
|
+
}));
|
|
127
|
+
}, []),
|
|
128
|
+
reset: useCallback(() => {
|
|
129
|
+
setState({
|
|
130
|
+
...DEFAULT_STATE,
|
|
131
|
+
...initialState
|
|
132
|
+
});
|
|
133
|
+
}, [initialState]),
|
|
134
|
+
toggle: useCallback(() => {
|
|
135
|
+
setState((prev) => ({
|
|
136
|
+
...prev,
|
|
137
|
+
collapsed: !prev.collapsed
|
|
138
|
+
}));
|
|
139
|
+
}, [])
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
//#endregion
|
|
143
|
+
export { RasterControl, RasterControlReact, useRasterState };
|
|
144
|
+
|
|
145
|
+
//# sourceMappingURL=react.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.mjs","names":[],"sources":["../src/lib/core/RasterControlReact.tsx","../src/lib/hooks/useRasterState.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { RasterControl } from \"./RasterControl\";\nimport type { RasterControlReactProps } from \"./types\";\n\n/**\n * React wrapper component for RasterControl.\n *\n * This component manages the lifecycle of a RasterControl instance,\n * adding it to the map on mount and removing it on unmount.\n *\n * @example\n * ```tsx\n * import { RasterControlReact } from 'maplibre-gl-raster/react';\n *\n * function MyMap() {\n * const [map, setMap] = useState<Map | null>(null);\n *\n * return (\n * <>\n * <div ref={mapContainer} />\n * {map && (\n * <RasterControlReact\n * map={map}\n * collapsed={false}\n * onReady={(control) => control.addRaster('https://example.com/cog.tif')}\n * />\n * )}\n * </>\n * );\n * }\n * ```\n *\n * @param props - Component props including map instance and control options\n * @returns null - This component renders nothing directly\n */\nexport function RasterControlReact({\n map,\n onStateChange,\n onReady,\n ...options\n}: RasterControlReactProps): null {\n const controlRef = useRef<RasterControl | null>(null);\n\n useEffect(() => {\n if (!map) return;\n\n // Create the control instance\n const control = new RasterControl(options);\n controlRef.current = control;\n\n // Register state change handler if provided\n if (onStateChange) {\n control.on(\"statechange\", (event) => {\n onStateChange(event.state);\n });\n }\n\n // Add control to map\n map.addControl(control, options.position || \"top-right\");\n\n // Hand the instance to the host for imperative calls (addRaster, etc.)\n onReady?.(control);\n\n // Cleanup on unmount\n return () => {\n if (map.hasControl(control)) {\n map.removeControl(control);\n }\n controlRef.current = null;\n };\n }, [map]);\n\n // Update options when they change\n useEffect(() => {\n if (controlRef.current) {\n // Handle collapsed state changes\n const currentState = controlRef.current.getState();\n if (\n options.collapsed !== undefined &&\n options.collapsed !== currentState.collapsed\n ) {\n if (options.collapsed) {\n controlRef.current.collapse();\n } else {\n controlRef.current.expand();\n }\n }\n }\n }, [options.collapsed]);\n\n return null;\n}\n","import { useState, useCallback } from 'react';\nimport type { RasterControlState } from '../core/types';\n\n/**\n * Default initial state for the plugin\n */\nconst DEFAULT_STATE: RasterControlState = {\n collapsed: true,\n panelWidth: 360,\n data: {},\n};\n\n/**\n * Custom hook for managing plugin state in React applications.\n *\n * This hook provides a simple way to track and update the state\n * of a RasterControl from React components.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { state, setCollapsed, setData, reset } = useRasterState();\n *\n * return (\n * <div>\n * <button onClick={() => setCollapsed(!state.collapsed)}>\n * {state.collapsed ? 'Expand' : 'Collapse'}\n * </button>\n * <RasterControlReact\n * map={map}\n * collapsed={state.collapsed}\n * onStateChange={(newState) => setState(newState)}\n * />\n * </div>\n * );\n * }\n * ```\n *\n * @param initialState - Optional initial state values\n * @returns Object containing state and update functions\n */\nexport function useRasterState(initialState?: Partial<RasterControlState>) {\n const [state, setState] = useState<RasterControlState>({\n ...DEFAULT_STATE,\n ...initialState,\n });\n\n /**\n * Sets the collapsed state\n */\n const setCollapsed = useCallback((collapsed: boolean) => {\n setState((prev) => ({ ...prev, collapsed }));\n }, []);\n\n /**\n * Sets the panel width\n */\n const setPanelWidth = useCallback((panelWidth: number) => {\n setState((prev) => ({ ...prev, panelWidth }));\n }, []);\n\n /**\n * Sets custom data in the state\n */\n const setData = useCallback((data: Record<string, unknown>) => {\n setState((prev) => ({ ...prev, data: { ...prev.data, ...data } }));\n }, []);\n\n /**\n * Resets the state to default values\n */\n const reset = useCallback(() => {\n setState({ ...DEFAULT_STATE, ...initialState });\n }, [initialState]);\n\n /**\n * Toggles the collapsed state\n */\n const toggle = useCallback(() => {\n setState((prev) => ({ ...prev, collapsed: !prev.collapsed }));\n }, []);\n\n return {\n state,\n setState,\n setCollapsed,\n setPanelWidth,\n setData,\n reset,\n toggle,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,SAAgB,mBAAmB,EACjC,KACA,eACA,SACA,GAAG,WAC6B;CAChC,MAAM,aAAa,OAA6B,IAAI;CAEpD,gBAAgB;EACd,IAAI,CAAC,KAAK;EAGV,MAAM,UAAU,IAAI,cAAc,OAAO;EACzC,WAAW,UAAU;EAGrB,IAAI,eACF,QAAQ,GAAG,gBAAgB,UAAU;GACnC,cAAc,MAAM,KAAK;EAC3B,CAAC;EAIH,IAAI,WAAW,SAAS,QAAQ,YAAY,WAAW;EAGvD,UAAU,OAAO;EAGjB,aAAa;GACX,IAAI,IAAI,WAAW,OAAO,GACxB,IAAI,cAAc,OAAO;GAE3B,WAAW,UAAU;EACvB;CACF,GAAG,CAAC,GAAG,CAAC;CAGR,gBAAgB;EACd,IAAI,WAAW,SAAS;GAEtB,MAAM,eAAe,WAAW,QAAQ,SAAS;GACjD,IACE,QAAQ,cAAc,KAAA,KACtB,QAAQ,cAAc,aAAa,WAEnC,IAAI,QAAQ,WACV,WAAW,QAAQ,SAAS;QAE5B,WAAW,QAAQ,OAAO;EAGhC;CACF,GAAG,CAAC,QAAQ,SAAS,CAAC;CAEtB,OAAO;AACT;;;;;;ACrFA,IAAM,gBAAoC;CACxC,WAAW;CACX,YAAY;CACZ,MAAM,CAAC;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,SAAgB,eAAe,cAA4C;CACzE,MAAM,CAAC,OAAO,YAAY,SAA6B;EACrD,GAAG;EACH,GAAG;CACL,CAAC;CAqCD,OAAO;EACL;EACA;EACA,cAnCmB,aAAa,cAAuB;GACvD,UAAU,UAAU;IAAE,GAAG;IAAM;GAAU,EAAE;EAC7C,GAAG,CAAC,CAiCF;EACA,eA7BoB,aAAa,eAAuB;GACxD,UAAU,UAAU;IAAE,GAAG;IAAM;GAAW,EAAE;EAC9C,GAAG,CAAC,CA2BF;EACA,SAvBc,aAAa,SAAkC;GAC7D,UAAU,UAAU;IAAE,GAAG;IAAM,MAAM;KAAE,GAAG,KAAK;KAAM,GAAG;IAAK;GAAE,EAAE;EACnE,GAAG,CAAC,CAqBF;EACA,OAjBY,kBAAkB;GAC9B,SAAS;IAAE,GAAG;IAAe,GAAG;GAAa,CAAC;EAChD,GAAG,CAAC,YAAY,CAed;EACA,QAXa,kBAAkB;GAC/B,UAAU,UAAU;IAAE,GAAG;IAAM,WAAW,CAAC,KAAK;GAAU,EAAE;EAC9D,GAAG,CAAC,CASF;CACF;AACF"}
|