@mcmhomes/panorama-viewer
Version:
Provides React components to render panoramas.
313 lines (278 loc) • 10.8 kB
JSX
import {getAvailableLocationIds, getAvailableSkus, getAvailableSkusGrouped, getAvailableStyleIds, getCurrentLocationId, getCurrentSkus, getCurrentSkusGrouped, getCurrentStyleId, getDefaultLocationId, getDefaultSkus, getDefaultSkusGrouped, getDefaultStyleId, getHomeRenderDate, getHomeVersion, getHomeVersionDate, getNames, getThumbnails} from './PanoramaViewerUtils.jsx';
import {usePromises} from './utils/PanoramaUtilsReact.jsx';
/**
* Returns the version string of the home (unix timestamp, in millis).
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @returns {[string|null, boolean, string|null]}
*/
export const useHomeVersion = (params) =>
{
const {homeId, homeVersion, host} = params;
return usePromises(() => getHomeVersion({homeId, homeVersion, host}), [homeId, homeVersion, host]);
};
/**
* Returns the version date of the home. Will return new Date(0) if the version timestamp is invalid.
*
* The version date is the date when the home panoramas were upload.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @returns {[Date|null, boolean, string|null]}
*/
export const useHomeVersionDate = (params) =>
{
const {homeId, homeVersion, host} = params;
return usePromises(() => getHomeVersionDate({homeId, homeVersion, host}), [homeId, homeVersion, host]);
};
/**
* Returns the render date of the home. Will return new Date(0) if the render timestamp is invalid.
*
* The render date is the date when the home panoramas were rendered.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @returns {[Date|null, boolean, string|null]}
*/
export const useHomeRenderDate = (params) =>
{
const {homeId, homeVersion, host} = params;
return usePromises(() => getHomeRenderDate({homeId, homeVersion, host}), [homeId, homeVersion, host]);
};
/**
* Returns an object with sku group IDs as keys, and arrays of SKUs as values.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @param {string|null} [params.styleId]
* @param {string|null} [params.locationId]
* @returns {[Object.<string|symbol,string[]>|null, boolean, string|null]}
*/
export const useAvailableSkusGrouped = (params) =>
{
const {homeId, homeVersion, host, styleId, locationId} = params;
return usePromises(() => getAvailableSkusGrouped({homeId, homeVersion, host, styleId, locationId}), [homeId, homeVersion, host, styleId, locationId]);
};
/**
* Returns an array of SKUs.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @param {string|null} [params.styleId]
* @param {string|null} [params.locationId]
* @returns {[string[]|null, boolean, string|null]}
*/
export const useAvailableSkus = (params) =>
{
const {homeId, homeVersion, host, styleId, locationId} = params;
return usePromises(() => getAvailableSkus({homeId, homeVersion, host, styleId, locationId}), [homeId, homeVersion, host, styleId, locationId]);
};
/**
* Returns an array of style IDs.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @param {string|null} [params.locationId]
* @returns {[string[]|null, boolean, string|null]}
*/
export const useAvailableStyleIds = (params) =>
{
const {homeId, homeVersion, host, locationId} = params;
return usePromises(() => getAvailableStyleIds({homeId, homeVersion, host, locationId}), [homeId, homeVersion, host, locationId]);
};
/**
* Returns an array of location IDs.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @param {string|null} [params.styleId]
* @returns {[string[]|null, boolean, string|null]}
*/
export const useAvailableLocationIds = (params) =>
{
const {homeId, homeVersion, host, styleId} = params;
return usePromises(() => getAvailableLocationIds({homeId, homeVersion, host, styleId}), [homeId, homeVersion, host, styleId]);
};
/**
* Returns the default selected SKUs for the given home.
* Returns an object with sku group IDs as keys, and the default SKUs as values.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @param {string|null} [params.styleId]
* @param {string|null} [params.locationId]
* @returns {[Object.<string|symbol,string>|null, boolean, string|null]}
*/
export const useDefaultSkusGrouped = (params) =>
{
const {homeId, homeVersion, host, styleId, locationId} = params;
return usePromises(() => getDefaultSkusGrouped({homeId, homeVersion, host, styleId, locationId}), [homeId, homeVersion, host, styleId, locationId]);
};
/**
* Returns the default selected SKUs for the given home.
* Returns an array of SKUs.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @param {string|null} [params.styleId]
* @param {string|null} [params.locationId]
* @returns {[string[]|null, boolean, string|null]}
*/
export const useDefaultSkus = (params) =>
{
const {homeId, homeVersion, host, styleId, locationId} = params;
return usePromises(() => getDefaultSkus({homeId, homeVersion, host, styleId, locationId}), [homeId, homeVersion, host, styleId, locationId]);
};
/**
* Returns the default selected style ID for the given home.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @param {string|null} [params.locationId]
* @returns {[string|null, boolean, string|null]}
*/
export const useDefaultStyleId = (params) =>
{
const {homeId, homeVersion, host, locationId} = params;
return usePromises(() => getDefaultStyleId({homeId, homeVersion, host, locationId}), [homeId, homeVersion, host, locationId]);
};
/**
* Returns the default selected location ID for the given home.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @param {string|null} [params.styleId]
* @returns {[string|null, boolean, string|null]}
*/
export const useDefaultLocationId = (params) =>
{
const {homeId, homeVersion, host, styleId} = params;
return usePromises(() => getDefaultLocationId({homeId, homeVersion, host, styleId}), [homeId, homeVersion, host, styleId]);
};
/**
* Returns the currently selected SKUs for the given home.
* Returns an object with sku group IDs as keys, and the current SKUs as values.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @param {string|null} [params.styleId]
* @param {string|null} [params.locationId]
* @param {Object.<string|symbol,string>|null} [params.skus]
* @param {boolean|null} [params.warnings]
* @returns {[Object.<string|symbol,string>|null, boolean, string|null]}
*/
export const useCurrentSkusGrouped = (params) =>
{
const {homeId, homeVersion, host, styleId, locationId, skus, warnings} = params;
return usePromises(() => getCurrentSkusGrouped({homeId, homeVersion, host, styleId, locationId, skus, warnings}), [homeId, homeVersion, host, styleId, locationId, skus, warnings]);
};
/**
* Returns the currently selected SKUs for the given home.
* Returns an array of SKUs.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @param {string|null} [params.styleId]
* @param {string|null} [params.locationId]
* @param {Object.<string|symbol,string>|null} [params.skus]
* @param {boolean|null} [params.warnings]
* @returns {[string[]|null, boolean, string|null]}
*/
export const useCurrentSkus = (params) =>
{
const {homeId, homeVersion, host, styleId, locationId, skus, warnings} = params;
return usePromises(() => getCurrentSkus({homeId, homeVersion, host, styleId, locationId, skus, warnings}), [homeId, homeVersion, host, styleId, locationId, skus, warnings]);
};
/**
* Returns the currently selected style ID for the given home.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @param {string|null} [params.styleId]
* @param {string|null} [params.locationId]
* @returns {[string|null, boolean, string|null]}
*/
export const useCurrentStyleId = (params) =>
{
const {homeId, homeVersion, host, styleId, locationId} = params;
return usePromises(() => getCurrentStyleId({homeId, homeVersion, host, styleId, locationId}), [homeId, homeVersion, host, styleId, locationId]);
};
/**
* Returns the currently selected location ID for the given home.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @param {string|null} [params.styleId]
* @param {string|null} [params.locationId]
* @returns {[string|null, boolean, string|null]}
*/
export const useCurrentLocationId = (params) =>
{
const {homeId, homeVersion, host, styleId, locationId} = params;
return usePromises(() => getCurrentLocationId({homeId, homeVersion, host, styleId, locationId}), [homeId, homeVersion, host, styleId, locationId]);
};
/**
* @typedef {import('./PanoramaViewerUtils.jsx').ThumbnailFunctions} ThumbnailFunctions
*/
/**
* Returns an object containing functions for obtaining thumbnail URLs.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @returns {[ThumbnailFunctions|null, boolean, string|null]}
*/
export const useThumbnails = (params) =>
{
const {homeId, homeVersion, host} = params;
return usePromises(() => getThumbnails({homeId, homeVersion, host}), [homeId, homeVersion, host]);
};
/**
* @typedef {import('./PanoramaViewerUtils.jsx').NamesFunctions} NamesFunctions
*/
/**
* Returns an object containing functions for obtaining display names.
*
* @param {Object} params
* @param {string} params.homeId
* @param {string|null} [params.homeVersion]
* @param {string|null} [params.host]
* @returns {[NamesFunctions|null, boolean, string|null]}
*/
export const useNames = (params) =>
{
const {homeId, homeVersion, host} = params;
return usePromises(() => getNames({homeId, homeVersion, host}), [homeId, homeVersion, host]);
};