venue-react 1.5.0 → 1.6.0-next.1
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 +23 -6
- package/dist/index.d.ts +23 -6
- package/dist/index.js +117 -10
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +106 -12
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import * as venue_js from 'venue-js';
|
|
2
|
+
import { VenueClientOptions, VenueDataClient, IndoorMap, FeatureType, FeatureResponseMap, FeaturePopulatedResponseMap, FilterParams, FeatureQueryOptions, IndoorMapOptions } from 'venue-js';
|
|
3
|
+
export * from 'venue-js';
|
|
4
|
+
export { AmenityFeature, AnchorFeature, EventFeature, FeaturePopulatedResponseMap, FeatureResponseMap, FeatureType, KioskFeature, LabelFeature, LevelFeature, OccupantFeature, PrivilegeFeature, PromotionFeature, SectionFeature, TaxonomyFeature, UnitFeature, VenueClientOptions, VenueDataClient, VenueFeature } from 'venue-js';
|
|
3
5
|
import * as React$1 from 'react';
|
|
4
|
-
import React__default from 'react';
|
|
6
|
+
import React__default, { ComponentProps } from 'react';
|
|
5
7
|
import { UseQueryResult } from '@tanstack/react-query';
|
|
8
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
9
|
|
|
7
10
|
interface VenueProviderProps {
|
|
8
11
|
children: React.ReactNode;
|
|
9
12
|
config: VenueClientOptions;
|
|
10
13
|
}
|
|
11
14
|
interface VenueContextValue {
|
|
12
|
-
|
|
15
|
+
dataClient: VenueDataClient;
|
|
16
|
+
mapInstances: Record<string, IndoorMap>;
|
|
17
|
+
addMapInstance: (map: IndoorMap, id?: string) => void;
|
|
18
|
+
removeMapInstance: (id?: string) => void;
|
|
19
|
+
clearMapInstances: () => void;
|
|
20
|
+
getMapInstance: (id?: string) => IndoorMap;
|
|
13
21
|
}
|
|
14
22
|
interface UseGetOneParams {
|
|
15
23
|
populate?: boolean;
|
|
@@ -32,7 +40,7 @@ interface UseGetListResult<T extends FeatureType> {
|
|
|
32
40
|
|
|
33
41
|
declare const VenueProvider: React__default.FC<VenueProviderProps>;
|
|
34
42
|
|
|
35
|
-
declare const VenueContext: React$1.Context<VenueContextValue |
|
|
43
|
+
declare const VenueContext: React$1.Context<VenueContextValue | null>;
|
|
36
44
|
declare const useVenueContext: () => VenueContextValue;
|
|
37
45
|
|
|
38
46
|
declare const useVenueDataClient: () => VenueDataClient;
|
|
@@ -51,4 +59,13 @@ declare const useWatchDeliveryApi: <T extends FeatureType>(featureType: T, refet
|
|
|
51
59
|
stopWatch: () => void;
|
|
52
60
|
};
|
|
53
61
|
|
|
54
|
-
|
|
62
|
+
type VenueMapProps = ComponentProps<"div"> & {
|
|
63
|
+
containerId?: string;
|
|
64
|
+
mapId?: string;
|
|
65
|
+
mapOptions?: Omit<IndoorMapOptions, 'dataClient'> | undefined;
|
|
66
|
+
};
|
|
67
|
+
declare const VenueMap: React__default.MemoExoticComponent<({ containerId, mapId, mapOptions, ...props }: VenueMapProps) => react_jsx_runtime.JSX.Element>;
|
|
68
|
+
|
|
69
|
+
declare function useVenueMap(idMap?: string): venue_js.IndoorMap | null;
|
|
70
|
+
|
|
71
|
+
export { type UseGetListParams, type UseGetListResult, type UseGetOneParams, type UseGetOneResult, VenueContext, type VenueContextValue, VenueMap, type VenueMapProps, VenueProvider, type VenueProviderProps, useGetList, useVenueContext, useVenueDataClient, useVenueMap, useWatchDeliveryApi };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import * as venue_js from 'venue-js';
|
|
2
|
+
import { VenueClientOptions, VenueDataClient, IndoorMap, FeatureType, FeatureResponseMap, FeaturePopulatedResponseMap, FilterParams, FeatureQueryOptions, IndoorMapOptions } from 'venue-js';
|
|
3
|
+
export * from 'venue-js';
|
|
4
|
+
export { AmenityFeature, AnchorFeature, EventFeature, FeaturePopulatedResponseMap, FeatureResponseMap, FeatureType, KioskFeature, LabelFeature, LevelFeature, OccupantFeature, PrivilegeFeature, PromotionFeature, SectionFeature, TaxonomyFeature, UnitFeature, VenueClientOptions, VenueDataClient, VenueFeature } from 'venue-js';
|
|
3
5
|
import * as React$1 from 'react';
|
|
4
|
-
import React__default from 'react';
|
|
6
|
+
import React__default, { ComponentProps } from 'react';
|
|
5
7
|
import { UseQueryResult } from '@tanstack/react-query';
|
|
8
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
9
|
|
|
7
10
|
interface VenueProviderProps {
|
|
8
11
|
children: React.ReactNode;
|
|
9
12
|
config: VenueClientOptions;
|
|
10
13
|
}
|
|
11
14
|
interface VenueContextValue {
|
|
12
|
-
|
|
15
|
+
dataClient: VenueDataClient;
|
|
16
|
+
mapInstances: Record<string, IndoorMap>;
|
|
17
|
+
addMapInstance: (map: IndoorMap, id?: string) => void;
|
|
18
|
+
removeMapInstance: (id?: string) => void;
|
|
19
|
+
clearMapInstances: () => void;
|
|
20
|
+
getMapInstance: (id?: string) => IndoorMap;
|
|
13
21
|
}
|
|
14
22
|
interface UseGetOneParams {
|
|
15
23
|
populate?: boolean;
|
|
@@ -32,7 +40,7 @@ interface UseGetListResult<T extends FeatureType> {
|
|
|
32
40
|
|
|
33
41
|
declare const VenueProvider: React__default.FC<VenueProviderProps>;
|
|
34
42
|
|
|
35
|
-
declare const VenueContext: React$1.Context<VenueContextValue |
|
|
43
|
+
declare const VenueContext: React$1.Context<VenueContextValue | null>;
|
|
36
44
|
declare const useVenueContext: () => VenueContextValue;
|
|
37
45
|
|
|
38
46
|
declare const useVenueDataClient: () => VenueDataClient;
|
|
@@ -51,4 +59,13 @@ declare const useWatchDeliveryApi: <T extends FeatureType>(featureType: T, refet
|
|
|
51
59
|
stopWatch: () => void;
|
|
52
60
|
};
|
|
53
61
|
|
|
54
|
-
|
|
62
|
+
type VenueMapProps = ComponentProps<"div"> & {
|
|
63
|
+
containerId?: string;
|
|
64
|
+
mapId?: string;
|
|
65
|
+
mapOptions?: Omit<IndoorMapOptions, 'dataClient'> | undefined;
|
|
66
|
+
};
|
|
67
|
+
declare const VenueMap: React__default.MemoExoticComponent<({ containerId, mapId, mapOptions, ...props }: VenueMapProps) => react_jsx_runtime.JSX.Element>;
|
|
68
|
+
|
|
69
|
+
declare function useVenueMap(idMap?: string): venue_js.IndoorMap | null;
|
|
70
|
+
|
|
71
|
+
export { type UseGetListParams, type UseGetListResult, type UseGetOneParams, type UseGetOneResult, VenueContext, type VenueContextValue, VenueMap, type VenueMapProps, VenueProvider, type VenueProviderProps, useGetList, useVenueContext, useVenueDataClient, useVenueMap, useWatchDeliveryApi };
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,21 +17,31 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
18
29
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
30
|
|
|
20
31
|
// src/index.ts
|
|
21
32
|
var index_exports = {};
|
|
22
33
|
__export(index_exports, {
|
|
23
|
-
QueryObserver: () => import_venue_js2.QueryObserver,
|
|
24
34
|
VenueContext: () => VenueContext,
|
|
35
|
+
VenueMap: () => VenueMap,
|
|
25
36
|
VenueProvider: () => VenueProvider,
|
|
26
37
|
useGetList: () => useGetList,
|
|
27
38
|
useVenueContext: () => useVenueContext,
|
|
28
39
|
useVenueDataClient: () => useVenueDataClient,
|
|
40
|
+
useVenueMap: () => useVenueMap,
|
|
29
41
|
useWatchDeliveryApi: () => useWatchDeliveryApi
|
|
30
42
|
});
|
|
31
43
|
module.exports = __toCommonJS(index_exports);
|
|
32
|
-
|
|
44
|
+
__reExport(index_exports, require("venue-js"), module.exports);
|
|
33
45
|
|
|
34
46
|
// src/VenueProvider.tsx
|
|
35
47
|
var import_react2 = require("react");
|
|
@@ -38,11 +50,11 @@ var import_venue_js = require("venue-js");
|
|
|
38
50
|
// src/VenueContext.tsx
|
|
39
51
|
var import_react = require("react");
|
|
40
52
|
var VenueContext = (0, import_react.createContext)(
|
|
41
|
-
|
|
53
|
+
null
|
|
42
54
|
);
|
|
43
55
|
var useVenueContext = () => {
|
|
44
56
|
const context = (0, import_react.useContext)(VenueContext);
|
|
45
|
-
if (context ===
|
|
57
|
+
if (context === null) {
|
|
46
58
|
throw new Error("useVenueContext must be used within a VenueProvider");
|
|
47
59
|
}
|
|
48
60
|
return context;
|
|
@@ -54,23 +66,41 @@ var VenueProvider = ({
|
|
|
54
66
|
children,
|
|
55
67
|
config
|
|
56
68
|
}) => {
|
|
57
|
-
const
|
|
69
|
+
const dataClient = (0, import_react2.useMemo)(() => {
|
|
58
70
|
const venueClient = (0, import_venue_js.getDataClient)({
|
|
59
71
|
...config,
|
|
60
72
|
queryClient: config.queryClient
|
|
61
73
|
});
|
|
62
74
|
return venueClient;
|
|
63
75
|
}, [config]);
|
|
76
|
+
const [mapInstances, setMapInstances] = (0, import_react2.useState)({});
|
|
77
|
+
const addMapInstance = (0, import_react2.useCallback)((mapInstance, id = "default") => {
|
|
78
|
+
setMapInstances((instances) => ({ ...instances, [id]: mapInstance }));
|
|
79
|
+
}, [setMapInstances]);
|
|
80
|
+
const removeMapInstance = (0, import_react2.useCallback)((id = "default") => {
|
|
81
|
+
setMapInstances(({ [id]: _, ...remaining }) => remaining);
|
|
82
|
+
}, [setMapInstances]);
|
|
83
|
+
const clearMapInstances = (0, import_react2.useCallback)(() => {
|
|
84
|
+
setMapInstances({});
|
|
85
|
+
}, [setMapInstances]);
|
|
86
|
+
const getMapInstance = (0, import_react2.useCallback)((id = "default") => {
|
|
87
|
+
return mapInstances[id];
|
|
88
|
+
}, [mapInstances]);
|
|
64
89
|
const contextValue = {
|
|
65
|
-
|
|
90
|
+
dataClient,
|
|
91
|
+
mapInstances,
|
|
92
|
+
addMapInstance,
|
|
93
|
+
removeMapInstance,
|
|
94
|
+
clearMapInstances,
|
|
95
|
+
getMapInstance
|
|
66
96
|
};
|
|
67
97
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VenueContext.Provider, { value: contextValue, children });
|
|
68
98
|
};
|
|
69
99
|
|
|
70
100
|
// src/hooks/useVenueDataClient.ts
|
|
71
101
|
var useVenueDataClient = () => {
|
|
72
|
-
const {
|
|
73
|
-
return
|
|
102
|
+
const { dataClient } = useVenueContext();
|
|
103
|
+
return dataClient;
|
|
74
104
|
};
|
|
75
105
|
|
|
76
106
|
// src/hooks/useGetList.ts
|
|
@@ -119,14 +149,91 @@ var useGetList = (featureType, params = {}, options = {}) => {
|
|
|
119
149
|
stopWatch
|
|
120
150
|
};
|
|
121
151
|
};
|
|
152
|
+
|
|
153
|
+
// src/components/VenueMap/VenueMap.tsx
|
|
154
|
+
var import_react5 = __toESM(require("react"));
|
|
155
|
+
|
|
156
|
+
// src/hooks/useMapInstance.ts
|
|
157
|
+
var import_react4 = require("react");
|
|
158
|
+
var import_venue_js2 = require("venue-js");
|
|
159
|
+
var useMapInstance = (containerId, props, context) => {
|
|
160
|
+
const [map, setMap] = (0, import_react4.useState)(null);
|
|
161
|
+
const { addMapInstance, removeMapInstance, getMapInstance } = context;
|
|
162
|
+
const { mapOptions, mapId = "default" } = props;
|
|
163
|
+
const { dataClient } = context;
|
|
164
|
+
(0, import_react4.useEffect)(() => {
|
|
165
|
+
if (!dataClient) return;
|
|
166
|
+
let map2;
|
|
167
|
+
if (getMapInstance(mapId)) {
|
|
168
|
+
map2 = getMapInstance(mapId);
|
|
169
|
+
map2.setOptions(mapOptions ?? {});
|
|
170
|
+
} else {
|
|
171
|
+
map2 = new import_venue_js2.IndoorMap(containerId, {
|
|
172
|
+
dataClient,
|
|
173
|
+
centerCross: true,
|
|
174
|
+
renderer: {
|
|
175
|
+
type: "3D",
|
|
176
|
+
elements: {}
|
|
177
|
+
},
|
|
178
|
+
...mapOptions ?? {}
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
setMap(map2);
|
|
182
|
+
addMapInstance(map2, mapId);
|
|
183
|
+
return () => {
|
|
184
|
+
if (map2 && map2.map) {
|
|
185
|
+
map2.map?.remove();
|
|
186
|
+
setMap(null);
|
|
187
|
+
}
|
|
188
|
+
removeMapInstance(mapId);
|
|
189
|
+
};
|
|
190
|
+
}, [mapId, mapOptions, dataClient.projectId]);
|
|
191
|
+
return map;
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
// src/components/VenueMap/VenueMap.tsx
|
|
195
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
196
|
+
var VenueMap = import_react5.default.memo(
|
|
197
|
+
({
|
|
198
|
+
containerId = "map",
|
|
199
|
+
mapId = "default",
|
|
200
|
+
mapOptions = {},
|
|
201
|
+
...props
|
|
202
|
+
}) => {
|
|
203
|
+
const context = (0, import_react5.useContext)(VenueContext);
|
|
204
|
+
if (context == null) {
|
|
205
|
+
throw new Error(
|
|
206
|
+
"No context provided: VenueMap can only be used in a descendant of <VenueProvider>"
|
|
207
|
+
);
|
|
208
|
+
}
|
|
209
|
+
const map = useMapInstance(containerId, { mapId, mapOptions }, context);
|
|
210
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { id: containerId, style: { width: "100%", height: "100%" } }) });
|
|
211
|
+
}
|
|
212
|
+
);
|
|
213
|
+
|
|
214
|
+
// src/components/VenueMap/useVenueMap.ts
|
|
215
|
+
var import_react6 = require("react");
|
|
216
|
+
function useVenueMap(idMap) {
|
|
217
|
+
const context = (0, import_react6.useContext)(VenueContext);
|
|
218
|
+
if (!context) {
|
|
219
|
+
console.log(
|
|
220
|
+
"useVenueMap(): failed to retrieve VenueMapContext. Make sure that the <VenueProvider> component exists and that the component you are calling `useMap()` from is a sibling of the <VenueProvider>."
|
|
221
|
+
);
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
const { mapInstances } = context;
|
|
225
|
+
return mapInstances[idMap ?? "default"];
|
|
226
|
+
}
|
|
122
227
|
// Annotate the CommonJS export names for ESM import in node:
|
|
123
228
|
0 && (module.exports = {
|
|
124
|
-
QueryObserver,
|
|
125
229
|
VenueContext,
|
|
230
|
+
VenueMap,
|
|
126
231
|
VenueProvider,
|
|
127
232
|
useGetList,
|
|
128
233
|
useVenueContext,
|
|
129
234
|
useVenueDataClient,
|
|
130
|
-
|
|
235
|
+
useVenueMap,
|
|
236
|
+
useWatchDeliveryApi,
|
|
237
|
+
...require("venue-js")
|
|
131
238
|
});
|
|
132
239
|
//# sourceMappingURL=index.js.map
|
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"],"sourcesContent":["export { QueryObserver } 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// 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, { useMemo } from \"react\"\nimport { getDataClient } 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 const client = useMemo(() => {\n const venueClient = getDataClient({\n ...config,\n queryClient: config.queryClient,\n })\n\n return venueClient\n }, [config])\n\n const contextValue: VenueContextValue = {\n client,\n }\n\n return (\n <VenueContext.Provider value={contextValue}>\n {children}\n </VenueContext.Provider>\n )\n}\n","import { createContext, useContext } from \"react\"\nimport type { VenueContextValue } from \"./types\"\n\nexport const VenueContext = createContext<VenueContextValue | undefined>(\n undefined\n)\n\nexport const useVenueContext = (): VenueContextValue => {\n const context = useContext(VenueContext)\n if (context === undefined) {\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 { client } = useVenueContext()\n return client\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"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,mBAA8B;;;ACA9B,IAAAC,gBAA+B;AAC/B,sBAA8B;;;ACD9B,mBAA0C;AAGnC,IAAM,mBAAe;AAAA,EAC1B;AACF;AAEO,IAAM,kBAAkB,MAAyB;AACtD,QAAM,cAAU,yBAAW,YAAY;AACvC,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AACA,SAAO;AACT;;;ADUI;AAlBG,IAAM,gBAA8C,CAAC;AAAA,EAC1D;AAAA,EACA;AACF,MAAM;AACJ,QAAM,aAAS,uBAAQ,MAAM;AAC3B,UAAM,kBAAc,+BAAc;AAAA,MAChC,GAAG;AAAA,MACH,aAAa,OAAO;AAAA,IACtB,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,eAAkC;AAAA,IACtC;AAAA,EACF;AAEA,SACE,4CAAC,aAAa,UAAb,EAAsB,OAAO,cAC3B,UACH;AAEJ;;;AExBO,IAAM,qBAAqB,MAAuB;AACvD,QAAM,EAAE,OAAO,IAAI,gBAAgB;AACnC,SAAO;AACT;;;ACNA,yBAAyC;;;ACEzC,IAAAC,gBAAuC;AAOhC,IAAM,sBAAsB,CACjC,aACA,kBAA0B,IAAI,KAAK,KACnC,YACG;AAEH,QAAM,YAAY,QAAQ,aAAa;AACvC,QAAM,UAAU,QAAQ,WAAW;AAEnC,QAAM,SAAS,mBAAmB;AAElC,QAAM,iBAAa,2BAAY,MAAM;AACnC,QAAI,SAAS;AACX,aAAO,iBAAiB,aAAa,eAAe;AAAA,IACtD;AAAA,EACF,GAAG,CAAC,QAAQ,aAAa,SAAS,eAAe,CAAC;AAElD,QAAM,gBAAY,2BAAY,MAAM;AAClC,WAAO,gBAAgB,WAAW;AAAA,EACpC,GAAG,CAAC,QAAQ,WAAW,CAAC;AAExB,+BAAU,MAAM;AAEd,QAAI,WAAW,UAAW,YAAW;AAErC,WAAO,MAAM;AACX,gBAAU;AAAA,IACZ;AAAA,EACF,GAAG,CAAC,YAAY,WAAW,SAAS,SAAS,CAAC;AAE9C,SAAO,EAAE,YAAY,UAAU;AACjC;;;AD9BO,IAAM,aAAa,CACxB,aACA,SAAuB,CAAC,GACxB,UAA+B,CAAC,MAI7B;AACH,QAAM,SAAS,mBAAmB;AAClC,QAAM,eAAe,OAAO;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAGA,QAAM,kBAAkB,QAAQ,mBAAmB;AACnD,QAAM,EAAE,WAAW,WAAW,IAAI,oBAAoB,aAAa,iBAAiB,EAAE,SAAS,kBAAkB,EAAE,CAAC;AAGpH,QAAM,kBAAc,6BAAkC;AAAA,IACpD,GAAG;AAAA,IACH,GAAG;AAAA,EACL,CAAC;AAGD,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA;AAAA,EACF;AACF;","names":["import_venue_js","import_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/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"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
|
|
2
|
+
export * from "venue-js";
|
|
3
3
|
|
|
4
4
|
// src/VenueProvider.tsx
|
|
5
|
-
import { useMemo } from "react";
|
|
5
|
+
import { useCallback, useMemo, useState } from "react";
|
|
6
6
|
import { getDataClient } from "venue-js";
|
|
7
7
|
|
|
8
8
|
// src/VenueContext.tsx
|
|
9
9
|
import { createContext, useContext } from "react";
|
|
10
10
|
var VenueContext = createContext(
|
|
11
|
-
|
|
11
|
+
null
|
|
12
12
|
);
|
|
13
13
|
var useVenueContext = () => {
|
|
14
14
|
const context = useContext(VenueContext);
|
|
15
|
-
if (context ===
|
|
15
|
+
if (context === null) {
|
|
16
16
|
throw new Error("useVenueContext must be used within a VenueProvider");
|
|
17
17
|
}
|
|
18
18
|
return context;
|
|
@@ -24,40 +24,58 @@ var VenueProvider = ({
|
|
|
24
24
|
children,
|
|
25
25
|
config
|
|
26
26
|
}) => {
|
|
27
|
-
const
|
|
27
|
+
const dataClient = useMemo(() => {
|
|
28
28
|
const venueClient = getDataClient({
|
|
29
29
|
...config,
|
|
30
30
|
queryClient: config.queryClient
|
|
31
31
|
});
|
|
32
32
|
return venueClient;
|
|
33
33
|
}, [config]);
|
|
34
|
+
const [mapInstances, setMapInstances] = useState({});
|
|
35
|
+
const addMapInstance = useCallback((mapInstance, id = "default") => {
|
|
36
|
+
setMapInstances((instances) => ({ ...instances, [id]: mapInstance }));
|
|
37
|
+
}, [setMapInstances]);
|
|
38
|
+
const removeMapInstance = useCallback((id = "default") => {
|
|
39
|
+
setMapInstances(({ [id]: _, ...remaining }) => remaining);
|
|
40
|
+
}, [setMapInstances]);
|
|
41
|
+
const clearMapInstances = useCallback(() => {
|
|
42
|
+
setMapInstances({});
|
|
43
|
+
}, [setMapInstances]);
|
|
44
|
+
const getMapInstance = useCallback((id = "default") => {
|
|
45
|
+
return mapInstances[id];
|
|
46
|
+
}, [mapInstances]);
|
|
34
47
|
const contextValue = {
|
|
35
|
-
|
|
48
|
+
dataClient,
|
|
49
|
+
mapInstances,
|
|
50
|
+
addMapInstance,
|
|
51
|
+
removeMapInstance,
|
|
52
|
+
clearMapInstances,
|
|
53
|
+
getMapInstance
|
|
36
54
|
};
|
|
37
55
|
return /* @__PURE__ */ jsx(VenueContext.Provider, { value: contextValue, children });
|
|
38
56
|
};
|
|
39
57
|
|
|
40
58
|
// src/hooks/useVenueDataClient.ts
|
|
41
59
|
var useVenueDataClient = () => {
|
|
42
|
-
const {
|
|
43
|
-
return
|
|
60
|
+
const { dataClient } = useVenueContext();
|
|
61
|
+
return dataClient;
|
|
44
62
|
};
|
|
45
63
|
|
|
46
64
|
// src/hooks/useGetList.ts
|
|
47
65
|
import { useQuery } from "@tanstack/react-query";
|
|
48
66
|
|
|
49
67
|
// src/hooks/useWatchDeliveryApi.ts
|
|
50
|
-
import { useCallback, useEffect } from "react";
|
|
68
|
+
import { useCallback as useCallback2, useEffect } from "react";
|
|
51
69
|
var useWatchDeliveryApi = (featureType, refetchInterval = 5 * 60 * 1e3, options) => {
|
|
52
70
|
const autoStart = options.autoStart ?? true;
|
|
53
71
|
const enabled = options.enabled ?? true;
|
|
54
72
|
const client = useVenueDataClient();
|
|
55
|
-
const startWatch =
|
|
73
|
+
const startWatch = useCallback2(() => {
|
|
56
74
|
if (enabled) {
|
|
57
75
|
client.registerObserver(featureType, refetchInterval);
|
|
58
76
|
}
|
|
59
77
|
}, [client, featureType, enabled, refetchInterval]);
|
|
60
|
-
const stopWatch =
|
|
78
|
+
const stopWatch = useCallback2(() => {
|
|
61
79
|
client.destroyObserver(featureType);
|
|
62
80
|
}, [client, featureType]);
|
|
63
81
|
useEffect(() => {
|
|
@@ -89,13 +107,89 @@ var useGetList = (featureType, params = {}, options = {}) => {
|
|
|
89
107
|
stopWatch
|
|
90
108
|
};
|
|
91
109
|
};
|
|
110
|
+
|
|
111
|
+
// src/components/VenueMap/VenueMap.tsx
|
|
112
|
+
import React2, { useContext as useContext2 } from "react";
|
|
113
|
+
|
|
114
|
+
// src/hooks/useMapInstance.ts
|
|
115
|
+
import { useEffect as useEffect2, useState as useState2 } from "react";
|
|
116
|
+
import { IndoorMap as IndoorMap2 } from "venue-js";
|
|
117
|
+
var useMapInstance = (containerId, props, context) => {
|
|
118
|
+
const [map, setMap] = useState2(null);
|
|
119
|
+
const { addMapInstance, removeMapInstance, getMapInstance } = context;
|
|
120
|
+
const { mapOptions, mapId = "default" } = props;
|
|
121
|
+
const { dataClient } = context;
|
|
122
|
+
useEffect2(() => {
|
|
123
|
+
if (!dataClient) return;
|
|
124
|
+
let map2;
|
|
125
|
+
if (getMapInstance(mapId)) {
|
|
126
|
+
map2 = getMapInstance(mapId);
|
|
127
|
+
map2.setOptions(mapOptions ?? {});
|
|
128
|
+
} else {
|
|
129
|
+
map2 = new IndoorMap2(containerId, {
|
|
130
|
+
dataClient,
|
|
131
|
+
centerCross: true,
|
|
132
|
+
renderer: {
|
|
133
|
+
type: "3D",
|
|
134
|
+
elements: {}
|
|
135
|
+
},
|
|
136
|
+
...mapOptions ?? {}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
setMap(map2);
|
|
140
|
+
addMapInstance(map2, mapId);
|
|
141
|
+
return () => {
|
|
142
|
+
if (map2 && map2.map) {
|
|
143
|
+
map2.map?.remove();
|
|
144
|
+
setMap(null);
|
|
145
|
+
}
|
|
146
|
+
removeMapInstance(mapId);
|
|
147
|
+
};
|
|
148
|
+
}, [mapId, mapOptions, dataClient.projectId]);
|
|
149
|
+
return map;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
// src/components/VenueMap/VenueMap.tsx
|
|
153
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
154
|
+
var VenueMap = React2.memo(
|
|
155
|
+
({
|
|
156
|
+
containerId = "map",
|
|
157
|
+
mapId = "default",
|
|
158
|
+
mapOptions = {},
|
|
159
|
+
...props
|
|
160
|
+
}) => {
|
|
161
|
+
const context = useContext2(VenueContext);
|
|
162
|
+
if (context == null) {
|
|
163
|
+
throw new Error(
|
|
164
|
+
"No context provided: VenueMap can only be used in a descendant of <VenueProvider>"
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
const map = useMapInstance(containerId, { mapId, mapOptions }, context);
|
|
168
|
+
return /* @__PURE__ */ jsx2("div", { ...props, children: /* @__PURE__ */ jsx2("div", { id: containerId, style: { width: "100%", height: "100%" } }) });
|
|
169
|
+
}
|
|
170
|
+
);
|
|
171
|
+
|
|
172
|
+
// src/components/VenueMap/useVenueMap.ts
|
|
173
|
+
import { useContext as useContext3 } from "react";
|
|
174
|
+
function useVenueMap(idMap) {
|
|
175
|
+
const context = useContext3(VenueContext);
|
|
176
|
+
if (!context) {
|
|
177
|
+
console.log(
|
|
178
|
+
"useVenueMap(): failed to retrieve VenueMapContext. Make sure that the <VenueProvider> component exists and that the component you are calling `useMap()` from is a sibling of the <VenueProvider>."
|
|
179
|
+
);
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
const { mapInstances } = context;
|
|
183
|
+
return mapInstances[idMap ?? "default"];
|
|
184
|
+
}
|
|
92
185
|
export {
|
|
93
|
-
QueryObserver,
|
|
94
186
|
VenueContext,
|
|
187
|
+
VenueMap,
|
|
95
188
|
VenueProvider,
|
|
96
189
|
useGetList,
|
|
97
190
|
useVenueContext,
|
|
98
191
|
useVenueDataClient,
|
|
192
|
+
useVenueMap,
|
|
99
193
|
useWatchDeliveryApi
|
|
100
194
|
};
|
|
101
195
|
//# sourceMappingURL=index.mjs.map
|
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"],"sourcesContent":["export { QueryObserver } 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// 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, { useMemo } from \"react\"\nimport { getDataClient } 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 const client = useMemo(() => {\n const venueClient = getDataClient({\n ...config,\n queryClient: config.queryClient,\n })\n\n return venueClient\n }, [config])\n\n const contextValue: VenueContextValue = {\n client,\n }\n\n return (\n <VenueContext.Provider value={contextValue}>\n {children}\n </VenueContext.Provider>\n )\n}\n","import { createContext, useContext } from \"react\"\nimport type { VenueContextValue } from \"./types\"\n\nexport const VenueContext = createContext<VenueContextValue | undefined>(\n undefined\n)\n\nexport const useVenueContext = (): VenueContextValue => {\n const context = useContext(VenueContext)\n if (context === undefined) {\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 { client } = useVenueContext()\n return client\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"],"mappings":";AAAA,SAAS,qBAAqB;;;ACA9B,SAAgB,eAAe;AAC/B,SAAS,qBAAqB;;;ACD9B,SAAS,eAAe,kBAAkB;AAGnC,IAAM,eAAe;AAAA,EAC1B;AACF;AAEO,IAAM,kBAAkB,MAAyB;AACtD,QAAM,UAAU,WAAW,YAAY;AACvC,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AACA,SAAO;AACT;;;ADUI;AAlBG,IAAM,gBAA8C,CAAC;AAAA,EAC1D;AAAA,EACA;AACF,MAAM;AACJ,QAAM,SAAS,QAAQ,MAAM;AAC3B,UAAM,cAAc,cAAc;AAAA,MAChC,GAAG;AAAA,MACH,aAAa,OAAO;AAAA,IACtB,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,eAAkC;AAAA,IACtC;AAAA,EACF;AAEA,SACE,oBAAC,aAAa,UAAb,EAAsB,OAAO,cAC3B,UACH;AAEJ;;;AExBO,IAAM,qBAAqB,MAAuB;AACvD,QAAM,EAAE,OAAO,IAAI,gBAAgB;AACnC,SAAO;AACT;;;ACNA,SAAS,gBAAgC;;;ACEzC,SAAS,aAAa,iBAAiB;AAOhC,IAAM,sBAAsB,CACjC,aACA,kBAA0B,IAAI,KAAK,KACnC,YACG;AAEH,QAAM,YAAY,QAAQ,aAAa;AACvC,QAAM,UAAU,QAAQ,WAAW;AAEnC,QAAM,SAAS,mBAAmB;AAElC,QAAM,aAAa,YAAY,MAAM;AACnC,QAAI,SAAS;AACX,aAAO,iBAAiB,aAAa,eAAe;AAAA,IACtD;AAAA,EACF,GAAG,CAAC,QAAQ,aAAa,SAAS,eAAe,CAAC;AAElD,QAAM,YAAY,YAAY,MAAM;AAClC,WAAO,gBAAgB,WAAW;AAAA,EACpC,GAAG,CAAC,QAAQ,WAAW,CAAC;AAExB,YAAU,MAAM;AAEd,QAAI,WAAW,UAAW,YAAW;AAErC,WAAO,MAAM;AACX,gBAAU;AAAA,IACZ;AAAA,EACF,GAAG,CAAC,YAAY,WAAW,SAAS,SAAS,CAAC;AAE9C,SAAO,EAAE,YAAY,UAAU;AACjC;;;AD9BO,IAAM,aAAa,CACxB,aACA,SAAuB,CAAC,GACxB,UAA+B,CAAC,MAI7B;AACH,QAAM,SAAS,mBAAmB;AAClC,QAAM,eAAe,OAAO;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAGA,QAAM,kBAAkB,QAAQ,mBAAmB;AACnD,QAAM,EAAE,WAAW,WAAW,IAAI,oBAAoB,aAAa,iBAAiB,EAAE,SAAS,kBAAkB,EAAE,CAAC;AAGpH,QAAM,cAAc,SAAkC;AAAA,IACpD,GAAG;AAAA,IACH,GAAG;AAAA,EACL,CAAC;AAGD,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
|
|
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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "venue-react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0-next.1",
|
|
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.5.0-next.
|
|
36
|
+
"venue-js": "1.5.0-next.45"
|
|
37
37
|
}
|
|
38
38
|
}
|