{"version":3,"names":["getPropRecursive","obj","props","value","_props","length","shift","arrayOfObjectsDeepSort","a","b","aValue","bValue","arraysHaveOverlap","i","indexOf","abortableFetch","request","opts","controller","AbortController","signal","abort","ready","fetch","Object","assign","getGoolgeMapsDirectionsLink","location","encodedAddress","encodeURIComponent","Address","City","State","Zip","getDistanceFromLatLng","lat1","lng1","lat2","lng2","miles","deg2rad","deg","Math","PI","square","x","pow","r","lat_dif","lng_dif","sin","cos","d","asin","sqrt","guid","replace","c","random","v","toString"],"sources":["./src/utils/utils.ts"],"sourcesContent":["import { Location } from '../interfaces/location';\r\n\r\nexport function format(first: string, middle: string, last: string): string {\r\n\treturn (first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : '');\r\n}\r\n\r\nexport function prettyPrintJSON(obj: object) {\r\n\treturn JSON.stringify(obj, null, 2);\r\n}\r\n\r\nexport function getPropRecursive(obj: object, props: string[]) {\r\n\tlet value,\r\n\t\t_props = [...props];\r\n\twhile (_props.length > 0) {\r\n\t\tvalue = obj[_props.shift()];\r\n\t}\r\n\treturn value;\r\n}\r\n\r\nexport function arrayOfObjectsDeepSort(a: object, b: object, props: string[]): number {\r\n\tconst aValue = getPropRecursive(a, props),\r\n\t\tbValue = getPropRecursive(b, props);\r\n\tif (aValue === bValue) {\r\n\t\treturn 0;\r\n\t}\r\n\treturn aValue > bValue ? 1 : -1;\r\n}\r\n\r\nexport function arraysHaveOverlap(a: any[], b: any[]): boolean {\r\n\tfor (var i = 0; i < a.length; i++) {\r\n\t\tif (b.indexOf(a[i]) > -1) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n}\r\n\r\n/**\r\n * Returns an object with the fetch request and\r\n * the abortController to cancel the request.\r\n */\r\nexport function abortableFetch(\r\n\trequest: string,\r\n\topts: any,\r\n): { abort: Function; ready: Promise } {\r\n\tconst controller = new AbortController();\r\n\tconst signal = controller.signal;\r\n\treturn {\r\n\t\tabort: () => controller.abort(),\r\n\t\tready: fetch(request, { ...opts, signal }),\r\n\t};\r\n}\r\n\r\nexport function getGoolgeMapsDirectionsLink(location: Location) {\r\n\tlet encodedAddress = encodeURIComponent(\r\n\t\t`${location.Address}, ${location.City}, ${location.State} ${location.Zip}`,\r\n\t);\r\n\treturn `https://www.google.com/maps/dir//${encodedAddress}`;\r\n}\r\n\r\n/**\r\n * Haversine formula\r\n * @see https://simplemaps.com/resources/location-distance\r\n * @returns distance\r\n */\r\nexport function getDistanceFromLatLng(\r\n\tlat1: number,\r\n\tlng1: number,\r\n\tlat2: number,\r\n\tlng2: number,\r\n\tmiles?: boolean,\r\n) {\r\n\tif (typeof miles === 'undefined') {\r\n\t\tmiles = false;\r\n\t}\r\n\tfunction deg2rad(deg) {\r\n\t\treturn deg * (Math.PI / 180);\r\n\t}\r\n\tfunction square(x) {\r\n\t\treturn Math.pow(x, 2);\r\n\t}\r\n\tconst r = 6371; // radius of the earth in km\r\n\tlat1 = deg2rad(lat1);\r\n\tlat2 = deg2rad(lat2);\r\n\tvar lat_dif = lat2 - lat1;\r\n\tvar lng_dif = deg2rad(lng2 - lng1);\r\n\tvar a =\r\n\t\tsquare(Math.sin(lat_dif / 2)) +\r\n\t\tMath.cos(lat1) * Math.cos(lat2) * square(Math.sin(lng_dif / 2));\r\n\tvar d = 2 * r * Math.asin(Math.sqrt(a));\r\n\tif (miles) {\r\n\t\treturn d * 0.621371;\r\n\t} else {\r\n\t\treturn d;\r\n\t}\r\n}\r\n\r\n/**\r\n * Storybook Docs Helper\r\n */\r\nexport function addCodeExample(component, templateConfig) {\r\n\tconsole.log(component.args);\r\n\tif (!component || !templateConfig) return;\r\n\tcomponent.parameters = {\r\n\t\tdocs: {\r\n\t\t\tsource: {\r\n\t\t\t\tcode: templateConfig({\r\n\t\t\t\t\tlabel: component?.args?.label,\r\n\t\t\t\t\tclassName: component?.args?.className,\r\n\t\t\t\t}),\r\n\t\t\t},\r\n\t\t},\r\n\t};\r\n\treturn component;\r\n}\r\n\r\n/**\r\n * GUID generator\r\n */\r\nexport function guid() {\r\n\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\r\n\t\tvar r = (Math.random() * 16) | 0,\r\n\t\t\tv = c == 'x' ? r : (r & 0x3) | 0x8;\r\n\t\treturn v.toString(16);\r\n\t});\r\n}\r\n"],"mappings":"SAUgBA,EAAiBC,EAAaC,GAC7C,IAAIC,EACHC,EAAS,IAAIF,GACd,MAAOE,EAAOC,OAAS,EAAG,CACzBF,EAAQF,EAAIG,EAAOE,Q,CAEpB,OAAOH,CACR,C,SAEgBI,EAAuBC,EAAWC,EAAWP,GAC5D,MAAMQ,EAASV,EAAiBQ,EAAGN,GAClCS,EAASX,EAAiBS,EAAGP,GAC9B,GAAIQ,IAAWC,EAAQ,CACtB,OAAO,C,CAER,OAAOD,EAASC,EAAS,GAAK,CAC/B,C,SAEgBC,EAAkBJ,EAAUC,GAC3C,IAAK,IAAII,EAAI,EAAGA,EAAIL,EAAEH,OAAQQ,IAAK,CAClC,GAAIJ,EAAEK,QAAQN,EAAEK,KAAO,EAAG,CACzB,OAAO,I,EAGT,OAAO,KACR,C,SAMgBE,EACfC,EACAC,GAEA,MAAMC,EAAa,IAAIC,gBACvB,MAAMC,EAASF,EAAWE,OAC1B,MAAO,CACNC,MAAO,IAAMH,EAAWG,QACxBC,MAAOC,MAAMP,EAAOQ,OAAAC,OAAAD,OAAAC,OAAA,GAAOR,GAAI,CAAEG,YAEnC,C,SAEgBM,EAA4BC,GAC3C,IAAIC,EAAiBC,mBACpB,GAAGF,EAASG,YAAYH,EAASI,SAASJ,EAASK,SAASL,EAASM,OAEtE,MAAO,oCAAoCL,GAC5C,C,SAOgBM,EACfC,EACAC,EACAC,EACAC,EACAC,GAEA,UAAWA,IAAU,YAAa,CACjCA,EAAQ,K,CAET,SAASC,EAAQC,GAChB,OAAOA,GAAOC,KAAKC,GAAK,I,CAEzB,SAASC,EAAOC,GACf,OAAOH,KAAKI,IAAID,EAAG,E,CAEpB,MAAME,EAAI,KACVZ,EAAOK,EAAQL,GACfE,EAAOG,EAAQH,GACf,IAAIW,EAAUX,EAAOF,EACrB,IAAIc,EAAUT,EAAQF,EAAOF,GAC7B,IAAI5B,EACHoC,EAAOF,KAAKQ,IAAIF,EAAU,IAC1BN,KAAKS,IAAIhB,GAAQO,KAAKS,IAAId,GAAQO,EAAOF,KAAKQ,IAAID,EAAU,IAC7D,IAAIG,EAAI,EAAIL,EAAIL,KAAKW,KAAKX,KAAKY,KAAK9C,IACpC,GAAI+B,EAAO,CACV,OAAOa,EAAI,O,KACL,CACN,OAAOA,C,CAET,C,SAwBgBG,IACf,MAAO,uCAAuCC,QAAQ,SAAS,SAASC,GACvE,IAAIV,EAAKL,KAAKgB,SAAW,GAAM,EAC9BC,EAAIF,GAAK,IAAMV,EAAKA,EAAI,EAAO,EAChC,OAAOY,EAAEC,SAAS,G,GAEpB,Q"}