{"product_id":"aula-s98-pro-mechanical-keyboard-with-knob-lcd-screen-aulagaming-aula-s98-pro-wireless-mechanical-keyboard","title":"AULA S98 Pro Mechanical Keyboard With Knob\u0026 LCD Screen","description":"Product Description\n\n function logShoppableMetrics(moduleName, showsAddToCart) {\n if (window.ue \u0026amp;amp;\u0026amp;amp; window.ue.count) {\n window.ue.count(\"aplus:shoppable:\" + moduleName + \":addToCart\", showsAddToCart ? 1 : 0);\n }\n }\n\n \/**\n * Common event handler for click and keydown events.\n * @param {Event} event - The event object.\n * @param {Function} handleClickOrEnter - Function to handle click or Enter key events.\n * @param {Function} handleEsc - Function to handle Esc key events.\n *\/\n \/\/ [TODO][AplusMantle-8064] Create common event handler util(key events, click events) in AplusModuleResources\n function handleClickAndKeyEvents(event, handleClickOrEnterOrSpace) {\n const ENTER_KEY_CODE = 13;\n const ESCAPE_KEY_CODE = 27;\n const SPACE_KEY_CODE = 32;\n const isClick = event.type === 'click';\n const isKeydown = event.type === 'keydown';\n const isEnter = isKeydown \u0026amp;amp;\u0026amp;amp; event.keyCode === ENTER_KEY_CODE;\n const isSpace = isKeydown \u0026amp;amp;\u0026amp;amp; event.keyCode === SPACE_KEY_CODE;\n const isEsc = isKeydown \u0026amp;amp;\u0026amp;amp; event.keyCode === ESCAPE_KEY_CODE;\n\n if (isClick || isEnter || isSpace) {\n handleClickOrEnterOrSpace();\n } else if (isEsc) {\n handleEsc(event);\n }\n }\n\n \/**\n * Function to handle esc key event.\n * @param {Event} event - The event object.\n *\/\n function handleEsc(event) {\n event.target.blur() \/\/ force remove focus\n }\n\n\u003cbr\u003e\u003cbr\u003e\u003col\u003e\u003c\/ol\u003e\u003cbr\u003e\u003col\u003e\u003c\/ol\u003e\u003cbr\u003e\u003col\u003e\u003c\/ol\u003e\n\nP.now(\"premium-aplus-13-carousel-4\").execute(function(init) {\n if (init) {\n return;\n }\n P.register(\"premium-aplus-13-carousel-4\", function(){\n return function() {\n P.when(\"A\", \"jQuery\", \"a-carousel-framework\", \"ready\").execute(function (A, $, framework) {\n const ENTER_KEY_CODE = 13;\n const ESCAPE_KEY_CODE = 27;\n var moduleId = \"4\";\n var carouselName = \"premium-aplus-13-carousel-4\";\n var paginationAction = \"aplus-pagination-dot-action-\" + moduleId + \"-\" + carouselName;\n var paginationGroup = \"#aplus-pagination-group-\" + moduleId + \"-\" + carouselName;\n\n \/* If the carousel goes to a new page *\/\n A.on(\"a:carousel:\"+carouselName+\":change:pageNumber\", function (data) {\n A.$(paginationGroup+\" .carousel-slider-circle\").removeClass(\"aplus-carousel-active\").attr('aria-selected', 'false').attr('tabindex', -1)\n .eq(data.newValue - 1).addClass(\"aplus-carousel-active\").attr('aria-selected', 'true').attr('tabindex', 0);\n });\n\n function syncPaginationDotsWithCarouselPages(numPages) {\n const children = document.querySelector(paginationGroup).children;\n \n for(let i = 0; i \u0026amp;lt; children.length; i++) {\n if (i \u0026amp;gt;= numPages) {\n \/\/ If number of dots \u0026amp;gt; num of pages, we should hide other dots\n children[i].classList.add('aplus-pagination-dot--display-none');\n } else if(children[i].classList.contains('aplus-pagination-dot--display-none')){\n \/\/ Reset display of dots if it was hidden before\n children[i].classList.remove('aplus-pagination-dot--display-none');\n }\n }\n }\n\n \n framework.onInit(carouselName, function (carousel) {\n var totalPages = carousel.getAttr('totalPages');\n syncPaginationDotsWithCarouselPages(totalPages);\n \/* Resize event handler to re-calculate the pagination dots count based on orientation *\/\n window.addEventListener('resize', function() {\n carousel.resize();\n totalPages = carousel.getAttr('totalPages');\n syncPaginationDotsWithCarouselPages(totalPages);\n });\n\n A.declarative(paginationAction, 'click keydown', function(event){\n var isClick = event.type === 'click';\n var isKeydown = event.type === 'keydown';\n var isEnter = isKeydown \u0026amp;amp;\u0026amp;amp; event.$event.keyCode === ENTER_KEY_CODE;\n var isEsc = isKeydown \u0026amp;amp;\u0026amp;amp; event.$event.keyCode === ESCAPE_KEY_CODE;\n if (isClick || isEnter) {\n var data = event.data;\n carousel.gotoPage(data.page);\n } else if (isEsc) {\n \/\/ force remove focus\n event.$target.blur()\n }\n });\n });\n });\n }\n });\n});\n\n\u003cbr\u003e","brand":"aulagaming","offers":[{"title":"Side Printed Black — Star Vector Switch","offer_id":67960725176363,"sku":"43519363088477","price":26.97,"currency_code":"USD","in_stock":true},{"title":"White\u0026 Blue — Star Vector Switch","offer_id":67960725209131,"sku":"43519363121245","price":26.97,"currency_code":"USD","in_stock":true},{"title":"Side Printed Pink — Flower Switch","offer_id":67960725241899,"sku":"43713115881565","price":26.97,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0807\/6296\/1963\/files\/d92a728dc30bc28a92fe686c18c48f64.webp?v=1792584785","url":"https:\/\/aulagamingbest.it.com\/products\/aula-s98-pro-mechanical-keyboard-with-knob-lcd-screen-aulagaming-aula-s98-pro-wireless-mechanical-keyboard","provider":"aulagamingbest.it.com","version":"1.0","type":"link"}