{"product_id":"gopro-hero12-black","title":"GoPro HERO12 Black","description":"\u003cdiv\u003e\u003ctable class=\"a-normal a-spacing-micro\"\u003e\u003ctbody\u003e\n\u003ctr class=\"a-spacing-small po-brand\"\u003e\n\u003ctd class=\"a-span3\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eBrand\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"a-span9\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eGoPro\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a-spacing-small po-connectivity_technology\"\u003e\n\u003ctd class=\"a-span3\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eConnectivity Technology\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"a-span9\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eWi-Fi, USB\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a-spacing-small po-color\"\u003e\n\u003ctd class=\"a-span3\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eColor\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"a-span9\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eBlack\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a-spacing-small po-special_feature\"\u003e\n\u003ctd class=\"a-span3\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eSpecial Feature\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"a-span9\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eWaterproof\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a-spacing-small po-display.size\"\u003e\n\u003ctd class=\"a-span3\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eScreen Size\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"a-span9\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003e2.27 Centimeters\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a-spacing-small po-photo_sensor.technology\"\u003e\n\u003ctd class=\"a-span3\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003ePhoto Sensor Technology\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"a-span9\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eCMOS\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a-spacing-small po-included_components\"\u003e\n\u003ctd class=\"a-span3\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eIncluded Components\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"a-span9\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eHERO12 Black, Enduro Battery, Curved Adhesive Mount, Mounting Buckle + Thumb Screw, USB-C Cable\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a-spacing-small po-video_capture_resolution\"\u003e\n\u003ctd class=\"a-span3\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eVideo Capture Resolution\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"a-span9\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003e5.3K\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a-spacing-small po-min_focal_length\"\u003e\n\u003ctd class=\"a-span3\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eMinimum Focal Length\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"a-span9\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003e15.1\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a-spacing-small po-lens.type\"\u003e\n\u003ctd class=\"a-span3\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eLens Type\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"a-span9\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eZoom\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/div\u003e\u003cbr\u003e\u003cul class=\"a-unordered-list a-vertical a-spacing-mini\"\u003e\n\u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e High Dynamic Range Video + Photo: HERO12 Black takes its best-in-class image quality to the next level with HDR for both videos (5.3K and 4K) and photos. Great in environments with both shadows and bright light, HDR captures the subtle details of the scene that might typically blend into the darkness of shadows or disappear in the bright spots of your shot. The result is dynamic footage with true-to-life color and precision. \u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e Unbelieveable Image Quality: With 5.3K video that gives you 91% more resolution than 4K and an incredible 665% more than 1080p, HERO12 Black captures the action with crisp detail and cinematic image quality with High Dynamic Range (HDR) while also taking 27MP photos. You can also grab stunning photos up to 24.7MP of your favorite shots from your videos using the GoPro Quik app. \u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e Emmy Award- Winning HyperSmooth 6.0 Stabilization: HyperSmooth continues to set the bar for insanely smooth footage and has the hardware to back it up—a 2021 Emmy for In-Camera Sensor and Software Stabilization. HERO12 Black makes it even better by maximizing HyperSmooth AutoBoost performance with more stabilization while still delivering less image cropping. Bike, skate, ski, chase your kids through the park or get awesome pet POV shots—even the shakiest footage comes out silky smooth. \u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e Rugged + Waterproof to 33ft (10m): Completely waterproof and as tough as ever, HERO12 Black is ready to capture the fun on any adventure. Its legendary durability can take a beating and keep going, whether you’re ripping through mud, snow or water (down to 33ft\/10m). A water-repelling lens cover even helps eliminate lens flare and other artifacts to make your photos and videos even more stunning. \u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e What's Included: HERO12 Black, Enduro Rechargeable Battery, Curved Adhesive Mount, Mounting Buckle + Thumb Screw, USB-C Cable \u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\u003cbr\u003e\u003ctable class=\"a-keyvalue prodDetTable\" id=\"productDetails_detailBullets_sections1\" role=\"presentation\"\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth class=\"a-color-secondary a-size-base prodDetSectionEntry\"\u003eProduct Dimensions\u003c\/th\u003e\n\u003ctd class=\"a-size-base prodDetAttrValue\"\u003e1.32 x 2.83 x 2 inches\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth class=\"a-color-secondary a-size-base prodDetSectionEntry\"\u003eItem Weight\u003c\/th\u003e\n\u003ctd class=\"a-size-base prodDetAttrValue\"\u003e12 ounces\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth class=\"a-color-secondary a-size-base prodDetSectionEntry\"\u003eASIN\u003c\/th\u003e\n\u003ctd class=\"a-size-base prodDetAttrValue\"\u003eB0CDDY8F9L\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth class=\"a-color-secondary a-size-base prodDetSectionEntry\"\u003eItem model number\u003c\/th\u003e\n\u003ctd class=\"a-size-base prodDetAttrValue\"\u003eCHDHX-121-CN\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth class=\"a-color-secondary a-size-base prodDetSectionEntry\"\u003eBatteries\u003c\/th\u003e\n\u003ctd class=\"a-size-base prodDetAttrValue\"\u003e1 Lithium Ion batteries required. (included)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth class=\"a-color-secondary a-size-base prodDetSectionEntry\"\u003eCustomer Reviews\u003c\/th\u003e\n\u003ctd class=\"a-size-base\"\u003e\n\u003cstyle type=\"text\/css\"\u003e    \/*     * Fix for UDP-1061. Average customer reviews has a small extra line on hover     * https:\/\/omni-grok.amazon.com\/xref\/src\/appgroup\/websiteTemplates\/retail\/SoftlinesDetailPageAssets\/udp-intl-lock\/src\/legacy.css?indexName=WebsiteTemplates#40    *\/    .noUnderline a:hover {         text-decoration: none;     }    .cm-cr-review-stars-spacing-big {        margin-top: 1px;    }\u003c\/style\u003e\n\u003cdiv data-asin=\"B0CDDY8F9L\" data-ref=\"dpx_acr_pop_\" id=\"averageCustomerReviews\"\u003e\n\u003cspan class=\"a-declarative\" data-acrstarslink-click-metrics=\"{}\" data-action=\"acrStarsLink-click-metrics\" data-csa-c-func-deps=\"aui-da-acrStarsLink-click-metrics\" data-csa-c-type=\"widget\"\u003e \u003cspan class=\"reviewCountTextLinkedHistogram noUnderline\" id=\"acrPopover\" title=\"4.4 out of 5 stars\"\u003e\u003cspan class=\"a-declarative\" data-a-popover='{\"max-width\":\"700\",\"closeButton\":\"false\",\"position\":\"triggerBottom\",\"url\":\"\/gp\/customer-reviews\/widgets\/average-customer-review\/popover\/ref=dpx_acr_pop_?contextId=dpx\u0026amp;asin=B0CDDY8F9L\"}' data-action=\"a-popover\" data-csa-c-func-deps=\"aui-da-a-popover\" data-csa-c-type=\"widget\"\u003e \u003c\/span\u003e \u003cspan class=\"a-letter-space\"\u003e\u003c\/span\u003e \u003c\/span\u003e\u003c\/span\u003e \u003cspan class=\"a-letter-space\"\u003e\u003c\/span\u003e \u003cspan class=\"a-declarative\" data-acrlink-click-metrics=\"{}\" data-action=\"acrLink-click-metrics\" data-csa-c-func-deps=\"aui-da-acrLink-click-metrics\" data-csa-c-type=\"widget\"\u003e \u003c\/span\u003e\u003cscript type=\"text\/javascript\"\u003e                                        var dpAcrHasRegisteredArcLinkClickAction;                    P.when('A', 'ready').execute(function(A) {                        if (dpAcrHasRegisteredArcLinkClickAction !== true) {                            dpAcrHasRegisteredArcLinkClickAction = true;                            A.declarative(                                'acrLink-click-metrics', 'click',                                { \"allowLinkDefault\": true },                                function (event) {                                    if (window.ue) {                                        ue.count(\"acrLinkClickCount\", (ue.count(\"acrLinkClickCount\") || 0) + 1);                                    }                                }                            );                        }                    });                \u003c\/script\u003e\u003cscript type=\"text\/javascript\"\u003e            P.when('A', 'cf').execute(function(A) {                A.declarative('acrStarsLink-click-metrics', 'click', { \"allowLinkDefault\" : true },  function(event){                    if(window.ue) {                        ue.count(\"acrStarsLinkWithPopoverClickCount\", (ue.count(\"acrStarsLinkWithPopoverClickCount\") || 0) + 1);                    }                });            });        \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cbr\u003e4.4 out of 5 stars\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth class=\"a-color-secondary a-size-base prodDetSectionEntry\"\u003eBest Sellers Rank\u003c\/th\u003e\n\u003ctd\u003e\u003cspan\u003e \u003cspan\u003e#718 in Electronics ()\u003c\/span\u003e \u003cbr\u003e\u003cspan\u003e#3 in \u003c\/span\u003e \u003cbr\u003e\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth class=\"a-color-secondary a-size-base prodDetSectionEntry\"\u003eDate First Available\u003c\/th\u003e\n\u003ctd class=\"a-size-base prodDetAttrValue\"\u003eSeptember 6, 2023\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth class=\"a-color-secondary a-size-base prodDetSectionEntry\"\u003eManufacturer\u003c\/th\u003e\n\u003ctd class=\"a-size-base prodDetAttrValue\"\u003eGoPro\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth class=\"a-color-secondary a-size-base prodDetSectionEntry\"\u003eCountry of Origin\u003c\/th\u003e\n\u003ctd class=\"a-size-base prodDetAttrValue\"\u003eChina\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003cbr\u003e\u003cdiv cel_widget_id=\"aplus\" class=\"aplus-v2 desktop celwidget\"\u003e\n\u003cstyle type=\"text\/css\"\u003e\/** * Premium modules global styles *\/.aplus-v2.desktop {  max-width: 1464px;  min-width: 800px;  margin-left: auto;  margin-right: auto;  word-wrap: break-word;  overflow-wrap: break-word;  word-break: break-word;}\/* Undo this for tech-specs because it breaks table layout *\/.aplus-v2.desktop .premium-aplus .aplus-tech-spec-table { word-break: initial; }.aplus-v2 .premium-aplus,.aplus-v2 .premium-aplus .aplus-h1,.aplus-v2 .premium-aplus .aplus-h2,.aplus-v2 .premium-aplus .aplus-p1,.aplus-v2 .premium-aplus .aplus-p2,.aplus-v2 .premium-aplus .aplus-p3,.aplus-v2 .premium-aplus .aplus-accent1,.aplus-v2 .premium-aplus .aplus-accent2{ font-family: Arial, sans-serif; }.aplus-v2 .premium-aplus,.aplus-v2 .premium-aplus .aplus-h1,.aplus-v2 .premium-aplus .aplus-h2,.aplus-v2 .premium-aplus .aplus-p1,.aplus-v2 .premium-aplus .aplus-p2,.aplus-v2 .premium-aplus .aplus-p3,.aplus-v2 .premium-aplus .aplus-accent1,.aplus-v2 .premium-aplus .aplus-accent2{ font-family: inherit; }\/* type *\/.aplus-v2 .premium-aplus .aplus-h1 { font-size: 32px; line-height: 1.2em; font-weight: 500; }.aplus-v2 .premium-aplus .aplus-h2 { font-size: 26px; line-height: 1.25em; font-weight: 500; }.aplus-v2 .premium-aplus .aplus-h3 { font-size: 18px; line-height: 1.25em; font-weight: 500; }.aplus-v2 .premium-aplus .aplus-p1 { font-size: 20px; line-height: 1.3em; font-weight: 300; }.aplus-v2 .premium-aplus .aplus-p2 { font-size: 16px; line-height: 1.4em; font-weight: 300; }.aplus-v2 .premium-aplus .aplus-p3 { font-size: 14px; line-height: 1.4em; font-weight: 300; }.aplus-v2 .premium-aplus .aplus-accent1 { font-size: 16px; line-height: 1.4em; font-weight: 600; }.aplus-v2 .premium-aplus .aplus-accent2 { font-size: 14px; line-height: 1.4em; font-weight: 600; }\/* spacing *\/.aplus-v2 .aplus-container-1 { padding: 40px; }.aplus-v2 .aplus-container-1-2 { padding: 40px 80px; }.aplus-v2 .aplus-container-2 { padding: 80px; }.aplus-v2 .aplus-container-3 { padding: 40px 0; }\/* Display *\/.aplus-v2 .premium-aplus .aplus-display-table { display: table; }.aplus-v2 .premium-aplus .aplus-display-table-cell { display: table-cell; }.aplus-v2 .premium-aplus .aplus-display-inline-block { display: inline-block; }\/* Aplus display table with min-width 1000px and fill remaining space inside parent *\/.aplus-v2.desktop .premium-aplus .aplus-display-table-width { min-width: 1000px; width: 100% }\/*** Padding and margin for element should be 10, 20, 40, or 80 px. Considering mini 10, small 20, medium 40, large 80.*\/\u003c\/style\u003e\n\u003cstyle type=\"text\/css\"\u003e\/** * Premium-module 12: Nav Carousel *\/.aplus-v2 .premium-aplus-module-12 .aplus-carousel-card {    position: relative;    width: 100%;}.aplus-v2 .premium-aplus-module-12 .aplus-carousel-container {    position: relative;}.aplus-v2 .premium-aplus-module-12 .aplus-image-carousel-container {    \/* Match the aspect ratio of the desktop image uploaded via the editor (1464px x 600px) *\/    padding-top: calc(600 \/ 1464 * 100%); \/* ~40.983% *\/    height: 0;}.aplus-v2 .premium-aplus-module-12 .aplus-image-carousel-container \u003e div {    position: absolute;    width: 100%;    height: 100%;    top: 0;    left: 0;}\/* Override AUI styles. It poorly attempts to measure the slide heights before waiting until images load. *\/.aplus-v2 .premium-aplus-module-12 .a-carousel-viewport {    height: 100% !important;}.aplus-v2 .premium-aplus-module-12 .aplus-card-image img {    width: 100%;    height: auto;}.aplus-v2 .premium-aplus-module-12 .aplus-card-details-wrapper {    position: absolute;    top: 0;    width: 50%;    height: 100%;}.aplus-v2 .premium-aplus-module-12 .aplus-card-detail {    display: table;    width: 100%;    height: 100%}.aplus-v2 .premium-aplus-module-12 .card-description {    text-align: left;}html[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-12 .card-description {    text-align: right;}.aplus-v2 .premium-aplus-module-12 .aplus-table-cell {    display: table-cell;    vertical-align: middle;}.aplus-v2 .premium-aplus-module-12 .aplus-text-background {    padding: 20px;}.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color {    background: rgba(0, 0, 0, 0.5);}.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color,.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color h1,.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color h5,.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color ol,.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color ul,.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color ol .a-list-item,.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color ul .a-list-item {    color: #fff;}.aplus-v2 .premium-aplus-module-12 .description {    padding-top: 20px;}\/* nav *\/.aplus-v2 .premium-aplus-module-12 .aplus-carousel-actions {    position: absolute;    top: 20px;    width: 100%;    text-align: center;}.aplus-v2 .premium-aplus-module-12 .aplus-goto-btn {    display: inline-block;    margin: 7px 10px;    cursor: pointer;    border-radius: 30px;    border: 2px solid #000;    line-height: 2.5em;    min-width: 200px;    background-color: #fff;    white-space: nowrap;    color: #000;}.aplus-v2 .premium-aplus-module-12 .aplus-carousel-index {    display: none;}.aplus-v2 .premium-aplus-module-12 .aplus-goto-btn.aplus-active {    border-color: #fff;    background-color: #000;    color: #fff;}\/** * Regimen template specific css *\/.aplus-v2 .premium-aplus-module-12 .aplus-goto-btn.regimen {    text-align: left;}html[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-12 .aplus-goto-btn.regimen {    text-align: right;}.aplus-v2 .premium-aplus-module-12 .aplus-carousel-actions.regimen {    text-align: right;    top: 50%;    width: 250px;    right: 75px;    -webkit-transform: translateY(-50%);    -moz-transform: translateY(-50%);    -o-transform: translateY(-50%);    transform: translateY(-50%);}html[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-12 .aplus-carousel-actions.regimen {    text-align: left;    top: 50%;    left: 75px;    right: auto;}.aplus-v2 .premium-aplus-module-12 .aplus-goto-btn.regimen {    display: inline-block;    margin: 10px 10px;    cursor: pointer;    border-radius: 30px;    border: 2px solid #000;    line-height: 2.5em;    width: 220px;    background-color: #fff;    white-space: nowrap;}.aplus-v2 .premium-aplus-module-12 .aplus-goto-btn.regimen.aplus-active {    border-color: #fff;    background-color: #000;    color: #fff;}.aplus-v2 .premium-aplus-module-12 .aplus-carousel-actions .regimen .aplus-carousel-index {    display: inline-block;    margin-left: 6px;    width: 16px;    line-height: 26px;    color: #000;    text-align: center;}html[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-12 .aplus-carousel-actions .regimen .aplus-carousel-index {    margin-left: 0px;    margin-right: 6px;}.aplus-v2 .premium-aplus-module-12 .aplus-goto-btn.regimen.aplus-active .aplus-carousel-index {    color: #fff;}.aplus-v2 .premium-aplus-module-12 .aplus-headline-top.regimen {    position: absolute;    top: 0;    left: 0;    width: 100%;    background-color: #000;    opacity: 0.5;    text-align: center;}.aplus-v2 .premium-aplus-module-12 .aplus-headline-top.regimen .aplus-headline {    color: #fff;    line-height: 2em;}\/** * Navigation template specific css *\/.aplus-v2 .premium-aplus-module-12--top-nav .aplus-carousel-actions {    background-color: rgba(0, 0, 0, 0.8);    top: 0px;}.aplus-v2 .premium-aplus-module-12--top-nav .aplus-goto-btn {    padding: 8px;    color: #fff;    background-color: transparent;    border: none;}.aplus-v2 .premium-aplus-module-12--top-nav .aplus-goto-btn.aplus-active {    text-decoration: underline;    text-underline-offset: 0.8em;    text-decoration-thickness: 3px;    background-color: transparent;    border: none;}\u003c\/style\u003e\n\u003cstyle type=\"text\/css\"\u003e\/** * Premium-module 8: Hero Video module *\/.aplus-v2 .premium-aplus-module-8 .premium-aplus-module-8-video {    position: relative;    width: 100%;}.aplus-v2 .premium-aplus-module-8 .video-placeholder {    padding-bottom: 40.984%; \/* Video or image required size 1464 : 600 = 40.9836 *\/}.aplus-v2 .premium-aplus-module-8 .video-container {    position: absolute;    top: 0;    width: 100%;    height: 100%;}\/*Override the default VSE video player size*\/.aplus-v2 .premium-aplus-module-8 .video-js.vjs-fluid {    padding: 0;}\u003c\/style\u003e\n\u003cscript type=\"text\/javascript\"\u003e(function(f) {var _np=(window.P._namespace(\"PremiumAplusModule\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {P.now('premium-module-12-nav-carousel').execute(function(init) {    if (init) {        return;    }    P.register('premium-module-12-nav-carousel', function(){        return function() {            P.when('A', 'jQuery', 'a-carousel-framework', 'ready').execute(function (A, $, framework) {                function initiateCarousel(module) {                    var MODULE_ID = $(module).data('module-id');                    \/**                    * Carousel button element classname                    * @const                    *\/                    var GOTO_BTN_CLASS_NAME = \"aplus-goto-btn-\" + MODULE_ID;                    \/**                    * Carousel button element active classname                    * @const                    *\/                    var GOTO_BTN_ACTIVE_CLASS_NAME = \"aplus-active\";                    \/**                    * AUI name for aui carousel                    * @const                    *\/                    var CAROUSEL_NAME = \"premium-aplus-12-carousel-\" + MODULE_ID;                    \/**                    * Module class name                    * @const                    *\/                    var MODULE_CLASS_NAME = \".aplus-v2 .premium-aplus-module-12\";                    \/**                    * Carousel text container class name                    * @const                    *\/                    var TEXT_CONTAINER_CLASS_NAME = MODULE_CLASS_NAME + \" .aplus-carousel-text-container-\" + MODULE_ID;                    \/**                    * Carousel text hidden class name                    * @const                    *\/                    var TEXT_CONTAINER_HIDDEN = \"aplus-hidden\";                    \/**                    * Carousel horizontal scroll container class name                    * @const                    *\/                    var HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME = MODULE_CLASS_NAME + \" .aplus-horizontal-scroll-container-\" + MODULE_ID;                    function showCarouselText(oldIndex, newIndex) {                        var oldClass = TEXT_CONTAINER_CLASS_NAME + \"-\" + oldIndex;                        var newClass= TEXT_CONTAINER_CLASS_NAME + \"-\" + newIndex;                        $(oldClass).addClass(TEXT_CONTAINER_HIDDEN);                        $(newClass).removeClass(TEXT_CONTAINER_HIDDEN);                    }                    function scrollToCarouselButton(scrollLeft) {                        if ($(HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME).length) {                            $(HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME).animate({scrollLeft}, 200);                        }                    }                    \/**                    * Creates a CarouselButton class for provided carousel instance                    * @param {object} carousel - AUI Carousel instance                    * @returns {Class} - CarouselButton Class                    *\/                    function CarouselButtonTemplate(carousel) {                        \/**                        * Button for controlling the active slide                        * @constructor                        * @param {number} index - slide index                        * @param {DOMElement} [elem] - optional DOM element to use as this objects DOM representation                        *\/                        function CarouselButton(index, elem) {                            var self = this;                            this.index = index;                            this.carousel = carousel;                            \/* create the button element *\/                            this.elem = this.getElem(elem);                            this.$elem = $(this.elem);  \/* store jquery version *\/                            this.elem.addEventListener('click', self.handleClick.bind(self));                            \/* add this object to the object manager *\/                            CarouselButton.objects.byId[index] = this;                            CarouselButton.objects.all.push(this);                        }                        \/**                        * Describe behavior for click events on this.elem                        * @memberOf CarouselButton                        *\/                        CarouselButton.prototype.handleClick = function(e) {                            e.preventDefault();                            this.carousel.gotoPage(this.index);                        };                        \/**                        * Enter active state                        * @memberOf CarouselButton                        *\/                        CarouselButton.prototype.activate = function() {                            this.$elem.addClass(GOTO_BTN_ACTIVE_CLASS_NAME);                        };                        \/**                        * Enter inactive state                        * @memberOf CarouselButton                        *\/                        CarouselButton.prototype.deactivate = function() {                            this.$elem.removeClass(GOTO_BTN_ACTIVE_CLASS_NAME);                        };                        \/**                        * Returns an existing or creates a new bound element for this object                        * @memberOf CarouselButton                        * @param {DOMElement} [elem] - optionally provide an existing element in the DOM to use                        * @returns {DOMElement} - this objects DOM representation                        *\/                        CarouselButton.prototype.getElem = function(elem) {                            if (this.elem) return this.elem;                            if (elem) return elem;                            var createdElem = document.createElement('span');                            createdElem.className = GOTO_BTN_CLASS_NAME;                            return createdElem;                        };                        \/** @const Object manager *\/                        CarouselButton.objects = {                            byId: {},                            all: [],                        };                        return CarouselButton;                    }                    framework.onInit(CAROUSEL_NAME, function(carousel) {                        \/** @const {Class} *\/                        var CarouselButton = CarouselButtonTemplate(carousel);                        \/* create carousel controls *\/                        var $carouselBtns = $(safeClassSelector(GOTO_BTN_CLASS_NAME));                        var btns = $carouselBtns.map(function(i, btnElem) {                            return new CarouselButton(i + 1, btnElem);                        });                        \/* activate first one *\/                        CarouselButton.objects.byId[1].activate();                        \/* Listen to slide changes *\/                        A.on(\"a:carousel:\" + CAROUSEL_NAME + \":change:pageNumber\", function (data) {                            var newCarouselButton = CarouselButton.objects.byId[data.newValue];                            var marginLeft = parseInt(getComputedStyle(newCarouselButton.elem).getPropertyValue('margin-left'));                            var positionLeft = newCarouselButton.elem.offsetLeft - marginLeft;                            newCarouselButton.activate();                            CarouselButton.objects.byId[data.oldValue].deactivate();                            scrollToCarouselButton(positionLeft);                            showCarouselText(data.oldValue, data.newValue);                        });                    });                    \/**                    * @returns {string} - css classname prefixed with module selector                    *\/                    function safeClassSelector(className) {                        return '.' + MODULE_CLASS_NAME + ' .' + className;                    }                }                $('.aplus-v2 .premium-aplus-module-12 .aplus-carousel-container').each(function (index, module) {                    initiateCarousel(module);                });                framework.createAll();                framework.initializeAll();            });        }    })});}));\u003c\/script\u003e\u003cdiv cel_widget_id=\"aplus-premium-module-12-nav-carousel\" class=\"celwidget aplus-module premium-module-12-nav-carousel aplus-premium\"\u003e\u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-12 premium-aplus-module-12--top-nav\"\u003e\u003cdiv class=\"a-section a-spacing-none aplus-carousel-container\" data-module-id=\"1\"\u003e\u003cdiv class=\"a-begin a-carousel-container a-carousel-static a-carousel-display-single a-carousel-transition-slideCircular aplus-image-carousel-container\" data-a-carousel-options='{\"peek_percentage\":0,\"minimum_gutter_width\":0,\"show_partial_next\":false,\"name\":\"premium-aplus-12-carousel-1\"}' data-a-display-strategy=\"single\" data-a-transition-strategy=\"slideCircular\" id=\"premium-aplus-12-carousel-1-id\"\u003e\u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons a-carousel-overlay-buttons a-carousel-rounded-buttons\"\u003e\u003cdiv class=\"a-carousel-row-inner\"\u003e\u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\u003cdiv class=\"a-carousel-viewport\"\u003e\u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003c\/div\u003e","brand":"mysite","offers":[{"title":"HERO12 Black","offer_id":54766358856052,"sku":"B0CDDY8F9L","price":45.11,"currency_code":"CAD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1001\/1800\/4084\/files\/13d386de8441834097bad779a50060840e1cc3c767fab73dc1b04a28034e43cb.jpg?v=1780979380","url":"https:\/\/tarazbank.com\/products\/gopro-hero12-black","provider":"kuecher","version":"1.0","type":"link"}