Capture Your Unforgettable Memories Now
Quote Request 843-735-2275
Need Professional Photography Services in The Charleston Area?
We've all heard the expression "a picture is worth a thousand words". And photos really are a special way to help tell the story of our lives - who we are and what's important to us.
View My Work
And, of course, some images speak to us more strongly than others. More often than not we love a photo not so much because it shows us how we look but because it captures a very human element that is hard to express in words an authentic connection with those we love or with ourselves and how we show up or want to be seen in the world.
Whether you're looking to capture someone's attention with a professional headshot or want to commemorate the beautiful connection with your partner or family, I can help.
My name is Adam Chandler, and as a professional photographer in Charleston, SC. I truly find joy and fulfillment in the work I do. I love the adventure of photography and I continually immerse myself in learning and exploring how to improve my craft which includes learning new ways to connect with and capture my subjects. I truly understand that, for many people (if not most), even the idea of having your picture taken can cause a good bit of discomfort and anxiety. That's why I place so much importance on putting my subjects at ease while also really listening to any concerns or wants they have for their session.
I draw upon my technical knowledge of photography, my ability to connect with people, and my creativity to produce beautifully memorable photos for my clients. I believe that my unique creative vision and many years of experience combined with the way I strive to give my clients the most enjoyable experience possible sets me apart from some of the other great photographers in Charleston.
Service Areas
- Family Photographer Near Me Bluffton, SC
- Family Photographer Near Me Charleston, SC
- Family Photographer Near Me Columbia, SC
- Family Photographer Near Me Daniel Island, SC
- Family Photographer Near Me Folly Beach, SC
Read More
Testimonials
Best Family Photographer for scott flora
★★★★★
Adam did a GREAT JOB taking photos of our family in Kiawah Island. He asks you proactively what is important to you and then recommends the best time, setting and lighting for your pictures. Pictures with small children can be unpredictable and he was excellent at recognizing when we needed to take necessary breaks and let children be children. Children at play is a wonderful thing to capture on film and Adam has the innate ability to recognize that perfect moment. I would highly recommend Adam for his attention to detail and ability to capture just the right moments in his photography.
scott flora
Portrait Photographer for Annie Demenik
★★★★★
We booked Adam for our family photos in Kiawah during our vacation and not only was he able to reschedule last minute for us, but he was amazing to work with! Having a big family it can be tough getting everyone to cooperate but Adam did so well with organizing everyone and got all the right shots. Book him! You won’t regret it
Annie Demenik
Photographer for Nordy Fit
★★★★★
We opted for Adam to capture our daughter's senior photos, and our chosen location was the Boone Hall Plantation. Upon our arrival, Adam was well-prepared with various shooting locations in mind. Throughout the hour, we felt that we maximized our time and found him to be extremely agreeable during the process. The resulting photos took us by surprise with their stunning quality – they turned out truly beautiful.
Nordy Fit
Photography Services for Michelle Mills
★★★★★
Adam was AMAZING! We were a very large group of 33 adults and children and he was patient, gave suggestions and kept us moving to get the most out of our time. The pictures came out great and we couldn't believe how many he sent over! Highly Recommend!!
Michelle Mills
Professional Headshot for Kim Shannon
★★★★★
Adam was very professional and relaxing at the same time. He was so patient working with a tired toddler, and most importantly, the pictures came out stunning. Highly recommend Adam!!
Kim Shannon
Professional Photographer for Benjamin Heskett
★★★★★
My wife and I eloped and Adam was the perfect addition to the team that joined us at the Charles Towne Landing in Charleston. We love our photos!
Benjamin Heskett
Family Photographer for Wendy Damron
★★★★★
I really don't like having my picture taken and consider myself to be not photogenic. Adam was so easy going and friendly that he made me feel comfortable. We looked at the pictures together and selected the ones I liked best during the session and he delivered the final product to me in just 2 days. They came out great and I have received many compliments. I highly recommend him!
Wendy Damron
Engagement Photographer for Sunny Gray
★★★★★
We have worked with Adam for a decade, and he is the total package--super talented, always follows through, and an all-around fantastic person. In the past, we have hired Adam for business event photos and he always knocked it out of the park. This spring, we hired Adam to shoot our daughter's senior pictures, and they turned out amazing! Highly recommend Adam Chandler for business or personal photography needs.
Sunny Gray
Photography for Allison Graham
★★★★★
Loved our photos! Easy to work with. On time and extremely pleasant. Made the photo taking process comfortable and fun.
Allison Graham
Best Family Photographer for Amy Self
★★★★★
I needed a head shot quickly to get my LinkedIn profile spot on for a return to work. I loved the work and quality of Adam's head shot portfolio and working with him was a breeze. He was clear about pricing, gave great direction during the shoot, and the end product was fantastic. I was unsure about how well the pictures would come out with just a 15 minute shoot, but Adam is a pro and got the perfect content in very little time. Turnaround was fantastic. I highly recommend him!
Amy Self
Portrait Photographer for Brenton Rueger
★★★★★
Adam is fun, professional, and provided us with stellar family portraits. His eye for capturing the perfects shots is incredible. He also just so happens to be a stellar human being. Worth every cent, and then some. Cannot recommend him enough!
Brenton Rueger
Photographer for Melanie DeLong
★★★★★
Adam is fantastic! He was so patient and worked to get the best pictures of us and our puppies. He picked the best spots on the beach. We will definitely use him again! We highly recommend any one looking for photos to reach out to him.
Melanie DeLong
Photography Services for Leigh Rodwick
★★★★★
Adam delivered. He was there on time. He worked with the environment at my outdoor event. He created lighting that was rich and warm. He was polite in herding all the cats. The photos of my 28 person family are keepers. Highly recommend.
Leigh Rodwick
Professional Headshot for Lucy Guffey
★★★★★
Adam made a family photo shoot as easy as it could possibly be and the photos turned out absolutely beautifully. Thank you so much Adam and we look forward to next time!
Lucy Guffey
Professional Photographer for Kathryn Reed
★★★★★
This is our second time booking Adam for beach trip family photos, because we were so happy with the results the first time we used him. The second round did not disappoint! In our group there are more babies to photograph every year, and Adam is wonderful at capturing them at their best (even if their best lasts only a moment)! Thanks for your patience and for making us all look good, Adam! See you next time!
Kathryn Reed
Family Photographer for Randy Freedman
★★★★★
Adam did an amazing job with our family photo shoot. He handled difficult lighting perfectly (day was so sunny and windy!) and the photos came out beautifully. He was flexible and creative and we ended up with special and fun pictures to celebrate my husband's 70th birthday.
Randy Freedman
Engagement Photographer for Vanessa Denney
★★★★★
THANK YOU, Adam! The photos are amazing. There isn’t one in the bunch that I don’t love. Getting the family together for a photo was long overdue! You made the experience easy, and the results were worth the wait. We’ll treasure these photos forever!!
Vanessa Denney
Photography for Anna Jagielski
★★★★★
Adam is very professional and so easy to work with. We are from out of town, and Adam chose the perfect Charleston location for our family photos. I would highly recommend him!
Anna Jagielski
Best Family Photographer for Christina Benoist
★★★★★
Not only is Adam amazing to work with, but his talent shines through in every photo! From the very first email all the way through receiving our finished photos, he was so prompt and professional. Easy to communicate with, great with our kids and he captured exactly what we were looking for. Our pictures are stunning. We couldn’t be happier! We will definitely be calling him again in the future for more family photos!
Christina Benoist
Portrait Photographer for Cass Tebben
★★★★★
My fiancé and I had the pleasure of working with Adam for our engagement photos. I 100% recommend anyone to him! He worked with us, the weather, and my wedding hair trial appointment so that my look could be everything I hoped! He joked and laughed with us the entire time making us feel so relaxed and comfortable, we really had so much fun. He helped us pose which was what I was most nervous about (looking unnatural but we did not at all) and he saw every little detail throughout the whole shoot. His style is our favorite style and his final edits were amazing! He also got a few sneak peaks to us within 48 hours and had our entire shoot back to us in 2 weeks. He is so professional, fun, timely, and had so many good tips we never would have thought of. I would hire him for our wedding if he photographed weddings!
Cass Tebben
Photographer for Danny Natale
★★★★★
Great experience with Adam. He's a total pro, a great communicator, and makes picture taking fun.
Danny Natale
Photography Services for Caroline Albanese
★★★★★
Adam took pictures of our extended family while on a beach trip. There were 16 of us, with very young children. He had his work cut out for him working with our crew! He was so comfortable and seemed up for the challenge. He made us all feel at ease. Despite the children acting very wild, he was able to get some wonderful pictures that we will cherish forever!
Caroline Albanese
Professional Headshot for Linda Dowling
★★★★★
Adam was so easy to work with long-distance to arrange for family photos during our vacation. He made our session fun, and the resulting photos will be keepsakes1
Linda Dowling
Photographer for Sydney Numbers
★★★★★
This was my fiancé and I's first time visiting Charleston and Adam was so helpful with providing some information about areas that would be great for engagement pictures. We really wanted to showcase the natural beauty along with the architecture that Charleston is known for. And boy did he deliver! We were able to get pictures at multiple locations and were able to include everything on our list. The pictures turned out as if they were made for a magazine. Adam is also very quick to respond which is nice and we received our edited photos really fast. Highly recommend!
Sydney Numbers
Best Family Photographer for Suman Gandham
★★★★★
I worked with Adam to coordinate a surprise engagement. He shared some detailed recommendations and really helped to make the moment extra special. And of course the photos were fantastic. Thanks so much!
Suman Gandham
Now that you know a little about my background, let's take a look at some of my most popular photography services in Charleston: My mission is to beautifully capture the joy and connection of each unique family while also creating a fun experience for my clients.
Quote Request 843-735-2275
The importance of family is hard to overstate. From children to grandparents to nieces and nephews, families and the family dynamic can grow and change before you know it, with many beautiful milestones taking place along the way.
I think that one of the best ways to remember some of these important moments of togetherness is with a fun family photo session.
I absolutely love photographing families and, while no two families are the same, I always strive to give each session my all in order to best connect with and capture the uniqueness of each family. Even though each session is somewhat different, I approach each one with the same goal: to capture the distinct personality, affection, and energy of each family in order to provide authentic, engaging pictures and a joyful experience.
Whether you have a toddler that you want to celebrate or have grandparents in town for a visit, Charleston is an amazing city for family photography. There are so many locations in the Lowcountry that make for great family photography backdrops:
- Beaches - Folly Beach, Sullivan's Island, Kiawah, Seabrook, Isle of Palms, Hilton Head, Edisto Beach
- Popular Places - Washington Square, Broad Street, Hampton Park, Waterfront Park, Shem Creek, The Cistern at College of Charleston
- Historical Sites - Charleston Battery, Fort Sumter, Magnolia Plantation and Gardens, Rainbow Row
Whatever location you choose for family photography in Charleston, the Holy City is a wonderful place to explore and enjoy with friends and family.
As a family photographer in Charleston, one of the reasons why I love working with families so much (in addition to getting to meet some really awesome people) is the opportunity to combine my creativity with my ever-evolving technical skill. I also gladly accommodate the style preferences my clients are looking for - be it more traditional, posed images, or candid, playful pictures.
I use a clear yet relaxed style of direction to get you and your family engaged in our photography session, to help get authentic expressions that really show the unique dynamic and relationships of each family.
Here are just a few reasons why families choose Adam Chandler Photography for their family portraits:
Document Family Growth
Change, of course, is part of life and with each passing year families, too, change and often grow. Each stage is beautiful in its own way and having annual family photographs is a fun way to document the different seasons of family life. Be it a new baby, a birthday or anniversary or simply wanting to capture your kids at each special age, I'd be honored to be chosen to help tell the story of your family over the years.
Remember Milestones
With each year that passes, new milestones are reached. From a child's first steps to a sibling getting married, there is no better way to remember these wonderful occasions than with quality photographs. Whether you're welcoming a new puppy into your life, are celebrating an anniversary or finally have gathered your extended family together in one place, capturing these special times in your life is a great way to ensure you'll be able to enjoy and relive these moments years from now.
Create Memories
Many families tell me before their sessions that it's not often that they are all able to be together and they emphasize how special and important this session is. Or, perhaps, a mom or dad will talk about how fleetingly special a certain age of their child is and how they really want to capture their children's personalities. Even if you capture lots of great moments of your family throughout the year it's likely not very often that all of you are in the pictures at once (other than maybe having a stranger tell you to "say cheese" after you hand them your phone. Having a time that's dedicated to capturing the special bonds between family members - parents and their children, grandparents and their grandchildren, siblings and maybe extended family as well - is so important. We all know just how special these people and moments are and how we tend to treasure these memories more with each passing year.
Portraits And Headshots in Charleston, SC
A great headshot shows you at your best - whether you want to impress a prospective employer or need professional photography for your website. In today's digitally-intensive society, having a professional headshot or portrait of you or your team that stands out for all the right reasons is becoming a necessity. It's no surprise, then, that headshots and portraits are among the most popular genres of photography.
Headshots can be tricky, mostly because many (if not most) people don't like being in front of the camera (trust me, I totally get that). I know that for some clients, it can be hard to know what to do, what to wear or how to relax enough to let their authentic selves come through so that they can end up with a professional photo or headshot that inspires authenticity and confidence.
Fortunately, I have years of experience taking professional headshots of all types of people. No matter what your comfort level is with having your picture taken, I pride myself on being able to create the conditions necessary to help capture my clients as you want to be seen. Through lighting, posing and direct yet relaxed interaction I'll help guide you to great photos that youââ¬â¢ll be proud to showcase and share with others.
Quote Request 843-735-2275
A professional headshot or portrait is an investment into your personal brand, and here is why:
Need professional photography services in the Charleston area? Let's chat!
Contact Me!
Show Your Personality
Not all headshots should be approached the same way. Depending on your industry or how you'll be using the photos, there are certain things to consider. A great headshot reflects not just how you look but also how you show up in the world. It can help give people an idea of the kind of person you are before you sit down to meet them. Oftentimes, too, people may want a variety of "looks" to suit different needs and uses. My goal is to listen to your expectations and then deliver results that will serve you will in your professional and/or personal life.
Show Your Professionalism
Clients, collaborators, investors, and employers are typically much more likely to interview you or to contact you or your business if you look professional. If you've taken the time to invest in your brand, in part by making the effort to arrange a professional headshot, people notice that. And who doesn't want to make a great first (or second or third) impression?
Stand Out on Social Media
Many of my clients make appointments for headshots and portraits when they want to stand out from the crowd on social media. Whether you own a business and need to create new social media pages or you're looking to network with recruiters on LinkedIn or, perhaps, update your website, a professional headshot can definitely set you apart in the modern sea of selfies and snapshots that you often see out there.
Show Off Your Current Look
None of us look the same as we did 10 or 15 years ago yet some of us keep the same photo up for decades. Having outdated headshots can send a message of inauthenticity. When you have up-to-date, professional headshots, you're showing clients and employers that you are confident, committed, and authentic.
Qualities Of A Great Photographer in Charleston, SC
Being a great photographer means more than owning fancy equipment. While having expensive gear can be quite helpful, the real test of a professional, for me, has a lot more to do with being able to draw upon my deep understanding of the craft of photography so that I can focus more on connecting with and beautifully capturing my subjects without getting bogged down in figuring out the technical side of things. It's taken me many years to get where I am and I'm always striving to improve in order to continue to deliver the best pictures and most enjoyable experience possible for my clients.
Clients choose Adam Chandler Photography because my experience shows and they trust me to always give them the results and experience that they're looking for. Here are just a few qualities that my clients appreciate:
Imagination
I wholeheartedly consider photography to be an artform - one that requires lots of curiosity and imagination along with a good bit of technique. A great photographer knows how to get beautiful results no matter what the conditions or circ*mstances are and this only comes with experience and preparation.
Passion
This quality might seem obvious but I can't tell you how many times I've seen photography that may be technically good but is missing something. My passion for photography largely comes from my passion for connecting with people in a way that helps them feel comfortable letting their guard down so they can enjoy the process. And this almost always leads to exceptional, authentic images.
Patience
Patience can also be essential for great photos. As in life, there are many things that we just can't control. Sometimes the best photos come from patiently going with the flow and not trying to force something to happen. I find that when I'm patient yet prepared - ready to capture the right moment or expression when the time is right - that's often the best approach. As a professional with many years of experience, I understand the importance of having the patience to deal with whatever comes my way as well as the flexibility and preparedness to make the most out of any situation.
People Skills
If ever there was a business where people skills were important I think portrait photography is definitely one of them. Knowing how uncomfortable many people can be when getting their pictures taken, I put every effort into helping ensure the best possible experience for my clients and communication is such a big part of that. I love interacting with my clients to build trust and rapport as well as a deep understanding of your expectations including any concerns you may have. As I've said, for me my job is not just about delivering beautiful images but also a wonderful client experience. That's why I focus so much on each and every interaction with my clients. Yes, people skills are a must in this business. Luckily for me, it's one of my favorite parts of the job!
Eye for Detail
As a professional photographer in Charleston, SC I am meticulous when it comes to details. Through my many years of photographing many different types of subjects under many different circ*mstances I've come to learn just how important details are. Whether it's finding or creating the best quality of light for my clients, eliciting a great expression or adjusting the background or, perhaps, a piece of clothing, all of these things impact the overall look and feel of a photo. Whether I'm photographing a family, a business professional or a couple in love I always look for all the ways I can create the best image possible.
"As I hope you can tell by looking at my work, I really love my job. And most of all I love the people I get to meet and work with. I'd be honored and delighted to be chosen for your photography needs."
Adam Chandler
Ready to Get Started?
One of my favorite things to do is to talk to clients about what they're looking for and how I can serve them. If you are in need of professional photography, let's talk today about what you have in mind. Whether you're looking for family or couples' photography in Charleston or want great new headshots for you or your team, I'm here to help every step of the way!
843-735-2275
Quick Quote
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Ht={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"};class Bt extends R{constructor(t,e){if(void 0===i)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return jt}static get NAME(){return"tooltip"}static get Event(){return Ht}static get DefaultType(){return xt}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),H.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=H.trigger(this._element,this.constructor.Event.SHOW),e=u(this._element),s=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!s)return;"tooltip"===this.constructor.NAME&&this.tip&&this.getTitle()!==this.tip.querySelector(".tooltip-inner").innerHTML&&(this._disposePopper(),this.tip.remove(),this.tip=null);const n=this.getTipElement(),o=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME);n.setAttribute("id",o),this._element.setAttribute("aria-describedby",o),this._config.animation&&n.classList.add("fade");const r="function"==typeof this._config.placement?this._config.placement.call(this,n,this._element):this._config.placement,a=this._getAttachment(r);this._addAttachmentClass(a);const{container:l}=this._config;z.set(n,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(l.append(n),H.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=i.createPopper(this._element,n,this._getPopperConfig(a)),n.classList.add("show");const c=this._resolvePossibleFunction(this._config.customClass);c&&n.classList.add(...c.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{H.on(t,"mouseover",g)});const h=this.tip.classList.contains("fade");this._queueCallback(()=>{const t=this._hoverState;this._hoverState=null,H.trigger(this._element,this.constructor.Event.SHOWN),"out"===t&&this._leave(null,this)},this.tip,h)}hide(){if(!this._popper)return;const t=this.getTipElement();if(H.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>H.off(t,"mouseover",g)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains("fade");this._queueCallback(()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),H.trigger(this._element,this.constructor.Event.HIDDEN),this._disposePopper())},this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");t.innerHTML=this._config.template;const e=t.children[0];return this.setContent(e),e.classList.remove("fade","show"),this.tip=e,this.tip}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".tooltip-inner")}_sanitizeAndSetContent(t,e,i){const s=V.findOne(i,t);e||!s?this.setElementContent(s,e):s.remove()}setElementContent(t,e){if(null!==t)return a(e)?(e=l(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.append(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=It(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){const t=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(t)}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){return e||this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(t)}`)}_getAttachment(t){return Mt[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(t=>{if("click"===t)H.on(this._element,this.constructor.Event.CLICK,this._config.selector,t=>this.toggle(t));else if("manual"!==t){const e="hover"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i="hover"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;H.on(this._element,e,this._config.selector,t=>this._enter(t)),H.on(this._element,i,this._config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},H.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e._config.delay&&e._config.delay.show?e._timeout=setTimeout(()=>{"show"===e._hoverState&&e.show()},e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e._config.delay&&e._config.delay.hide?e._timeout=setTimeout(()=>{"out"===e._hoverState&&e.hide()},e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=K.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{Pt.has(t)&&delete e[t]}),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:l(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),c("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=It(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),i=t.getAttribute("class").match(e);null!==i&&i.length>0&&i.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_getBasicClassPrefix(){return"bs-tooltip"}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(t){return this.each((function(){const e=Bt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}b(Bt);const zt={...Bt.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:'
'},Rt={...Bt.DefaultType,content:"(string|element|function)"},Ft={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class qt extends Bt{static get Default(){return zt}static get NAME(){return"popover"}static get Event(){return Ft}static get DefaultType(){return Rt}isWithContent(){return this.getTitle()||this._getContent()}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".popover-header"),this._sanitizeAndSetContent(t,this._getContent(),".popover-body")}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return"bs-popover"}static jQueryInterface(t){return this.each((function(){const e=qt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}b(qt);const Wt={offset:10,method:"auto",target:""},$t={offset:"number",method:"string",target:"(string|element)"},Ut=".nav-link, .list-group-item, .dropdown-item";class Kt extends R{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,H.on(this._scrollElement,"scroll.bs.scrollspy",()=>this._process()),this.refresh(),this._process()}static get Default(){return Wt}static get NAME(){return"scrollspy"}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":"position",e="auto"===this._config.method?t:this._config.method,i="position"===e?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),V.find(Ut,this._config.target).map(t=>{const s=n(t),o=s?V.findOne(s):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[K[e](o).top+i,s]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){H.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){return(t={...Wt,...K.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target=l(t.target)||document.documentElement,c("scrollspy",t,$t),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t