@weser/layers 0.0.15 → 0.0.17

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.
@@ -4,11 +4,11 @@ export type T_Layer = {
4
4
  element: Object;
5
5
  data?: Record<string, any>;
6
6
  };
7
- type LayerContext = {
7
+ export type T_LayerContext = {
8
8
  layers: Array<T_Layer>;
9
9
  addLayer: (layer: T_Layer) => void;
10
10
  removeLayer: (id: T_Layer['id']) => void;
11
11
  hasLayer: (id: T_Layer['id']) => boolean;
12
12
  };
13
- declare const _default: import("react").Context<LayerContext | null>;
13
+ declare const _default: import("react").Context<T_LayerContext | null>;
14
14
  export default _default;
@@ -0,0 +1,8 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { T_Layer } from './LayerContext.js';
3
+ type Props = {
4
+ onLayerAdded?: (layers: Array<T_Layer>) => void;
5
+ onLayerRemoved?: (layers: Array<T_Layer>) => void;
6
+ };
7
+ export default function LayerProvider({ children, onLayerAdded, onLayerRemoved, }: PropsWithChildren<Props>): import("react").JSX.Element;
8
+ export {};
@@ -0,0 +1,36 @@
1
+ 'use client';
2
+ import { useState } from 'react';
3
+ import LayerContext from './LayerContext.js';
4
+ export default function LayerProvider({ children, onLayerAdded, onLayerRemoved, }) {
5
+ const [layers, setLayers] = useState([]);
6
+ function addLayer(layer) {
7
+ setLayers((prevLayers) => {
8
+ const filteredLayers = prevLayers.filter((item) => item.id !== layer.id);
9
+ const newLayers = [...filteredLayers, layer];
10
+ if (onLayerAdded) {
11
+ onLayerAdded(newLayers);
12
+ }
13
+ return newLayers;
14
+ });
15
+ }
16
+ function removeLayer(id) {
17
+ setLayers((prevLayers) => {
18
+ const newLayers = prevLayers.filter((item) => item.id !== id);
19
+ if (onLayerRemoved) {
20
+ onLayerRemoved(newLayers);
21
+ }
22
+ return newLayers;
23
+ });
24
+ }
25
+ function hasLayer(id) {
26
+ return layers.find((item) => item.id === id) !== undefined;
27
+ }
28
+ return (<LayerContext.Provider value={{
29
+ addLayer,
30
+ removeLayer,
31
+ hasLayer,
32
+ layers,
33
+ }}>
34
+ {children}
35
+ </LayerContext.Provider>);
36
+ }
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { default as LayerContext, T_Layer } from './LayerContext.js';
2
- export { default as LayerContextProvider } from './LayerContextProvider.jsx';
2
+ export { default as LayerProvider } from './LayerProvider.jsx';
3
3
  export { default as useLayerContext } from './useLayerContext.js';
4
4
  export { default as useLayer } from './useLayer.js';
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export { default as LayerContext } from './LayerContext.js';
2
- export { default as LayerContextProvider } from './LayerContextProvider.jsx';
2
+ export { default as LayerProvider } from './LayerProvider.jsx';
3
3
  export { default as useLayerContext } from './useLayerContext.js';
4
4
  export { default as useLayer } from './useLayer.js';
@@ -1,6 +1 @@
1
- export default function useLayerContext(): {
2
- layers: import("./LayerContext.js").T_Layer[];
3
- addLayer: (layer: import("./LayerContext.js").T_Layer) => void;
4
- removeLayer: (id: string) => void;
5
- hasLayer: (id: string) => boolean;
6
- };
1
+ export default function useLayerContext(): import("./LayerContext.js").T_LayerContext;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@weser/layers",
3
- "version": "0.0.15",
3
+ "version": "0.0.17",
4
4
  "description": "React library for working with multiple layers",
5
5
  "author": "Robin Weser <robin@weser.io>",
6
6
  "license": "MIT",
@@ -54,5 +54,5 @@
54
54
  "rimraf": "^3.0.2",
55
55
  "typescript": "^5.4.5"
56
56
  },
57
- "gitHead": "09f1d19b11a34e519fd35cf91cede2b75f38356c"
57
+ "gitHead": "71b258e9fc17ff82728fc3b51ac935f48b11f204"
58
58
  }