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.
Files changed (40) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +362 -0
  3. package/dist/LercDecode.es-CZm5toNk.js +442 -0
  4. package/dist/LercDecode.es-CZm5toNk.js.map +1 -0
  5. package/dist/RasterControl-B7XdXYSu.js +18838 -0
  6. package/dist/RasterControl-B7XdXYSu.js.map +1 -0
  7. package/dist/__vite-browser-external-BgMKmFg9.js +9 -0
  8. package/dist/__vite-browser-external-BgMKmFg9.js.map +1 -0
  9. package/dist/assets/LercDecode.es-Bvg6-wb5.js +442 -0
  10. package/dist/assets/LercDecode.es-Bvg6-wb5.js.map +1 -0
  11. package/dist/assets/__vite-browser-external-BgMKmFg9.js +9 -0
  12. package/dist/assets/__vite-browser-external-BgMKmFg9.js.map +1 -0
  13. package/dist/assets/chunk-FDOR9p9I.js +24 -0
  14. package/dist/assets/decode-BvR5vy7g.js +940 -0
  15. package/dist/assets/decode-BvR5vy7g.js.map +1 -0
  16. package/dist/assets/lerc-By2TvjAX.js +34 -0
  17. package/dist/assets/lerc-By2TvjAX.js.map +1 -0
  18. package/dist/assets/lzw-CQJJDca2.js +174 -0
  19. package/dist/assets/lzw-CQJJDca2.js.map +1 -0
  20. package/dist/assets/worker-C6cg9T3Y.js +51 -0
  21. package/dist/assets/worker-C6cg9T3Y.js.map +1 -0
  22. package/dist/assets/zstd-DBZv9xja.js +569 -0
  23. package/dist/assets/zstd-DBZv9xja.js.map +1 -0
  24. package/dist/chunk-FDOR9p9I.js +24 -0
  25. package/dist/decode-BMFOVF9X.js +1966 -0
  26. package/dist/decode-BMFOVF9X.js.map +1 -0
  27. package/dist/index.mjs +223 -0
  28. package/dist/index.mjs.map +1 -0
  29. package/dist/lerc-B7WY-v3y.js +34 -0
  30. package/dist/lerc-B7WY-v3y.js.map +1 -0
  31. package/dist/lzw-YEsReV21.js +174 -0
  32. package/dist/lzw-YEsReV21.js.map +1 -0
  33. package/dist/maplibre-gl-raster.css +670 -0
  34. package/dist/react.mjs +145 -0
  35. package/dist/react.mjs.map +1 -0
  36. package/dist/types/index.d.ts +649 -0
  37. package/dist/types/react.d.ts +477 -0
  38. package/dist/zstd-DBZv9xja.js +569 -0
  39. package/dist/zstd-DBZv9xja.js.map +1 -0
  40. 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"}