/*! elementor-pro - v3.18.0 - 17-01-2024 */
"use strict";
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["slides"],{
/***/ "../modules/slides/assets/js/frontend/handlers/slides.js":
/*!***************************************************************!*\
!*** ../modules/slides/assets/js/frontend/handlers/slides.js ***!
\***************************************************************/
/***/ ((__unused_webpack_module, exports) => {
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
class SlidesHandler extends elementorModules.frontend.handlers.SwiperBase {
getDefaultSettings() {
return {
selectors: {
slider: '.elementor-slides-wrapper',
slide: '.swiper-slide',
slideInnerContents: '.swiper-slide-contents',
activeSlide: '.swiper-slide-active',
activeDuplicate: '.swiper-slide-duplicate-active'
},
classes: {
animated: 'animated',
kenBurnsActive: 'elementor-ken-burns--active',
slideBackground: 'swiper-slide-bg'
},
attributes: {
dataSliderOptions: 'slider_options',
dataAnimation: 'animation'
}
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors'),
elements = {
$swiperContainer: this.$element.find(selectors.slider)
};
elements.$slides = elements.$swiperContainer.find(selectors.slide);
return elements;
}
getSwiperOptions() {
const elementSettings = this.getElementSettings(),
swiperOptions = {
autoplay: this.getAutoplayConfig(),
grabCursor: true,
initialSlide: this.getInitialSlide(),
slidesPerView: 1,
slidesPerGroup: 1,
loop: 'yes' === elementSettings.infinite,
speed: elementSettings.transition_speed,
effect: elementSettings.transition,
observeParents: true,
observer: true,
handleElementorBreakpoints: true,
on: {
slideChange: () => {
this.handleKenBurns();
}
}
};
const showArrows = 'arrows' === elementSettings.navigation || 'both' === elementSettings.navigation,
pagination = 'dots' === elementSettings.navigation || 'both' === elementSettings.navigation;
if (showArrows) {
swiperOptions.navigation = {
prevEl: '.elementor-swiper-button-prev',
nextEl: '.elementor-swiper-button-next'
};
}
if (pagination) {
swiperOptions.pagination = {
el: '.swiper-pagination',
type: 'bullets',
clickable: true
};
}
if (true === swiperOptions.loop) {
swiperOptions.loopedSlides = this.getSlidesCount();
}
if ('fade' === swiperOptions.effect) {
swiperOptions.fadeEffect = {
crossFade: true
};
}
return swiperOptions;
}
getAutoplayConfig() {
const elementSettings = this.getElementSettings();
if ('yes' !== elementSettings.autoplay) {
return false;
}
return {
stopOnLastSlide: true,
// Has no effect in infinite mode by default.
delay: elementSettings.autoplay_speed,
disableOnInteraction: 'yes' === elementSettings.pause_on_interaction
};
}
initSingleSlideAnimations() {
const settings = this.getSettings(),
animation = this.elements.$swiperContainer.data(settings.attributes.dataAnimation);
this.elements.$swiperContainer.find('.' + settings.classes.slideBackground).addClass(settings.classes.kenBurnsActive);
// If there is an animation, get the container of the slide's inner contents and add the animation classes to it
if (animation) {
this.elements.$swiperContainer.find(settings.selectors.slideInnerContents).addClass(settings.classes.animated + ' ' + animation);
}
}
async initSlider() {
const $slider = this.elements.$swiperContainer;
if (!$slider.length) {
return;
}
if (1 >= this.getSlidesCount()) {
return;
}
const Swiper = elementorFrontend.utils.swiper;
this.swiper = await new Swiper($slider, this.getSwiperOptions());
// Expose the swiper instance in the frontend
$slider.data('swiper', this.swiper);
// The Ken Burns effect will only apply on the specific slides that toggled the effect ON,
// since it depends on an additional class besides 'elementor-ken-burns--active'
this.handleKenBurns();
const elementSettings = this.getElementSettings();
if (elementSettings.pause_on_hover) {
this.togglePauseOnHover(true);
}
const settings = this.getSettings();
const animation = $slider.data(settings.attributes.dataAnimation);
if (!animation) {
return;
}
this.swiper.on('slideChangeTransitionStart', function () {
const $sliderContent = $slider.find(settings.selectors.slideInnerContents);
$sliderContent.removeClass(settings.classes.animated + ' ' + animation).hide();
});
this.swiper.on('slideChangeTransitionEnd', function () {
const $currentSlide = $slider.find(settings.selectors.slideInnerContents);
$currentSlide.show().addClass(settings.classes.animated + ' ' + animation);
});
}
onInit() {
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
if (2 > this.getSlidesCount()) {
this.initSingleSlideAnimations();
return;
}
this.initSlider();
}
getChangeableProperties() {
return {
pause_on_hover: 'pauseOnHover',
pause_on_interaction: 'disableOnInteraction',
autoplay_speed: 'delay',
transition_speed: 'speed'
};
}
updateSwiperOption(propertyName) {
if (0 === propertyName.indexOf('width')) {
this.swiper.update();
return;
}
const elementSettings = this.getElementSettings(),
newSettingValue = elementSettings[propertyName],
changeableProperties = this.getChangeableProperties();
let propertyToUpdate = changeableProperties[propertyName],
valueToUpdate = newSettingValue;
// Handle special cases where the value to update is not the value that the Swiper library accepts
switch (propertyName) {
case 'autoplay_speed':
propertyToUpdate = 'autoplay';
valueToUpdate = {
delay: newSettingValue,
disableOnInteraction: 'yes' === elementSettings.pause_on_interaction
};
break;
case 'pause_on_hover':
this.togglePauseOnHover('yes' === newSettingValue);
break;
case 'pause_on_interaction':
valueToUpdate = 'yes' === newSettingValue;
break;
}
// 'pause_on_hover' is implemented by the handler with event listeners, not the Swiper library
if ('pause_on_hover' !== propertyName) {
this.swiper.params[propertyToUpdate] = valueToUpdate;
}
this.swiper.update();
}
onElementChange(propertyName) {
if (1 >= this.getSlidesCount()) {
return;
}
const changeableProperties = this.getChangeableProperties();
if (Object.prototype.hasOwnProperty.call(changeableProperties, propertyName)) {
this.updateSwiperOption(propertyName);
this.swiper.autoplay.start();
}
}
onEditSettingsChange(propertyName) {
if (1 >= this.getSlidesCount()) {
return;
}
if ('activeItemIndex' === propertyName) {
this.swiper.slideToLoop(this.getEditSettings('activeItemIndex') - 1);
this.swiper.autoplay.stop();
}
}
}
exports["default"] = SlidesHandler;
/***/ })
}]);
//# sourceMappingURL=slides.3b185c687f9167dfae0c.bundle.js.map
Affordable Cozy Studio, Kitisuru - Xalleria
Other 2
This is an Exquisite, uniquely styled studio in Nairobi’s secure Kitisuru.
Enjoy comprehensive security (parking, CCTV, 24/7 access) and seamless connectivity.
Westlands, UN, Village Market, and Two Rivers Mall are all within a quick 10-minute drive.
Ideal for discerning individuals seeking sophisticated, convenient living in a prestigious location.
What this place offers
Bathroom
Cleaning products
Shampoo
Body soap
Hot water
Shower gel
Bedroom and laundry
Essentials
Towels, bed sheets, soap, and toilet paper
Hangers
Extra pillows and blankets
Iron
Drying rack for clothing
Clothing storage
Entertainment
Ethernet connection
TV
Sound system
Family
Window guards
Security guards on premise
Home safety
Exterior security cameras on property
The compound and the entire apartment floors is fitted with visible CCTV.
Smoke alarm
Fire extinguisher
First aid kit
Internet and office
Kitchen and dining
Kitchen
Space where guests can cook their own meals
Microwave
Cooking basics
Pots and pans, oil, salt and pepper
Dishes and silverware
Bowls, chopsticks, plates, cups, etc.
Mini fridge
Hot water kettle
Wine glasses
Dining table
Coffee
Parking and facilities
Free parking on premises
Lift
Services
Pets allowed
Assistance animals are always allowed
Luggage drop-off allowed
For guests’ convenience when they have early arrival or late departure
Breakfast
Breakfast is provided
Long term stays allowed
Allow stay for 28 days or more
Host greets you
Book a stay…
Amenities
Bathroom Breakfast Dedicated Workspace Free Parking Free Wi Fi Garden view Kitchen Pet Friendly Tv Inside Wheelchair Friendly
Claim listing: Affordable Cozy Studio, Kitisuru