{"product_id":"arzopa-portable-monitor-15-6-fhd-1080p-ultra-slim-portable-laptop-monitor-with-kickstand-ips-display-for-pc-mac-phone-xbox-ps5-usb-c-hdmi-connectivity-a1","title":"ARZOPA Kickstand Portable Gaming Monitor","description":"\u003cdiv lang=\"en_US\"\u003e\n\u003cdiv class=\"aplus-v2 desktop celwidget\" cel_widget_id=\"aplus\"\u003e\n\u003cscript type=\"text\/javascript\"\u003e\/\/ \u003c![CDATA[\n(function(f) {var _np=(window.P._namespace(\"PremiumAplusModule\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {\nP.now('premium-module-5-comparison-table-scroller').execute('init-premium-module-5-comparison-table', function(init){\n    if (init) {\n        return;\n    }\n    P.register('premium-module-5-comparison-table-scroller', function(){\n        return function() {\n            P.when('jQuery', 'a-popover', 'A', 'ready').execute('premium-5-comparison-table-scroller', function($, popover, A) {\n                function initCompTable(module) {\n                    \/**\n                    * Premium comparison table: popover trigger module\n                    *\/\n                    var comparisonName = $(module).data('comparison-name');\n                    (function() {\n                        var $additionalInfo = $('.aplus-v2 .aplus-popover-trigger');\n                        $additionalInfo.each(function(i, trigger) {\n                            return popover.create(trigger, $(trigger).data());\n                        });\n                        $additionalInfo.hover(\n                            function() {\n                                $(this).focus();\n                            }\n                        );\n                    })();\n                    \/**\n                    * Premium comparison table: adjust column width module\n                    *\/\n                    (function() {\n                        var VISIBLE_COLUMNS = 4.2;  \/* How many visible columns on load *\/\n                        var MIN_WIDTH = 230;\n                        var getWidth = function() {\n                            return $(this).outerWidth();\n                        }\n                        \/* cache selectors *\/\n                        var\n                            $container = $('.aplus-v2 .comparison-table #'+comparisonName),\n                            $header = $('.aplus-v2 .comparison-table #'+comparisonName+' td.attribute'),\n                            $slider = $('.aplus-v2 .comparison-table #'+comparisonName+' .table-slider'),\n                            $columns = $('.aplus-v2 .comparison-table #'+comparisonName+' .aplus-data-column'),\n                            $activeColumn = $('.aplus-v2 .comparison-table #'+comparisonName+' .aplus-data-column.active.active-item');\n\n                        \/* Formula for determining desired column width *\/\n\n                        var calculatedColumnWidth = Math.floor(\n                            ($container.innerWidth() - $header.innerWidth()) \/ VISIBLE_COLUMNS\n                        );\n\n                        var childWidths = $activeColumn.map(getWidth).get();\n                        var maxChildWidth = Math.max(MIN_WIDTH, Math.max.apply(Math, childWidths));\n                        var minColumnWidth = $columns.innerWidth();\n\n                        \/* set the min-width of each column to the calulated width or minWidth *\/\n                        $columns.css(\n                            'min-width',\n                            Math.max(MIN_WIDTH, (calculatedColumnWidth \u003c minColumnWidth\n                                ? calculatedColumnWidth\n                                : minColumnWidth))\n                        );\n                        $activeColumn.css('width', maxChildWidth);\n\n                        \/* show the component *\/\n                        $container.removeClass('loading');\n                    })();\n\n                    \/**\n                     * Premium comparison table: sticky attribute \u0026 column\n                     *\/\n\n                    (function() {\n                        \/* cache selectors *\/\n                        const comparisonTable = document.querySelector('.aplus-v2 .comparison-table #'+comparisonName);\n                        const header = comparisonTable.querySelector('td.attribute');\n                        const fixedColumn = comparisonTable.querySelector('td.active');\n\n                        const attributeColumnObserver = new ResizeObserver((entries) =\u003e {\n                            for (let entry of entries) {\n                                const bounds = entry.target.getBoundingClientRect().width;\n                                const activeCellWidth = window.getComputedStyle(fixedColumn).left;\n                                if (bounds + \"px\" !== activeCellWidth) {\n                                    const activeCells = document.querySelectorAll('.aplus-data-column.active');\n                                    activeCells.forEach(cell =\u003e cell.style.left = bounds + \"px\");\n\n                                }\n                            }\n\n                        })\n\n                        attributeColumnObserver.observe(header)\n                    })();\n\n                    \/**\n                    * Premium comparison table: top scroll bar\n                    *\/\n                    (function() {\n                        \/* cache selectors *\/\n                        var\n                            $header = $('.aplus-v2 .comparison-table #'+comparisonName+' td.attribute'),\n                            $fixedColumn = $('.aplus-v2 .comparison-table #'+comparisonName+' td.active'),\n                            $scrollWrapperTop = $('.aplus-v2 .comparison-table #'+comparisonName+' .scroll-wrapper-top'),\n                            $scrollWrapperBottom = $('.aplus-v2 .comparison-table #'+comparisonName+' .scroll-wrapper-bottom'),\n                            $scrollWidth = $('.aplus-v2 .comparison-table #'+comparisonName+' .scroll-width'),\n                            $scrollBar = $('.aplus-v2 .comparison-table #'+comparisonName+' .scroll-bar');\n                        \/* confirm fixed column exists and can add width to the total width of the scroll bar *\/\n                        var fixedColumnWidth = $fixedColumn.innerWidth();\n                        if ( fixedColumnWidth === null ) {\n                            fixedColumnWidth = 0;\n                        }\n                        \/* set width of scrollBar *\/\n                        $scrollBar.css('width', $scrollWidth.innerWidth() + fixedColumnWidth + $header.innerWidth());\n                        \/* connect scrolls together *\/\n                        $scrollWrapperTop.scroll(function() {\n                            $scrollWrapperBottom.scrollLeft($scrollWrapperTop.scrollLeft());\n                        });\n                        $scrollWrapperBottom.scroll(function() {\n                            $scrollWrapperTop.scrollLeft($scrollWrapperBottom.scrollLeft());\n                        });\n                    })();\n                }\n\n                $('.aplus-v2 .premium-aplus-module-5 .table-container').each(function(index, module) {\n                    initCompTable(module);\n                });\n            });\n        }\n    });\n});\n}));\n\/\/ ]]\u003e\u003c\/script\u003e\u003cscript type=\"text\/javascript\"\u003e\/\/ \u003c![CDATA[\n(function(f) {var _np=(window.P._namespace(\"PremiumAplusModule\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {\nP.now('premium-module-12-nav-carousel').execute('init-premium-module-12-nav-carousel', function(init) {\n    if (init) {\n        return;\n    }\n    P.register('premium-module-12-nav-carousel', function(){\n        return function() {\n            P.when('A', 'jQuery', 'a-carousel-framework', 'ready').execute('premium-12-nav-carousel', function (A, $, framework) {\n                function initiateCarousel(module) {\n                    var MODULE_ID = $(module).data('module-id');\n                    \/**\n                    * Carousel button element classname\n                    * @const\n                    *\/\n                    var GOTO_BTN_CLASS_NAME = \"aplus-goto-btn-\" + MODULE_ID;\n                    \/**\n                    * Carousel button element active classname\n                    * @const\n                    *\/\n                    var GOTO_BTN_ACTIVE_CLASS_NAME = \"aplus-active\";\n                    \/**\n                    * AUI name for aui carousel\n                    * @const\n                    *\/\n                    var CAROUSEL_NAME = \"premium-aplus-12-carousel-\" + MODULE_ID;\n                    \/**\n                    * Module class name\n                    * @const\n                    *\/\n                    var MODULE_CLASS_NAME = \".aplus-v2 .premium-aplus-module-12\";\n                    \/**\n                    * Carousel text container class name\n                    * @const\n                    *\/\n                    var TEXT_CONTAINER_CLASS_NAME = MODULE_CLASS_NAME + \" .aplus-carousel-text-container-\" + MODULE_ID;\n                    \/**\n                    * Carousel text hidden class name\n                    * @const\n                    *\/\n                    var TEXT_CONTAINER_HIDDEN = \"aplus-hidden\";\n                    \/**\n                    * Carousel horizontal scroll container class name\n                    * @const\n                    *\/\n                    var HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME = MODULE_CLASS_NAME + \" .aplus-horizontal-scroll-container-\" + MODULE_ID;\n\n                    function showCarouselText(oldIndex, newIndex) {\n                        var oldClass = TEXT_CONTAINER_CLASS_NAME + \"-\" + oldIndex;\n                        var newClass= TEXT_CONTAINER_CLASS_NAME + \"-\" + newIndex;\n                        $(oldClass).addClass(TEXT_CONTAINER_HIDDEN);\n                        $(newClass).removeClass(TEXT_CONTAINER_HIDDEN);\n                    }\n\n                    function scrollToCarouselButton(scrollLeft) {\n                        if ($(HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME).length) {\n                            $(HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME).animate({scrollLeft}, 200);\n                        }\n                    }\n\n                    \/**\n                    * Creates a CarouselButton class for provided carousel instance\n                    * @param {object} carousel - AUI Carousel instance\n                    * @returns {Class} - CarouselButton Class\n                    *\/\n                    function CarouselButtonTemplate(carousel) {\n                        \/**\n                        * Button for controlling the active slide\n                        * @constructor\n                        * @param {number} index - slide index\n                        * @param {DOMElement} [elem] - optional DOM element to use as this objects DOM representation\n                        *\/\n                        function CarouselButton(index, elem) {\n                            var self = this;\n                            this.index = index;\n                            this.carousel = carousel;\n\n                            \/* create the button element *\/\n                            this.elem = this.getElem(elem);\n                            this.$elem = $(this.elem);  \/* store jquery version *\/\n                            this.elem.addEventListener('click', self.handleClick.bind(self));\n                            this.elem.setAttribute('role', 'tab');\n\n                            \/* add this object to the object manager *\/\n                            CarouselButton.objects.byId[index] = this;\n                            CarouselButton.objects.all.push(this);\n                        }\n\n                        \/**\n                        * Describe behavior for click events on this.elem\n                        * @memberOf CarouselButton\n                        *\/\n                        CarouselButton.prototype.handleClick = function(e) {\n                            e.preventDefault();\n                            this.carousel.gotoPage(this.index);\n                        };\n\n                        \/**\n                        * Enter active state\n                        * @memberOf CarouselButton\n                        *\/\n                        CarouselButton.prototype.activate = function() {\n                            this.$elem.addClass(GOTO_BTN_ACTIVE_CLASS_NAME).attr('aria-selected', 'true');\n                        };\n\n                        \/**\n                        * Enter inactive state\n                        * @memberOf CarouselButton\n                        *\/\n                        CarouselButton.prototype.deactivate = function() {\n                            this.$elem.removeClass(GOTO_BTN_ACTIVE_CLASS_NAME).attr('aria-selected', 'false');\n                        };\n\n                        \/**\n                        * Returns an existing or creates a new bound element for this object\n                        * @memberOf CarouselButton\n                        * @param {DOMElement} [elem] - optionally provide an existing element in the DOM to use\n                        * @returns {DOMElement} - this objects DOM representation\n                        *\/\n                        CarouselButton.prototype.getElem = function(elem) {\n                            if (this.elem) return this.elem;\n                            if (elem) return elem;\n\n                            var createdElem = document.createElement('span');\n                            createdElem.className = GOTO_BTN_CLASS_NAME;\n\n                            return createdElem;\n                        };\n\n                        \/** @const Object manager *\/\n                        CarouselButton.objects = {\n                            byId: {},\n                            all: [],\n                        };\n\n                        return CarouselButton;\n                    }\n\n                    framework.onInit(CAROUSEL_NAME, function(carousel) {\n                        \/** @const {Class} *\/\n                        var CarouselButton = CarouselButtonTemplate(carousel);\n\n                        \/* create carousel controls *\/\n                        var $carouselBtns = $(safeClassSelector(GOTO_BTN_CLASS_NAME));\n                        var btns = $carouselBtns.map(function(i, btnElem) {\n                            return new CarouselButton(i + 1, btnElem);\n                        });\n\n                        \/* activate first one *\/\n                        CarouselButton.objects.byId[1].activate();\n\n                        \/* Listen to slide changes *\/\n                        A.on(\"a:carousel:\" + CAROUSEL_NAME + \":change:pageNumber\", function (data) {\n                            var newCarouselButton = CarouselButton.objects.byId[data.newValue];\n                            var marginLeft = parseInt(getComputedStyle(newCarouselButton.elem).getPropertyValue('margin-left'));\n                            var positionLeft = newCarouselButton.elem.offsetLeft - marginLeft;\n\n                            newCarouselButton.activate();\n                            CarouselButton.objects.byId[data.oldValue].deactivate();\n                            scrollToCarouselButton(positionLeft);\n                            showCarouselText(data.oldValue, data.newValue);\n                        });\n                    });\n\n                    \/**\n                    * @returns {string} - css classname prefixed with module selector\n                    *\/\n                    function safeClassSelector(className) {\n                        return '.' + MODULE_CLASS_NAME + ' .' + className;\n                    }\n                }\n\n                $('.aplus-v2 .premium-aplus-module-12 .aplus-carousel-container').each(function (index, module) {\n                    initiateCarousel(module);\n                });\n                framework.createAll();\n                framework.initializeAll();\n            });\n        }\n    })\n});\n}));\n\/\/ ]]\u003e\u003c\/script\u003e\n\u003cdiv class=\"aplus-content-wrapper\"\u003e\n\u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\" cel_widget_id=\"aplus-premium-module-2-fullbackground-image\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003eARZOPA Kickstand Portable Gaming Monitor\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003eTake your gaming and productivity anywhere with the ARZOPA Kickstand Portable Gaming Monitor. Featuring a crisp 15.6-inch Full HD (1920×1080) IPS display, it delivers vibrant colors, sharp visuals, and wide viewing angles for an immersive experience. The built-in kickstand makes setup quick and convenient, whether you're working, gaming, or streaming.\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003eCompatible with laptops, PCs, Macs, smartphones, Xbox, PS5, and other devices, it connects easily through USB-C or HDMI for plug-and-play convenience. Its ultra-slim, lightweight design fits easily into a backpack, making it an ideal second screen for travel, remote work, and gaming on the go.\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003eKey Features:\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003e- 15.6-inch Full HD 1080P IPS display\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003e- Built-in adjustable kickstand\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003e- Ultra-slim and lightweight design\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003e- USB-C and HDMI connectivity\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003e- Compatible with laptops, Mac, PC, phones, Xbox, PS5, and more\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003e- Great for gaming, work, travel, and entertainment\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"Malachi Wallace boutique","offers":[{"title":"17.3\" \/ Black \/ A1M","offer_id":62033089790322,"sku":"B0CH9Y9SV3","price":340.0,"currency_code":"USD","in_stock":true},{"title":"17.3\" \/ Gray \/ Z1C PLUS","offer_id":62033089823090,"sku":"B0FKH88JKK","price":340.0,"currency_code":"USD","in_stock":true},{"title":"15.6\" \/ Black \/ A1","offer_id":62033089855858,"sku":"B0CH9XW8RK","price":340.0,"currency_code":"USD","in_stock":true},{"title":"15.6\" \/ Gray \/ A1","offer_id":62033089888626,"sku":"B0FFN6TT14","price":340.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0978\/0281\/3810\/files\/712ioeVimFL.jpg?v=1783621373","url":"https:\/\/malachi-wallace-boutique.myshopify.com\/products\/arzopa-portable-monitor-15-6-fhd-1080p-ultra-slim-portable-laptop-monitor-with-kickstand-ips-display-for-pc-mac-phone-xbox-ps5-usb-c-hdmi-connectivity-a1","provider":"Malachi Wallace boutique","version":"1.0","type":"link"}