UNPKG

@mcmhomes/panorama-viewer

Version:
313 lines (278 loc) 10.8 kB
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]); };