Skip to product information
1 of 7

Robotic Max

Mova S20 Ultra Robot Vacuum and Mop Combo with Dual Roller Brush, 8300Pa Suction, 140℉ Hot Water Mop Self-Washing & Drying, Mop Auto-Lift for Carpet, Self-Empty, Self-Refilling, Voice & App Control

Mova S20 Ultra Robot Vacuum and Mop Combo with Dual Roller Brush, 8300Pa Suction, 140℉ Hot Water Mop Self-Washing & Drying, Mop Auto-Lift for Carpet, Self-Empty, Self-Refilling, Voice & App Control

Regular price $949.99 USD
Regular price $1,035.99 USD Sale price $949.99 USD
Sale Sold out
Taxes included.

 

 

// <![CDATA[</p><p>(function(f) {var _np=(window.P._namespace("PremiumAplusModule"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {</p><p>P.now('premium-module-5-comparison-table-scroller').execute(function(init){</p><p> if (init) {</p><p> return;</p><p> P.register('premium-module-5-comparison-table-scroller', function(){</p><p> return function() {</p><p> P.when('jQuery', 'a-popover', 'A', 'ready').execute(function($, popover, A) {</p><p> function initCompTable(module) {</p><p> var comparisonName = $(module).data('comparison-name');</p><p> (function() {</p><p> var $additionalInfo = $('.aplus-v2 .aplus-popover-trigger');</p><p> $additionalInfo.each(function(i, trigger) {</p><p> return popover.create(trigger, $(trigger).data());</p><p> });</p><p> $additionalInfo.hover(</p><p> function() {</p><p> $(this).focus();</p><p> }</p><p> );</p><p> })(); </p><p> (function() {</p><p> var VISIBLE_COLUMNS = 4.2; </p><p> var MIN_WIDTH = 230;</p><p> var getWidth = function() {</p><p> return $(this).outerWidth();</p><p> }</p><p> var</p><p> $container = $('.aplus-v2 .comparison-table #'+comparisonName),</p><p> $header = $('.aplus-v2 .comparison-table #'+comparisonName+' td.attribute'),</p><p> $slider = $('.aplus-v2 .comparison-table #'+comparisonName+' .table-slider'),</p><p> $columns = $('.aplus-v2 .comparison-table #'+comparisonName+' .aplus-data-column'),</p><p> $activeColumn = $('.aplus-v2 .comparison-table #'+comparisonName+' .aplus-data-column.active.active-item');</p><p> var calculatedColumnWidth = Math.floor(</p><p> ($container.innerWidth() - $header.innerWidth()) / VISIBLE_COLUMNS</p><p> );</p><p> var childWidths = $activeColumn.map(getWidth).get();</p><p> var maxChildWidth = Math.max(MIN_WIDTH, Math.max.apply(Math, childWidths));</p><p> var minColumnWidth = $columns.innerWidth();</p><p> $columns.css(</p><p> 'min-width',</p><p> Math.max(MIN_WIDTH, (calculatedColumnWidth < minColumnWidth</p><p> ? calculatedColumnWidth</p><p> : minColumnWidth))</p><p> );</p><p> $activeColumn.css('width', maxChildWidth);</p><p> $container.removeClass('loading');</p><p> })();</p><p> (function() {</p><p> const comparisonTable = document.querySelector('.aplus-v2 .comparison-table #'+comparisonName);</p><p> const header = comparisonTable.querySelector('td.attribute');</p><p> const fixedColumn = comparisonTable.querySelector('td.active');</p><p> const attributeColumnObserver = new ResizeObserver((entries) => {</p><p> for (let entry of entries) {</p><p> const bounds = entry.target.getBoundingClientRect().width;</p><p> const activeCellWidth = window.getComputedStyle(fixedColumn).left;</p><p> if (bounds + "px" !== activeCellWidth) {</p><p> const activeCells = document.querySelectorAll('.aplus-data-column.active');</p><p> activeCells.forEach(cell => cell.style.left = bounds + "px");</p><p> }</p><p> }</p><p> });</p><p> attributeColumnObserver.observe(header);</p><p> })();</p><p> (function() {</p><p> var</p><p> $header = $('.aplus-v2 .comparison-table #'+comparisonName+' td.attribute'),</p><p> $fixedColumn = $('.aplus-v2 .comparison-table #'+comparisonName+' td.active'),</p><p> $scrollWrapperTop = $('.aplus-v2 .comparison-table #'+comparisonName+' .scroll-wrapper-top'),</p><p> $scrollWrapperBottom = $('.aplus-v2 .comparison-table #'+comparisonName+' .scroll-wrapper-bottom'),</p><p> $scrollWidth = $('.aplus-v2 .comparison-table #'+comparisonName+' .scroll-width'),</p><p> $scrollBar = $('.aplus-v2 .comparison-table #'+comparisonName+' .scroll-bar');</p><p> var fixedColumnWidth = $fixedColumn.innerWidth();</p><p> if ( fixedColumnWidth === null ) {</p><p> fixedColumnWidth = 0;</p><p> }</p><p> $scrollBar.css('width', $scrollWidth.innerWidth() + fixedColumnWidth + $header.innerWidth());</p><p> $scrollWrapperTop.scroll(function() {</p><p> $scrollWrapperBottom.scrollLeft($scrollWrapperTop.scrollLeft());</p><p> });</p><p> $scrollWrapperBottom.scroll(function() {</p><p> $scrollWrapperTop.scrollLeft($scrollWrapperBottom.scrollLeft());</p><p> });</p><p> })();</p><p> }</p><p> $('.aplus-v2 .premium-aplus-module-5 .table-container').each(function(index, module) {</p><p> initCompTable(module);</p><p> });</p><p> });</p><p>// ]]>

// <![CDATA[</p><p>(function(f) {var _np=(window.P._namespace("PremiumAplusModule"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {</p><p>P.now('premium-module-12-nav-carousel').execute(function(init) {</p><p> if (init) {</p><p> return;</p><p> P.register('premium-module-12-nav-carousel', function(){</p><p> return function() {</p><p> P.when('A', 'jQuery', 'a-carousel-framework', 'ready').execute(function (A, $, framework) {</p><p> function initiateCarousel(module) {</p><p> var MODULE_ID = $(module).data('module-id');</p><p> var GOTO_BTN_CLASS_NAME = "aplus-goto-btn-" + MODULE_ID;</p><p> var GOTO_BTN_ACTIVE_CLASS_NAME = "aplus-active";</p><p> var CAROUSEL_NAME = "premium-aplus-12-carousel-" + MODULE_ID;</p><p> var MODULE_CLASS_NAME = ".aplus-v2 .premium-aplus-module-12";</p><p> var TEXT_CONTAINER_CLASS_NAME = MODULE_CLASS_NAME + " .aplus-carousel-text-container-" + MODULE_ID;</p><p> var TEXT_CONTAINER_HIDDEN = "aplus-hidden";</p><p> var HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME = MODULE_CLASS_NAME + " .aplus-horizontal-scroll-container-" + MODULE_ID;</p><p> function showCarouselText(oldIndex, newIndex) {</p><p> var oldClass = TEXT_CONTAINER_CLASS_NAME + "-" + oldIndex;</p><p> var newClass= TEXT_CONTAINER_CLASS_NAME + "-" + newIndex;</p><p> $(oldClass).addClass(TEXT_CONTAINER_HIDDEN);</p><p> $(newClass).removeClass(TEXT_CONTAINER_HIDDEN);</p><p> }</p><p> function scrollToCarouselButton(scrollLeft) {</p><p> if ($(HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME).length) {</p><p> $(HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME).animate({scrollLeft}, 200);</p><p> }</p><p> }</p><p> function CarouselButtonTemplate(carousel) {</p><p> function CarouselButton(index, elem) {</p><p> var self = this;</p><p> this.index = index;</p><p> this.carousel = carousel;</p><p> this.elem = this.getElem(elem);</p><p> this.$elem = $(this.elem);</p><p> this.elem.addEventListener('click', self.handleClick.bind(self));</p><p> this.elem.setAttribute('role', 'tab');</p><p> CarouselButton.objects.byId[index] = this;</p><p> CarouselButton.objects.all.push(this);</p><p> }</p><p> CarouselButton.prototype.handleClick = function(e) {</p><p> e.preventDefault();</p><p> this.carousel.gotoPage(this.index);</p><p> };</p><p> CarouselButton.prototype.activate = function() {</p><p> this.$elem.addClass(GOTO_BTN_ACTIVE_CLASS_NAME).attr('aria-selected', 'true');</p><p> };</p><p> CarouselButton.prototype.deactivate = function() {</p><p> this.$elem.removeClass(GOTO_BTN_ACTIVE_CLASS_NAME).attr('aria-selected', 'false');</p><p> };</p><p> CarouselButton.prototype.getElem = function(elem) {</p><p> if (this.elem) return this.elem;</p><p> if (elem) return elem;</p><p> var createdElem = document.createElement('span');</p><p> createdElem.className = GOTO_BTN_CLASS_NAME;</p><p> return createdElem;</p><p> };</p><p> CarouselButton.objects = {</p><p> byId: {},</p><p> all: [],</p><p> };</p><p> return CarouselButton;</p><p> }</p><p> framework.onInit(CAROUSEL_NAME, function(carousel) {</p><p> var CarouselButton = CarouselButtonTemplate(carousel);</p><p> var $carouselBtns = $(safeClassSelector(GOTO_BTN_CLASS_NAME));</p><p> var btns = $carouselBtns.map(function(i, btnElem) {</p><p> return new CarouselButton(i + 1, btnElem);</p><p> });</p><p> CarouselButton.objects.byId[1].activate();</p><p> A.on("a:carousel:" + CAROUSEL_NAME + ":change:pageNumber", function</p></body>

View full details