{"version":3,"sources":["common/DpsImgixDomain.ts","api/DpsApi.ts","adopt/dog-application/DpsAdoptApplication.tsx","adopt/available/DpsAdoptableTile.tsx","common/DpsLoading.tsx","common/DpsConstants.ts","common/DpsDonateButton.tsx","header/DpsSocials.tsx","adopt/available/DpsSocialBanner.tsx","adopt/available/DpsAdoptAvailable.tsx","adopt/cat-application/DpsCatApplication.tsx","adopt/sticky/DpsStickyDogContent.tsx","adopt/sticky/DpsStickyDogs.tsx","home/DpsHomeCarouselSlide.tsx","home/DpsHomeCarousel.tsx","home/DpsHomeEvent.tsx","routing/ScrollToAnchor.tsx","home/DpsHomeEvents.tsx","home/DpsHomeFeatureCard.tsx","home/DpsHomeSidebarFeatures.tsx","home/DpsHome.tsx","common/DpsFaqSection.tsx","common/DpsFaq.tsx","volunteer/DpsVolunteerFaq.tsx","volunteer/meet/DpsMeetVolunteers.tsx","foster/DpsFosterFaq.tsx","foster/meet/DpsMeetFosters.tsx","donate/donate/DpsDonate.tsx","donate/icu/DpsIcuModal.tsx","donate/icu/DpsIcuTile.tsx","donate/icu/DpsIcu.tsx","success-stories/DpsSuccessStories.tsx","about/about-us/DpsAboutUs.tsx","about/contact/DpsContact.tsx","about/DpsAboutFaq.tsx","model/DpsDetailedPet.ts","adopt/pet-detail/DpsPetDetailActions.tsx","adopt/pet-detail/DpsPetDetailBasics.tsx","common/DpsBasicCarouselSettings.ts","adopt/pet-detail/DpsPetDetailCarousel.tsx","adopt/pet-detail/DpsPetDetailHeading.tsx","adopt/pet-detail/DpsPetDetail.tsx","routing/DpsRedirect.tsx","model/DpsSuccessStory.ts","success-stories/success-story/DpsSuccessStory.tsx","donate/sponsor/DpsSponsor.tsx","donate/employer-matching/DpsEmployerMatching.tsx","donate/in-honor-of/DpsInHonorOfTile.tsx","donate/in-honor-of/DpsInHonorOf.tsx","print/DpsPrint.tsx","adopt/littermate-syndrome/DpsLittermateSyndrome.tsx","about/rehome/DpsRehome.tsx","foster/resources/DpsFosterResources.tsx","donate/legacy/DpsLegacy.tsx","donate/auction/DpsAuctionDonor.tsx","donate/auction/donors.ts","donate/auction/DpsAuction.tsx","routing/routes.tsx","donate-modal/DpsDonateModalContent.tsx","donate-modal/DpsDonateModal.tsx","DpsFooter.tsx","hamburger/DpsHamburgerChildMenu.tsx","hamburger/DpsHamburgerMenu.tsx","header/DpsHero.tsx","header/DpsChildRouteMenu.tsx","header/DpsNavTopRoute.tsx","header/DpsNav.tsx","header/DpsHeader.tsx","routing/DpsRoutes.tsx","DpsApp.tsx","reportWebVitals.ts","routing/ScrollToTop.tsx","index.tsx"],"names":["imgixDomain","DpsApi","endpoint","params","url","URL","baseUrl","Object","keys","forEach","param","searchParams","append","toString","fetch","assembleUrl","then","response","a","ok","json","Promise","reject","fetchAndReturnJson","id","process","DpsAdoptApplication","className","to","routes","adopt","children","application","path","catApp","href","target","rel","React","DpsAdoptableTile","adoptable","this","props","petDetail","src","imgUrl","alt","name","breed","age","gender","DpsLoading","donateEmail","donateLink","DpsDonateButton","link","DpsSocials","width","SOCIAL_ICON_WIDTH","htmlAttributes","imgixParams","pad","INSTAGRAM_PADDING","bg","INSTAGRAM_BG_COLOR","DpsSocialBanner","FollowUs","BannerText","SocialIcons","DpsAdoptAvailable","getAvailableCompact","animals","setState","dogs","cats","loaded","error","state","sort","b","map","dog","cat","DpsCatApplication","catApplication","donate","DpsStickyDogContent","pictures","title","donors","adoption_fee","bio","slice","line","dangerouslySetInnerHTML","__html","DpsStickyDogs","getSticky","stickyDogs","all","sticky","getAvailableById","expanded","stickies","filter","length","DpsHomeCarouselSlide","DpsHomeCarousel","_","shuffle","settings","dots","infinite","speed","slidesToShow","lazyLoad","adaptiveHeight","responsive","breakpoint","slidesToScroll","DpsHomeEvent","event","date","time","notes","locationLink","ScrollToAnchor","location","useLocation","lastHash","useRef","useEffect","hash","current","document","getElementById","setTimeout","scrollIntoView","behavior","block","DpsHomeEvents","getDates","events","DpsHomeFeatureCard","feature","bodyText","body","localPath","imgSrc","externalLink","newTab","linkText","DpsHomeSidebarFeatures","features","about","contact","volunteer","faq","successStories","DpsHome","getFeatured","featured","createFeatureCards","aboutFeature","foster","available","description","imgurl","href_text","new_tab","DpsFaqSection","section","heading","prose","DpsFaq","sections","index","DpsVolunteerFaq","rect","fm","fit","fill","height","DpsMeetVolunteers","getVolunteers","volunteers","secondary","directors","photo","director","DpsFosterFaq","DpsMeetFosters","getFosters","fosterData","fosters","spotlight","DpsDonate","donateRoutes","otherDonateRoutes","key","route","isDonateRoute","test","DpsIcuModal","animal","tabIndex","role","onClick","closeModal","DpsIcuTile","handleOpen","DpsIcu","getIcu","icu","reduce","h","m","hospice","medical","trigger","openInitially","closeOnOverlayClick","closeOnEscapePress","disableFirstElementFocus","close","DpsSuccessStories","isSuccessStoryState","pathname","indexOf","successStory","petState","useState","stories","setStories","asyncState","setLoaded","getSuccessStories","story","photo1","crop","DpsAboutUs","DpsContact","frameBorder","DpsAboutFaq","dogApp","DpsDetailedPet","pet","_isDog","_video","species","video","replace","primaryBreed","secondaryBreed","age_general","coatLength","upcoming","boilerplate","insurance","goodWithDogs","goodWithCats","goodWithKids","specialNeeds","housetrained","declawed","last_updated","DpsPetDetailActions","isDog","toLocaleLowerCase","DpsPetDetailBasics","kids","dpsBasicCarouselSettings","DpsPetDetailCarousel","pic","allow","allowFullScreen","DpsPetDetailHeading","coat_length","DpsPetDetail","useSearchParams","get","print","setPet","p","DpsRedirect","navigate","useNavigate","internal","window","DpsSuccessStoryWrapper","_photos","flatMap","updates","update","photos","DpsSuccessStory","getSuccessStoryById","DpsSponsor","DpsEmployerMatching","COMPANIES_WITH_MATCHING","company","DpsInHonorOfTile","donation","message","DpsInHonorOf","getInHonorOf","donations","HUMAN_DONATIONS","DpsPrint","DpsLittermateSyndrome","PureComponent","DpsRehome","rehomeLink","DpsFosterResources","DpsLegacy","LEGACY_INFO_EMAIL","DpsAuctionDonor","GOLD_DONORS","DONORS","DpsAuction","donor","AUCTION_INFO_EMAIL","hasSubnavChildren","child","inNav","home","element","navOrder","hideDonate","littermateSyndrome","meet","fosterApplication","resources","sponsor","employerMatching","inHonorOf","legacy","auction","aboutUs","recap","rehome","navRoutes","createNavRoutes","transformed","DpsDonateModalContent","content","buttonText","DEFAULT_HREF","DpsDonateModal","isHiddenDonateRoute","some","modalState","modalOpen","setModalOpen","modalContentState","modalContent","setModalContent","getModalContent","shouldDisableModal","catch","err","console","log","open","overrides","Dialog","style","maxWidth","Overlay","zIndex","handleClose","DpsFooter","Date","getUTCFullYear","Component","DpsHamburgerChildMenu","dropdownOpen","setDropdown","parent","hamburgerCloser","prev","DpsHamburgerMenu","menuOpen","isOpen","hiddenWidths","disableAutoFocus","onStateChange","handleStateChange","burgerButtonClassName","closeMenu","bind","DpsHero","auto","DpsChildRouteMenu","DpsNavTopRoute","DpsNav","DpsHeader","DpsRoutes","getFirstChild","find","DpsApp","domain","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ScrollToTop","scrollTo","ReactDOM","render","StrictMode"],"mappings":"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","file":"static/js/main.2872d197.chunk.js","sourcesContent":["export const imgixDomain = 'dpsrescue.imgix.net';\n","import { IDpsModalContent } from \"../donate-modal/IDpsModalContent\";\nimport { IDpsFostersApiResponse } from \"../model/IDpsFoster\";\nimport { IDpsIcuAnimal } from \"../model/IDpsIcuAnimal\";\nimport { IDpsStickyDog, IDpsStickyDogCompact } from \"../model/IDpsStickyDog\";\nimport { IDpsSuccessStory, IDpsSuccessStoryCompact } from \"../model/IDpsSuccessStory\";\nimport { IDpsAvailableApiResponse, IDpsAvailableIdResponse, IDpsDatesApiResponse, IDpsFeaturedApiResponse, IDpsInHonorOfResponse, IDpsVolunteerApiResponse } from \"./IDpsApiResponses\";\n\nexport default class DpsApi {\n private static baseUrl = process.env.REACT_APP_API_URL || 'https://api.dpsrescue.info/' // test API;\n\n private static assembleUrl(endpoint: string, params?: { [key: string]: string }): string {\n const url = new URL(endpoint, DpsApi.baseUrl);\n params && Object.keys(params).forEach(param => url.searchParams.append(param, params[param]));\n return url.toString();\n }\n\n private static fetchAndReturnJson(endpoint: string, params?: { [key: string]: string }): Promise {\n return fetch(DpsApi.assembleUrl(endpoint, params)).then(async (response: Response) => {\n if (response.ok) { return response.json(); }\n return Promise.reject(await response.json());\n });\n }\n\n public static getAvailableCompact(): Promise {\n return DpsApi.fetchAndReturnJson('available/all');\n }\n\n public static getAvailableById(id: string): Promise {\n return DpsApi.fetchAndReturnJson(`available/object/${id}`);\n }\n\n public static getDates(): Promise {\n return DpsApi.fetchAndReturnJson('sheets/dates');\n }\n\n public static getSticky(): Promise {\n return DpsApi.fetchAndReturnJson('sheets/sticky');\n }\n\n public static getFosters(): Promise {\n return DpsApi.fetchAndReturnJson('sheets/fosters');\n }\n\n public static getFeatured(): Promise {\n return DpsApi.fetchAndReturnJson('sheets/featured');\n }\n\n public static getIcu(): Promise {\n return DpsApi.fetchAndReturnJson('sheets/icu');\n }\n\n public static getSuccessStories(): Promise {\n return DpsApi.fetchAndReturnJson('/sheets/success/all');\n }\n\n public static getSuccessStoryById(id: string): Promise {\n // API returns an array even when querying a single story\n return DpsApi.fetchAndReturnJson(`sheets/success/object/${id}`);\n }\n\n public static getVolunteers(): Promise {\n return DpsApi.fetchAndReturnJson('sheets/volunteers');\n }\n\n public static getModalContent(): Promise {\n return DpsApi.fetchAndReturnJson('sheets/modal');\n }\n\n public static getInHonorOf(): Promise {\n return DpsApi.fetchAndReturnJson('sheets/in-honor-of');\n }\n}","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport { routes } from '../../routing/routes';\nimport './_application.scss';\n\nexport default class DpsAdoptApplication extends React.Component {\n public render() {\n return (\n
\n
\n

Application Process

\n
\n Dog Application\n Cat Application\n
\n\n

\n Our Adoption Process\n

\n\n
    \n
  1. \n If you see a dog that you are interested in, check the bottom of their biography to see the kind of home we are looking for/qualifications to adopt that dog! Our goal is to send each dog to their forever home, and we do our best to match our dogs with the most appropriate homes for them.\n
  2. \n\n
  3. \n Fill out an application! If we think you are a potential match, we will be in touch within 48 hours. If we have set up the dog to meet with a family, or are pursuing other applicants, we will not contact you further. We understand that it can be exhausting and frustrating to keep applying. We take your effort and energy very seriously. We do not take it for granted. We receive upwards of 50-100 applications per dog and review every one of them, so please be patient with us.\n
  4. \n\n
  5. \n If your application is found to be a match for that dog, our interview team will give you a call. Keep an eye out for numbers with a 650 or 408 area code and listen to your voicemails in case we miss you.\n
  6. \n\n
  7. \n The interview team selects one home to adopt, and sends them an invitation containing information about the dog, the adoption appointment, and the deposit. We established the deposit policy to prevent last minute cancellations and no-shows. Our $50 dollar deposit goes towards your adoption fee. After it is paid, we will work with you to find a time/date of your appointment, which will be set up within three days of your approval.\n
  8. \n\n
  9. \n If you pay your deposit, you will be told to arrive at your appointment with a collar, leash, and dog tag. It is also recommended that you bring a crate for safe transport of your new pup to your home. Feel free to bring other dogs, if you have them, and family members along to your appointment.\n
  10. \n\n
  11. \n If you decide to adopt, you take the dog home that day! We will follow up with you to make sure your dog is settling in, and we always appreciate updates if you want to send them our way.\n
  12. \n
\n\n

If you're hoping to meet several of our dogs at once and aren't yet sure which one you would be interested in adopting, please check out the home page for upcoming Meet & Greet events!

\n

Pick of the Litter Program

\n

DPS's \"Pick of the Litter\" Program allows our dedicated fosters to foster a full litter of puppies and get to know their forever puppy from Day One.

\n

We are very grateful for our puppy litter fosters and know it's no easy task! And with cute puppies it's almost impossible not to fall in love (even if they keep you up at night).

\n

Thank you for your interest in our dogs. We look forward to seeing your application.

\n\n\n {/* Legacy stuff\n

Our responsibility is to both the adopter and our dogs who have been entrusted to our care. We strive to make the best possible match and we can only do so when we have been provided with all the information about our potential adoptive families.

\n
    \n
  1. Read the dog‘s bio
  2. \n

    Each dog has a full biography linked from the Available Animals page. Please read his/her description before applying to make sure that the home we are looking for is a match to what you have to offer.

    \n\n
  3. Complete the application
  4. \n

    Tell us all about you and let's see if we can make a love match. Until we know about your home and your experience we won't know if our little fur friend is going home! Please take your time and complete the application thoroughly. We certainly understand excitement and enthusiasm and that sometimes adopters want to rush through the application. Unfortunately, that may mean we do not pursue an adoption because we don't have enough information.

    \n\n
  5. Conduct phone interview
  6. \n

    Once applications are received and reviewed, we choose the best possible match and do a phone interview. Unfortunately, we are not able to interview all potential matches by phone. To have the best possible consideration for an interview, please make sure your application is thorough and complete and that all of your contact information is accurate.

    \n\n
  7. Meet and greet
  8. \n

    After conducting the phone interview and if it appears to be a match, we will send an email with instructions for meeting your new potential family fur member! We will meet with the entire family and hopefully, it's a love match. If so, we have a contract and our adoption fee and you have successfully adopted!

    \n
\n
\n

Once you submit an application a copy will automatically be returned to you. You do not need to fill out another application if you don’t adopt the first dog you were interested in. Simply hit reply on the application sent back to you and indicate who you are next interested in. If you do not receive a copy, then we did not receive your application. You will receive an email response to your application usually within 48 hours. If you do not, please email us AFTER 48 HOURS HAS PASSED.

\n

If you email an application on the night before an event or the day of an event it may not be reviewed. Please still come out but we may not be able to review all apps turned in at the last hours before events.

\n

Our adoption fees are $400-$800 and specified on the biography of each dog and/or puppy. The adoption fee can be paid with cash or credit card.

\n

This application is the only opportunity we have to learn about you initially. Please consider taking your time and not rushing through it. We want to adopt to you. But we can only pursue an interview with those applications that are thorough and are a match for our dog and we only know that if you take your time, please.

\n */}\n\n
\n
\n\n );\n }\n}\n","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport { IDpsAdoptable } from '../../model/IDpsAdoptable';\nimport { routes } from '../../routing/routes';\n\nexport interface IDpsAdoptableTileProps {\n adoptable: IDpsAdoptable\n}\n\nexport default class DpsAdoptableTile extends React.PureComponent {\n public render() {\n const adoptable = this.props.adoptable;\n return (\n \n \n {adoptable.name}\n \n
{adoptable.name}
\n
{adoptable.breed}
\n
{adoptable.age} - {adoptable.gender}
\n
\n );\n }\n}\n","import * as React from 'react';\nimport './loading.scss';\n\nexport default class DpsLoading extends React.PureComponent {\n public render() {\n return (\n // source: https://loading.io/css/ (CC0 license)\n
\n );\n }\n}\n","export const paypalEmail = 'info@dpsrescue.com';\nexport const donateEmail = 'info@dpsrescue.com';\nexport const donateLink = 'https://www.zeffy.com/donation-form/donate-to-help-save-lives-2';\nexport const paypalLink = 'https://www.paypal.com/donate/?hosted_button_id=JYKGZV458ZS2N#';\n","import * as React from 'react';\nimport './donateButton.scss';\nimport { donateLink } from './DpsConstants';\n\ninterface IDpsDonateButtonProps {\n link?: string;\n}\n\nexport default class DpsDonateButton extends React.PureComponent {\n public render() {\n const link = this.props.link;\n return (\n Donate\n );\n }\n}\n","import * as React from 'react';\nimport Imgix from 'react-imgix';\nimport { paypalEmail } from '../common/DpsConstants';\nimport DpsDonateButton from '../common/DpsDonateButton';\n\nexport interface IDpsSocialsProps {\n className?: string;\n}\n\nexport default class DpsSocials extends React.PureComponent {\n private static SOCIAL_ICON_WIDTH = 41; // px\n public static INSTAGRAM_BG_COLOR = 'cd486b';\n public static INSTAGRAM_PADDING = 7;\n\n public render() {\n return (\n
\n
\n \n \n \n \n \n \n \n \n \n
\n \n
\n );\n }\n}\n","import * as React from 'react';\nimport Imgix from 'react-imgix';\nimport DpsSocials from '../../header/DpsSocials';\n\nexport default class DpsSocialBanner extends React.PureComponent {\n public render() {\n return (\n
\n
\n \n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n );\n }\n}\n\nclass FollowUs extends React.PureComponent {\n public render() {\n return (\n \n );\n }\n}\n\nclass BannerText extends React.PureComponent {\n public render() {\n return (<>\n

Don’t see the perfect pup?

\n

Be the first to find out when new dogs and puppies are available!

\n );\n }\n}\n\nclass SocialIcons extends React.PureComponent {\n private static SOCIAL_ICON_WIDTH = 60; // px\n public render() {\n return (<>\n \n \n \n \n \n \n );\n }\n}\n","import * as React from 'react';\nimport DpsApi from '../../api/DpsApi';\nimport { IDpsAdoptable } from '../../model/IDpsAdoptable';\nimport { IDpsAsyncState } from '../../model/IDpsAsyncState';\nimport { IDpsAvailableApiResponse } from '../../api/IDpsApiResponses';\nimport DpsAdoptableTile from './DpsAdoptableTile';\nimport './available.scss'\nimport DpsLoading from '../../common/DpsLoading';\nimport DpsSocialBanner from './DpsSocialBanner';\n\nexport interface IDpsAdoptAvailableState extends IDpsAsyncState {\n dogs: IDpsAdoptable[];\n cats: IDpsAdoptable[];\n}\n\nexport default class DpsAdoptAvailable extends React.PureComponent<{}, IDpsAdoptAvailableState> {\n public componentDidMount() {\n DpsApi.getAvailableCompact()\n .then((animals: IDpsAvailableApiResponse) => {\n this.setState({\n dogs: animals.dogs,\n cats: animals.cats,\n loaded: true\n });\n }, (error) => {\n // TODO\n });\n }\n\n public render() {\n const dogs = this.state?.dogs;\n dogs?.sort((a, b) => a.name > b.name ? 1 : -1);\n const cats = this.state?.cats;\n cats?.sort((a, b) => a.name > b.name ? 1 : -1);\n const loaded = this.state?.loaded;\n return (\n
\n

Available Dogs

\n
\n {!loaded && }\n {loaded && dogs.map(dog => )}\n
\n
\n \n

Available Cats

\n
\n {!loaded && }\n {loaded && cats.map(cat => )}\n
\n
\n );\n }\n}\n","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport { routes } from '../../routing/routes';\nimport './catApplication.scss';\nimport { donateEmail } from '../../common/DpsConstants';\n\nexport default class DpsCatApplication extends React.Component {\n public render() {\n return (\n
\n
\n

Cat Application Process

\n
\n Cat Application\n
\n\n

Our responsibility is to both the adopter and our animals who have been entrusted to our care. We strive to\n make the best possible match and we can only do so when we have been provided with all the information about our\n potential adoptive families.

\n
    \n
  1. Read the cat‘s bio
  2. \n

    Each cat has a full biography linked from the Available Animals page. Please read his/her description before\n applying to make sure that the home we are looking for is a match to what you have to offer.

    \n\n
  3. Complete the application
  4. \n

    Tell us all about you and let's see if we can make a love match. Until we know about your home and your\n experience we won't know if our little fur friend is going home! Please take your time and complete the\n application thoroughly. We certainly understand excitement and enthusiasm and that sometimes adopters want to\n rush through the application. Unfortunately, that may mean we do not pursue an adoption because we don't have\n enough information.

    \n\n
  5. Conduct phone interview
  6. \n

    Once applications are received and reviewed, we choose the best possible match and do a phone interview.\n Unfortunately we are not able to interview all potential matches by phone. To have the best possible\n consideration for an interview, please make sure your application is thorough and complete and that all of\n your contact information is accurate.

    \n\n
  7. Meet and greet
  8. \n

    After conducting the phone interview and if it appears to be a match, we will send an email with instructions\n for meeting your new potential family fur member! We will meet with the entire family and hopefully it's a\n love match. If so, we have a contract and our adoption fee and you have successfully adopted!

    \n
\n
\n

All kittens are $150 while all cats are $100. The donation can be paid with any of the methods listed here. To\n find out more about our process email {donateEmail}

\n

Please answer every question or your application will not be considered.If any answers are found to be\n incorrect or untruthful it will void an adoption.If you do not receive a response within 24 hours of submitting\n an application please email again.We do not ignore received applications.

\n\n
\n
\n\n );\n }\n}\n","import * as React from 'react';\nimport { routes } from '../../routing/routes';\nimport { Link } from 'react-router-dom';\nimport { IDpsStickyDog } from '../../model/IDpsStickyDog';\nimport DpsDonateButton from '../../common/DpsDonateButton';\n\nexport interface IDpsStickyDogContentProps {\n dog: IDpsStickyDog;\n}\n\nexport default class DpsStickyDogContent extends React.PureComponent {\n public render() {\n const dog = this.props.dog;\n return (\n
\n
\n \n {dog.name}\n \n
\n
\n
\n {dog.donors && <>\n

Part of {dog.name}‘s adoption fee has been generously donated, thanks to {dog.donors}!

\n

{dog.name}‘s adoption fee is now {dog.adoption_fee}.

\n }\n

Help {dog.name} find a fur-ever home faster by sponsoring part of the adoption fee.

\n
\n \n
\n
\n
\n

{dog.name}

\n
\n {dog.bio?.slice(0, 3).map(line =>

)} {/* To properly parse escaped quotes and such */}\n Read more\n

\n
\n
\n );\n }\n}\n","import * as React from 'react';\nimport Slider, { Settings } from 'react-slick';\nimport DpsApi from '../../api/DpsApi';\nimport { IDpsAvailableIdResponse } from '../../api/IDpsApiResponses';\nimport { dpsBasicCarouselSettings } from '../../common/DpsBasicCarouselSettings';\nimport DpsLoading from '../../common/DpsLoading';\nimport { IDpsAsyncState } from '../../model/IDpsAsyncState';\nimport { IDpsStickyDog, IDpsStickyDogCompact } from '../../model/IDpsStickyDog';\nimport DpsStickyDogContent from './DpsStickyDogContent';\nimport './sticky.scss';\n\nexport interface IDpsStickyDogsState extends IDpsAsyncState {\n stickyDogs: IDpsStickyDog[]\n}\n\n/**\n * There have not been sticky dogs for a long time and there is no data served by the API to test against.\n * This is just a best attempt at working code based on legacy code.\n */\nexport default class DpsStickyDogs extends React.Component<{}, IDpsStickyDogsState> {\n public componentDidMount() {\n let stickiesCompact: IDpsStickyDogCompact[];\n DpsApi.getSticky()\n .then((stickyDogs: IDpsStickyDogCompact[]) => {\n stickiesCompact = stickyDogs;\n return Promise.all(stickyDogs.map(sticky => DpsApi.getAvailableById(sticky.id).then((expanded: IDpsAvailableIdResponse) => {\n return {\n pictures: expanded.pictures,\n bio: expanded.bio,\n ...sticky\n }\n })));\n })\n .then((stickies: IDpsStickyDog[]) => {\n this.setState({\n // Hack - no proper 404 on getAvailable so this is a surrogate\n stickyDogs: stickies.filter(sticky => sticky.bio),\n loaded: true\n });\n });\n }\n\n public render() {\n const stickyDogs = this.state?.stickyDogs;\n const loaded = this.state?.loaded;\n return (\n
\n
\n

Sticky Dogs

\n

Sticky Dogs are those who \"stick around\" a little longer than others. Perhaps they have medical issues,\n behavioral issues, social issues, are a little older or just for whatever reason have \"stuck\" around and need\n that extra love and attention to find their forever home. Some of these dogs also have a scholarship where\n someone has pledged a certain amount towards their normal adoption fee to aid in their getting adopted.

\n

Please check out some of our sticky dogs!

\n
\n
\n {!loaded && }\n {loaded && !stickyDogs?.length &&

No sticky dogs right now, check back later!

}\n {loaded && !!stickyDogs?.length &&\n stickyDogs.map(dog =>
)}\n
\n
\n );\n }\n}\n","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport { IDpsAdoptable } from '../model/IDpsAdoptable';\n\nexport interface IDpsHomeCarouselSlideProps {\n dog: IDpsAdoptable;\n}\n\nexport default class DpsHomeCarouselSlide extends React.PureComponent {\n public render() {\n const dog = this.props.dog;\n return (\n
\n \n {dog.name}\n
\n
\n

{dog.name}

\n

{dog.gender} {dog.breed}

\n

{dog.age}

\n
\n
\n \n
\n );\n }\n}\n","import * as React from 'react';\nimport DpsApi from '../api/DpsApi';\nimport { IDpsAdoptable } from '../model/IDpsAdoptable';\nimport { IDpsAvailableApiResponse } from '../api/IDpsApiResponses';\nimport Slider, { Settings } from 'react-slick';\nimport _ from 'lodash';\nimport 'slick-carousel/slick/slick.css';\nimport 'slick-carousel/slick/slick-theme.css';\nimport './adoptableCarousel.scss';\nimport DpsHomeCarouselSlide from './DpsHomeCarouselSlide';\nimport { IDpsAsyncState } from '../model/IDpsAsyncState';\nimport DpsLoading from '../common/DpsLoading';\n\nexport interface IDpsHomeCarouselState extends IDpsAsyncState {\n dogs: IDpsAdoptable[];\n}\n\nexport default class DpsHomeCarousel extends React.PureComponent<{}, IDpsHomeCarouselState> {\n private static readonly settings = {\n dots: false,\n infinite: true,\n speed: 300,\n slidesToShow: 3,\n lazyLoad: true,\n adaptiveHeight: true,\n responsive: [\n {\n breakpoint: 1200,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2,\n }\n },\n {\n breakpoint: 840, // weirdly arbitrary number but at this point it's just a bit too wide for two slides\n settings: {\n slidesToShow: 1,\n slidesToScroll: 1,\n }\n }\n ]\n };\n\n public componentDidMount() {\n DpsApi.getAvailableCompact()\n .then((animals: IDpsAvailableApiResponse) => {\n this.setState({\n dogs: _.shuffle(animals.dogs),\n loaded: true\n });\n }, (error) => {\n // TODO\n });\n }\n\n public render() {\n const loaded = this.state?.loaded;\n const dogs = this.state?.dogs;\n\n return (<>\n {!loaded &&\n
\n \n
}\n {/* \n Annoying type shenanigans below because the react-slick docs incorrectly say that\n lazyLoad should be 'progressive' or 'ondemand' when in fact it only works with a boolean.\n Unfortunately, the @types package follows the docs, so we have to convince it to accept\n the correct lazyLoad boolean.\n */}\n {loaded && dogs?.length && \n {dogs.map((dog: IDpsAdoptable) => )}\n }\n \n );\n }\n}\n","import * as React from 'react';\nimport { IDpsEvent } from '../model/IDpsEvent';\n\nexport interface IDpsHomeEventProps {\n event: IDpsEvent;\n}\n\nexport default class DpsHomeEvent extends React.PureComponent {\n public render() {\n const event = this.props.event;\n return (\n
\n

{event.title}

\n
\n
{event.date}
\n
{event.time}
\n {event.notes &&
{event.notes}
}\n Location and directions\n
\n
\n );\n }\n}\n","import { useEffect, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\n\n// https://dev.to/mindactuate/scroll-to-anchor-element-with-react-router-v6-38op\nfunction ScrollToAnchor() {\n const location = useLocation();\n const lastHash = useRef('');\n\n // listen to location change using useEffect with location as dependency\n // https://jasonwatmore.com/react-router-v6-listen-to-location-route-change-without-history-listen\n useEffect(() => {\n if (location.hash) {\n lastHash.current = location.hash.slice(1); // safe hash for further use after navigation\n }\n\n if (lastHash.current && document.getElementById(lastHash.current)) {\n setTimeout(() => {\n document\n .getElementById(lastHash.current)\n ?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n lastHash.current = '';\n }, 100);\n }\n }, [location]);\n\n return null;\n}\n\nexport default ScrollToAnchor;","import * as React from 'react';\nimport DpsApi from '../api/DpsApi';\nimport { IDpsDatesApiResponse } from '../api/IDpsApiResponses';\nimport DpsLoading from '../common/DpsLoading';\nimport { IDpsAsyncState } from '../model/IDpsAsyncState';\nimport DpsHomeEvent from './DpsHomeEvent';\nimport ScrollToAnchor from '../routing/ScrollToAnchor';\n\nexport interface IDpsHomeEventsState extends IDpsAsyncState {\n events: IDpsDatesApiResponse;\n}\n\nexport default class DpsHomeEvents extends React.PureComponent<{}, IDpsHomeEventsState> {\n public componentDidMount() {\n DpsApi.getDates()\n .then((events) => {\n this.setState({\n events,\n loaded: true\n });\n }, (error) => {\n // TODO\n });\n }\n\n public render() {\n const events = this.state?.events;\n const loaded = this.state?.loaded;\n return (\n
\n

Upcoming Events

\n
\n {!loaded && }\n {loaded && events.length === 0 &&

No upcoming events - stay tuned for updates!

}\n {loaded && events.length > 0 && events.map(event => )}\n {loaded && }\n
\n );\n }\n}\n","import * as React from 'react';\nimport Imgix from 'react-imgix';\nimport { Link } from 'react-router-dom';\nimport { IDpsHomeFeatureCardData } from '../model/IDpsBasicFeature';\n\nexport interface IDpsHomeFeatureCardProps {\n feature: IDpsHomeFeatureCardData;\n}\n\n/**\n * The simplest form of these feature cards on the home page just has a title, some body text,\n * an image, and an internal route. External links can be provided as well, though it would look\n * strange probably to include both internal and external.\n * \n * For fancier features, DOM elements can be specified directly in the body field instead of\n * or in addition to the basic body text.\n */\nexport default class DpsHomeFeatureCard extends React.PureComponent {\n public render() {\n const feature = this.props.feature;\n return (\n
\n

{feature.title}

\n
\n {feature.bodyText &&

{feature.bodyText}

}\n {feature.body}\n \n {feature.localPath && \n {feature.imgSrc && }\n }\n {feature.externalLink && \n {feature.imgSrc && }\n }\n \n
\n {feature.localPath && feature.linkText && {feature.linkText}}\n {feature.externalLink && feature.linkText && {feature.linkText}}\n
\n
\n );\n }\n}\n","import * as React from 'react';\nimport { IDpsHomeFeatureCardData } from '../model/IDpsBasicFeature';\nimport { routes } from '../routing/routes';\nimport DpsHomeFeatureCard from './DpsHomeFeatureCard';\nimport DpsTwitterContainer from './DpsTwitterContainer';\n\nexport default class DpsHomeSidebarFeatures extends React.PureComponent {\n\n public render() {\n // Sadly, features have to be initialized in render() because of a circular dependency with routes.\n const features: IDpsHomeFeatureCardData[] = [\n {\n title: 'Fly With DPS',\n bodyText: `Flying from ICN into SFO or LAX? Flying from PVG to SFO? DPS needs flight volunteers\n for our international dogs! No cost to you, we handle all the heavy lifting (dog included)\n and you save a life!`,\n localPath: `${routes.about.path}/${routes.about.children!.contact.path}`,\n imgSrc: '/home/flying-volunteers.jpg?fm=pjpg&w=700',\n linkText: 'Contact us if you can help out'\n }, {\n title: 'Get Involved',\n bodyText: `Like dogs? Want to help out in your community? Come volunteer or foster with DPS!`,\n localPath: `${routes.volunteer.path}/${routes.volunteer.children!.faq.path}`,\n imgSrc: '/home/events.jpg?w=700',\n linkText: 'Learn more about how you can help'\n }, {\n title: 'Fur-ever After',\n bodyText: `DPS has matched thousands of dogs with their perfect home over the\n past decade. Read our success stories and if you've adopted one of our\n pups, we'd love to hear from you!`,\n localPath: routes.successStories.path,\n imgSrc: '/home/success-stories.jpg?w=700',\n linkText: 'Read about our Happy Tails'\n }, {\n title: 'We ❤️ Pet Food Express!',\n bodyText: `Thank you to our partner, Pet Food Express, for hosting our adoption\n events in your stores! We couldn't save all of these dogs without you!`,\n externalLink: 'https://www.petfoodexpress.com/',\n imgSrc: '/home/pet-food-express.jpg?w=700',\n linkText: 'Find a PFE near you'\n }, {\n title: 'Our Favorite Doctors',\n bodyText: `Thank you to our vets, who help us keep all of our dogs healthy!`,\n body: ,\n externalLink: 'https://www.petfoodexpress.com/',\n imgSrc: '/home/vets.jpg?w=700'\n },\n ];\n\n return (\n
\n {/* Disabled because Elon Musk broke it */}\n {features.map(feature => )}\n
\n );\n }\n}\n","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport DpsApi from '../api/DpsApi';\nimport { IDpsFeaturedApiResponse } from '../api/IDpsApiResponses';\nimport { imgixDomain } from '../common/DpsImgixDomain';\nimport DpsLoading from '../common/DpsLoading';\nimport { IDpsAsyncState } from '../model/IDpsAsyncState';\nimport { IDpsHomeFeatureCardData } from '../model/IDpsBasicFeature';\nimport { routes } from '../routing/routes';\nimport DpsHomeCarousel from './DpsHomeCarousel';\nimport DpsHomeEvents from './DpsHomeEvents';\nimport DpsHomeFeatureCard from './DpsHomeFeatureCard';\nimport DpsHomeSidebarFeatures from './DpsHomeSidebarFeatures';\n\nexport interface IDpsHomeState extends IDpsAsyncState {\n featured: IDpsHomeFeatureCardData[];\n}\n\nexport default class DpsHome extends React.PureComponent<{}, IDpsHomeState> {\n private static createFeatureCards(featured: IDpsFeaturedApiResponse): IDpsHomeFeatureCardData[] {\n return featured.map(feature => {\n return {\n title: feature.title,\n bodyText: feature.description,\n externalLink: feature.href,\n imgSrc: feature.imgurl,\n linkText: feature.href_text,\n newTab: feature.new_tab\n }\n });\n }\n\n public componentDidMount() {\n DpsApi.getFeatured()\n .then((featured: IDpsFeaturedApiResponse) => {\n this.setState({\n featured: DpsHome.createFeatureCards(featured),\n loaded: true\n });\n }, (error) => {\n // TODO\n });\n }\n\n public render() {\n const merchFeature: IDpsHomeFeatureCardData = {\n title: 'Get DPS Merchandise at Our Online Store',\n externalLink: 'https://www.bonfire.com/store/dpsrescue/',\n imgSrc: '/home/merch.png?auto=format&pad=20&bg=2E8C69',\n };\n\n const aboutFeature: IDpsHomeFeatureCardData = {\n title: 'Who We Are',\n body:\n
\n

Doggie Protective Services, better known as DPS Rescue, was founded in 2001. We are a 501(c)(3) nonprofit organization that rescues dogs and cats of all ages, sizes, and breeds from throughout the state of California. Our main base of operations is in the Bay Area, but we rescue many dogs from Southern CA as well. We do not have a shelter facility and all of our dogs live in foster homes from intake through adoption. We do not receive any government funding and rely 100% on donations from our supporters and our community in order to save lives.

\n

We specialize in rescuing those that may be at risk of euthanasia, including pregnant and nursing mama dogs, medical cases, and the shy and shut down pups who do not thrive in the shelter environment.

\n

We don’t just rescue dogs! We also have a team that rescues cats and kittens, including bottle babies and nursing mama cats, and cares for them until they are old enough to be adopted.

\n

On average, it costs us approximately $500 to get a dog ready for adoption. Those costs include vet health checks, spay/neuter surgery, vaccinations, flea treatment, dewormer, and microchipping, as well as food, treats, toys, potty pads, x-pens, and all other supplies, which we provide free of cost to our foster homes. Many of our rescued animals have special needs, and our adoption fees and donations help cover the cost of specialty surgeries such as enucleation, amputation, hernia repair, and many more.

\n

We hold biweekly Saturday meet and greet events from 12-3 pm at Pet Food Express in Palo Alto and host individual adoptions throughout the week by appointment. We welcome adopters from Northern CA and beyond; as long as you can come in person to meet and adopt your new family member, you’re more than welcome to adopt from DPS!

\n

We are always in need of more foster homes and volunteers! Click here to sign up to become a lifesaving foster home or here to sign up to volunteer at our events, to join our transport team, or to learn other ways you can support DPS!

\n
\n };\n\n const loaded = this.state?.loaded;\n const featured = this.state?.featured;\n\n return (\n <>\n
\n
\n \n See All\n Available Dogs and Cats\n
\n
\n
\n \n {!loaded && }\n {loaded && featured.map(feature => )}\n \n
\n {/* */}\n
\n {/* */}\n
\n \n
\n
\n \n
\n \n\n );\n }\n}\n","import * as React from 'react';\nimport { IDpsFaqSection } from '../model/IDpsFaqSection';\nimport Imgix from 'react-imgix';\n\nexport interface IDpsFaqSectionProps {\n section: IDpsFaqSection\n}\n\nexport default class DpsFaqSection extends React.PureComponent {\n public render() {\n const section = this.props.section;\n return (\n
\n

{section.heading}

\n
\n
\n \n
\n
\n {section.prose}\n
\n
\n
\n );\n }\n}\n","import * as React from 'react';\nimport { IDpsFaqSection } from '../model/IDpsFaqSection';\nimport DpsFaqSection from './DpsFaqSection';\n\nexport interface IDpsFaqProps {\n sections: IDpsFaqSection[]\n}\n\nexport default class DpsFaq extends React.PureComponent {\n public render() {\n const sections = this.props.sections;\n return (\n
\n
\n {sections.map((section: IDpsFaqSection, index: number) => {\n return \n \n {index !== sections.length - 1 &&
}\n
\n })}\n
\n
\n );\n }\n}\n","import * as React from 'react';\nimport DpsFaq from '../common/DpsFaq';\nimport { IDpsFaqSection } from '../model/IDpsFaqSection';\nimport './volunteerFaq.scss';\nimport Imgix from 'react-imgix';\n\nexport default class DpsVolunteerFaq extends React.PureComponent {\n private static sections: IDpsFaqSection[] = [\n {\n heading: \"How can I volunteer?\",\n imgUrl: \"/volunteer/volunteer-tanner.jpg?h=340&fit=crop&w=340\",\n prose: <>\n

Thanks for asking! Our organization is powered by volunteers like you! We ask that folks have a love for dogs and a willingness to work with a diverse group of people. Our volunteer opportunities include assisting at adoptions events, transporting dogs, fundraising, and fostering homeless dogs so we can save more. No matter what your skill sets are, we guarantee there is a way you can help us save more lives! Fill out the application here to get started!

\n

\n Click here for the under 18 volunteer application\n

\n

\n Click here for the adult (18+) volunteer application\n

\n \n },\n {\n heading: \"What do you need help with?\",\n imgUrl: \"/volunteer/volunteer-abby.jpg?h=340&fit=crop&w=340\",\n prose: <>\n

We need help with all sorts of things, including:

\n
    \n
  • Transporting dogs to and from events, to vet and grooming appointments,and from shelters to the rescue
  • \n
  • Promoting our dogs on sites like Craigslist and Nextdoor to increase their chances at adoption
  • \n
  • Volunteering at our bi-weekly adoption events (set up, tear down, walking dogs, cleaning, talking to adopters)
  • \n
  • Volunteering at our Safehouse in Palo Alto caring for dogs, cleaning, helping with foster hand-offs, and organizing donations
  • \n
  • Fundraising and grant writing to keep our organization running and rescuing more medical and special needs dogs
  • \n
  • Professional photographers who are experienced taking photos of animals
  • \n
  • Attorneys who can advise us on legal matters that arise
  • \n
  • Organizing Pop-Up events around the Bay Area: you will contact businesses, set up a day to bring a select group of animals out and host a po-p up adoption event
  • \n
  • Puppy Wellness Events and Birthday parties: Take a litter of our puppies to a local company or school and spread the joy! Events typically last 1-2 hours.
  • \n
\n \n },\n {\n heading: \"What do I do at your events?\",\n imgUrl: \"/volunteer/volunteer-sol.jpg?h=340&fit=crop&w=340\",\n prose: <>\n

Our events are held every other Saturday (or occasionally on Sundays) at Pet Food Express in Palo Alto. Before meet and greet events start, we set up dog pens, hang signs, organize materials, and greet fosters as the dogs arrive, getting them settled into their pens.

\n

During the event, we need people to talk to potential adopters, clean up after the dogs, play with dogs, and cuddle puppies. Once the event is over, we break down pens, remove signs, pack up supplies, and leave the store and outside area as clean as we found it.

\n

No dog experience is required: all we ask is a willingness to learn (and pick up poop!), a positive attitude, and the ability to talk to visitors about the rescue and our adoptable pups!

\n \n },\n {\n heading: \"How Do I Get Started?\",\n imgUrl: \"/volunteer/volunteer-andy.jpg?h=340&fit=crop&w=340\",\n prose: <>\n

The first step is to fill out the volunteer application and we will get in touch with you to further discuss your role in the rescue.

\n

Volunteers must be 14 or older, and volunteers under 18 will be required to have their parent or guardian sign a minor release form. We require that all event volunteers commit to coming out to events at least one day a month and stay for the full day (10 am to 4 pm on Saturdays). You must sign up to attend events before coming out.

\n

You will receive an email with volunteer opportunities the week of an event. If you are able to come out, please reply and let us know, and read through the volunteer email that will be sent out on Friday for important information! Please email volunteer@dpsrescue.com if you have any more questions!

\n \n }\n ];\n\n\n public render() {\n return (\n
\n
\n \n \n \n
\n \n
\n );\n }\n}\n","import * as React from 'react';\nimport DpsApi from '../../api/DpsApi';\nimport DpsLoading from '../../common/DpsLoading';\nimport { IDpsAsyncState } from '../../model/IDpsAsyncState';\nimport { IDpsVolunteer } from '../../model/IDpsVolunteer';\nimport './meetVolunteers.scss';\n\ninterface IDpsMeetVolunteersState extends IDpsAsyncState {\n directors: IDpsVolunteer[];\n primary: IDpsVolunteer[];\n secondary: IDpsVolunteer[];\n}\n\n/**\n * You can see in the code the idea of \"secondary\" volunteers because there used to be some\n * concept of \"primary\" volunteers, but that has since been removed.\n */\nexport default class DpsMeetVolunteers extends React.PureComponent<{}, IDpsMeetVolunteersState> {\n public componentDidMount() {\n DpsApi.getVolunteers()\n .then((volunteers) => {\n this.setState({\n loaded: true,\n ...volunteers\n });\n }, (error) => {\n // TODO\n });\n }\n\n public render() {\n const loaded = this.state?.loaded;\n const secondary = this.state?.secondary;\n const directors = this.state?.directors;\n return (<>\n

Meet Our Volunteers

\n
\n {!loaded && }\n {loaded && secondary.map(volunteer =>
\n
\n
\n {volunteer.name}\n
\n
\n
\n

{volunteer.name}

\n
{volunteer.title}
\n
\n
\n )}\n
\n
\n

Board of Directors and Executive Officers

\n {!loaded && }\n {loaded && directors.map(director =>
\n
\n
\n {director.name}\n
\n
\n
\n

{director.name}

\n
{director.title}
\n
\n
\n )}\n
\n );\n }\n}\n","import * as React from 'react'\nimport DpsFaq from '../common/DpsFaq';\nimport { imgixDomain } from '../common/DpsImgixDomain';\nimport { IDpsFaqSection } from '../model/IDpsFaqSection';\n\nexport default class DpsFosterFaq extends React.PureComponent {\n private static sections: IDpsFaqSection[] = [\n {\n heading: \"Why do we need fosters?\",\n imgUrl: \"/foster/foster-melissa.jpg?h=340&fit=crop&w=340\",\n prose: <>\n

DPS Rescue could not exist without our foster homes. Our dogs are never kept in a shelter or a kennel; every dog stays with a loving foster family until they can find their furever home! Our fosters enable us to rescue more dogs, they teach our animals what being in a home is like, they provide valuable information about the pups to potential adopters, and they advocate for their fosters by networking them throughout their communities. The more foster homes we have, the more dogs we can rescue!

\n

Click here to apply to foster dogs/puppies

\n \n },\n {\n heading: \"How long would I foster for?\",\n imgUrl: \"/foster/foster-rachel.jpg?h=340&fit=crop&w=340&crop=top\",\n prose:

We love to give our dogs stable foster homes so they can adjust and feel comfortable while awaiting adoption. We ask for a minimum of a two week foster commitment when you sign on to take a dog or puppy. Occasionally we are in need of short-term fosters (when other fosters go out of town, or in case of emergency), so if you're only able to keep for a few days, please feel free to fill out the application and join our team!

\n\n },\n {\n heading: \"I’ve never had a dog before. Can I be a foster?\",\n imgUrl: \"/foster/foster-foster.jpg?h=340&fit=crop&w=340\",\n prose:

Yes! Fostering is a great way to learn about dogs…but you also need to do your homework! Before coming out to foster, read over some websites and prepare yourself and your home. Remove anything that a dog might chew on from the dog's reach. Plan out where the dog will eat and sleep. Look over our Foster Resources section. Once you've signed up, you can also join our Foster Facebook group to connect with other foster families and get advice and input. All of our fosters receive a phone call from our Foster Team before they begin, so write out a list of any questions you may have and we will be happy to answer them!

\n },\n {\n heading: \"I’m thinking I might want to adopt soon. Can I foster-to-adopt?\",\n imgUrl: \"/foster/foster-avery.jpg?h=340&fit=crop&w=340&crop=top\",\n prose: <>\n

No— our foster program is set up specifically for fostering, not foster-to-adopt. We do have some dogs in the rescue who are eligible for foster-to-adopt, and that will be listed on their bios. If you'd like to go that route, please fill out an application for one of those dogs!

\n

If you sign up to foster and happen to fall in love with a dog you are fostering, you can absolutely put in an application for that dog! Just know that we are getting and processing applications at all times and that dog might already be set up with an adopter. We do not give our fosters priority in the adoption process, but your commitment to the rescue will of course be taken into account.

\n

Our one exception to our foster-to-adopt policy is our Pick of the Litter Program. Click here to read more.

\n \n }\n ];\n\n public render() {\n return (\n
\n \n
\n );\n }\n}\n","import * as React from 'react';\nimport DpsApi from '../../api/DpsApi';\nimport DpsLoading from '../../common/DpsLoading';\nimport { IDpsAsyncState } from '../../model/IDpsAsyncState';\nimport { IDpsFoster, IDpsFosterSpotlight } from '../../model/IDpsFoster';\nimport './meetFosters.scss';\nimport Imgix from 'react-imgix';\n\ninterface IDpsMeetFostersState extends IDpsAsyncState {\n fosters: IDpsFoster[];\n spotlight: IDpsFosterSpotlight\n}\n\nexport default class DpsMeetFosters extends React.PureComponent<{}, IDpsMeetFostersState> {\n public componentDidMount() {\n DpsApi.getFosters()\n .then((fosterData) => {\n this.setState({\n loaded: true,\n ...fosterData\n });\n }, (error) => {\n // TODO\n });\n }\n\n public render() {\n const loaded = this.state?.loaded;\n const fosters = this.state?.fosters;\n const spotlight = this.state?.spotlight;\n return (<>\n
\n
\n

Meet Our Fosters

\n

Whether new or old, we are so thankful for our foster families who open\n their hearts and homes to our dogs. Here are just a few of the incredible\n people who help our rescue save lives!

\n
\n
\n \n
\n
\n
\n {!loaded && }\n {loaded && <>\n
\n {spotlight.name}\n
\n
\n

Foster Spotlight: {spotlight.name}

\n

\n
\n }\n
\n
\n {!loaded && }\n {loaded && fosters.map(foster =>
\n
\n {foster.name}\n
\n
\n

{foster.name}

\n
\n
\n )}\n
\n \n );\n }\n}\n","import * as React from 'react';\nimport './donate.scss';\nimport Imgix from 'react-imgix';\nimport { routes } from '../../routing/routes';\nimport { IDpsRoute } from '../../model/IDpsRoutes';\nimport { Link } from 'react-router-dom';\nimport { donateEmail, donateLink, paypalLink } from '../../common/DpsConstants';\nimport DpsPaypalButton from '../../common/DpsPaypalButton';\n\nexport default class DpsDonate extends React.PureComponent {\n private static isDonateRoute(route: IDpsRoute): boolean {\n return /donate/i.test(route.name);\n }\n\n public render() {\n const donateRoutes = routes.donate.children!;\n const otherDonateRoutes: IDpsRoute[] = Object.keys(donateRoutes).map(key => donateRoutes[key]).filter(route => !DpsDonate.isDonateRoute(route));\n\n return (<>\n
\n
\n

Donate

\n As a non-profit organization with no government funding, we rely on donations to continue to rescue dogs and cats in need. The average cost per dog is $627, which includes bailing them out of the shelter, a health check, spay or neuter, vaccinations, microchipping and spending several weeks at a foster home to evaluate before adoption. There are so many ways to donate!\n
\n
\n \n
\n
\n

Monetary Donations

\n
    \n
  • Zeffy
  • \n
  • Zelle ({donateEmail})
  • \n
  • Paypal
  • \n
  • Checks payable to \"Doggie Protective Services\" sent to
    \n 809 San Antonio Road
    \n Suite #8
    \n Palo Alto, CA 94303
  • \n
\n
\n
\n

Items we need (please contact {donateEmail} to schedule a drop-off!)

\n
    \n
  • Canned dog & cat food of any variety
  • \n
  • Newspaper
  • \n
  • Exercise pens
  • \n
  • Baby gates
  • \n
  • Gently used toys
  • \n
  • Blankets
  • \n
  • Dog beds​
  • \n
  • Flea Treatment (Frontline or Advantage)
  • \n
  • Or check out our Amazon Wishlist
  • \n
\n

Click here to download our tax receipt.

\n
\n
\n
\n
\n

More Ways to Give

\n
\n {otherDonateRoutes.map(route => \n \n {route.name}\n )}\n
\n
\n \n );\n }\n}\n","import * as React from 'react';\nimport DpsDonateButton from '../../common/DpsDonateButton';\nimport { IDpsIcuAnimal } from '../../model/IDpsIcuAnimal';\n\nexport interface IDpsIcuModalProps {\n animal: IDpsIcuAnimal;\n closeModal: any;\n}\n\nexport default class DpsIcuModal extends React.PureComponent {\n public render() {\n const animal = this.props.animal;\n return (\n
\n
\n
\n
\n

\n {animal.name}\n

\n this.props.closeModal()}>X\n
\n
\n
\n \n
\n
\n
\n
\n );\n }\n}\n","import * as React from 'react';\nimport { IDpsIcuAnimal } from '../../model/IDpsIcuAnimal';\n\nexport interface IDpsIcuTileProps {\n animal: IDpsIcuAnimal;\n handleOpen: () => void;\n}\n\nexport default class DpsIcuTile extends React.PureComponent {\n public render() {\n const animal = this.props.animal;\n return (\n
\n {animal.name}\n

{animal.name}

\n
\n );\n }\n}\n","import * as React from 'react';\nimport MicroModal from 'react-micro-modal';\nimport DpsApi from '../../api/DpsApi';\nimport DpsLoading from '../../common/DpsLoading';\nimport { IDpsAsyncState } from '../../model/IDpsAsyncState';\nimport { IDpsIcuAnimal } from '../../model/IDpsIcuAnimal';\nimport DpsIcuModal from './DpsIcuModal';\nimport DpsIcuTile from './DpsIcuTile';\nimport './icu.scss';\nimport { Link } from 'react-router-dom';\nimport { routes } from '../../routing/routes';\n\ninterface IDpsIcuState extends IDpsAsyncState {\n hospice: IDpsIcuAnimal[];\n medical: IDpsIcuAnimal[];\n}\n\nexport default class DpsIcu extends React.PureComponent<{}, IDpsIcuState> {\n public componentDidMount() {\n DpsApi.getIcu()\n .then((icu) => {\n const [hospice, medical]: IDpsIcuAnimal[][] = icu.reduce<[IDpsIcuAnimal[], IDpsIcuAnimal[]]>(\n ([h, m], animal) => (animal.hospice ? [[...h, animal], m] : [h, [...m, animal]]),\n [[], []]\n );\n this.setState({\n loaded: true,\n hospice,\n medical\n });\n }, (error) => {\n // TODO\n\n });\n }\n\n public render() {\n const medical = this.state?.medical;\n const hospice = this.state?.hospice;\n const loaded = this.state?.loaded;\n return (<>\n
\n

Medical and Hospice Dogs

\n

DPS Rescue spends thousands of dollars each year caring for medical dogs. Any support you can contribute is deeply appreciated — by us and our pups. These pups deserve the very best care! Click on each dog to read their story. You can donate via the link on their description or any of the methods listed here.

\n {!loaded && }\n\n {loaded && medical.length > 0 && <>\n

Medical Dogs

\n
\n {medical.map(animal =>\n }\n openInitially={false}\n closeOnOverlayClick={true}\n closeOnEscapePress={true}\n disableFirstElementFocus={true}\n key={animal.photo}>\n {(close) => }\n )}\n
\n }\n\n {loaded && hospice.length > 0 && <>\n
\n

Hospice Dogs

\n
\n {hospice.map(animal =>\n }\n openInitially={false}\n closeOnOverlayClick={true}\n closeOnEscapePress={true}\n disableFirstElementFocus={true}\n key={animal.photo}>\n {(close) => }\n )}\n
\n }\n
\n );\n }\n}\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { Link, Outlet, useLocation } from 'react-router-dom';\nimport DpsApi from '../api/DpsApi';\nimport DpsLoading from '../common/DpsLoading';\nimport { IDpsSuccessStoryCompact } from '../model/IDpsSuccessStory';\nimport { routes } from '../routing/routes';\nimport './successStories.scss';\nimport Imgix from 'react-imgix';\n\n/**\n * Success stories is a strange route because it is a parent route that has content and it has\n * a child route that is not in the nav. In order to show just the parent or child content, we have\n * to switch between and the parent content depending on which route we are actually in.\n */\nexport default function DpsSuccessStories() {\n const location = useLocation();\n const isSuccessStoryState = location.pathname.indexOf(routes.successStories.children!.successStory.path) > -1;\n\n const petState = useState();\n const stories: IDpsSuccessStoryCompact[] = petState[0] as IDpsSuccessStoryCompact[];\n const setStories = petState[1];\n\n const asyncState = useState(false);\n const loaded: boolean = asyncState[0];\n const setLoaded = asyncState[1];\n\n React.useEffect(() => {\n !stories && DpsApi.getSuccessStories().then((successStories) => {\n setLoaded(true);\n setStories(successStories);\n });\n }, [setLoaded, setStories, stories]);\n\n return (<>\n {isSuccessStoryState && }\n {!isSuccessStoryState &&
\n {!loaded && }\n {loaded && stories?.map(story =>\n
\n \n \n \n
{story.name}
\n
)}\n
}\n );\n}\n","import * as React from 'react';\nimport './aboutUs.scss';\nimport Imgix from 'react-imgix';\n\nexport default class DpsAboutUs extends React.PureComponent {\n public render() {\n return (\n
\n
\n \n
\n
\n

Doggie Protective Services is a non-profit, volunteer-driven animal\n rescue organization. We are a 501(c)(3) rescue that was incorporated in\n 2001. We rescue dogs of all breeds, ages, and sizes. Since our creation,\n we have helped over 12,000 dogs and cats find their forever homes.

\n\n

We do not have a facility, so we rely on our foster homes located\n throughout California. Anywhere from 100-200 foster homes are active at\n various times in some capacity, whether they are long-term, short-term or\n overnight fosters. Most of our fosters are also involved beyond just\n fostering - they come to events, transport our animals, do post-adoption\n outreach and help spread the word about DPS!

\n\n

We also rely heavily on volunteers, and are lucky enough to have a\n supportive group of dedicated friends who help assist in everything from\n writing bios for dogs to promoting them on their own social media to help\n them get adopted!

\n\n

While our name may be Doggie Protective Services, we also rescue cats as\n well! We have a small, vibrant group of cat fosters who take in our rescue\n cats and kittens. For cat owners requesting re-homing assistance, we also\n assist if they can foster their own cat while we work to find a perfect\n forever home.

\n\n

Approximately 30 shelters throughout Southern and Northern California\n partner with us in our rescue efforts. We are contacted by shelters and\n asked to help with overpopulation by taking in specific dogs who otherwise\n may not be adopted or who have been at the shelter for an extended period\n of time. We take in dogs who do not thrive in a shelter environment or who\n need medical or behavioral attention outside of the facility.

\n\n

Our partnership with a rescue group in Korea helps us fully realize the\n impact of a highly dedicated, global network of volunteers. Our Korean\n rescue partners save dogs who are sold to the meat markets or who are in\n danger of ending up at the meat markets. We also have a partnership with a\n rescue in China who sends us dogs she would not be able to place in her\n country. It is our strong belief that because we have the resources and\n the ability to save highly adoptable dogs from certain death, that we\n should do so. It doesn't matter if the dogs in need are in the Bay Area,\n LA, or as far away as Korea. Our philosophy is simple: If there is a need,\n and we can and want to assist, then we will.​

\n\n

Our Tax ID is 91-2164578.

\n
\n
\n );\n }\n}\n","import * as React from 'react';\nimport './contact.scss';\nimport Imgix from 'react-imgix';\n\nexport default class DpsContact extends React.Component {\n public render() {\n return (\n
\n
\n \n
\n
\n \n
\n
);\n }\n}\n","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport DpsFaq from '../common/DpsFaq';\nimport { IDpsFaqSection } from '../model/IDpsFaqSection';\nimport { routes } from '../routing/routes';\n\nexport default class DpsAboutFaq extends React.PureComponent {\n public render() {\n // cannot be static because \"cannot access routes before initialization\".\n const sections: IDpsFaqSection[] = [\n {\n heading: \"Where does DPS get these dogs?\",\n imgUrl: \"/about/faq/sarah-chen.jpg?h=340&fit=crop&w=340\",\n prose: <>\n

The majority of our dogs come from high kill animal shelters in Southern California and overflowing shelters in need of our help in Northern California. On occasion, we do get our dogs from owners who are unable to continue caring for their dogs.

\n

Our Korean and Chinese Rescue partnerships also allow us to save dogs around the world, which we are thankful for.

\n \n },\n {\n heading: \"Where is the shelter/kennel?\",\n imgUrl: \"/about/faq/chen.jpg?h=340&fit=crop&w=340&crop=top\",\n prose:

We do not have a shelter/kennel. Our dogs are rescued from high kill shelters and then go into a network of foster homes in Northern and Southern CA. Each dog lives with a family or person until they find their permanent home. We do have a warehouse facility called “The Safehouse;” this is a location for intake, foster supply pickups, and adoption appointments. The Safehouse is not open for walk-ins at this time.

\n },\n {\n heading: \"Do you adopt to homes outside of CA?\",\n imgUrl: \"/about/faq/george.png?h=340&fit=crop&w=340\",\n prose:

Yes! We are happy to adopt to homes anywhere in the US (and even Canada!) as long as the adopter is able to travel to the Bay Area to adopt the dog in person. We do not ship our dogs.

\n },\n {\n heading: \"What happens to the dogs that don't get adopted?\",\n imgUrl: \"/about/faq/zara.jpg?h=340&fit=crop&w=340&crop=top\",\n prose:

They stay with our rescue until they too find their home. You can check out some of our dogs who have been with us longer than others under our Sticky Dog section.

\n\n },\n {\n heading: \"Do you have a \\\"trial period\\\" if I take a dog home?\",\n imgUrl: \"/about/faq/karen.jpg?h=340&fit=crop&w=340&crop=top\",\n prose:

As a rule, we do not have trial periods. If you take a dog home on a trial basis for a week or two and do not end up adopting, we have not been able to use that time to find that dog a permanent home. We don't think it's fair for the dog or for the other families that may want to adopt.

,\n\n },\n {\n heading: \"What is the process for adopting a dog?\",\n imgUrl: \"/about/faq/lily.jpg?h=340&fit=crop&w=340&crop=top\",\n prose:

Please look at our apply page

,\n\n }\n ]\n\n return (\n
\n \n
\n );\n }\n}\n","import { IDpsAvailableIdResponse } from \"../api/IDpsApiResponses\";\n\n/**\n * Wrapper class for data coming from API. Makes some types a bit more sensible and takes care of some\n * minor transformations.\n */\nexport default class DpsDetailedPet {\n private _isDog: boolean;\n private _video: string;\n\n constructor(private pet: IDpsAvailableIdResponse) {\n this._isDog = /dog/i.test(this.species);\n this._video = pet.video ? pet.video.replace(\"/v/\", \"/embed/\") : ''; // make URL given by API embed properly\n }\n\n public get id(): string { return this.pet.id; }\n public get name(): string { return this.pet.name; }\n public get species(): 'dog' | 'cat' { return this.pet.species; }\n public get breed(): string { return this.pet.breed; }\n public get primary_breed(): string { return this.pet.primaryBreed; }\n public get secondary_breed(): string { return this.pet.secondaryBreed; }\n public get age(): string { return this.pet.age; }\n public get age_general(): string { return this.pet.age_general; }\n public get gender(): string { return this.pet.gender; }\n public get video(): string { return this._video; }\n public get pictures(): string[] { return this.pet.pictures; }\n public get coat_length(): string { return this.pet.coatLength; }\n public get upcoming(): string { return this.pet.upcoming; }\n public get boilerplate(): string[] { return this.pet.boilerplate; }\n public get insurance(): string { return this.pet.insurance; }\n public get bio(): string[] { return this.pet.bio; }\n public get dogs(): boolean { return this.pet.goodWithDogs; }\n public get cats(): boolean { return this.pet.goodWithCats; }\n public get kids(): boolean { return this.pet.goodWithKids; }\n public get special_needs(): boolean { return this.pet.specialNeeds; }\n public get housetrained(): boolean { return this.pet.housetrained; }\n public get declawed(): boolean { return this.pet.declawed; }\n public get last_updated(): string { return this.pet.last_updated; }\n public get contact(): string { return this.pet.contact; }\n\n public get isDog(): boolean { return this._isDog }\n}","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport DpsDetailedPet from '../../model/DpsDetailedPet';\nimport { routes } from '../../routing/routes';\n\nexport interface IDpsPetDetailActionsProps {\n pet: DpsDetailedPet\n}\n\nexport default class DpsPetDetailActions extends React.PureComponent {\n public render() {\n const pet = this.props.pet;\n return (\n
\n \n \n Apply to adopt\n \n \n \n \n See more {pet.species.toLocaleLowerCase()}s\n \n \n
\n );\n }\n}\n","import * as React from 'react';\nimport DpsDetailedPet from '../../model/DpsDetailedPet';\n\nexport interface IDpsPetDetailBasicsProps {\n pet: DpsDetailedPet\n}\n\nexport default class DpsPetDetailBasics extends React.PureComponent {\n public render() {\n const pet = this.props.pet;\n return (\n
\n {pet.declawed &&

Declawed

}\n {pet.dogs &&

Good with dogs

}\n {pet.cats &&

Good with cats

}\n {pet.kids &&

Good with kids

}\n {pet.housetrained &&

Housetrained

}\n
\n );\n }\n}\n","export const dpsBasicCarouselSettings = {\n dots: true,\n infinite: true,\n speed: 300,\n lazyLoad: true,\n};","import * as React from 'react';\nimport DpsDetailedPet from '../../model/DpsDetailedPet';\nimport Slider, { Settings } from \"react-slick\";\nimport { dpsBasicCarouselSettings } from '../../common/DpsBasicCarouselSettings';\n\nexport interface IDpsPetDetailCarouselProps {\n pet: DpsDetailedPet\n}\n\nexport default class DpsPetDetailCarousel extends React.PureComponent {\n public render() {\n const pet = this.props.pet;\n return (\n
\n \n {pet.pictures.map(pic => {pet.name})}\n {pet.video &&
}\n
\n
\n );\n }\n}\n","import * as React from 'react';\nimport DpsDetailedPet from '../../model/DpsDetailedPet';\n\nexport interface IDpsPetDetailHeadingProps {\n pet: DpsDetailedPet\n}\n\nexport default class DpsPetDetailHeading extends React.PureComponent {\n public render() {\n const pet = this.props.pet;\n return (\n <>\n

{pet.name}

\n

{pet.breed}

\n

{pet.age} - {pet.coat_length} coat - {pet.gender}

\n \n );\n }\n}\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { Link, useSearchParams } from 'react-router-dom';\nimport DpsApi from '../../api/DpsApi';\nimport DpsLoading from '../../common/DpsLoading';\nimport DpsDetailedPet from '../../model/DpsDetailedPet';\nimport { routes } from '../../routing/routes';\nimport DpsPetDetailActions from './DpsPetDetailActions';\nimport DpsPetDetailBasics from './DpsPetDetailBasics';\nimport DpsPetDetailCarousel from './DpsPetDetailCarousel';\nimport DpsPetDetailHeading from './DpsPetDetailHeading';\nimport './pet-detail.scss'\n\n/**\n * Shows details of one pet. A query param for id is used instead of a URL param (/pet-detail/?id=123 instead of /pet-detail/123)\n * for the sake of backwards compatibility.\n * Adding a query param print=true will render the page differently and add print media queries to facilitate printing pet bios\n * for adoption events.\n */\n// useSearchParams necessitates function component over class component\nexport function DpsPetDetail() {\n const [searchParams] = useSearchParams();\n const id = searchParams.get('id');\n const print: boolean = searchParams.get('print') === 'true';\n\n const petState = useState();\n const pet: DpsDetailedPet = petState[0] as DpsDetailedPet;\n const setPet = petState[1];\n\n const asyncState = useState(false);\n const loaded: boolean = asyncState[0];\n const setLoaded = asyncState[1];\n\n React.useEffect(() => {\n !pet && DpsApi.getAvailableById(id!).then(p => {\n setPet(new DpsDetailedPet(p));\n setLoaded(true);\n });\n }, [id, setLoaded, setPet, pet]);\n\n return (\n
\n {!loaded && }\n {loaded &&\n
\n
\n {!print &&\n
\n \n
{/* {{#if print}}col-sm-6{{/if}} was in here before but it should be logically impossible?*/}\n \n\n
\n
\n }\n {print &&\n
\n {pet.name}\n
\n \n \n
\n
\n
\n
\n }\n {!print && }\n {pet.bio?.map(line =>

)} {/* To properly parse escaped quotes and such */}\n {!print && }\n\n

\n\n
\n }\n {loaded && !print &&\n
\n
\n

Meet this {pet.isDog ? 'dog' : 'cat'}!

\n {pet.upcoming &&

{pet.upcoming}

}\n {pet.boilerplate.map(line =>

)}\n

\n
\n

Interested in adopting?

\n

Please read the adoption FAQ, then fill out the\n application\n

\n
\n
\n }\n
\n );\n}\n\nexport default DpsPetDetail;\n","import { useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nexport interface IDpsRedirectProps {\n to: string;\n // provide a path like '/about/rehome' for an in-app redirect; otherwise don't set internal and use an external link\n internal?: boolean;\n}\n\nexport default function DpsRedirect(props: IDpsRedirectProps) {\n const navigate = useNavigate();\n useEffect(() => {\n if (props.internal) navigate(props.to)\n else window.location.replace(props.to);\n }, [])\n\n return (\n
\n Redirecting...\n
\n );\n}\n","import _ from \"lodash\";\nimport { IDpsSuccessStory, IDpsSuccessStoryUpdate } from \"./IDpsSuccessStory\";\n\nexport default class DpsSuccessStoryWrapper {\n private readonly _photos: string[] = [];\n constructor(private readonly successStory: IDpsSuccessStory) {\n // We don't actually care to separate photos by date so we flatten them all.\n this._photos = _.flatMap(successStory.updates, (update) => update.photos);\n }\n\n public get id(): string { return this.successStory.id; }\n public get name(): string { return this.successStory.name; }\n public get photos(): string[] { return this._photos; }\n public get updates(): IDpsSuccessStoryUpdate[] { return this.successStory.updates; }\n}","import * as React from 'react';\nimport { useState } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport Slider, { Settings } from 'react-slick';\nimport DpsApi from '../../api/DpsApi';\nimport { dpsBasicCarouselSettings } from '../../common/DpsBasicCarouselSettings';\nimport DpsSuccessStoryWrapper from '../../model/DpsSuccessStory';\nimport './successStory.scss';\nimport Imgix from 'react-imgix';\nimport DpsLoading from '../../common/DpsLoading';\n\n// useSearchParams necessitates function component over class component\nexport function DpsSuccessStory() {\n const [searchParams] = useSearchParams();\n const id = searchParams.get('id');\n\n const petState = useState();\n const pet: DpsSuccessStoryWrapper = petState[0] as DpsSuccessStoryWrapper;\n const setPet = petState[1];\n\n const asyncState = useState(false);\n const loaded: boolean = asyncState[0];\n const setLoaded = asyncState[1];\n\n React.useEffect(() => {\n !pet && DpsApi.getSuccessStoryById(id!).then(p => {\n setPet(new DpsSuccessStoryWrapper(p));\n setLoaded(true);\n });\n }, [id, setPet, setLoaded, pet]);\n\n return (\n
\n {!loaded && }\n {loaded && <>\n

{pet.name}

\n
\n \n {pet.photos.map(pic => )}\n \n
\n
\n {pet.updates.map(update => \n

{update.date}

\n

\n )}\n

\n }\n
\n );\n}\n\nexport default DpsSuccessStory;\n","import * as React from 'react';\nimport './sponsor.scss';\nimport Imgix from 'react-imgix';\nimport { donateEmail } from '../../common/DpsConstants';\nimport { Link } from 'react-router-dom';\nimport { routes } from '../../routing/routes';\n\nexport default class DpsSponsor extends React.PureComponent {\n public render() {\n return (\n <>\n
\n
\n

Sponsor a Dog

\n Your sponsorship helps pay for this dog's spay/neuter surgery, flea treatment, food, and more!\n

Step 1: Visit our Adoptable Dogs page and choose a dog you would like to sponsor

\n

Step 2: Submit a $50 donation via one of the methods listed here

\n

Step 3: Send an email to {donateEmail} with the name of the dog you’d like to sponsor and a short message (ex: Sponsored by Sarah in honor of her dog Rex)

\n
\n

Your message will be posted on the dog's bio within 48 hours!

\n
\n
\n \n
\n
\n
\n
\n
\n

In Memory of Ginger

\n

Thank you Annie for sponsoring two of our dogs and then helping with other costs.

\n

You are truly a gem.

\n

We appreciate you so much.

\n
\n
\n \n
\n
\n \n );\n }\n}\n","import * as React from 'react';\nimport './employerMatching.scss';\nimport { donateEmail } from '../../common/DpsConstants';\n\nexport default class DpsEmployerMatching extends React.PureComponent {\n private static COMPANIES_WITH_MATCHING = [\n 'Adobe',\n 'Apple',\n 'AT&T',\n 'Clorox',\n 'DocuSign',\n 'Dolby Digital',\n 'Dropbox',\n 'Genentech',\n 'Google',\n 'HP',\n 'Intel',\n 'LinkedIn',\n 'Microsoft',\n 'Morgan Stanley',\n 'Oracle',\n 'Paypal',\n 'PG&E',\n 'Sephora',\n 'Visa',\n ];\n\n public render() {\n return (\n
\n

Employer Matching Gifts

\n

Many companies offer corporate gift matching programs to their employees, so when you make a donation to DPS, it’s doubled! Ask your company HR department to see if they offer this option.

\n\n

Our information:
\n Name: Doggie Protective Services DBA DPS Rescue
\n Tax ID: 91-2164578
\n Mailing Address: 809 San Antonio Road, Suite #8, Palo Alto CA 94303
\n Website: www.dpsrescue.org
\n Email: {donateEmail}

\n\n

Companies with confirmed corporate matching include:

\n
\n {DpsEmployerMatching.COMPANIES_WITH_MATCHING.map(company => {company})}\n
\n
\n );\n }\n}\n","import * as React from 'react';\nimport { IDpsInHonorOfDonation } from '../../api/IDpsApiResponses';\n\nexport interface IDpsInHonorOfTileProps {\n donation: IDpsInHonorOfDonation\n}\n\nexport default class DpsInHonorOfTile extends React.PureComponent {\n public render() {\n const { imgSrc, name, message } = this.props.donation;\n return (\n \n );\n }\n}\n","import * as React from 'react';\nimport Imgix from 'react-imgix';\nimport DpsApi from '../../api/DpsApi';\nimport { IDpsInHonorOfDonation, IDpsInHonorOfResponse } from '../../api/IDpsApiResponses';\nimport DpsLoading from '../../common/DpsLoading';\nimport { IDpsAsyncState } from '../../model/IDpsAsyncState';\nimport DpsInHonorOfTile from './DpsInHonorOfTile';\nimport './inHonorOf.scss';\nimport { donateEmail } from '../../common/DpsConstants';\nimport { Link } from 'react-router-dom';\nimport { routes } from '../../routing/routes';\n\ninterface IDpsInHonorOfState extends IDpsAsyncState {\n donations: IDpsInHonorOfDonation[]\n}\n\nexport default class DpsInHonorOf extends React.PureComponent<{}, IDpsInHonorOfState> {\n // Hard-coded for now until there's evidence that it warrants modified API behavior\n private static HUMAN_DONATIONS: IDpsInHonorOfDonation[] = [\n {\n imgSrc: 'https://dpsrescue.imgix.net/donate/in-honor-of/dennis.jpeg?w=380&h=350&fit=crop&crop=middle&border=15,2E8C69&border-bottom=80&mark-y=267&mark64=aHR0cHM6Ly9kcHNyZXNjdWUuaW1naXgubmV0L350ZXh0P3R4dC1jb2xvcj13aGl0ZSZ0eHQtZm9udDY0PVFYWmxibWx5SUU1bGVIUXNTWFJoYkdsaiZ0eHQtc2l6ZT0xNyZ3PTM2MCZ0eHQ2ND1TVzRnYldWdGIzSjVJRzltSUVSbGJtNXBjeUJLTGlCU2RXUnZiSEJvT2lCNWIzVWdkMmxzYkNCaVpTQnlaVzFsYldKbGNtVmtJR1p2Y2lCNWIzVnlJR3h2ZG1VZ2IyWWdZVzVwYldGc2N5NGdWMlVnVFdsemN5QlpiM1V1SUMwdFZHRmlMQ0JUWVcwc0lFTmhjbTlz',\n name: 'Dennis J. Rudolph',\n message: 'In memory of Dennis J. Rudolph: you will be remembered for your love of animals. We Miss You. -Tab, Sam, Carol'\n }\n ]\n\n public componentDidMount() {\n DpsApi.getInHonorOf()\n .then((donations: IDpsInHonorOfResponse) => {\n this.setState({\n donations,\n loaded: true\n });\n }, (error) => {\n // TODO\n });\n }\n\n\n public render() {\n const loaded = this.state?.loaded;\n const donations = this.state?.donations;\n return (\n <>\n
\n
\n

In Honor Of

\n

Honor a human or furry loved one with a tribute to them.

\n

\n Step 1: Submit your donation via one of the methods listed here
\n Step 2: Email {donateEmail} with a photo (if you'd like to submit one) and a message (ex: In memory of my beloved Fluffy, adopted in 2002)\n

\n

Your photo and message can be posted on our social media, a page of our website or we can send an individual note. You get to choose how you'd like your pet to be remembered. We know the importance of pets and how essential it is to celebrate both our pets and the humans in our lives.

\n
\n
\n \n
\n
\n
\n
\n {DpsInHonorOf.HUMAN_DONATIONS.map(donation =>
\n \n
)}\n
\n
\n
\n {!loaded && }\n {loaded && donations.map(donation =>
\n \n
)}\n
\n \n );\n }\n}\n","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport DpsApi from '../api/DpsApi';\nimport { IDpsAvailableApiResponse } from '../api/IDpsApiResponses';\nimport DpsLoading from '../common/DpsLoading';\nimport { IDpsAdoptable } from '../model/IDpsAdoptable';\nimport { IDpsAsyncState } from '../model/IDpsAsyncState';\nimport { routes } from '../routing/routes';\n\nexport interface IDpsPrintAvailableState extends IDpsAsyncState {\n dogs: IDpsAdoptable[];\n cats: IDpsAdoptable[];\n}\n\nexport default class DpsPrint extends React.PureComponent<{}, IDpsPrintAvailableState> {\n public componentDidMount() {\n DpsApi.getAvailableCompact()\n .then((animals: IDpsAvailableApiResponse) => {\n this.setState({\n dogs: animals.dogs,\n cats: animals.cats,\n loaded: true\n });\n }, (error) => {\n // TODO\n });\n }\n\n public render() {\n const dogs = this.state?.dogs;\n dogs?.sort((a, b) => a.name > b.name ? 1 : -1);\n const cats = this.state?.cats;\n cats?.sort((a, b) => a.name > b.name ? 1 : -1);\n const loaded = this.state?.loaded;\n return (\n
\n
\n

Available Dogs

\n
\n {!loaded && }\n {loaded && dogs.map(dog => \n

{dog.name} print

\n
)}\n
\n
\n

Available Cats

\n
\n {!loaded && }\n {loaded && cats.map(cat => \n

{cat.name} print

\n
)}\n
\n
\n
\n );\n }\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { routes } from \"../../routing/routes\";\n\nexport default class DpsLittermateSyndrome extends React.PureComponent {\n public render() {\n return (\n
\n
\n

Littermate Syndrome

\n

\n Why does DPS Rescue not allow families to adopt two puppies from the same litter? Here is a little bit of information about Littermate Syndrome, a well-documented issue that occurs when two or more puppies from the same litter are raised in the same household. This phenomenon has been studied extensively by dog scientists and behaviorists, and the best way to prevent it is simply to not adopt out littermates together!\n

\n\n

Behavioral Issues Associated with Littermate Syndrome

\n

\n From a young age, littermate puppies have formed a very strong bond, learning and feeding off of each other's emotions. This can lead to behavioral issues in one or both of the dogs as they grow and develop. These behaviors often include:\n

\n
    \n
  • Fear of people and other dogs
  • \n
  • Extreme separation anxiety
  • \n
  • Crate Issues
  • \n
  • Issues when encountering new situations when alone
  • \n
  • Leash Reactivity
  • \n
  • Higher incidence of fighting as compared to non-siblings being raised together
  • \n
\n

\n These issues aren't often experienced right away, but as both dogs reach maturity, they tend to intensify. Littermate syndrome can also cause aggression, even when the puppies are raised properly. Littermate syndrome causes dogs to not go through their normal developmental process and takes a huge amount of work to overcome once it is present.\n

\n

\n Interested in adopting two puppies and raising them together? DPS is open to adopting out two puppies from two different litters at the same time! For more information, please fill out an application to adopt.\n

\n
\n
\n );\n }\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { rehomeLink, routes } from \"../../routing/routes\";\n\nexport default class DpsRehome extends React.PureComponent {\n public render() {\n return (\n
\n
\n

Rehome Requests

\n

\n DPS Rescue receives many requests for rehoming and we are unable to respond to each one individually. If we have space in our program for your dog, you will receive a phone call from a member of our volunteer team. If we are able to take in your dog, please note that drop-off will be in the Bay Area.\n

\n \n\n\n
\n
\n );\n }\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { imgixDomain } from \"../../common/DpsImgixDomain\";\nimport { routes } from \"../../routing/routes\";\n\nexport default class DpsFosterResources extends React.PureComponent {\n public render() {\n return (\n
\n
\n

Foster Resources

\n

The following links are available to all DPS foster homes to support you on our foster journey! If you have other questions or need further training resources, please email your requests to foster@dpsrescue.org.

\n
    \n
  1. Tips for Getting your Foster Dog Adopted: This handout contains advice, tips and tricks for helping DPS to market your foster dog and find them the right forever home.
  2. \n
    \n
  3. Enrichment 101: We know that everyone works full time and can't spend hours and hours doing training every day. This handout has some fun ideas for keeping your foster dog mentally and physically stimulated. It's just as important to tire out their minds as their bodies, so supplement daily walks with these activities for a well-rounded and calm foster dog!
  4. \n
    \n
  5. Crate Training: Crate training is highly recommended for all dogs and puppies! Here is a step-by-step guide to teaching your foster pup to love their crate.
  6. \n
    \n
  7. Puppy Manual: Puppies can be a tremendous amount of fun, but they can also be exhausting! This manual contains many activities you can engage in with your foster puppy. Puppies are in a crucial socialization period of their lives; follow these tips to help DPS adopt out well-rounded and social puppies who will thrive in their adoptive homes!
  8. \n
    \n
  9. Tips and Tricks for Shy Dogs and Treat and Retreat
  10. \n
    \n
  11. Feeding Guidelines for Pregnant/Nursing Mama Dogs
  12. \n
    \n
  13. Guide for Fostering Pregnant Dogs and Mamas With Babies
  14. \n
    \n
  15. Puppy Containment Setup
  16. \n
    \n
  17. How to Curb Humping Behavior
  18. \n
\n
\n
\n );\n }\n}\n","import * as React from 'react';\nimport Imgix from 'react-imgix';\n\nexport default class DpsLegacy extends React.PureComponent {\n private static LEGACY_INFO_EMAIL = 'koslob@dpsrescue.org';\n\n public render() {\n return (\n
\n
\n

Legacy of Love for Our Furry Friends

\n

With every wagging tail and joyful bark, we see the heartwarming impact of your support at Doggie Protective Services. Our mission is to provide love, safety, and care to dogs in need, and with your help, we've been able to give countless animals a second chance at happiness. But there’s another way you can ensure this mission continues for generations to come: by including DPS in your legacy planning.\n

\n

Already Included Us in Your Estate Plan?

\n

Make sure your gift has the impact you were hoping for by letting us know.

\n

Making a Difference Beyond Today

\n

By adding Doggie Protective Services to your will or trust, you're building a lasting legacy of compassion and care for dogs who need it most. This simple act can provide hope, rescue, and new homes for future dogs, creating a world where every animal has a loving family.\n

\n

How You Can Help Secure Their Future

\n

Planning a legacy gift doesn’t require large assets. From bequests to beneficiary designations, every contribution—no matter the size—makes a profound difference. Gifts can include (but are not limited to): cash, life insurance, real estate, retirement assets, stocks, and securities.\n

\n

Ready to Get Started?

\n

It’s easy (and free) to create your own will at freewill.com.

\n

We’re here to guide you every step of the way. If you’d like more information or wish to discuss your options, reach out to us. Together, let’s ensure a bright future for all our four-legged friends.\n

\n
\n
\n \n
\n\n
\n );\n }\n}\n","import * as React from 'react';\nimport { IDpsAuctionDonor } from './DpsAuction';\nimport Imgix from 'react-imgix';\nimport './auction.scss'\n\nexport interface IDpsAuctionDonorProps extends IDpsAuctionDonor {\n}\n\nexport default class DpsAuctionDonor extends React.PureComponent {\n public render() {\n const { name, link, imgSrc } = this.props;\n return (\n \n );\n }\n}\n","import { IDpsAuctionDonor } from \"./DpsAuction\";\n\nexport const GOLD_DONORS: IDpsAuctionDonor[] = [\n {\n name: 'Grand Bay Hotel SF',\n link: 'https://grandbayhotelsf.com/',\n imgSrc: 'grandbay.webp'\n }, {\n name: 'Kristina Hagan',\n link: 'https://www.kristinahaganclosetvalet.com/',\n imgSrc: 'kristina-hagan.png'\n }, {\n name: 'Diamond',\n link: 'https://diamondpetcompany.com/',\n imgSrc: 'diamond.webp'\n }, {\n name: 'Wishes and Wows',\n link: 'https://www.wishesandwows.com/',\n imgSrc: 'wishes-wows.avif'\n }, {\n name: 'Doggie Lawn',\n link: 'https://doggielawn.com/',\n imgSrc: 'doggie-lawn.webp'\n }\n];\n\n\nexport const DONORS: IDpsAuctionDonor[] = [\n {\n name: 'US Ghost Adventures',\n link: 'https://usghostadventures.com/',\n imgSrc: 'usga.jpeg'\n }, {\n name: 'Malibu Wine Hikes',\n link: 'https://www.malibuwinehikes.com/',\n imgSrc: 'malibu-wine.jpeg'\n }, {\n name: 'Hang Smart',\n link: 'https://hangsmart.com/',\n imgSrc: 'hang-smart.webp?bg=black'\n }, {\n name: 'The Huntington',\n link: 'https://huntington.org/',\n imgSrc: 'huntington.svg'\n }, {\n name: 'Aqui',\n link: 'https://www.aquicalmex.com/',\n imgSrc: 'aqui.png'\n }, {\n name: 'Winchester Mystery House',\n link: 'https://winchestermysteryhouse.com/',\n imgSrc: 'winchester.webp'\n }, {\n name: 'Santa Barbara Zoo',\n link: 'https://www.sbzoo.org/',\n imgSrc: 'sb-zoo.webp'\n }, {\n name: 'The Walt Disney Family Museum',\n link: 'https://www.waltdisney.org/',\n imgSrc: 'wdfm.svg'\n }, {\n name: 'Oakland Zoo',\n link: 'https://www.oaklandzoo.org/',\n imgSrc: 'oakland-zoo.svg'\n }, {\n name: 'The Escape Game',\n link: 'https://theescapegame.com/',\n imgSrc: 'escape-game.svg'\n }, {\n name: 'Dream Inn',\n link: 'https://www.dreaminnsantacruz.com/',\n imgSrc: 'dream-inn.png?bg=black'\n }, {\n name: 'Gourmet Gift Baskets',\n link: 'https://www.gourmetgiftbaskets.com/',\n imgSrc: 'gourmet-gift-baskets.webp'\n }, {\n name: '100% Pure',\n link: 'https://www.100percentpure.com/index.html',\n imgSrc: '100percent-pure.jpg'\n }, {\n name: 'Dolphin Bay',\n link: 'https://www.thedolphinbay.com/',\n imgSrc: 'dolphin-bay.pdf'\n }, {\n name: 'Wushu Central',\n link: 'https://wushucentral.com/',\n imgSrc: 'wushu-central.png'\n }, {\n name: 'Wilderdog',\n link: 'https://www.wilderdog.com/',\n imgSrc: 'wilderdog.webp'\n }, {\n name: 'Children\\'s Musem of Sonoma County',\n link: 'https://www.cmosc.org/',\n imgSrc: 'cmosc.png?bg=black'\n }, {\n name: 'Concannon Vineyard',\n link: 'https://www.concannonvineyard.com/',\n imgSrc: 'concannon.svg'\n }, {\n name: 'Erik\\'s Delicafé',\n link: 'https://eriksdelicafe.com/',\n imgSrc: 'eriks.png'\n }, {\n name: 'Fieldwork Brewing',\n link: 'https://fieldworkbrewing.com/',\n imgSrc: 'fieldwork.svg'\n }, {\n name: 'House Family Vineyards',\n link: 'https://www.housefamilyvineyards.com/',\n imgSrc: 'housefamily.png?bg=black'\n }, {\n name: 'Nylabone',\n link: 'https://www.nylabone.com/about-us/nylabone-cares',\n imgSrc: 'nylabone.png'\n }, {\n name: 'Barry\\'s Bootcamp Palo Alto',\n link: 'https://www.barrys.com/studio/palo-alto/',\n imgSrc: 'barrys.svg?bg=black'\n }, {\n name: 'Charlee Bear',\n link: 'https://charleebear.com/',\n imgSrc: 'charlee-bear.jpg'\n }, {\n name: 'Michael R. Burke',\n link: 'https://michaelrburke.com/',\n imgSrc: 'michael-burke.png'\n }, {\n name: 'Turtle Bay Exploration Park',\n link: 'https://www.turtlebay.org/',\n imgSrc: 'turtle-bay.png'\n }, {\n name: 'Ocean Honda of Burlingame',\n link: 'https://www.oceanhondaburlingame.com/',\n imgSrc: 'ocean-honda.jpg'\n }, {\n name: 'American Conservatory Theater',\n link: 'https://www.act-sf.org/',\n imgSrc: 'act.jpg'\n }, {\n name: 'Wine & Design',\n link: 'https://www.wineanddesign.com/losaltos-ca/',\n imgSrc: 'wine-and-design.png?bg=black'\n }, {\n name: 'Allele Tax Advisory',\n link: 'https://www.alleletax.com/',\n imgSrc: 'allele-tax.png'\n }, {\n name: 'Aloft San Francisco Airport',\n link: 'https://www.marriott.com/en-us/hotels/sfoal-aloft-san-francisco-airport/overview/',\n imgSrc: 'aloft.avif'\n }, {\n name: 'ArtCircle Studio',\n link: 'https://www1.artcircle.studio/',\n imgSrc: 'artcircle.jpg'\n }, {\n name: 'Beat The Bomb',\n link: 'https://www.beatthebomb.com/',\n imgSrc: 'beat-the-bomb.svg?bg=black'\n }, {\n name: 'Crowne Plaza Foster City',\n link: 'https://www.crowneplaza.com/hotels/us/en/foster-city/sfofc/hoteldetail',\n imgSrc: 'crowne-plaza.avif'\n }, {\n name: 'Total Wine & More',\n link: 'https://www.totalwine.com/',\n imgSrc: 'total-wine.png'\n }, {\n name: 'The Haunt',\n link: 'https://thehauntghosttours.com/',\n imgSrc: 'the-haunt.webp?bg=black'\n }, {\n name: 'Joy Steuerwald',\n link: 'joystewy.com',\n imgSrc: 'joy-stewy.png'\n }, {\n name: 'Rocko\\'s Ice Cream Tacos',\n link: 'https://www.rockosicecreamtacos.com/',\n imgSrc: 'rockos.webp'\n }, {\n name: 'West Wind Drive-In',\n link: 'https://www.westwinddi.com/',\n imgSrc: 'west-wind.png'\n }, {\n name: 'GasKnight',\n link: 'https://gasknight.com/',\n imgSrc: 'gas-knight.avif?bg=black'\n }, {\n name: 'Topgolf San Jose',\n link: 'https://topgolf.com/us/san-jose/',\n imgSrc: 'topgolf.png'\n }, {\n name: 'Laura Zarrin',\n link: 'https://www.etsy.com/se-en/shop/LauraZarrin',\n imgSrc: 'laura-zarrin.webp'\n }, {\n name: 'AC Hotel Santa Clara',\n link: 'https://www.marriott.com/en-us/hotels/sjccl-ac-hotel-san-jose-santa-clara/overview/',\n imgSrc: 'ac-hotels.webp'\n }, {\n name: 'AC Hotel Sunnyvale',\n link: 'https://www.marriott.com/en-us/hotels/sjcan-ac-hotel-sunnyvale-cupertino/overview/',\n imgSrc: 'ac-hotels.webp'\n }, {\n name: 'Jaime Breeze',\n link: 'https://jaimebreeze.com/',\n imgSrc: 'jaime-breeze.png'\n }, {\n name: 'Theatre Works',\n link: 'https://theatreworks.org/',\n imgSrc: 'theatre-works.png?bg=black'\n }, {\n name: 'Thousand Skies',\n link: 'https://thousandskies.com/',\n imgSrc: 'thousand-skies.avif'\n }, {\n name: 'Westin San Francisco Airport',\n link: 'https://www.marriott.com/en-us/hotels/sfowi-the-westin-san-francisco-airport/overview/',\n imgSrc: 'westin.avif'\n }, {\n name: 'Alcatraz East',\n link: 'https://www.alcatrazeast.com/',\n imgSrc: 'alcatraz-east.png'\n }, {\n name: 'CuriOdyssey',\n link: 'https://curiodyssey.org/',\n imgSrc: 'curiodyssey.jpg'\n }, {\n name: 'San Jose Giants',\n link: 'https://www.milb.com/san-jose',\n imgSrc: 'sj-giants.svg'\n }, {\n name: 'Blackhawk Museum',\n link: 'https://blackhawkmuseum.org/',\n imgSrc: 'blackhawk.png?bg=black'\n }, {\n name: 'Peaceful Pathways',\n link: 'https://peacefulpathways.com/',\n imgSrc: 'peaceful-pathways.png'\n }, {\n name: 'Skunk Train',\n link: 'https://www.skunktrain.com/',\n imgSrc: 'skunk-train.png'\n }, {\n name: 'My Pet Peed',\n link: 'https://www.mypetpeed.com/',\n imgSrc: 'my-pet-peed.webp?bg=20b1d6'\n }, {\n name: 'USS Hornet Museum',\n link: 'https://uss-hornet.org/',\n imgSrc: 'hornet.png'\n }, {\n name: 'Steelers',\n link: 'https://www.steelers.com/',\n imgSrc: 'p-steelers.png'\n }, {\n name: 'Pet Food Express',\n link: 'https://www.petfood.express/',\n imgSrc: 'pfe.webp'\n }, {\n name: 'Farm To Pet',\n link: 'https://farmtopettreats.com/',\n imgSrc: 'farm-to-pet.avif'\n }, {\n name: 'Sibby\\'s Cupcakery',\n link: 'https://sibbyscupcakery.com/',\n imgSrc: 'sibbys.svg'\n }, {\n name: 'Good Vibes Only',\n link: 'https://www.poolsidevacationrentals.com/vacation-rental-home.asp?PageDataID=193054',\n imgSrc: 'good-vibes.webp'\n }, {\n name: 'Sports Basement',\n link: 'https://shop.sportsbasement.com/',\n imgSrc: 'sports-basement.svg'\n }, {\n name: 'The Plex',\n link: 'https://www.gotoplex.com/',\n imgSrc: 'the-plex.png'\n }, {\n name: 'Nuance Jewelers',\n link: 'http://nuancejewelers.com/',\n imgSrc: 'nuance.png'\n }, {\n name: 'Original Grain',\n link: 'https://www.originalgrain.com/',\n imgSrc: 'original-grain.webp'\n }, {\n name: 'The Pawington',\n link: 'https://thepawington.com/',\n imgSrc: 'pawington.png'\n }, {\n name: 'Wondercide',\n link: 'https://www.wondercide.com/',\n imgSrc: 'wondercide.avif'\n }, {\n name: 'San Jose Brew Bike',\n link: 'https://www.sanjosebrewbike.com/',\n imgSrc: 'sj-brew-bike.png'\n }, {\n name: 'The Clue Collective',\n link: 'https://www.thecluecollective.com/',\n imgSrc: 'clue-collective.gif'\n }, {\n name: 'Inspired Edge Coaching',\n link: 'https://inspirededgecoaching.com/',\n imgSrc: 'inspired-edge.png'\n }, {\n name: 'Discovery Whale Watch',\n link: 'https://discoverywhalewatch.com/',\n imgSrc: 'discovery-ww.png'\n }, {\n name: 'MOPOP',\n link: 'https://www.mopop.org/',\n imgSrc: 'mopop.png'\n }, {\n name: 'SF Giants',\n link: 'https://www.mlb.com/giants',\n imgSrc: 'sf-giants.svg'\n }, {\n name: 'P.L.A.Y.',\n link: 'https://www.petplay.com/',\n imgSrc: 'pet-play.webp'\n }, {\n name: 'The Foggy Dog',\n link: 'https://www.thefoggydog.com/',\n imgSrc: 'foggy-dog.avif'\n }, {\n name: 'Dandylion',\n link: 'https://www.dandylionworld.com/',\n imgSrc: 'dandylion.webp'\n }, {\n name: 'K1 Speed',\n link: 'https://www.k1speed.com/',\n imgSrc: 'k1.webp'\n }, {\n name: 'Presidio Bowl',\n link: 'https://www.presidiobowl.com/',\n imgSrc: 'presidio-bowl.png'\n }, {\n name: 'Soda Springs',\n link: 'https://www.skisodasprings.com/',\n imgSrc: 'soda-springs.jpeg'\n }, {\n name: 'Small Pet Select',\n link: 'https://shop.smallpetselect.com/',\n imgSrc: 'small-pet-select.webp'\n }, {\n name: 'C&M Art Studio',\n link: 'https://www.candmphotography.com/',\n imgSrc: 'cm-art-studio.png'\n }, {\n name: 'Livermore Wine Trolley',\n link: 'https://www.livermorewinetrolley.com/',\n imgSrc: 'livermore-wine-trolley.png'\n }, {\n name: 'MUTTS',\n link: 'https://mutts.com/',\n imgSrc: 'mutts.avif'\n }, {\n name: 'Weasy',\n link: 'https://weasypet.com/',\n imgSrc: 'weasy.avif'\n }, {\n name: 'Cal Expo State Fair',\n link: 'https://calexpostatefair.com/',\n imgSrc: 'cal-expo.svg'\n }, {\n name: 'Cal Bears',\n link: 'https://calbears.com/sports/2022/7/11/cal-golden-bears-football-tickets.aspx',\n imgSrc: 'cal-bears.png?bg=#041e42'\n }, {\n name: 'Hillbarn Theatre',\n link: 'https://www.hillbarntheatre.org/',\n imgSrc: 'hillbarn.png?bg=black'\n }, {\n name: 'Blissful Pets',\n link: 'https://theblissfulpets.com/',\n imgSrc: 'blissfull.avif?bg=black'\n }, {\n name: 'Gamelandia',\n link: 'https://gamelandia.fun/',\n imgSrc: 'gamelandia.avif'\n }, {\n name: 'Spina Farms Pumpkin Patch',\n link: 'https://spinafarmspumpkinpatch.com/',\n imgSrc: 'spina-farms.png'\n }/*, {\n name: 'The Escape Game San Jose',\n link: 'https://theescapegame.com/san-jose/',\n imgSrc: 'escape-sj.svg'\n }*/\n /*\n , {\n name: '',\n link: '',\n imgSrc: ''\n }\n */\n];\n","import * as React from 'react';\nimport DpsAuctionDonor from './DpsAuctionDonor';\nimport { DONORS, GOLD_DONORS } from './donors';\n\nexport interface IDpsAuctionDonor {\n name: string;\n link: string;\n imgSrc?: string;\n}\n\nexport default class DpsAuction extends React.PureComponent {\n private static AUCTION_INFO_EMAIL = 'koslob@dpsrescue.org';\n\n public render() {\n return (\n
\n
\n

Support the DPS Rescue Auction and Save Lives!

\n

\n Join us in person at the Grand Bay Hotel (223 Twin Dolphin Dr, Redwood City) on March 2 to get a sneak peek at all the amazing items that will be available on our online auction. We will have light snacks and puppies to play with. Register to join here.\n

\n
\n

\n Join Doggie Protective Services (DPS Rescue) in making a difference this spring! Our annual fundraiser and online auction will take place from March 8th to March 16th, 2025.\n All proceeds will go directly towards the medical care and general well-being of the dogs and cats we rescue—helping save lives, one furry friend at a time.\n

\n

About DPS Rescue

\n

\n DPS Rescue is a 501(c)(3) non-profit, volunteer-driven animal rescue organization based in the Bay Area, California.\n Since our founding in 2001, we have helped over 19,000 dogs and cats find their forever homes.\n We rescue animals of all breeds, ages, and sizes, ensuring every one of them gets a chance at a better life.\n

\n\n

Why Donate to the Auction?

\n

Your generous donation to our auction will directly support:

\n
    \n
  • Emergency medical care for injured and sick animals
  • \n
  • Daily care and shelter for rescued pets
  • \n
  • Transporting animals from high-risk environments to safety
  • \n
  • Finding loving, forever homes for our rescues
  • \n
\n

\n Your contributions are tax-deductible (Tax ID: 91-2164578) and will make a lasting impact on the lives of animals in need.\n

\n

Recognizing Our Generous Donors

\n

\n We are deeply grateful to the businesses, individuals, and organizations who make this event possible.\n

\n

\n

Gold Donors:

\n

\n
\n {GOLD_DONORS.map(donor =>\n \n )}\n
\n

\n

All Donors:

\n

\n
\n {DONORS.map(donor =>\n \n )}\n
\n

\n Want to see your name or business listed here? It’s not too late to contribute! Reach out today to make a difference.\n

\n

How You Can Help

\n
    \n
  • Donate an Item or Experience: Gift cards, products, and unique experiences are highly appreciated.
  • \n
  • Sponsor the Event: Become a key supporter and help us reach even more animals in need.
  • \n
  • Bid and Share: Mark your calendar for March 8th to 16th and spread the word about our auction!
  • \n
\n

Contact Us

\n

For donations or questions, contact:

\n \n

\n Thank you for being a part of the DPS Rescue community.\n Together, we can give every dog and cat a second chance at life.\n

\n
\n
\n );\n }\n}\n","import { Outlet } from \"react-router-dom\";\nimport DpsAdoptApplication from \"../adopt/dog-application/DpsAdoptApplication\";\nimport DpsAdoptAvailable from \"../adopt/available/DpsAdoptAvailable\";\nimport DpsCatApplication from \"../adopt/cat-application/DpsCatApplication\";\nimport DpsStickyDogs from \"../adopt/sticky/DpsStickyDogs\";\nimport DpsHome from \"../home/DpsHome\";\nimport { IDpsNavRoute, IDpsRoute } from \"../model/IDpsRoutes\";\nimport DpsVolunteerFaq from \"../volunteer/DpsVolunteerFaq\";\nimport DpsMeetVolunteers from \"../volunteer/meet/DpsMeetVolunteers\";\nimport DpsFosterFaq from \"../foster/DpsFosterFaq\";\nimport DpsMeetFosters from \"../foster/meet/DpsMeetFosters\";\nimport DpsDonate from \"../donate/donate/DpsDonate\";\nimport DpsIcu from \"../donate/icu/DpsIcu\";\nimport DpsSuccessStories from \"../success-stories/DpsSuccessStories\";\nimport DpsAboutUs from \"../about/about-us/DpsAboutUs\";\nimport DpsContact from \"../about/contact/DpsContact\";\nimport DpsAboutFaq from \"../about/DpsAboutFaq\";\nimport DpsPetDetail from \"../adopt/pet-detail/DpsPetDetail\";\nimport DpsRedirect from \"./DpsRedirect\";\nimport DpsSuccessStory from \"../success-stories/success-story/DpsSuccessStory\";\nimport DpsSponsor from \"../donate/sponsor/DpsSponsor\";\nimport DpsEmployerMatching from \"../donate/employer-matching/DpsEmployerMatching\";\nimport DpsInHonorOf from \"../donate/in-honor-of/DpsInHonorOf\";\nimport DpsPrint from \"../print/DpsPrint\";\nimport DpsLittermateSyndrome from \"../adopt/littermate-syndrome/DpsLittermateSyndrome\";\nimport DpsRehome from \"../about/rehome/DpsRehome\";\nimport DpsFosterResources from \"../foster/resources/DpsFosterResources\";\nimport DpsLegacy from \"../donate/legacy/DpsLegacy\";\nimport DpsAuction from \"../donate/auction/DpsAuction\";\n\nexport const rehomeLink = \"https://docs.google.com/forms/d/e/1FAIpQLScUhpAEbOvRSPjF5cMC_owfYjx8-nyADQMViFX4omFZHHYlgg/viewform\";\n\nexport function hasSubnavChildren(route: IDpsRoute): boolean {\n if (!route.children) { return false }\n return Object.keys(route.children)\n .map(key => route.children![key])\n .filter(child => child.inNav).length > 0;\n}\n\nexport function convertToNbsp(name: string): string {\n return name.replace(/\\s/g, ' ');\n}\n\n/**\n * Not all routes belong in the nav and its submenus. Also, it is easier to iterate through child\n * routes if they are in an ordered collection like an array. This solves both of these problems.\n * @param routes (see below) All routes in the application\n * @returns Routes that should be part of the navbar and its submenus\n */\nfunction createNavRoutes(routes: { [key: string]: IDpsRoute }): IDpsNavRoute[] {\n return Object.keys(routes)\n .map(key => routes[key])\n .filter(route => route.inNav)\n .sort((a, b) => a.navOrder! - b.navOrder!) // ! asserts non-null/undefined\n .map((route) => {\n const transformed: IDpsNavRoute = {\n name: route.name,\n element: route.element,\n path: route.path,\n };\n if (hasSubnavChildren(route)) {\n transformed.children = createNavRoutes(route.children!)\n }\n return transformed;\n });\n}\n\n/**\n * This is a collection of all routes in the application. They are structured somewhat awkwardly with children\n * pointing to key-value pairs instead of an array in order to make the paths reusable when referenced elsewhere\n * in the application, e.g. in Links.\n * When constructing the nav, it would make more sense to encode the child routes in arrays so that order is preserved,\n * so in order to avoid duplicating information, we encode order explicitly on the route objects so that they can be\n * sorted later when constructing the navbar.\n * Some legacy routes are included here but commented out. It's unlikely they will return.\n */\nexport const routes: { [key: string]: IDpsRoute } = {\n home: {\n name: 'Home',\n path: '/',\n element: ,\n inNav: true,\n navOrder: 0\n },\n print: {\n name: 'Print',\n path: 'print',\n element: ,\n inNav: false,\n hideDonate: true\n },\n adopt: {\n name: 'Adopt',\n path: 'adopt',\n element: ,\n inNav: true,\n navOrder: 1,\n children: {\n available: {\n name: 'Available Animals',\n path: 'available',\n element: ,\n inNav: true,\n navOrder: 0\n },\n dogApp: {\n name: 'Application',\n path: 'dog-application',\n element: ,\n inNav: true,\n navOrder: 1\n },\n catApp: {\n name: 'Cat Application',\n path: 'cat-application',\n element: ,\n inNav: true,\n navOrder: 2\n },\n sticky: {\n name: 'Sticky Dogs',\n path: 'sticky',\n element: ,\n inNav: true,\n navOrder: 3\n },\n petDetail: {\n name: 'Pet Details',\n path: 'pet-detail',\n element: ,\n inNav: false\n },\n application: {\n name: 'Application redirect',\n path: 'application',\n element: ,\n inNav: false\n },\n catApplication: {\n name: 'Cat application redirect',\n path: 'catapp',\n element: ,\n inNav: false\n },\n littermateSyndrome: {\n name: 'Littermate Syndrome',\n path: 'littermate-syndrome',\n element: ,\n inNav: true,\n navOrder: 5\n }\n }\n },\n volunteer: {\n name: 'Volunteer',\n path: 'volunteer',\n element: ,\n inNav: true,\n navOrder: 2,\n children: {\n faq: {\n name: 'FAQ',\n path: 'faq',\n element: ,\n inNav: true,\n navOrder: 0\n },\n meet: {\n name: 'Meet Our Volunteers',\n path: 'meet-our-volunteers',\n element: ,\n inNav: true,\n navOrder: 0\n },\n }\n },\n foster: {\n name: 'Foster',\n path: 'foster',\n element: ,\n inNav: true,\n navOrder: 3,\n children: {\n faq: {\n name: 'FAQ',\n path: 'faq',\n element: ,\n inNav: true,\n navOrder: 0\n },\n fosterApplication: {\n name: 'Foster Application',\n path: 'application',\n element: ,\n inNav: true,\n navOrder: 1\n },\n meet: {\n name: 'Meet Our Fosters',\n path: 'meet-our-fosters',\n element: ,\n inNav: true,\n navOrder: 2\n },\n resources: {\n name: 'Foster Resources',\n path: 'resources',\n element: ,\n inNav: true,\n navOrder: 2\n }\n }\n },\n donate: {\n name: 'Donate',\n path: 'donate',\n element: ,\n inNav: true,\n navOrder: 4,\n hideDonate: true,\n children: {\n donate: {\n name: 'Donate',\n path: 'donate',\n element: ,\n inNav: true,\n navOrder: 0\n },\n icu: {\n name: 'Medical and Hospice Dogs',\n path: 'medical-dogs',\n element: ,\n inNav: true,\n navOrder: 1\n },\n sponsor: {\n name: 'Sponsor a Dog',\n path: 'sponsor',\n element: ,\n inNav: true,\n navOrder: 2\n },\n employerMatching: {\n name: 'Employer Matching',\n path: 'employer-matching',\n element: ,\n inNav: true,\n navOrder: 3\n },\n inHonorOf: {\n name: 'In Honor Of',\n path: 'in-honor-of',\n element: ,\n inNav: true,\n navOrder: 4\n },\n legacy: {\n name: 'Wills and Living Trusts',\n path: 'legacy',\n element: ,\n inNav: true,\n navOrder: 5\n },\n auction: {\n name: 'Auction',\n path: 'auction',\n element: ,\n inNav: true,\n navOrder: 6\n },\n }\n },\n successStories: {\n name: 'Success Stories',\n path: 'success-stories',\n element: ,\n inNav: true,\n navOrder: 5,\n children: {\n successStory: {\n name: 'Success Story',\n path: 'success-story',\n element: ,\n inNav: false\n }\n }\n },\n // train: {\n // name: 'Train',\n // route: '/train/'\n // },\n about: {\n name: 'About',\n path: 'about',\n element: ,\n inNav: true,\n navOrder: 6,\n children: {\n aboutUs: {\n name: 'About Us',\n path: 'about-us',\n element: ,\n inNav: true,\n navOrder: 0\n },\n contact: {\n name: 'Contact',\n path: 'contact',\n element: ,\n inNav: true,\n navOrder: 1\n },\n faq: {\n name: 'FAQ',\n path: 'faq',\n element: ,\n inNav: true,\n navOrder: 2\n },\n recap: {\n name: '2022 Recap',\n path: '2022-recap',\n element: ,\n inNav: true,\n navOrder: 3\n },\n rehome: {\n name: 'Rehome',\n path: 'rehome',\n element: ,\n inNav: true,\n navOrder: 4\n }\n }\n }\n};\nroutes['rehome'] = {\n name: 'Rehome',\n path: 'rehome',\n element: ,\n inNav: false,\n navOrder: 0\n};\n\nconst navRoutes = createNavRoutes(routes);\nexport default navRoutes;\n","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport { routes } from '../routing/routes';\nimport Imgix from 'react-imgix';\nimport { IDpsModalContent } from './IDpsModalContent';\n\ninterface IDpsDonateModalContentProps {\n closeModal: any;\n content: IDpsModalContent;\n}\n\nexport default class DpsDonateModalContent extends React.PureComponent {\n private static DEFAULT_HREF = `${routes.donate.path}/${routes.donate.children!.donate.path}`;\n\n public render() {\n const { heading, bodyText, imgUrl, buttonText, href } = this.props.content;\n\n return (\n <>\n
\n

\n {heading}\n

\n this.props.closeModal()}>X\n
\n
\n
\n \n
\n

{bodyText}

\n {buttonText && href && this.props.closeModal()} className=\"hero-button col-xs-12\">{buttonText}}\n {buttonText && !href && this.props.closeModal()} to={DpsDonateModalContent.DEFAULT_HREF} className=\"hero-button col-xs-12\">{buttonText}}\n
\n \n\n );\n }\n}\n","import * as React from 'react';\nimport { useState } from 'react';\nimport MicroModal from 'react-micro-modal';\nimport { useLocation } from 'react-router-dom';\nimport DpsApi from '../api/DpsApi';\nimport { routes } from '../routing/routes';\nimport DpsDonateModalContent from './DpsDonateModalContent';\nimport { IDpsModalContent } from './IDpsModalContent';\n\nexport function DpsDonateModal() {\n const location = useLocation();\n // don't show the donate modal if they open the page on a donate route\n // currently only searches within top-level routes\n const hideDonateRoutes = Object.keys(routes).map(key => routes[key]).filter(route => route.hideDonate);\n const hideDonatePaths = hideDonateRoutes.map(route => route.path);\n const isHiddenDonateRoute = hideDonatePaths.some(path => location.pathname.indexOf(path) > -1);\n const modalState = useState(false);\n const modalOpen: boolean = modalState[0];\n const setModalOpen = modalState[1];\n\n const modalContentState = useState();\n const modalContent: IDpsModalContent = modalContentState[0] as IDpsModalContent;\n const setModalContent = modalContentState[1];\n\n React.useEffect(() => {\n !isHiddenDonateRoute && !modalContent && DpsApi.getModalContent()\n .then(content => {\n if (shouldDisableModal(content)) { return } // hack to make it easier to disable modal from spreadsheet\n !modalContent && setModalContent(content);\n setTimeout(() => setModalOpen(true), 2000);\n })\n .catch(err => console.log(err));\n }, [setModalOpen, setModalContent, modalContent, isHiddenDonateRoute]);\n\n return (\n <>\n {!isHiddenDonateRoute && setModalOpen(false)}>\n {(close) => }\n }\n \n );\n}\n\nfunction shouldDisableModal(content: IDpsModalContent) {\n return content.heading === 'disable';\n}\n","import React from \"react\";\n\nclass DpsFooter extends React.Component {\n render() {\n return (\n
\n
\n

Copyright {new Date().getUTCFullYear()} Doggie Protective Services | 809 San Antonio Road Suite #8 • Palo Alto, CA 94303

\n
\n );\n }\n}\n\nexport default DpsFooter;\n","import React, { useState } from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { IDpsNavRoute } from '../model/IDpsRoutes';\n\nexport interface IDpsHamburgerChildMenuProps {\n parent: IDpsNavRoute;\n hamburgerCloser: Function;\n}\n\nexport default function DpsHamburgerChildMenu(props: IDpsHamburgerChildMenuProps) {\n const [dropdownOpen, setDropdown] = useState(false);\n const parent = props.parent;\n const hamburgerCloser = props.hamburgerCloser;\n\n const closeMenus = () => {\n setDropdown(false);\n hamburgerCloser();\n };\n\n return (\n <>\n setDropdown((prev) => !prev)}>\n {parent.name}\n \n
    \n {parent.children!.map((child: IDpsNavRoute) => {\n return
  • \n { closeMenus() }}>{child.name}\n
  • \n })}\n
\n \n );\n}\n","import * as React from 'react';\nimport { slide as Menu } from 'react-burger-menu';\nimport navRoutes from \"../routing/routes\";\nimport './hamburger.scss';\nimport DpsHamburgerChildMenu from './DpsHamburgerChildMenu';\nimport { NavLink } from 'react-router-dom';\nimport DpsSocials from '../header/DpsSocials';\n\nexport interface IDpsHamburgerMenuState {\n menuOpen: boolean;\n}\n\nexport default class DpsHamburgerMenu extends React.PureComponent<{}, IDpsHamburgerMenuState> {\n private static hiddenWidths = 'hidden-sm hidden-md hidden-lg';\n constructor(props: any) {\n super(props)\n this.state = {\n menuOpen: false\n }\n }\n\n handleStateChange(state: { isOpen: boolean }) {\n this.setState({ menuOpen: state.isOpen })\n }\n\n closeMenu() {\n this.setState({ menuOpen: false })\n }\n\n public render() {\n return (\n this.handleStateChange(state)}\n burgerButtonClassName={DpsHamburgerMenu.hiddenWidths}>\n {navRoutes.map((route) => {\n if (route.children?.length) {\n return \n }\n return this.closeMenu()} key={route.name}>{route.name}\n })}\n \n \n );\n }\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport Imgix from 'react-imgix';\nimport DpsHamburgerMenu from '../hamburger/DpsHamburgerMenu';\nimport DpsSocials from \"./DpsSocials\";\n\nclass DpsHero extends React.Component {\n render() {\n return (\n
\n \n \n \n \n \n \n
\n

Doggie Protective Services

\n
\n \n \n
\n );\n }\n}\n\nexport default DpsHero;\n","import * as React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { IDpsNavRoute } from '../model/IDpsRoutes';\n\nexport interface IDpsChildRouteMenuProps {\n children: IDpsNavRoute[];\n parent: IDpsNavRoute;\n}\n\nexport default class DpsChildRouteMenu extends React.Component {\n public render() {\n return (\n
    \n {this.props.children.map((child: IDpsNavRoute) => {\n return
  • \n {child.name}\n
  • \n })}\n
\n );\n }\n}\n","import React from \"react\";\nimport DpsChildRouteMenu from \"./DpsChildRouteMenu\";\nimport { IDpsNavRoute } from \"../model/IDpsRoutes\";\nimport { NavLink } from \"react-router-dom\";\nimport { convertToNbsp } from \"../routing/routes\";\n\ninterface DpsNavTopRouteProps {\n route: IDpsNavRoute\n}\n\nclass DpsNavTopRoute extends React.Component {\n render() {\n const route: IDpsNavRoute = this.props.route;\n return (\n
\n \n {route.children?.length && }\n
\n );\n }\n}\n\nexport default DpsNavTopRoute;","import React from \"react\";\nimport DpsNavTopRoute from \"./DpsNavTopRoute\";\nimport { IDpsNavRoute } from \"../model/IDpsRoutes\";\n\ninterface IDpsNavProps {\n routes: IDpsNavRoute[];\n}\n\nclass DpsNav extends React.Component {\n render() {\n return (\n \n );\n }\n}\n\nexport default DpsNav;","import React from \"react\";\nimport navRoutes from \"../routing/routes\";\nimport DpsHero from \"./DpsHero\";\nimport DpsNav from \"./DpsNav\";\n\nclass DpsHeader extends React.Component {\n render() {\n return (\n
\n \n \n
\n );\n }\n}\n\nexport default DpsHeader;","import * as React from 'react';\nimport { Route, Routes } from 'react-router-dom';\nimport { IDpsRoute } from '../model/IDpsRoutes';\nimport { hasSubnavChildren, routes } from './routes';\n\n/**\n * In addition to routes that we explicitly create, we also set up a catchall not found route and\n * index routes for any \"abstract\" parent routes that would be empty without a child route to display.\n */\nexport default class DpsRoutes extends React.Component {\n private static getFirstChild(parent: IDpsRoute): IDpsRoute {\n const child = Object.keys(parent.children!).map(key => parent.children![key])\n .find(child => child.navOrder === 0);\n return child!;\n }\n\n public render() {\n return (\n \n {Object.keys(routes).map(key => routes[key])\n .map(route => \n {route.children &&\n Object.keys(route.children).map(key => route.children![key]).map((child) => )\n }\n {route.children && hasSubnavChildren(route) &&\n \n }\n )}\n Not found. Use the header to navigate to another page.} />\n \n );\n }\n}\n","import 'bootstrap-grid-only/bootstrap.css';\nimport React from 'react';\nimport { ImgixProvider } from 'react-imgix';\nimport 'react-micro-modal/dist/index.css';\nimport { Outlet } from 'react-router-dom';\nimport { imgixDomain } from './common/DpsImgixDomain';\nimport { DpsDonateModal } from './donate-modal/DpsDonateModal';\nimport './DpsApp.scss';\nimport DpsFooter from './DpsFooter';\nimport DpsHeader from './header/DpsHeader';\nimport DpsRoutes from './routing/DpsRoutes';\n\nfunction DpsApp() {\n return (\n
\n \n \n \n \n \n \n \n
\n );\n}\n\nexport default DpsApp;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\n/**\n * Make Links scroll to top of page on click.\n * https://v5.reactrouter.com/web/guides/scroll-restoration\n */\nexport default function ScrollToTop() {\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n return null;\n}","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport DpsApp from './DpsApp';\nimport reportWebVitals from './reportWebVitals';\nimport { BrowserRouter } from 'react-router-dom';\nimport ScrollToTop from './routing/ScrollToTop';\nimport ScrollToAnchor from './routing/ScrollToAnchor';\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}