venue-react 1.6.0-next.2 → 1.6.0-next.20
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/index.d.mts +7 -2
- package/dist/index.d.ts +7 -2
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +18 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as venue_js from 'venue-js';
|
|
2
|
-
import { VenueClientOptions, VenueDataClient, IndoorMap, FeatureType, FeatureResponseMap, FeaturePopulatedResponseMap, FilterParams, FeatureQueryOptions, IndoorMapOptions } from 'venue-js';
|
|
2
|
+
import { VenueClientOptions, VenueDataClient, IndoorMap, FeatureType, FeatureResponseMap, FeaturePopulatedResponseMap, FilterParams, FeatureQueryOptions, FindParams, IndoorMapOptions } from 'venue-js';
|
|
3
3
|
export * from 'venue-js';
|
|
4
4
|
export { AmenityFeature, AnchorFeature, EventFeature, FeaturePopulatedResponseMap, FeatureResponseMap, FeatureType, KioskFeature, LabelFeature, LevelFeature, OccupantFeature, PrivilegeFeature, PromotionFeature, SectionFeature, TaxonomyFeature, UnitFeature, VenueClientOptions, VenueDataClient, VenueFeature } from 'venue-js';
|
|
5
5
|
import * as React$1 from 'react';
|
|
@@ -50,6 +50,11 @@ declare const useGetList: <T extends FeatureType>(featureType: T, params?: Filte
|
|
|
50
50
|
stopWatch: () => void;
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
+
declare function useGetOne<T extends FeatureType>(featureType: T, id: string | undefined, params: FindParams & {
|
|
54
|
+
populate: true;
|
|
55
|
+
}, options?: FeatureQueryOptions): UseQueryResult<FeaturePopulatedResponseMap[T]>;
|
|
56
|
+
declare function useGetOne<T extends FeatureType>(featureType: T, id: string | undefined, params?: FindParams, options?: FeatureQueryOptions): UseQueryResult<FeatureResponseMap[T]>;
|
|
57
|
+
|
|
53
58
|
type UseWatchOptions = {
|
|
54
59
|
autoStart?: boolean;
|
|
55
60
|
enabled?: boolean;
|
|
@@ -68,4 +73,4 @@ declare const VenueMap: React__default.MemoExoticComponent<({ containerId, mapId
|
|
|
68
73
|
|
|
69
74
|
declare function useVenueMap(idMap?: string): venue_js.IndoorMap | null;
|
|
70
75
|
|
|
71
|
-
export { type UseGetListParams, type UseGetListResult, type UseGetOneParams, type UseGetOneResult, VenueContext, type VenueContextValue, VenueMap, type VenueMapProps, VenueProvider, type VenueProviderProps, useGetList, useVenueContext, useVenueDataClient, useVenueMap, useWatchDeliveryApi };
|
|
76
|
+
export { type UseGetListParams, type UseGetListResult, type UseGetOneParams, type UseGetOneResult, VenueContext, type VenueContextValue, VenueMap, type VenueMapProps, VenueProvider, type VenueProviderProps, useGetList, useGetOne, useVenueContext, useVenueDataClient, useVenueMap, useWatchDeliveryApi };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as venue_js from 'venue-js';
|
|
2
|
-
import { VenueClientOptions, VenueDataClient, IndoorMap, FeatureType, FeatureResponseMap, FeaturePopulatedResponseMap, FilterParams, FeatureQueryOptions, IndoorMapOptions } from 'venue-js';
|
|
2
|
+
import { VenueClientOptions, VenueDataClient, IndoorMap, FeatureType, FeatureResponseMap, FeaturePopulatedResponseMap, FilterParams, FeatureQueryOptions, FindParams, IndoorMapOptions } from 'venue-js';
|
|
3
3
|
export * from 'venue-js';
|
|
4
4
|
export { AmenityFeature, AnchorFeature, EventFeature, FeaturePopulatedResponseMap, FeatureResponseMap, FeatureType, KioskFeature, LabelFeature, LevelFeature, OccupantFeature, PrivilegeFeature, PromotionFeature, SectionFeature, TaxonomyFeature, UnitFeature, VenueClientOptions, VenueDataClient, VenueFeature } from 'venue-js';
|
|
5
5
|
import * as React$1 from 'react';
|
|
@@ -50,6 +50,11 @@ declare const useGetList: <T extends FeatureType>(featureType: T, params?: Filte
|
|
|
50
50
|
stopWatch: () => void;
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
+
declare function useGetOne<T extends FeatureType>(featureType: T, id: string | undefined, params: FindParams & {
|
|
54
|
+
populate: true;
|
|
55
|
+
}, options?: FeatureQueryOptions): UseQueryResult<FeaturePopulatedResponseMap[T]>;
|
|
56
|
+
declare function useGetOne<T extends FeatureType>(featureType: T, id: string | undefined, params?: FindParams, options?: FeatureQueryOptions): UseQueryResult<FeatureResponseMap[T]>;
|
|
57
|
+
|
|
53
58
|
type UseWatchOptions = {
|
|
54
59
|
autoStart?: boolean;
|
|
55
60
|
enabled?: boolean;
|
|
@@ -68,4 +73,4 @@ declare const VenueMap: React__default.MemoExoticComponent<({ containerId, mapId
|
|
|
68
73
|
|
|
69
74
|
declare function useVenueMap(idMap?: string): venue_js.IndoorMap | null;
|
|
70
75
|
|
|
71
|
-
export { type UseGetListParams, type UseGetListResult, type UseGetOneParams, type UseGetOneResult, VenueContext, type VenueContextValue, VenueMap, type VenueMapProps, VenueProvider, type VenueProviderProps, useGetList, useVenueContext, useVenueDataClient, useVenueMap, useWatchDeliveryApi };
|
|
76
|
+
export { type UseGetListParams, type UseGetListResult, type UseGetOneParams, type UseGetOneResult, VenueContext, type VenueContextValue, VenueMap, type VenueMapProps, VenueProvider, type VenueProviderProps, useGetList, useGetOne, useVenueContext, useVenueDataClient, useVenueMap, useWatchDeliveryApi };
|
package/dist/index.js
CHANGED
|
@@ -35,6 +35,7 @@ __export(index_exports, {
|
|
|
35
35
|
VenueMap: () => VenueMap,
|
|
36
36
|
VenueProvider: () => VenueProvider,
|
|
37
37
|
useGetList: () => useGetList,
|
|
38
|
+
useGetOne: () => useGetOne,
|
|
38
39
|
useVenueContext: () => useVenueContext,
|
|
39
40
|
useVenueDataClient: () => useVenueDataClient,
|
|
40
41
|
useVenueMap: () => useVenueMap,
|
|
@@ -150,6 +151,23 @@ var useGetList = (featureType, params = {}, options = {}) => {
|
|
|
150
151
|
};
|
|
151
152
|
};
|
|
152
153
|
|
|
154
|
+
// src/hooks/useGetOne.ts
|
|
155
|
+
var import_react_query2 = require("@tanstack/react-query");
|
|
156
|
+
function useGetOne(featureType, id, params = {}, options = {}) {
|
|
157
|
+
const client = useVenueDataClient();
|
|
158
|
+
const queryOptions = client.createFindByIdQueryOptions(
|
|
159
|
+
featureType,
|
|
160
|
+
id ?? "",
|
|
161
|
+
params,
|
|
162
|
+
options
|
|
163
|
+
);
|
|
164
|
+
return (0, import_react_query2.useQuery)({
|
|
165
|
+
...queryOptions,
|
|
166
|
+
...options,
|
|
167
|
+
enabled: (options.enabled ?? true) && !!id
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
|
|
153
171
|
// src/components/VenueMap/VenueMap.tsx
|
|
154
172
|
var import_react5 = __toESM(require("react"));
|
|
155
173
|
|
|
@@ -230,6 +248,7 @@ function useVenueMap(idMap) {
|
|
|
230
248
|
VenueMap,
|
|
231
249
|
VenueProvider,
|
|
232
250
|
useGetList,
|
|
251
|
+
useGetOne,
|
|
233
252
|
useVenueContext,
|
|
234
253
|
useVenueDataClient,
|
|
235
254
|
useVenueMap,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/VenueProvider.tsx","../src/VenueContext.tsx","../src/hooks/useVenueDataClient.ts","../src/hooks/useGetList.ts","../src/hooks/useWatchDeliveryApi.ts","../src/components/VenueMap/VenueMap.tsx","../src/hooks/useMapInstance.ts","../src/components/VenueMap/useVenueMap.ts"],"sourcesContent":["export * from \"venue-js\"\n\n// Provider\nexport { VenueProvider } from \"./VenueProvider\"\n\n// Context\nexport { VenueContext, useVenueContext } from \"./VenueContext\"\n\n// Hooks\nexport { useVenueDataClient, useGetList, useWatchDeliveryApi } from \"./hooks\"\n\n// Components \nexport * from './components/VenueMap'\n\n// Types\nexport type {\n VenueProviderProps,\n VenueContextValue,\n UseGetOneParams,\n UseGetListParams,\n UseGetOneResult,\n UseGetListResult,\n} from \"./types\"\n\n// Re-export venue-js types for convenience\nexport type {\n VenueDataClient,\n VenueClientOptions,\n FeatureType,\n FeatureResponseMap,\n FeaturePopulatedResponseMap,\n // IMDF Feature Types\n AmenityFeature,\n AnchorFeature,\n KioskFeature,\n LevelFeature,\n OccupantFeature,\n SectionFeature,\n UnitFeature,\n VenueFeature,\n // Non-IMDF Feature Types\n TaxonomyFeature,\n PromotionFeature,\n PrivilegeFeature,\n EventFeature,\n LabelFeature,\n} from \"venue-js\"\n","import React, { useCallback, useMemo, useState } from \"react\"\nimport { getDataClient, IndoorMap } from \"venue-js\"\nimport { VenueContext } from \"./VenueContext\"\nimport type { VenueProviderProps, VenueContextValue } from \"./types\"\n\nexport const VenueProvider: React.FC<VenueProviderProps> = ({\n children,\n config,\n}) => {\n \n /**\n * 1. DataClient\n */\n const dataClient = useMemo(() => {\n const venueClient = getDataClient({\n ...config,\n queryClient: config.queryClient,\n })\n\n return venueClient\n }, [config])\n\n /**\n * 2. mapInstances\n */\n const [mapInstances, setMapInstances] = useState<Record<string, IndoorMap>>({});\n const addMapInstance = useCallback((mapInstance: IndoorMap, id = 'default') => {\n setMapInstances(instances => ({...instances, [id]: mapInstance}));\n }, [setMapInstances]);\n\n const removeMapInstance = useCallback((id = 'default') => {\n setMapInstances(({[id]: _, ...remaining}) => remaining);\n }, [setMapInstances]);\n\n const clearMapInstances = useCallback(() => {\n setMapInstances({});\n }, [setMapInstances]);\n\n const getMapInstance = useCallback((id: string = 'default') => {\n return mapInstances[id]\n }, [mapInstances])\n\n const contextValue: VenueContextValue = {\n dataClient,\n mapInstances,\n addMapInstance,\n removeMapInstance,\n clearMapInstances,\n getMapInstance,\n }\n\n return (\n <VenueContext.Provider value={contextValue}>\n {children}\n </VenueContext.Provider>\n )\n}\n","/**\n * VenueContext {\n * client: VenueDataClient\n * }\n */\nimport { createContext, useContext } from \"react\"\nimport type { VenueContextValue } from \"./types\"\n\nexport const VenueContext = createContext<VenueContextValue | null>(\n null\n)\n\nexport const useVenueContext = (): VenueContextValue => {\n const context = useContext(VenueContext)\n if (context === null) {\n throw new Error(\"useVenueContext must be used within a VenueProvider\")\n }\n return context\n}\n","import { useVenueContext } from \"../VenueContext\"\nimport type { VenueDataClient } from \"venue-js\"\n\nexport const useVenueDataClient = (): VenueDataClient => {\n const { dataClient } = useVenueContext()\n return dataClient\n}\n","import { useQuery, UseQueryResult } from \"@tanstack/react-query\"\nimport {\n type FeatureType,\n type FeatureResponseMap,\n type FilterParams,\n type FeatureQueryOptions,\n} from \"venue-js\"\nimport { useVenueDataClient } from \"./useVenueDataClient\"\nimport { useWatchDeliveryApi } from \"./useWatchDeliveryApi\"\n\nexport const useGetList = <T extends FeatureType>(\n featureType: T,\n params: FilterParams = {},\n options: FeatureQueryOptions = {}\n): UseQueryResult<FeatureResponseMap[T][]> & {\n startWatch: () => void\n stopWatch: () => void\n} => {\n const client = useVenueDataClient()\n const queryOptions = client.createFilterByTypeQueryOptions(\n featureType,\n params,\n options\n )\n\n // If options.refetchInterval exists, add observer to deliveryapi query\n const refetchInterval = options.refetchInterval ?? 0\n const { stopWatch, startWatch } = useWatchDeliveryApi(featureType, refetchInterval, { enabled: refetchInterval > 0 })\n\n // @ts-expect-error\n const queryResult = useQuery<FeatureResponseMap[T][]>({\n ...queryOptions,\n ...options,\n })\n\n // @ts-expect-error\n return {\n ...queryResult,\n startWatch,\n stopWatch\n }\n}\n","import { type FeatureType } from \"venue-js\"\nimport { useVenueDataClient } from \"./useVenueDataClient\"\nimport { useCallback, useEffect } from \"react\"\n\ntype UseWatchOptions = {\n autoStart?: boolean\n enabled?: boolean\n}\n\nexport const useWatchDeliveryApi = <T extends FeatureType>(\n featureType: T,\n refetchInterval: number = 5 * 60 * 1000,\n options: UseWatchOptions\n) => {\n\n const autoStart = options.autoStart ?? true\n const enabled = options.enabled ?? true\n\n const client = useVenueDataClient()\n\n const startWatch = useCallback(() => {\n if (enabled) {\n client.registerObserver(featureType, refetchInterval)\n }\n }, [client, featureType, enabled, refetchInterval])\n\n const stopWatch = useCallback(() => {\n client.destroyObserver(featureType)\n }, [client, featureType])\n\n useEffect(() => {\n /** Keep internal queries active */\n if (enabled && autoStart) startWatch()\n\n return () => {\n stopWatch()\n }\n }, [startWatch, stopWatch, enabled, autoStart])\n\n return { startWatch, stopWatch }\n}\n","import React, { ComponentProps, useContext, useEffect } from 'react';\nimport { IndoorMapOptions } from 'venue-js';\nimport { useMapInstance } from '../../hooks/useMapInstance';\nimport { VenueContext } from '../../VenueContext';\n\nexport type VenueMapProps = ComponentProps<\"div\"> & {\n containerId?: string;\n mapId?: string;\n mapOptions?: Omit<IndoorMapOptions, 'dataClient'> | undefined;\n};\n\nexport const VenueMap = React.memo(\n ({\n containerId = 'map',\n mapId = 'default',\n mapOptions = {},\n ...props\n }: VenueMapProps) => {\n const context = useContext(VenueContext);\n if (context == null) {\n throw new Error(\n 'No context provided: VenueMap can only be used in a descendant of <VenueProvider>'\n );\n }\n \n const map = useMapInstance(containerId, { mapId, mapOptions }, context);\n\n return (\n <div {...props}>\n <div id={containerId} style={{ width: '100%', height: '100%' }} />\n </div>\n );\n }\n);\n","import { useEffect, useState } from \"react\";\nimport { IndoorMap } from \"venue-js\";\nimport { VenueContextValue } from \"../types\";\nimport { VenueMapProps } from \"../components/VenueMap\";\n\nexport const useMapInstance = (containerId: string, props: VenueMapProps, context: VenueContextValue): IndoorMap|null => {\n const [map, setMap] = useState<IndoorMap | null>(null)\n const { addMapInstance, removeMapInstance, getMapInstance } = context\n const { mapOptions, mapId = 'default' } = props\n const { dataClient } = context\n\n useEffect(() => {\n\n if (!dataClient) return\n\n let map: IndoorMap\n if (getMapInstance(mapId)) {\n map = getMapInstance(mapId)\n // If map already initialized, update Options\n map.setOptions(mapOptions ?? {});\n } else {\n\n // Create new map\n map = new IndoorMap(containerId, {\n dataClient,\n centerCross: true,\n renderer: {\n type: '3D',\n elements: {},\n },\n ...(mapOptions ?? {}),\n });\n\n \n }\n setMap(map);\n addMapInstance(map, mapId)\n\n return () => {\n if (map && map.map) {\n map.map?.remove();\n setMap(null)\n }\n removeMapInstance(mapId)\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mapId, mapOptions, dataClient.projectId]);\n\n return map\n}","import { useContext } from \"react\";\nimport { VenueContext } from \"../../VenueContext\";\n\n\nexport function useVenueMap(idMap?: string) {\n\n const context = useContext(VenueContext);\n\n if (!context) {\n console.log(\n 'useVenueMap(): failed to retrieve VenueMapContext. ' +\n 'Make sure that the <VenueProvider> component exists and that the ' +\n 'component you are calling `useMap()` from is a sibling of the ' +\n '<VenueProvider>.'\n );\n\n return null;\n }\n\n const { mapInstances } = context;\n return mapInstances[idMap ?? 'default']\n}\n"],"mappings":"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","names":["import_react","import_react","import_react","import_react","import_venue_js","map","import_jsx_runtime","React","import_react"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/VenueProvider.tsx","../src/VenueContext.tsx","../src/hooks/useVenueDataClient.ts","../src/hooks/useGetList.ts","../src/hooks/useWatchDeliveryApi.ts","../src/hooks/useGetOne.ts","../src/components/VenueMap/VenueMap.tsx","../src/hooks/useMapInstance.ts","../src/components/VenueMap/useVenueMap.ts"],"sourcesContent":["export * from \"venue-js\"\n\n// Provider\nexport { VenueProvider } from \"./VenueProvider\"\n\n// Context\nexport { VenueContext, useVenueContext } from \"./VenueContext\"\n\n// Hooks\nexport { useVenueDataClient, useGetList, useGetOne, useWatchDeliveryApi } from \"./hooks\"\n\n// Components \nexport * from './components/VenueMap'\n\n// Types\nexport type {\n VenueProviderProps,\n VenueContextValue,\n UseGetOneParams,\n UseGetListParams,\n UseGetOneResult,\n UseGetListResult,\n} from \"./types\"\n\n// Re-export venue-js types for convenience\nexport type {\n VenueDataClient,\n VenueClientOptions,\n FeatureType,\n FeatureResponseMap,\n FeaturePopulatedResponseMap,\n // IMDF Feature Types\n AmenityFeature,\n AnchorFeature,\n KioskFeature,\n LevelFeature,\n OccupantFeature,\n SectionFeature,\n UnitFeature,\n VenueFeature,\n // Non-IMDF Feature Types\n TaxonomyFeature,\n PromotionFeature,\n PrivilegeFeature,\n EventFeature,\n LabelFeature,\n} from \"venue-js\"\n","import React, { useCallback, useMemo, useState } from \"react\"\nimport { getDataClient, IndoorMap } from \"venue-js\"\nimport { VenueContext } from \"./VenueContext\"\nimport type { VenueProviderProps, VenueContextValue } from \"./types\"\n\nexport const VenueProvider: React.FC<VenueProviderProps> = ({\n children,\n config,\n}) => {\n \n /**\n * 1. DataClient\n */\n const dataClient = useMemo(() => {\n const venueClient = getDataClient({\n ...config,\n queryClient: config.queryClient,\n })\n\n return venueClient\n }, [config])\n\n /**\n * 2. mapInstances\n */\n const [mapInstances, setMapInstances] = useState<Record<string, IndoorMap>>({});\n const addMapInstance = useCallback((mapInstance: IndoorMap, id = 'default') => {\n setMapInstances(instances => ({...instances, [id]: mapInstance}));\n }, [setMapInstances]);\n\n const removeMapInstance = useCallback((id = 'default') => {\n setMapInstances(({[id]: _, ...remaining}) => remaining);\n }, [setMapInstances]);\n\n const clearMapInstances = useCallback(() => {\n setMapInstances({});\n }, [setMapInstances]);\n\n const getMapInstance = useCallback((id: string = 'default') => {\n return mapInstances[id]\n }, [mapInstances])\n\n const contextValue: VenueContextValue = {\n dataClient,\n mapInstances,\n addMapInstance,\n removeMapInstance,\n clearMapInstances,\n getMapInstance,\n }\n\n return (\n <VenueContext.Provider value={contextValue}>\n {children}\n </VenueContext.Provider>\n )\n}\n","/**\n * VenueContext {\n * client: VenueDataClient\n * }\n */\nimport { createContext, useContext } from \"react\"\nimport type { VenueContextValue } from \"./types\"\n\nexport const VenueContext = createContext<VenueContextValue | null>(\n null\n)\n\nexport const useVenueContext = (): VenueContextValue => {\n const context = useContext(VenueContext)\n if (context === null) {\n throw new Error(\"useVenueContext must be used within a VenueProvider\")\n }\n return context\n}\n","import { useVenueContext } from \"../VenueContext\"\nimport type { VenueDataClient } from \"venue-js\"\n\nexport const useVenueDataClient = (): VenueDataClient => {\n const { dataClient } = useVenueContext()\n return dataClient\n}\n","import { useQuery, UseQueryResult } from \"@tanstack/react-query\"\nimport {\n type FeatureType,\n type FeatureResponseMap,\n type FilterParams,\n type FeatureQueryOptions,\n} from \"venue-js\"\nimport { useVenueDataClient } from \"./useVenueDataClient\"\nimport { useWatchDeliveryApi } from \"./useWatchDeliveryApi\"\n\nexport const useGetList = <T extends FeatureType>(\n featureType: T,\n params: FilterParams = {},\n options: FeatureQueryOptions = {}\n): UseQueryResult<FeatureResponseMap[T][]> & {\n startWatch: () => void\n stopWatch: () => void\n} => {\n const client = useVenueDataClient()\n const queryOptions = client.createFilterByTypeQueryOptions(\n featureType,\n params,\n options\n )\n\n // If options.refetchInterval exists, add observer to deliveryapi query\n const refetchInterval = options.refetchInterval ?? 0\n const { stopWatch, startWatch } = useWatchDeliveryApi(featureType, refetchInterval, { enabled: refetchInterval > 0 })\n\n // @ts-expect-error\n const queryResult = useQuery<FeatureResponseMap[T][]>({\n ...queryOptions,\n ...options,\n })\n\n // @ts-expect-error\n return {\n ...queryResult,\n startWatch,\n stopWatch\n }\n}\n","import { type FeatureType } from \"venue-js\"\nimport { useVenueDataClient } from \"./useVenueDataClient\"\nimport { useCallback, useEffect } from \"react\"\n\ntype UseWatchOptions = {\n autoStart?: boolean\n enabled?: boolean\n}\n\nexport const useWatchDeliveryApi = <T extends FeatureType>(\n featureType: T,\n refetchInterval: number = 5 * 60 * 1000,\n options: UseWatchOptions\n) => {\n\n const autoStart = options.autoStart ?? true\n const enabled = options.enabled ?? true\n\n const client = useVenueDataClient()\n\n const startWatch = useCallback(() => {\n if (enabled) {\n client.registerObserver(featureType, refetchInterval)\n }\n }, [client, featureType, enabled, refetchInterval])\n\n const stopWatch = useCallback(() => {\n client.destroyObserver(featureType)\n }, [client, featureType])\n\n useEffect(() => {\n /** Keep internal queries active */\n if (enabled && autoStart) startWatch()\n\n return () => {\n stopWatch()\n }\n }, [startWatch, stopWatch, enabled, autoStart])\n\n return { startWatch, stopWatch }\n}\n","import { useQuery, UseQueryResult } from \"@tanstack/react-query\"\nimport {\n type FeatureType,\n type FeatureResponseMap,\n type FeaturePopulatedResponseMap,\n type FindParams,\n type FeatureQueryOptions,\n} from \"venue-js\"\nimport { useVenueDataClient } from \"./useVenueDataClient\"\n\nexport function useGetOne<T extends FeatureType>(\n featureType: T,\n id: string | undefined,\n params: FindParams & { populate: true },\n options?: FeatureQueryOptions\n): UseQueryResult<FeaturePopulatedResponseMap[T]>\nexport function useGetOne<T extends FeatureType>(\n featureType: T,\n id: string | undefined,\n params?: FindParams,\n options?: FeatureQueryOptions\n): UseQueryResult<FeatureResponseMap[T]>\nexport function useGetOne<T extends FeatureType>(\n featureType: T,\n id: string | undefined,\n params: FindParams = {},\n options: FeatureQueryOptions = {}\n) {\n const client = useVenueDataClient()\n const queryOptions = client.createFindByIdQueryOptions(\n featureType,\n id ?? \"\",\n params,\n options\n )\n // @ts-expect-error\n return useQuery<FeatureResponseMap[T]>({\n ...queryOptions,\n ...options,\n enabled: (options.enabled ?? true) && !!id,\n })\n}\n","import React, { ComponentProps, useContext, useEffect } from 'react';\nimport { IndoorMapOptions } from 'venue-js';\nimport { useMapInstance } from '../../hooks/useMapInstance';\nimport { VenueContext } from '../../VenueContext';\n\nexport type VenueMapProps = ComponentProps<\"div\"> & {\n containerId?: string;\n mapId?: string;\n mapOptions?: Omit<IndoorMapOptions, 'dataClient'> | undefined;\n};\n\nexport const VenueMap = React.memo(\n ({\n containerId = 'map',\n mapId = 'default',\n mapOptions = {},\n ...props\n }: VenueMapProps) => {\n const context = useContext(VenueContext);\n if (context == null) {\n throw new Error(\n 'No context provided: VenueMap can only be used in a descendant of <VenueProvider>'\n );\n }\n \n const map = useMapInstance(containerId, { mapId, mapOptions }, context);\n\n return (\n <div {...props}>\n <div id={containerId} style={{ width: '100%', height: '100%' }} />\n </div>\n );\n }\n);\n","import { useEffect, useState } from \"react\";\nimport { IndoorMap } from \"venue-js\";\nimport { VenueContextValue } from \"../types\";\nimport { VenueMapProps } from \"../components/VenueMap\";\n\nexport const useMapInstance = (containerId: string, props: VenueMapProps, context: VenueContextValue): IndoorMap|null => {\n const [map, setMap] = useState<IndoorMap | null>(null)\n const { addMapInstance, removeMapInstance, getMapInstance } = context\n const { mapOptions, mapId = 'default' } = props\n const { dataClient } = context\n\n useEffect(() => {\n\n if (!dataClient) return\n\n let map: IndoorMap\n if (getMapInstance(mapId)) {\n map = getMapInstance(mapId)\n // If map already initialized, update Options\n map.setOptions(mapOptions ?? {});\n } else {\n\n // Create new map\n map = new IndoorMap(containerId, {\n dataClient,\n centerCross: true,\n renderer: {\n type: '3D',\n elements: {},\n },\n ...(mapOptions ?? {}),\n });\n\n \n }\n setMap(map);\n addMapInstance(map, mapId)\n\n return () => {\n if (map && map.map) {\n map.map?.remove();\n setMap(null)\n }\n removeMapInstance(mapId)\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mapId, mapOptions, dataClient.projectId]);\n\n return map\n}","import { useContext } from \"react\";\nimport { VenueContext } from \"../../VenueContext\";\n\n\nexport function useVenueMap(idMap?: string) {\n\n const context = useContext(VenueContext);\n\n if (!context) {\n console.log(\n 'useVenueMap(): failed to retrieve VenueMapContext. ' +\n 'Make sure that the <VenueProvider> component exists and that the ' +\n 'component you are calling `useMap()` from is a sibling of the ' +\n '<VenueProvider>.'\n );\n\n return null;\n }\n\n const { mapInstances } = context;\n return mapInstances[idMap ?? 'default']\n}\n"],"mappings":"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","names":["import_react","import_react","import_react_query","import_react","import_react","import_venue_js","map","import_jsx_runtime","React","import_react"]}
|
package/dist/index.mjs
CHANGED
|
@@ -108,6 +108,23 @@ var useGetList = (featureType, params = {}, options = {}) => {
|
|
|
108
108
|
};
|
|
109
109
|
};
|
|
110
110
|
|
|
111
|
+
// src/hooks/useGetOne.ts
|
|
112
|
+
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
113
|
+
function useGetOne(featureType, id, params = {}, options = {}) {
|
|
114
|
+
const client = useVenueDataClient();
|
|
115
|
+
const queryOptions = client.createFindByIdQueryOptions(
|
|
116
|
+
featureType,
|
|
117
|
+
id ?? "",
|
|
118
|
+
params,
|
|
119
|
+
options
|
|
120
|
+
);
|
|
121
|
+
return useQuery2({
|
|
122
|
+
...queryOptions,
|
|
123
|
+
...options,
|
|
124
|
+
enabled: (options.enabled ?? true) && !!id
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
111
128
|
// src/components/VenueMap/VenueMap.tsx
|
|
112
129
|
import React2, { useContext as useContext2 } from "react";
|
|
113
130
|
|
|
@@ -187,6 +204,7 @@ export {
|
|
|
187
204
|
VenueMap,
|
|
188
205
|
VenueProvider,
|
|
189
206
|
useGetList,
|
|
207
|
+
useGetOne,
|
|
190
208
|
useVenueContext,
|
|
191
209
|
useVenueDataClient,
|
|
192
210
|
useVenueMap,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/VenueProvider.tsx","../src/VenueContext.tsx","../src/hooks/useVenueDataClient.ts","../src/hooks/useGetList.ts","../src/hooks/useWatchDeliveryApi.ts","../src/components/VenueMap/VenueMap.tsx","../src/hooks/useMapInstance.ts","../src/components/VenueMap/useVenueMap.ts"],"sourcesContent":["export * from \"venue-js\"\n\n// Provider\nexport { VenueProvider } from \"./VenueProvider\"\n\n// Context\nexport { VenueContext, useVenueContext } from \"./VenueContext\"\n\n// Hooks\nexport { useVenueDataClient, useGetList, useWatchDeliveryApi } from \"./hooks\"\n\n// Components \nexport * from './components/VenueMap'\n\n// Types\nexport type {\n VenueProviderProps,\n VenueContextValue,\n UseGetOneParams,\n UseGetListParams,\n UseGetOneResult,\n UseGetListResult,\n} from \"./types\"\n\n// Re-export venue-js types for convenience\nexport type {\n VenueDataClient,\n VenueClientOptions,\n FeatureType,\n FeatureResponseMap,\n FeaturePopulatedResponseMap,\n // IMDF Feature Types\n AmenityFeature,\n AnchorFeature,\n KioskFeature,\n LevelFeature,\n OccupantFeature,\n SectionFeature,\n UnitFeature,\n VenueFeature,\n // Non-IMDF Feature Types\n TaxonomyFeature,\n PromotionFeature,\n PrivilegeFeature,\n EventFeature,\n LabelFeature,\n} from \"venue-js\"\n","import React, { useCallback, useMemo, useState } from \"react\"\nimport { getDataClient, IndoorMap } from \"venue-js\"\nimport { VenueContext } from \"./VenueContext\"\nimport type { VenueProviderProps, VenueContextValue } from \"./types\"\n\nexport const VenueProvider: React.FC<VenueProviderProps> = ({\n children,\n config,\n}) => {\n \n /**\n * 1. DataClient\n */\n const dataClient = useMemo(() => {\n const venueClient = getDataClient({\n ...config,\n queryClient: config.queryClient,\n })\n\n return venueClient\n }, [config])\n\n /**\n * 2. mapInstances\n */\n const [mapInstances, setMapInstances] = useState<Record<string, IndoorMap>>({});\n const addMapInstance = useCallback((mapInstance: IndoorMap, id = 'default') => {\n setMapInstances(instances => ({...instances, [id]: mapInstance}));\n }, [setMapInstances]);\n\n const removeMapInstance = useCallback((id = 'default') => {\n setMapInstances(({[id]: _, ...remaining}) => remaining);\n }, [setMapInstances]);\n\n const clearMapInstances = useCallback(() => {\n setMapInstances({});\n }, [setMapInstances]);\n\n const getMapInstance = useCallback((id: string = 'default') => {\n return mapInstances[id]\n }, [mapInstances])\n\n const contextValue: VenueContextValue = {\n dataClient,\n mapInstances,\n addMapInstance,\n removeMapInstance,\n clearMapInstances,\n getMapInstance,\n }\n\n return (\n <VenueContext.Provider value={contextValue}>\n {children}\n </VenueContext.Provider>\n )\n}\n","/**\n * VenueContext {\n * client: VenueDataClient\n * }\n */\nimport { createContext, useContext } from \"react\"\nimport type { VenueContextValue } from \"./types\"\n\nexport const VenueContext = createContext<VenueContextValue | null>(\n null\n)\n\nexport const useVenueContext = (): VenueContextValue => {\n const context = useContext(VenueContext)\n if (context === null) {\n throw new Error(\"useVenueContext must be used within a VenueProvider\")\n }\n return context\n}\n","import { useVenueContext } from \"../VenueContext\"\nimport type { VenueDataClient } from \"venue-js\"\n\nexport const useVenueDataClient = (): VenueDataClient => {\n const { dataClient } = useVenueContext()\n return dataClient\n}\n","import { useQuery, UseQueryResult } from \"@tanstack/react-query\"\nimport {\n type FeatureType,\n type FeatureResponseMap,\n type FilterParams,\n type FeatureQueryOptions,\n} from \"venue-js\"\nimport { useVenueDataClient } from \"./useVenueDataClient\"\nimport { useWatchDeliveryApi } from \"./useWatchDeliveryApi\"\n\nexport const useGetList = <T extends FeatureType>(\n featureType: T,\n params: FilterParams = {},\n options: FeatureQueryOptions = {}\n): UseQueryResult<FeatureResponseMap[T][]> & {\n startWatch: () => void\n stopWatch: () => void\n} => {\n const client = useVenueDataClient()\n const queryOptions = client.createFilterByTypeQueryOptions(\n featureType,\n params,\n options\n )\n\n // If options.refetchInterval exists, add observer to deliveryapi query\n const refetchInterval = options.refetchInterval ?? 0\n const { stopWatch, startWatch } = useWatchDeliveryApi(featureType, refetchInterval, { enabled: refetchInterval > 0 })\n\n // @ts-expect-error\n const queryResult = useQuery<FeatureResponseMap[T][]>({\n ...queryOptions,\n ...options,\n })\n\n // @ts-expect-error\n return {\n ...queryResult,\n startWatch,\n stopWatch\n }\n}\n","import { type FeatureType } from \"venue-js\"\nimport { useVenueDataClient } from \"./useVenueDataClient\"\nimport { useCallback, useEffect } from \"react\"\n\ntype UseWatchOptions = {\n autoStart?: boolean\n enabled?: boolean\n}\n\nexport const useWatchDeliveryApi = <T extends FeatureType>(\n featureType: T,\n refetchInterval: number = 5 * 60 * 1000,\n options: UseWatchOptions\n) => {\n\n const autoStart = options.autoStart ?? true\n const enabled = options.enabled ?? true\n\n const client = useVenueDataClient()\n\n const startWatch = useCallback(() => {\n if (enabled) {\n client.registerObserver(featureType, refetchInterval)\n }\n }, [client, featureType, enabled, refetchInterval])\n\n const stopWatch = useCallback(() => {\n client.destroyObserver(featureType)\n }, [client, featureType])\n\n useEffect(() => {\n /** Keep internal queries active */\n if (enabled && autoStart) startWatch()\n\n return () => {\n stopWatch()\n }\n }, [startWatch, stopWatch, enabled, autoStart])\n\n return { startWatch, stopWatch }\n}\n","import React, { ComponentProps, useContext, useEffect } from 'react';\nimport { IndoorMapOptions } from 'venue-js';\nimport { useMapInstance } from '../../hooks/useMapInstance';\nimport { VenueContext } from '../../VenueContext';\n\nexport type VenueMapProps = ComponentProps<\"div\"> & {\n containerId?: string;\n mapId?: string;\n mapOptions?: Omit<IndoorMapOptions, 'dataClient'> | undefined;\n};\n\nexport const VenueMap = React.memo(\n ({\n containerId = 'map',\n mapId = 'default',\n mapOptions = {},\n ...props\n }: VenueMapProps) => {\n const context = useContext(VenueContext);\n if (context == null) {\n throw new Error(\n 'No context provided: VenueMap can only be used in a descendant of <VenueProvider>'\n );\n }\n \n const map = useMapInstance(containerId, { mapId, mapOptions }, context);\n\n return (\n <div {...props}>\n <div id={containerId} style={{ width: '100%', height: '100%' }} />\n </div>\n );\n }\n);\n","import { useEffect, useState } from \"react\";\nimport { IndoorMap } from \"venue-js\";\nimport { VenueContextValue } from \"../types\";\nimport { VenueMapProps } from \"../components/VenueMap\";\n\nexport const useMapInstance = (containerId: string, props: VenueMapProps, context: VenueContextValue): IndoorMap|null => {\n const [map, setMap] = useState<IndoorMap | null>(null)\n const { addMapInstance, removeMapInstance, getMapInstance } = context\n const { mapOptions, mapId = 'default' } = props\n const { dataClient } = context\n\n useEffect(() => {\n\n if (!dataClient) return\n\n let map: IndoorMap\n if (getMapInstance(mapId)) {\n map = getMapInstance(mapId)\n // If map already initialized, update Options\n map.setOptions(mapOptions ?? {});\n } else {\n\n // Create new map\n map = new IndoorMap(containerId, {\n dataClient,\n centerCross: true,\n renderer: {\n type: '3D',\n elements: {},\n },\n ...(mapOptions ?? {}),\n });\n\n \n }\n setMap(map);\n addMapInstance(map, mapId)\n\n return () => {\n if (map && map.map) {\n map.map?.remove();\n setMap(null)\n }\n removeMapInstance(mapId)\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mapId, mapOptions, dataClient.projectId]);\n\n return map\n}","import { useContext } from \"react\";\nimport { VenueContext } from \"../../VenueContext\";\n\n\nexport function useVenueMap(idMap?: string) {\n\n const context = useContext(VenueContext);\n\n if (!context) {\n console.log(\n 'useVenueMap(): failed to retrieve VenueMapContext. ' +\n 'Make sure that the <VenueProvider> component exists and that the ' +\n 'component you are calling `useMap()` from is a sibling of the ' +\n '<VenueProvider>.'\n );\n\n return null;\n }\n\n const { mapInstances } = context;\n return mapInstances[idMap ?? 'default']\n}\n"],"mappings":"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","names":["useCallback","React","useContext","useEffect","useState","IndoorMap","map","jsx","React","useContext","useContext","useContext"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/VenueProvider.tsx","../src/VenueContext.tsx","../src/hooks/useVenueDataClient.ts","../src/hooks/useGetList.ts","../src/hooks/useWatchDeliveryApi.ts","../src/hooks/useGetOne.ts","../src/components/VenueMap/VenueMap.tsx","../src/hooks/useMapInstance.ts","../src/components/VenueMap/useVenueMap.ts"],"sourcesContent":["export * from \"venue-js\"\n\n// Provider\nexport { VenueProvider } from \"./VenueProvider\"\n\n// Context\nexport { VenueContext, useVenueContext } from \"./VenueContext\"\n\n// Hooks\nexport { useVenueDataClient, useGetList, useGetOne, useWatchDeliveryApi } from \"./hooks\"\n\n// Components \nexport * from './components/VenueMap'\n\n// Types\nexport type {\n VenueProviderProps,\n VenueContextValue,\n UseGetOneParams,\n UseGetListParams,\n UseGetOneResult,\n UseGetListResult,\n} from \"./types\"\n\n// Re-export venue-js types for convenience\nexport type {\n VenueDataClient,\n VenueClientOptions,\n FeatureType,\n FeatureResponseMap,\n FeaturePopulatedResponseMap,\n // IMDF Feature Types\n AmenityFeature,\n AnchorFeature,\n KioskFeature,\n LevelFeature,\n OccupantFeature,\n SectionFeature,\n UnitFeature,\n VenueFeature,\n // Non-IMDF Feature Types\n TaxonomyFeature,\n PromotionFeature,\n PrivilegeFeature,\n EventFeature,\n LabelFeature,\n} from \"venue-js\"\n","import React, { useCallback, useMemo, useState } from \"react\"\nimport { getDataClient, IndoorMap } from \"venue-js\"\nimport { VenueContext } from \"./VenueContext\"\nimport type { VenueProviderProps, VenueContextValue } from \"./types\"\n\nexport const VenueProvider: React.FC<VenueProviderProps> = ({\n children,\n config,\n}) => {\n \n /**\n * 1. DataClient\n */\n const dataClient = useMemo(() => {\n const venueClient = getDataClient({\n ...config,\n queryClient: config.queryClient,\n })\n\n return venueClient\n }, [config])\n\n /**\n * 2. mapInstances\n */\n const [mapInstances, setMapInstances] = useState<Record<string, IndoorMap>>({});\n const addMapInstance = useCallback((mapInstance: IndoorMap, id = 'default') => {\n setMapInstances(instances => ({...instances, [id]: mapInstance}));\n }, [setMapInstances]);\n\n const removeMapInstance = useCallback((id = 'default') => {\n setMapInstances(({[id]: _, ...remaining}) => remaining);\n }, [setMapInstances]);\n\n const clearMapInstances = useCallback(() => {\n setMapInstances({});\n }, [setMapInstances]);\n\n const getMapInstance = useCallback((id: string = 'default') => {\n return mapInstances[id]\n }, [mapInstances])\n\n const contextValue: VenueContextValue = {\n dataClient,\n mapInstances,\n addMapInstance,\n removeMapInstance,\n clearMapInstances,\n getMapInstance,\n }\n\n return (\n <VenueContext.Provider value={contextValue}>\n {children}\n </VenueContext.Provider>\n )\n}\n","/**\n * VenueContext {\n * client: VenueDataClient\n * }\n */\nimport { createContext, useContext } from \"react\"\nimport type { VenueContextValue } from \"./types\"\n\nexport const VenueContext = createContext<VenueContextValue | null>(\n null\n)\n\nexport const useVenueContext = (): VenueContextValue => {\n const context = useContext(VenueContext)\n if (context === null) {\n throw new Error(\"useVenueContext must be used within a VenueProvider\")\n }\n return context\n}\n","import { useVenueContext } from \"../VenueContext\"\nimport type { VenueDataClient } from \"venue-js\"\n\nexport const useVenueDataClient = (): VenueDataClient => {\n const { dataClient } = useVenueContext()\n return dataClient\n}\n","import { useQuery, UseQueryResult } from \"@tanstack/react-query\"\nimport {\n type FeatureType,\n type FeatureResponseMap,\n type FilterParams,\n type FeatureQueryOptions,\n} from \"venue-js\"\nimport { useVenueDataClient } from \"./useVenueDataClient\"\nimport { useWatchDeliveryApi } from \"./useWatchDeliveryApi\"\n\nexport const useGetList = <T extends FeatureType>(\n featureType: T,\n params: FilterParams = {},\n options: FeatureQueryOptions = {}\n): UseQueryResult<FeatureResponseMap[T][]> & {\n startWatch: () => void\n stopWatch: () => void\n} => {\n const client = useVenueDataClient()\n const queryOptions = client.createFilterByTypeQueryOptions(\n featureType,\n params,\n options\n )\n\n // If options.refetchInterval exists, add observer to deliveryapi query\n const refetchInterval = options.refetchInterval ?? 0\n const { stopWatch, startWatch } = useWatchDeliveryApi(featureType, refetchInterval, { enabled: refetchInterval > 0 })\n\n // @ts-expect-error\n const queryResult = useQuery<FeatureResponseMap[T][]>({\n ...queryOptions,\n ...options,\n })\n\n // @ts-expect-error\n return {\n ...queryResult,\n startWatch,\n stopWatch\n }\n}\n","import { type FeatureType } from \"venue-js\"\nimport { useVenueDataClient } from \"./useVenueDataClient\"\nimport { useCallback, useEffect } from \"react\"\n\ntype UseWatchOptions = {\n autoStart?: boolean\n enabled?: boolean\n}\n\nexport const useWatchDeliveryApi = <T extends FeatureType>(\n featureType: T,\n refetchInterval: number = 5 * 60 * 1000,\n options: UseWatchOptions\n) => {\n\n const autoStart = options.autoStart ?? true\n const enabled = options.enabled ?? true\n\n const client = useVenueDataClient()\n\n const startWatch = useCallback(() => {\n if (enabled) {\n client.registerObserver(featureType, refetchInterval)\n }\n }, [client, featureType, enabled, refetchInterval])\n\n const stopWatch = useCallback(() => {\n client.destroyObserver(featureType)\n }, [client, featureType])\n\n useEffect(() => {\n /** Keep internal queries active */\n if (enabled && autoStart) startWatch()\n\n return () => {\n stopWatch()\n }\n }, [startWatch, stopWatch, enabled, autoStart])\n\n return { startWatch, stopWatch }\n}\n","import { useQuery, UseQueryResult } from \"@tanstack/react-query\"\nimport {\n type FeatureType,\n type FeatureResponseMap,\n type FeaturePopulatedResponseMap,\n type FindParams,\n type FeatureQueryOptions,\n} from \"venue-js\"\nimport { useVenueDataClient } from \"./useVenueDataClient\"\n\nexport function useGetOne<T extends FeatureType>(\n featureType: T,\n id: string | undefined,\n params: FindParams & { populate: true },\n options?: FeatureQueryOptions\n): UseQueryResult<FeaturePopulatedResponseMap[T]>\nexport function useGetOne<T extends FeatureType>(\n featureType: T,\n id: string | undefined,\n params?: FindParams,\n options?: FeatureQueryOptions\n): UseQueryResult<FeatureResponseMap[T]>\nexport function useGetOne<T extends FeatureType>(\n featureType: T,\n id: string | undefined,\n params: FindParams = {},\n options: FeatureQueryOptions = {}\n) {\n const client = useVenueDataClient()\n const queryOptions = client.createFindByIdQueryOptions(\n featureType,\n id ?? \"\",\n params,\n options\n )\n // @ts-expect-error\n return useQuery<FeatureResponseMap[T]>({\n ...queryOptions,\n ...options,\n enabled: (options.enabled ?? true) && !!id,\n })\n}\n","import React, { ComponentProps, useContext, useEffect } from 'react';\nimport { IndoorMapOptions } from 'venue-js';\nimport { useMapInstance } from '../../hooks/useMapInstance';\nimport { VenueContext } from '../../VenueContext';\n\nexport type VenueMapProps = ComponentProps<\"div\"> & {\n containerId?: string;\n mapId?: string;\n mapOptions?: Omit<IndoorMapOptions, 'dataClient'> | undefined;\n};\n\nexport const VenueMap = React.memo(\n ({\n containerId = 'map',\n mapId = 'default',\n mapOptions = {},\n ...props\n }: VenueMapProps) => {\n const context = useContext(VenueContext);\n if (context == null) {\n throw new Error(\n 'No context provided: VenueMap can only be used in a descendant of <VenueProvider>'\n );\n }\n \n const map = useMapInstance(containerId, { mapId, mapOptions }, context);\n\n return (\n <div {...props}>\n <div id={containerId} style={{ width: '100%', height: '100%' }} />\n </div>\n );\n }\n);\n","import { useEffect, useState } from \"react\";\nimport { IndoorMap } from \"venue-js\";\nimport { VenueContextValue } from \"../types\";\nimport { VenueMapProps } from \"../components/VenueMap\";\n\nexport const useMapInstance = (containerId: string, props: VenueMapProps, context: VenueContextValue): IndoorMap|null => {\n const [map, setMap] = useState<IndoorMap | null>(null)\n const { addMapInstance, removeMapInstance, getMapInstance } = context\n const { mapOptions, mapId = 'default' } = props\n const { dataClient } = context\n\n useEffect(() => {\n\n if (!dataClient) return\n\n let map: IndoorMap\n if (getMapInstance(mapId)) {\n map = getMapInstance(mapId)\n // If map already initialized, update Options\n map.setOptions(mapOptions ?? {});\n } else {\n\n // Create new map\n map = new IndoorMap(containerId, {\n dataClient,\n centerCross: true,\n renderer: {\n type: '3D',\n elements: {},\n },\n ...(mapOptions ?? {}),\n });\n\n \n }\n setMap(map);\n addMapInstance(map, mapId)\n\n return () => {\n if (map && map.map) {\n map.map?.remove();\n setMap(null)\n }\n removeMapInstance(mapId)\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mapId, mapOptions, dataClient.projectId]);\n\n return map\n}","import { useContext } from \"react\";\nimport { VenueContext } from \"../../VenueContext\";\n\n\nexport function useVenueMap(idMap?: string) {\n\n const context = useContext(VenueContext);\n\n if (!context) {\n console.log(\n 'useVenueMap(): failed to retrieve VenueMapContext. ' +\n 'Make sure that the <VenueProvider> component exists and that the ' +\n 'component you are calling `useMap()` from is a sibling of the ' +\n '<VenueProvider>.'\n );\n\n return null;\n }\n\n const { mapInstances } = context;\n return mapInstances[idMap ?? 'default']\n}\n"],"mappings":"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","names":["useCallback","useQuery","useQuery","React","useContext","useEffect","useState","IndoorMap","map","jsx","React","useContext","useContext","useContext"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "venue-react",
|
|
3
|
-
"version": "1.6.0-next.
|
|
3
|
+
"version": "1.6.0-next.20",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -33,6 +33,6 @@
|
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@turf/boolean-within": "^7.2.0",
|
|
36
|
-
"venue-js": "1.6.0-next.
|
|
36
|
+
"venue-js": "1.6.0-next.19"
|
|
37
37
|
}
|
|
38
38
|
}
|