<input type="hidden" id="detailslinkfield" value="/en-us/shops/search/*/?ItemId=">
<input type="hidden" id="noshopsfoundfield" value="No stores found">
<input type="hidden" id="visitwebsite" value="Visit website">
<input type="hidden" id="moredetails" value="More details">
<input type="hidden" id="mapsBaseUrl" value="https://maps.googleapis.com/maps/api/js">
<input type="hidden" id="geoCoderKey" value="AIzaSyCNAqOpdabBGRMJ2wUgbZEWYcOsiko97bo">

<section class="store-map list-is-hidden">
    <span id="store-map" class="store-map__anchor"></span>

    <header class="store-map__header">
        <div class="store-map__heading">
            <div>
                <span class="store-map__count">10</span> shops nearby <strong class="store-map__area">Antwerp</strong>
            </div>
        </div>

        <div class="store-map__switch">
            <a href="#store-map" class="store-map__switch__item is-active" data-switch=".store-map__map">Map view</a>
            <a href="#store-map" class="store-map__switch__item" data-switch=".store-map__list">List view</a>
        </div>
    </header>

    <main class="store-map__main">
        <div class="store-map__list">
            <section class="store-list">
                <nav class="store-list__content">
                    <ul class="store-list__list">
                        <li class="store-list__item">
                            <article class="snippet-d">
                                <header class="snippet-d__header">
                                    <h3 class="snippet-d__heading">Store name</h3>

                                    <span class="caption">5km</span>
                                </header>

                                <div class="snippet-d__main caption">Streetname lorem xx,<br>2000 Antwerpen</div>

                                <a href="#detail" class="snippet-d__link"></a>

                                <div class="snippet-d__actions actions actions--split actions--force caption">
                                    <div class="actions__item">
                                        <div class="snippet-d__action">
                                            <a href="#website" class="link link--underlined">
                                                <span class="link__label">Visit website</span>
                                            </a>

                                        </div>
                                    </div>

                                    <div class="actions__item">
                                        <div class="snippet-d__action">
                                            <a href="#more details" class="link link--underlined">
                                                <span class="link__label">More details</span>
                                            </a>

                                        </div>
                                    </div>
                                </div>
                            </article>

                        </li>
                        <li class="store-list__item">
                            <article class="snippet-d">
                                <header class="snippet-d__header">
                                    <h3 class="snippet-d__heading">Store name</h3>

                                    <span class="caption">5km</span>
                                </header>

                                <div class="snippet-d__main caption">Streetname lorem xx,<br>2000 Antwerpen</div>

                                <a href="#detail" class="snippet-d__link"></a>

                                <div class="snippet-d__actions actions actions--split actions--force caption">
                                    <div class="actions__item">
                                        <div class="snippet-d__action">
                                            <a href="#website" class="link link--underlined">
                                                <span class="link__label">Visit website</span>
                                            </a>

                                        </div>
                                    </div>

                                    <div class="actions__item">
                                        <div class="snippet-d__action">
                                            <a href="#more details" class="link link--underlined">
                                                <span class="link__label">More details</span>
                                            </a>

                                        </div>
                                    </div>
                                </div>
                            </article>

                        </li>
                        <li class="store-list__item">
                            <article class="snippet-d">
                                <header class="snippet-d__header">
                                    <h3 class="snippet-d__heading">Store name</h3>

                                    <span class="caption">5km</span>
                                </header>

                                <div class="snippet-d__main caption">Streetname lorem xx,<br>2000 Antwerpen</div>

                                <a href="#detail" class="snippet-d__link"></a>

                                <div class="snippet-d__actions actions actions--split actions--force caption">
                                    <div class="actions__item">
                                        <div class="snippet-d__action">
                                            <a href="#website" class="link link--underlined">
                                                <span class="link__label">Visit website</span>
                                            </a>

                                        </div>
                                    </div>

                                    <div class="actions__item">
                                        <div class="snippet-d__action">
                                            <a href="#more details" class="link link--underlined">
                                                <span class="link__label">More details</span>
                                            </a>

                                        </div>
                                    </div>
                                </div>
                            </article>

                        </li>
                        <li class="store-list__item">
                            <article class="snippet-d">
                                <header class="snippet-d__header">
                                    <h3 class="snippet-d__heading">Store name</h3>

                                    <span class="caption">5km</span>
                                </header>

                                <div class="snippet-d__main caption">Streetname lorem xx,<br>2000 Antwerpen</div>

                                <a href="#detail" class="snippet-d__link"></a>

                                <div class="snippet-d__actions actions actions--split actions--force caption">
                                    <div class="actions__item">
                                        <div class="snippet-d__action">
                                            <a href="#website" class="link link--underlined">
                                                <span class="link__label">Visit website</span>
                                            </a>

                                        </div>
                                    </div>

                                    <div class="actions__item">
                                        <div class="snippet-d__action">
                                            <a href="#more details" class="link link--underlined">
                                                <span class="link__label">More details</span>
                                            </a>

                                        </div>
                                    </div>
                                </div>
                            </article>

                        </li>
                        <li class="store-list__item">
                            <article class="snippet-d">
                                <header class="snippet-d__header">
                                    <h3 class="snippet-d__heading">Store name</h3>

                                    <span class="caption">5km</span>
                                </header>

                                <div class="snippet-d__main caption">Streetname lorem xx,<br>2000 Antwerpen</div>

                                <a href="#detail" class="snippet-d__link"></a>

                                <div class="snippet-d__actions actions actions--split actions--force caption">
                                    <div class="actions__item">
                                        <div class="snippet-d__action">
                                            <a href="#website" class="link link--underlined">
                                                <span class="link__label">Visit website</span>
                                            </a>

                                        </div>
                                    </div>

                                    <div class="actions__item">
                                        <div class="snippet-d__action">
                                            <a href="#more details" class="link link--underlined">
                                                <span class="link__label">More details</span>
                                            </a>

                                        </div>
                                    </div>
                                </div>
                            </article>

                        </li>
                        <li class="store-list__item">
                            <article class="snippet-d">
                                <header class="snippet-d__header">
                                    <h3 class="snippet-d__heading">Store name</h3>

                                    <span class="caption">5km</span>
                                </header>

                                <div class="snippet-d__main caption">Streetname lorem xx,<br>2000 Antwerpen</div>

                                <a href="#detail" class="snippet-d__link"></a>

                                <div class="snippet-d__actions actions actions--split actions--force caption">
                                    <div class="actions__item">
                                        <div class="snippet-d__action">
                                            <a href="#website" class="link link--underlined">
                                                <span class="link__label">Visit website</span>
                                            </a>

                                        </div>
                                    </div>

                                    <div class="actions__item">
                                        <div class="snippet-d__action">
                                            <a href="#more details" class="link link--underlined">
                                                <span class="link__label">More details</span>
                                            </a>

                                        </div>
                                    </div>
                                </div>
                            </article>

                        </li>
                        <li class="store-list__item">
                            <article class="snippet-d">
                                <header class="snippet-d__header">
                                    <h3 class="snippet-d__heading">Store name</h3>

                                    <span class="caption">5km</span>
                                </header>

                                <div class="snippet-d__main caption">Streetname lorem xx,<br>2000 Antwerpen</div>

                                <a href="#detail" class="snippet-d__link"></a>

                                <div class="snippet-d__actions actions actions--split actions--force caption">
                                    <div class="actions__item">
                                        <div class="snippet-d__action">
                                            <a href="#website" class="link link--underlined">
                                                <span class="link__label">Visit website</span>
                                            </a>

                                        </div>
                                    </div>

                                    <div class="actions__item">
                                        <div class="snippet-d__action">
                                            <a href="#more details" class="link link--underlined">
                                                <span class="link__label">More details</span>
                                            </a>

                                        </div>
                                    </div>
                                </div>
                            </article>

                        </li>
                    </ul>
                </nav>
            </section>

        </div>

        <div class="store-map__map view-is-active">
            <div id="store-map__map">
                The map will be printed here ...
            </div>
        </div>
    </main>

    <div class="store-map__actions">
        <div class="actions actions--start actions--force">
            <div class="actions__item">

                <a href="#" class="action action--ghost action--on-light">
                    <span class="action__label">Show all shops worldwide</span>
                    <span class="action__bg"></span>
                </a>

            </div>
        </div>
    </div>
</section>
<input type="hidden" id="detailslinkfield" value="/en-us/shops/search/*/?ItemId=">
<input type="hidden" id="noshopsfoundfield" value="No stores found">
<input type="hidden" id="visitwebsite" value="Visit website">
<input type="hidden" id="moredetails" value="More details">
<input type="hidden" id="mapsBaseUrl" value="https://maps.googleapis.com/maps/api/js">
{{!-- <input type="hidden" id="geoCoderKey" value="AIzaSyC8PJLfqrmzezWxQGp-N5uYBRYN2yQehLY"> --}}
<input type="hidden" id="geoCoderKey" value="AIzaSyCNAqOpdabBGRMJ2wUgbZEWYcOsiko97bo">

<section class="store-map list-is-hidden">
  <span id="store-map" class="store-map__anchor"></span>

  <header class="store-map__header">
    <div class="store-map__heading">
      <div>
        <span class="store-map__count">10</span> shops nearby <strong class="store-map__area">Antwerp</strong>
      </div>
    </div>

    <div class="store-map__switch">
      <a href="#store-map" class="store-map__switch__item is-active" data-switch=".store-map__map">Map view</a>
      <a href="#store-map" class="store-map__switch__item" data-switch=".store-map__list">List view</a>
    </div>
  </header>

  <main class="store-map__main">
    <div class="store-map__list">
      {{render '@store-list'}}
    </div>

    <div class="store-map__map view-is-active">
      <div id="store-map__map">
        The map will be printed here ...
      </div>
    </div>
  </main>

  <div class="store-map__actions">
    <div class="actions actions--start actions--force">
      <div class="actions__item">
        {{render '@action' action}}
      </div>
    </div>
  </div>
</section>
action:
  type: ghost
  tint: on-light
  url: '#'
  label: Show all shops worldwide
  • Content:
    const STOREMAP = ((w, d, trans, undefined) => {
    
      'use strict';
    
      let infowindow = null;
      let domain = w.location.host.indexOf('pioneerdj.com') !== -1 ? '': 'https://test1.pioneerdj.com';
    
      const general = {
        s: {
          selectors: {
            theWrap: '.store-map',
            theOverlay: '.store-map__overlay',
            theDetailsLink: '#detailslinkfield',
            theMapsBaseUrl: '#mapsBaseUrl',
            theGeoCoderKey: '#geoCoderKey',
            theCountryOnLoad: '#countryOnLoad',
            theCityOnLoad: '#cityOnLoad',
            theNoShopsFound: '#noshopsfoundfield',
            theVisitWebsite: '#visitwebsite',
            theMoreDetails: '#moredetails',
          },
          classes: {
            theOverlay: 'store-map__overlay',
            isSearchingShops: 'is-searching-shops',
          },
          mapsAPI: {
            baseUrl: 'https://maps.googleapis.com/maps/api/js',
            key: 'AIzaSyCNAqOpdabBGRMJ2wUgbZEWYcOsiko97bo',
            // key: 'AIzaSyAlzjwXom9Nn69PKd4IPs9XvuHQshb5-Mc',
            callback: 'STOREMAP.build',
            libraries: 'places'
          },
          shopsAPI: {
            domain: '',
            baseUrl: '/api/StoreLocator/',
            params: {},
          },
        },
        els: {},
        init: async () => {
          general.els.theWrap = d.querySelector(general.s.selectors.theWrap);
          general.els.theMapsBaseUrl = d.querySelector(general.s.selectors.theMapsBaseUrl);
          general.els.theGeoCoderKey = d.querySelector(general.s.selectors.theGeoCoderKey);
          general.els.theDetailsLink = d.querySelector(general.s.selectors.theDetailsLink);
          general.els.theCountryOnLoad = d.querySelector(general.s.selectors.theCountryOnLoad);
          general.els.theCityOnLoad = d.querySelector(general.s.selectors.theCityOnLoad);
          general.els.theNoShopsFound = d.querySelector(general.s.selectors.theNoShopsFound);
          general.els.theVisitWebsite = d.querySelector(general.s.selectors.theVisitWebsite);
          general.els.theMoreDetails = d.querySelector(general.s.selectors.theMoreDetails);
    
          if (!general.els.theMapsBaseUrl && !general.els.theGeoCoderKey) {
            return;
          }
    
          general.overlay.add();
    
          general.s.mapsAPI.baseUrl = general.els.theMapsBaseUrl.value;
          general.s.mapsAPI.key = general.els.theGeoCoderKey.value;
    
          general.setLanguage();
          general.addScript();
        },
        onLoad: async () => {
          filter.init();
          list.init();
    
          const locale = await general.setLocation();
    
          filter.setSearchValue();
    
          const shops = await general.getShops().catch((error) => console.error(error));
    
          map.init();
          map.build();
          list.build();
          list.show();
        },
        addScript: () => {
          let script;
    
          script = d.createElement('script');
          script.setAttribute('async', true);
          script.setAttribute('defer', true);
          script.src = `${general.s.mapsAPI.baseUrl}?key=${general.s.mapsAPI.key}&callback=${general.s.mapsAPI.callback}&language=${map.options.language}&libraries=${general.s.mapsAPI.libraries}`;
    
          d.getElementsByTagName('head')[0].appendChild(script);
        },
        checkHash: () => {
          if (!w.location.hash) { return false; }
    
          const params = w.location.hash.substring(1).split('|');
    
          map.options.country = params[0] ? decodeURIComponent(params[0]) : '';
          map.options.city = params[1] ? decodeURIComponent(params[1]) : '';
          map.options.center.lat = params[2] ? decodeURIComponent(params[2]) : '';
          map.options.center.lng = params[3] ? decodeURIComponent(params[3]) : '';
          filter.selected.category = params[4] ? decodeURIComponent(params[4]) : '';
          filter.selected.product = params[5] ? decodeURIComponent(params[5]) : '';
    
          // general.els.theCountryOnLoad.value = map.options.country;
          // general.els.theCityOnLoad.value = map.options.city;
        },
        setLanguage: () => {
          let localeArray;
    
          if (!d.documentElement.lang) { return; }
    
          localeArray = d.documentElement.lang.split('-');
    
          map.options.language = localeArray[0];
        },
        setLocation: async () => {
          if (general.checkHash()) {
            return map.options;
          }
    
          const initialLocation = await general.getInitialCountry();
    
          map.options.country = initialLocation.Country || 'United Kingdom';
          map.options.city = initialLocation.City || 'London';
          map.options.center.lat = parseFloat(initialLocation.Latitude) || 51.5285582;
          map.options.center.lng = parseFloat(initialLocation.Longitude) || -0.2416793;
    
          // general.els.theCountryOnLoad.value = initialLocation.Country;
          // general.els.theCityOnLoad.value = initialLocation.City;
    
          return map.options;
        },
        getCountryName: (addressComponents) => {
          if (!addressComponents) { return; }
    
          let countryName = '';
    
          addressComponents.forEach((component) => {
            if (component.types[0] === 'country' || component.types[0] === 'political') {
              countryName = component.long_name;
            }
          });
    
          return countryName;
        },
        getCityName: (addressComponents) => {
          if (!addressComponents) { return; }
    
          let cityName = '';
    
          addressComponents.forEach((component) => {
            if (component.types[0] === 'locality') {
              cityName = component.long_name;
            }
          });
    
          return cityName;
        },
        getInitialCountry: () => new Promise((resolve, reject) => {
          const locationUrl = `${domain}/api/location/`;
    
          fetch(locationUrl, {
            method: 'POST',
          })
          .then(response => response.json())
          .then(response => resolve(response))
          .catch(() => resolve({}));
        }),
        getShops: () => new Promise((resolve, reject) => {
          if (!filter.els.searchInput.value) {
            filter.els.searchInput.reportValidity();
            reject();
            return;
          }
    
          const params = {
            latitude: map.options.center.lat,
            longitude: map.options.center.lng,
            country: map.options.country,
            productcategory: filter.selected.category || '',
            productitem: filter.selected.product || '',
          };
    
          const query = new URLSearchParams(params);
    
          general.overlay.show();
    
          fetch(domain + general.s.shopsAPI.baseUrl + '?' + query.toString(), {
            method: 'POST',
          })
          .then(response => response.json())
          .then(response => {
            map.shops = response;
    
            general.overlay.hide();
            map.canDrag = true;
    
            resolve(response);
          })
          .catch((e) => {
            reject();
          });
        }),
        getShopCityName: (shop) => {
          if (!shop) { return; }
    
          const shopCityName = shop.StoreName + '-' + shop.City;
    
          return shopCityName.replace(/\s+/g, '-');
        },
        getDetailLink: (shop) => {
          if (!shop) { return; }
    
          let storePathArray = shop.StorePath.toLowerCase().split('/shops/');
          let storePath = storePathArray[1];
          let link = general.els.theDetailsLink ? general.els.theDetailsLink.value : '';
          link = link.replace('*', storePath);
    
          link += `${shop.Location_ID}#${map.options.country}|${map.options.city}|${map.options.center.lat}|${map.options.center.lng}${filter.selected.category ? '|' + filter.selected.category : ''}${filter.selected.product ? '|' + filter.selected.product : ''}`;
    
          return link;
        },
        overlay: {
          el: null,
          add: () => {
            const theOverlay = d.createElement('div');
            const styles = 'position: absolute; top: 0; left: 0; z-index: 3; display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; opacity: 0; pointer-events: none; background-color: rgba(255,255,255, .5);';
    
            theOverlay.setAttribute('style', styles);
            theOverlay.setAttribute('class', general.s.classes.theOverlay);
    
            theOverlay.innerHTML = '<img style="display: block; flex: 0 0 auto; margin: 0;" src="data:image/gif;base64,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"/>';
    
            general.overlay.el = general.els.theWrap.appendChild(theOverlay);
          },
          show: () => {
            general.overlay.el.style.opacity = 1,
            general.overlay.el.style.pointerEvents = 'all';
    
            d.body.classList.add(general.s.classes.isSearchingShops);
          },
          hide: () => {
            general.overlay.el.style.opacity = 0,
            general.overlay.el.style.pointerEvents = 'none';
    
            d.body.classList.remove(general.s.classes.isSearchingShops);
          },
        },
      };
    
      const filter = {
        s: {
          selectors: {
            theForm: '.store-search__form',
            theSubmit: '.store-search__form .action',
            searchInput: '.store-search__input',
            myLocationTrigger: '.store-search__link .link',
            theProductsCategory: '.store-filter__categories',
            theProducts: '.store-filter__products',
          },
          classes: {
            locationIsBlocked: 'location-is-blocked',
          },
          api: {
            domain: '',
            url: '/api/StoreLocator/GetProductListOfStores/',
          }
        },
        autocomplete: {},
        els: {},
        products: {},
        selected: {
          category: '',
          product: '',
        },
        init: () => {
          filter.els.theForm = d.querySelector(filter.s.selectors.theForm);
          filter.els.theSubmit = d.querySelector(filter.s.selectors.theSubmit);
          filter.els.searchInput = d.querySelector(filter.s.selectors.searchInput);
          filter.els.myLocationTrigger = d.querySelector(filter.s.selectors.myLocationTrigger);
          filter.els.theProductsCategory = d.querySelector(filter.s.selectors.theProductsCategory);
          filter.els.theProducts = d.querySelector(filter.s.selectors.theProducts);
    
          if (w.location.hash) {
            const params = w.location.hash.split('#')[1];
            const paramsArray = params.split('/');
    
            filter.selected.category = paramsArray[1] || null;
            filter.selected.product = paramsArray[2] || null;
          };
    
          filter.els.theProductsCategory && filter.setProducts();
    
          filter.autocomplete = new google.maps.places.Autocomplete(filter.els.searchInput, {});
    
          filter.bindIt();
        },
        bindIt: () => {
          filter.els.theForm && filter.els.theForm.addEventListener('submit', (e) => {
            if (!filter.els.searchInput.value) {
              filter.els.searchInput.reportValidity();
              e.preventDefault();
              return false;
            }
          });
    
          filter.els.theSubmit && filter.els.theSubmit.addEventListener('click', async (e) => {
            if (!filter.els.searchInput.value) {
              filter.els.searchInput.reportValidity();
              e.preventDefault();
              return false;
            }
    
            const shops = await general.getShops().catch((error) => console.error(error));
    
            map.build();
            list.build();
            list.show();
          });
    
          filter.autocomplete.addListener('place_changed', async () => {
            const thePlace = filter.autocomplete.getPlace();
    
            if (!thePlace.geometry) { return; }
    
            map.options.center.lat = thePlace.geometry.location.lat();
            map.options.center.lng = thePlace.geometry.location.lng();
            map.options.bounds = thePlace.geometry.viewport;
            map.options.city = thePlace.vicinity;
            map.options.country = general.getCountryName(thePlace.address_components);
    
            w.dataLayer && dataLayer.push({ 'event': 'dlStoreLocatorEvent', 'dlCategory': 'Store Locator', 'dlAction': 'Search', 'dlLabel': `${map.options.country}-${map.options.city}` });
    
            const shops = await general.getShops().catch((error) => console.error(error));
    
            map.build();
            list.build();
            list.show();
          });
    
          filter.els.myLocationTrigger.addEventListener('click', async (e) => {
            e.preventDefault();
    
            const myLocation = await map.getMyLocation();
    
            map.options.city = general.getCityName(myLocation.address_components);
            map.options.country = general.getCountryName(myLocation.address_components);
    
            filter.setSearchValue();
    
            const shops = await general.getShops().catch((error) => console.error(error));
    
            map.build();
            list.build();
            list.show();
          });
    
          filter.els.theProductsCategory && filter.els.theProductsCategory.addEventListener('change', async (e) => {
            const theProductsCategory = e.target;
            const theSelectedCategory = theProductsCategory.options[theProductsCategory.options.selectedIndex].value;
    
            filter.selected.category = theSelectedCategory;
    
            if (filter.els.theProducts) {
              filter.setProduct({...filter.selected});
              return;
            }
    
            const shops = await general.getShops().catch((error) => console.error(error));
    
            map.build();
            list.build();
            list.show();
          });
    
          filter.els.theProducts && filter.els.theProducts.addEventListener('change', async (e) => {
            filter.selected.product = filter.els.theProducts.options[filter.els.theProducts.options.selectedIndex].value;
    
            const shops = await general.getShops().catch((error) => console.error(error));
    
            map.build();
            list.build();
            list.show();
          });
        },
        setSearchValue: () => filter.els.searchInput.value = !map.options.country ? '' : `${map.options.city}, ${map.options.country}`,
        fetchProducts: () => new Promise((resolve, reject) => {
          fetch(domain + filter.s.api.url)
          .then(response => response.json())
          .then((response) => {
            resolve(JSON.parse(response));
          })
          .catch(reject);
          // resolve(JSON.parse("[{\"ProductID\":\"{F2B214FB-24B4-4AAD-8455-16F725369F3C}\",\"ProductName\":\"CDJ-350\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{1E399755-9D6B-4033-825D-84D6D5E6C4B3}\",\"ProductName\":\"XDJ-700\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{91EAF323-4E33-46FE-ADE5-20BC2AAC0B01}\",\"ProductName\":\"DJM-250MK2\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{34E84F4B-0BD2-4492-A744-E18D9F35820F}\",\"ProductName\":\"DDJ-FLX6\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{CD400C1B-CA62-49C2-BFD3-A4F63A95893F}\",\"ProductName\":\"DDJ-800\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{031670A5-F1D1-4865-AD39-C16FD166ED4C}\",\"ProductName\":\"DDJ-400\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{F608D7E7-33A3-4D7C-B937-000E6DE2B8DB}\",\"ProductName\":\"DDJ-200\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{E3A8CA13-8077-4F38-9398-8B33620ED0D2}\",\"ProductName\":\"DDJ-SR2\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{E066CFFB-A74B-4692-BDD1-2AD0BA7D4FBB}\",\"ProductName\":\"DDJ-SB3\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{EF566662-846A-4F0D-8868-C2C8F5E61890}\",\"ProductName\":\"PLX-1000\",\"ProductCategoryName\":\"Turntable\",\"ProductCategoryID\":\"{8571EF32-B910-4DBD-979B-B60139ACA390}\"},{\"ProductID\":\"{2779C65B-8D51-4D5C-89A3-9EB6D64DCC69}\",\"ProductName\":\"PLX-500\",\"ProductCategoryName\":\"Turntable\",\"ProductCategoryID\":\"{8571EF32-B910-4DBD-979B-B60139ACA390}\"},{\"ProductID\":\"{01354BEC-8256-4453-A46F-55423117504E}\",\"ProductName\":\"HDJ-CUE1\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{FCC860EC-F656-4795-A553-2D4BFDF750A6}\",\"ProductName\":\"HDJ-CUE1BT\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{F9DE25BA-BC99-4304-AB81-8F44407D6183}\",\"ProductName\":\"HDJ-X10\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{A1D64256-C6B9-4091-A595-96549B34F009}\",\"ProductName\":\"HDJ-X7\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{D5BF910B-78DD-4328-A8C5-B3E669982A65}\",\"ProductName\":\"HDJ-S7\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{2AA66B45-F4FB-4E04-8666-14972DB6E745}\",\"ProductName\":\"HDJ-X5\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{03631E85-9BAA-44DB-944D-0870C34E5DC6}\",\"ProductName\":\"HDJ-X5BT\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{2C5FD6BC-F91F-47BA-A0AA-A1F525207E5D}\",\"ProductName\":\"HDJ-700\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{DAF7CCE9-4099-43C6-9AE7-A2F7FDE7035E}\",\"ProductName\":\"HRM-7\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{8272162F-9B0C-4115-B9E9-B9754D3836EB}\",\"ProductName\":\"HRM-6\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{BA917FCC-1349-48D6-88A9-6E1BE3189853}\",\"ProductName\":\"HRM-5\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{10989430-FFF8-428C-BB72-4BFDD8BE87B8}\",\"ProductName\":\"HDJ-HC02\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{9F7549B5-858A-4EC3-8582-7E0863B824F5}\",\"ProductName\":\"HC-CP08\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{6478E5A2-2C78-4684-BE06-2AE6E5E90178}\",\"ProductName\":\"DJC-FLX6-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{80CBC3DE-F9BF-48E7-93DA-1D00C77FEF98}\",\"ProductName\":\"DJC-200 BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{D903E12D-E776-4A44-94B2-E344B3C9CC25}\",\"ProductName\":\"DJC-B-WEGO3-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{8B374770-4E2E-49E8-9663-F0D9E8C47118}\",\"ProductName\":\"DJC-800-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{D9F6E036-58EB-485B-8EE0-31336468634D}\",\"ProductName\":\"PC-HS01\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{54F13395-A530-4107-990B-20FCBAC5B8CB}\",\"ProductName\":\"PN-X05\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{A872AAA6-296B-4061-92FE-6A091A3FC1AA}\",\"ProductName\":\"RB-VS1-K\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{9E1EF5DB-AF57-44F3-8C89-0C14DE780D3A}\",\"ProductName\":\"HC-CA0501\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{2EB7641D-1EEC-46E8-9B0A-396B11DAE352}\",\"ProductName\":\"HC-CA0502\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{2E0A5E97-E9A5-440F-BDA8-CA10D24A94DB}\",\"ProductName\":\"HC-CA0601\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{1CEAE576-798C-44D0-9BF4-D7CFC4E3F719}\",\"ProductName\":\"HC-CA0602\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{BDB4839E-0A7F-4C54-9C9E-9CDF9D9E1AF9}\",\"ProductName\":\"HC-CA0603\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{5C4C5F9A-3321-419F-8A6E-EC6608B19B5D}\",\"ProductName\":\"HC-CA0701\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{887F2AE5-3826-4571-9230-82D8058825AE}\",\"ProductName\":\"HC-CA0702\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{C3E9284A-9B24-4E85-A77B-EF494BEEF95E}\",\"ProductName\":\"HC-CA0401\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{216E5C41-3A0E-4A68-9427-1CDAFFFD8550}\",\"ProductName\":\"HC-CA0402\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{96F1594E-8024-49C7-A65B-DB253FBB3AD8}\",\"ProductName\":\"HC-CA0403\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{DB0EC672-3323-4C14-BAD8-7399426966C0}\",\"ProductName\":\"HC-EP0501\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{8BDA12F6-CCC9-463D-9D18-04313BB61F38}\",\"ProductName\":\"HC-EP0601\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{106CE7A7-E5CF-4F14-BE5D-F37372856ED2}\",\"ProductName\":\"HC-EP0701\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{911FC508-8175-4D16-844D-E7C0221910E8}\",\"ProductName\":\"HC-EP0201\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{115427BD-5AFE-46CB-932F-3EC53C3A841A}\",\"ProductName\":\"HC-EP0301\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{959608AE-B97A-4562-A1DA-1F9E92B23BC9}\",\"ProductName\":\"HC-EP0302\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{CFC22F5C-EA6C-4F77-AFF1-437C294D013C}\",\"ProductName\":\"HC-EP0401\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{5BF40B88-FB70-4C3B-80BC-68C37319BAE4}\",\"ProductName\":\"HC-EP0402\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{DC3EEB35-2B9A-48BD-97DA-B32EFA2246AD}\",\"ProductName\":\"HC-HB0201\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{7127339B-0181-4FB3-AAAC-E8B4CF26C59C}\",\"ProductName\":\"HC-PA0001\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{05F09DE5-CAD2-4843-B2B8-A21956756952}\",\"ProductName\":\"DJC-RR-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{BAF22C6D-4447-407D-93C5-18FC282D2AF0}\",\"ProductName\":\"DJC-IF2-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{70C9BEB9-06B2-4E40-80B3-C587938B6C9A}\",\"ProductName\":\"DJC-700-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{58A8FD67-E4F0-489E-84EA-3DB2ACA21E14}\",\"ProductName\":\"DJC-R-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{8D1DCC5E-7FAA-45CF-95B5-43EEFB2CB594}\",\"ProductName\":\"FLT-XDJRX2\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{77D31F88-2049-4360-A98D-3405EA309E95}\",\"ProductName\":\"XDJ-RR\",\"ProductCategoryName\":\"All-in-one DJ system\",\"ProductCategoryID\":\"{AC30186B-AD65-4502-9A28-8CFC01C85F5F}\"},{\"ProductID\":\"{2320711C-819C-4A8C-AD80-6C374F611414}\",\"ProductName\":\"VM-50\",\"ProductCategoryName\":\"Monitor speakers\",\"ProductCategoryID\":\"{A2CE6988-E3FA-4D9F-B751-00C073F2CC52}\"},{\"ProductID\":\"{998DACB0-9CC0-4C1D-9CB1-F1E70B4238B5}\",\"ProductName\":\"VM-70\",\"ProductCategoryName\":\"Monitor speakers\",\"ProductCategoryID\":\"{A2CE6988-E3FA-4D9F-B751-00C073F2CC52}\"},{\"ProductID\":\"{2D5D6A3D-AE26-4E7F-ABFE-9F5F81D2BA96}\",\"ProductName\":\"VM-80\",\"ProductCategoryName\":\"Monitor speakers\",\"ProductCategoryID\":\"{A2CE6988-E3FA-4D9F-B751-00C073F2CC52}\"},{\"ProductID\":\"{8DB7D1DA-B2AF-48CF-AA44-55959C641A69}\",\"ProductName\":\"DM-40BT\",\"ProductCategoryName\":\"Monitor speakers\",\"ProductCategoryID\":\"{A2CE6988-E3FA-4D9F-B751-00C073F2CC52}\"},{\"ProductID\":\"{87B2B2DF-052E-4F2D-B39B-2C6705AB6351}\",\"ProductName\":\"DM-40\",\"ProductCategoryName\":\"Monitor speakers\",\"ProductCategoryID\":\"{A2CE6988-E3FA-4D9F-B751-00C073F2CC52}\"},{\"ProductID\":\"{2757CEF3-AEE8-4CFD-A1E6-30895F6AD422}\",\"ProductName\":\"TORAIZ-SQUID\",\"ProductCategoryName\":\"Music Production\",\"ProductCategoryID\":\"{63513C2D-E27C-44D9-8DA0-03E8C77FAB86}\"},{\"ProductID\":\"{79F0F6FB-721D-4065-ADA9-0929C035FF69}\",\"ProductName\":\"TORAIZ AS-1\",\"ProductCategoryName\":\"Music Production\",\"ProductCategoryID\":\"{63513C2D-E27C-44D9-8DA0-03E8C77FAB86}\"},{\"ProductID\":\"{10A75572-3621-43E1-8D61-19D2E33A14B9}\",\"ProductName\":\"TORAIZ SP-16\",\"ProductCategoryName\":\"Music Production\",\"ProductCategoryID\":\"{63513C2D-E27C-44D9-8DA0-03E8C77FAB86}\"},{\"ProductID\":\"{AB411B05-FFDE-4E51-AB6C-96F83FB570B8}\",\"ProductName\":\"DJC-STS1\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{81003DF8-3B96-4D4B-B20E-68DDD6753C51}\",\"ProductName\":\"CDJ-3000\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{1FF13521-161A-4234-B109-176C9F70628B}\",\"ProductName\":\"CDJ-2000NXS2\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{D0769094-19B8-4F1F-BCF2-9DF26400A6B8}\",\"ProductName\":\"CDJ-900NXS\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{592B354A-A44D-4DB7-9D4E-A9AB70838F39}\",\"ProductName\":\"CDJ-850\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{F2B214FB-24B4-4AAD-8455-16F725369F3C}\",\"ProductName\":\"CDJ-350\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{FD865730-3D6B-4F20-A019-89B617C1263C}\",\"ProductName\":\"XDJ-1000MK2\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{1E399755-9D6B-4033-825D-84D6D5E6C4B3}\",\"ProductName\":\"XDJ-700\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{EF566662-846A-4F0D-8868-C2C8F5E61890}\",\"ProductName\":\"PLX-1000\",\"ProductCategoryName\":\"Turntable\",\"ProductCategoryID\":\"{8571EF32-B910-4DBD-979B-B60139ACA390}\"},{\"ProductID\":\"{2779C65B-8D51-4D5C-89A3-9EB6D64DCC69}\",\"ProductName\":\"PLX-500\",\"ProductCategoryName\":\"Turntable\",\"ProductCategoryID\":\"{8571EF32-B910-4DBD-979B-B60139ACA390}\"},{\"ProductID\":\"{E65F16F4-B3E6-458E-8073-BADA71784F14}\",\"ProductName\":\"DJM-S7\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{4236155E-B377-439E-B302-45A6ED17D2E3}\",\"ProductName\":\"DJM-V10-LF\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{8D241DA6-6FF9-47E0-B4F8-F71DC0F2BCD8}\",\"ProductName\":\"DJM-S11\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{BBC7BBF0-B4BD-47FB-8CFA-29347FC0B0F5}\",\"ProductName\":\"DJM-V10\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{E418F670-6931-4121-9A14-502D7073D22C}\",\"ProductName\":\"DJM-900NXS2\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{1E490FA7-9D9D-44C7-8F55-B3BB7F78854B}\",\"ProductName\":\"DJM-750MK2\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{620CDBFD-2133-4625-84A9-68ACEFB8FC5C}\",\"ProductName\":\"DJM-450\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{91EAF323-4E33-46FE-ADE5-20BC2AAC0B01}\",\"ProductName\":\"DJM-250MK2\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{5D54AE85-3C56-40C8-8C80-4DBEA8B04F48}\",\"ProductName\":\"DJM-S3\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{34E84F4B-0BD2-4492-A744-E18D9F35820F}\",\"ProductName\":\"DDJ-FLX6\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{2777E6DC-FA37-4789-A9BB-39B1B14FBFB3}\",\"ProductName\":\"DDJ-1000SRT\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{8E2935B4-A356-4DBD-929A-EB3682A06CFC}\",\"ProductName\":\"DDJ-1000\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{CD400C1B-CA62-49C2-BFD3-A4F63A95893F}\",\"ProductName\":\"DDJ-800\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{031670A5-F1D1-4865-AD39-C16FD166ED4C}\",\"ProductName\":\"DDJ-400\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{F608D7E7-33A3-4D7C-B937-000E6DE2B8DB}\",\"ProductName\":\"DDJ-200\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{28047B69-E754-422E-A177-BCF19A9C1F96}\",\"ProductName\":\"DDJ-RZX\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{3A5AE1FA-F17A-4CF0-9078-EA9CAB583D4B}\",\"ProductName\":\"DDJ-RZ\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{9D58BFFB-C32E-4259-9E72-9995B1CA2F17}\",\"ProductName\":\"DDJ-XP2\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{E3A8CA13-8077-4F38-9398-8B33620ED0D2}\",\"ProductName\":\"DDJ-SR2\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{E066CFFB-A74B-4692-BDD1-2AD0BA7D4FBB}\",\"ProductName\":\"DDJ-SB3\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{01354BEC-8256-4453-A46F-55423117504E}\",\"ProductName\":\"HDJ-CUE1\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{FCC860EC-F656-4795-A553-2D4BFDF750A6}\",\"ProductName\":\"HDJ-CUE1BT\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{F9DE25BA-BC99-4304-AB81-8F44407D6183}\",\"ProductName\":\"HDJ-X10\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{A1D64256-C6B9-4091-A595-96549B34F009}\",\"ProductName\":\"HDJ-X7\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{D5BF910B-78DD-4328-A8C5-B3E669982A65}\",\"ProductName\":\"HDJ-S7\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{2AA66B45-F4FB-4E04-8666-14972DB6E745}\",\"ProductName\":\"HDJ-X5\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{03631E85-9BAA-44DB-944D-0870C34E5DC6}\",\"ProductName\":\"HDJ-X5BT\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{2C5FD6BC-F91F-47BA-A0AA-A1F525207E5D}\",\"ProductName\":\"HDJ-700\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{DAF7CCE9-4099-43C6-9AE7-A2F7FDE7035E}\",\"ProductName\":\"HRM-7\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{8272162F-9B0C-4115-B9E9-B9754D3836EB}\",\"ProductName\":\"HRM-6\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{BA917FCC-1349-48D6-88A9-6E1BE3189853}\",\"ProductName\":\"HRM-5\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{10989430-FFF8-428C-BB72-4BFDD8BE87B8}\",\"ProductName\":\"HDJ-HC02\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{9F7549B5-858A-4EC3-8582-7E0863B824F5}\",\"ProductName\":\"HC-CP08\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{CA693F01-8A04-4C32-8D37-677E5B862114}\",\"ProductName\":\"DJC-3000-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{6478E5A2-2C78-4684-BE06-2AE6E5E90178}\",\"ProductName\":\"DJC-FLX6-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{47DB2187-DE89-4813-A7E2-17BB10E6135C}\",\"ProductName\":\"DJC-RUCKSACK\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{2A1E756C-5931-48C5-A89B-3A757DA1B19E}\",\"ProductName\":\"DJC-S11-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{0EE434DE-0D51-4D48-941E-4D9B179E6180}\",\"ProductName\":\"DJC-XZ-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{24CE8074-BA81-4EE0-9387-EED3318E6792}\",\"ProductName\":\"DJRC-MULTI1\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{1EDA6E3A-486F-41AE-BDC6-B0A2E9626027}\",\"ProductName\":\"DJRC-V10\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{80CBC3DE-F9BF-48E7-93DA-1D00C77FEF98}\",\"ProductName\":\"DJC-200 BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{D903E12D-E776-4A44-94B2-E344B3C9CC25}\",\"ProductName\":\"DJC-B-WEGO3-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{8B374770-4E2E-49E8-9663-F0D9E8C47118}\",\"ProductName\":\"DJC-800-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{D9F6E036-58EB-485B-8EE0-31336468634D}\",\"ProductName\":\"PC-HS01\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{54F13395-A530-4107-990B-20FCBAC5B8CB}\",\"ProductName\":\"PN-X05\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{A872AAA6-296B-4061-92FE-6A091A3FC1AA}\",\"ProductName\":\"RB-VS1-K\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{9E1EF5DB-AF57-44F3-8C89-0C14DE780D3A}\",\"ProductName\":\"HC-CA0501\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{2EB7641D-1EEC-46E8-9B0A-396B11DAE352}\",\"ProductName\":\"HC-CA0502\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{2E0A5E97-E9A5-440F-BDA8-CA10D24A94DB}\",\"ProductName\":\"HC-CA0601\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{1CEAE576-798C-44D0-9BF4-D7CFC4E3F719}\",\"ProductName\":\"HC-CA0602\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{BDB4839E-0A7F-4C54-9C9E-9CDF9D9E1AF9}\",\"ProductName\":\"HC-CA0603\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{5C4C5F9A-3321-419F-8A6E-EC6608B19B5D}\",\"ProductName\":\"HC-CA0701\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{887F2AE5-3826-4571-9230-82D8058825AE}\",\"ProductName\":\"HC-CA0702\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{C3E9284A-9B24-4E85-A77B-EF494BEEF95E}\",\"ProductName\":\"HC-CA0401\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{216E5C41-3A0E-4A68-9427-1CDAFFFD8550}\",\"ProductName\":\"HC-CA0402\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{96F1594E-8024-49C7-A65B-DB253FBB3AD8}\",\"ProductName\":\"HC-CA0403\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{DB0EC672-3323-4C14-BAD8-7399426966C0}\",\"ProductName\":\"HC-EP0501\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{8BDA12F6-CCC9-463D-9D18-04313BB61F38}\",\"ProductName\":\"HC-EP0601\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{106CE7A7-E5CF-4F14-BE5D-F37372856ED2}\",\"ProductName\":\"HC-EP0701\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{911FC508-8175-4D16-844D-E7C0221910E8}\",\"ProductName\":\"HC-EP0201\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{115427BD-5AFE-46CB-932F-3EC53C3A841A}\",\"ProductName\":\"HC-EP0301\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{959608AE-B97A-4562-A1DA-1F9E92B23BC9}\",\"ProductName\":\"HC-EP0302\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{CFC22F5C-EA6C-4F77-AFF1-437C294D013C}\",\"ProductName\":\"HC-EP0401\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{5BF40B88-FB70-4C3B-80BC-68C37319BAE4}\",\"ProductName\":\"HC-EP0402\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{DC3EEB35-2B9A-48BD-97DA-B32EFA2246AD}\",\"ProductName\":\"HC-HB0201\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{7127339B-0181-4FB3-AAAC-E8B4CF26C59C}\",\"ProductName\":\"HC-PA0001\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{05F09DE5-CAD2-4843-B2B8-A21956756952}\",\"ProductName\":\"DJC-RR-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{77BA0C22-A6F9-4BF4-8181-ACE65833B07A}\",\"ProductName\":\"DJC-1X-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{BAF22C6D-4447-407D-93C5-18FC282D2AF0}\",\"ProductName\":\"DJC-IF2-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{9EB0CC48-61A5-4961-8D5A-61592D1883EB}\",\"ProductName\":\"DJC-RX2-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{B4DE0474-ADDD-4A3C-A455-D4D0ED652F3F}\",\"ProductName\":\"DJC-NXS2-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{C3BBC7AD-72DF-469F-A400-D299267BB0F0}\",\"ProductName\":\"DJC-1000-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{70C9BEB9-06B2-4E40-80B3-C587938B6C9A}\",\"ProductName\":\"DJC-700-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{3994209E-F354-4298-B170-473DC7DF7E73}\",\"ProductName\":\"DJC-S9-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{066134E4-FC34-4778-AFB7-127E49392ACB}\",\"ProductName\":\"DJC-TAS1-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{EF076A15-BAF4-4293-8B1D-C4B0BA84A0CF}\",\"ProductName\":\"DJC-TSP16-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{58A8FD67-E4F0-489E-84EA-3DB2ACA21E14}\",\"ProductName\":\"DJC-R-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{8D1DCC5E-7FAA-45CF-95B5-43EEFB2CB594}\",\"ProductName\":\"FLT-XDJRX2\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{13F008E7-A6B6-4AE3-BF15-ADED277391F7}\",\"ProductName\":\"FLT-450SYS\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{4EEBBF03-DFD1-4709-BCDE-1E3838AD87FC}\",\"ProductName\":\"DJC-FLTRZX\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{AB411B05-FFDE-4E51-AB6C-96F83FB570B8}\",\"ProductName\":\"DJC-STS1\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{C3B7E020-E837-4774-A166-B9ADEF27C72F}\",\"ProductName\":\"XDJ-XZ\",\"ProductCategoryName\":\"All-in-one DJ system\",\"ProductCategoryID\":\"{AC30186B-AD65-4502-9A28-8CFC01C85F5F}\"},{\"ProductID\":\"{C138B77D-E440-48AD-A088-020621DB066E}\",\"ProductName\":\"XDJ-RX2\",\"ProductCategoryName\":\"All-in-one DJ system\",\"ProductCategoryID\":\"{AC30186B-AD65-4502-9A28-8CFC01C85F5F}\"},{\"ProductID\":\"{77D31F88-2049-4360-A98D-3405EA309E95}\",\"ProductName\":\"XDJ-RR\",\"ProductCategoryName\":\"All-in-one DJ system\",\"ProductCategoryID\":\"{AC30186B-AD65-4502-9A28-8CFC01C85F5F}\"},{\"ProductID\":\"{2320711C-819C-4A8C-AD80-6C374F611414}\",\"ProductName\":\"VM-50\",\"ProductCategoryName\":\"Monitor speakers\",\"ProductCategoryID\":\"{A2CE6988-E3FA-4D9F-B751-00C073F2CC52}\"},{\"ProductID\":\"{998DACB0-9CC0-4C1D-9CB1-F1E70B4238B5}\",\"ProductName\":\"VM-70\",\"ProductCategoryName\":\"Monitor speakers\",\"ProductCategoryID\":\"{A2CE6988-E3FA-4D9F-B751-00C073F2CC52}\"},{\"ProductID\":\"{2D5D6A3D-AE26-4E7F-ABFE-9F5F81D2BA96}\",\"ProductName\":\"VM-80\",\"ProductCategoryName\":\"Monitor speakers\",\"ProductCategoryID\":\"{A2CE6988-E3FA-4D9F-B751-00C073F2CC52}\"},{\"ProductID\":\"{8DB7D1DA-B2AF-48CF-AA44-55959C641A69}\",\"ProductName\":\"DM-40BT\",\"ProductCategoryName\":\"Monitor speakers\",\"ProductCategoryID\":\"{A2CE6988-E3FA-4D9F-B751-00C073F2CC52}\"},{\"ProductID\":\"{87B2B2DF-052E-4F2D-B39B-2C6705AB6351}\",\"ProductName\":\"DM-40\",\"ProductCategoryName\":\"Monitor speakers\",\"ProductCategoryID\":\"{A2CE6988-E3FA-4D9F-B751-00C073F2CC52}\"},{\"ProductID\":\"{2757CEF3-AEE8-4CFD-A1E6-30895F6AD422}\",\"ProductName\":\"TORAIZ-SQUID\",\"ProductCategoryName\":\"Music Production\",\"ProductCategoryID\":\"{63513C2D-E27C-44D9-8DA0-03E8C77FAB86}\"},{\"ProductID\":\"{79F0F6FB-721D-4065-ADA9-0929C035FF69}\",\"ProductName\":\"TORAIZ AS-1\",\"ProductCategoryName\":\"Music Production\",\"ProductCategoryID\":\"{63513C2D-E27C-44D9-8DA0-03E8C77FAB86}\"},{\"ProductID\":\"{10A75572-3621-43E1-8D61-19D2E33A14B9}\",\"ProductName\":\"TORAIZ SP-16\",\"ProductCategoryName\":\"Music Production\",\"ProductCategoryID\":\"{63513C2D-E27C-44D9-8DA0-03E8C77FAB86}\"},{\"ProductID\":\"{49A229FA-2136-4B40-BED6-22C50804468A}\",\"ProductName\":\"RB-DMX1\",\"ProductCategoryName\":\"DJ software \u0026 Interfaces\",\"ProductCategoryID\":\"{B554DD71-67CD-4797-AB53-D57D183867C6}\"},{\"ProductID\":\"{E9C6ECC9-05F8-4AC5-A11A-074D39634FCC}\",\"ProductName\":\"INTERFACE-2\",\"ProductCategoryName\":\"DJ software \u0026 Interfaces\",\"ProductCategoryID\":\"{B554DD71-67CD-4797-AB53-D57D183867C6}\"},{\"ProductID\":\"{A00235B4-7289-4170-92D3-7BDD1C41DC6D}\",\"ProductName\":\"DJS-1000\",\"ProductCategoryName\":\"DJ sampler\",\"ProductCategoryID\":\"{993A8274-27AA-49D0-B552-A1B2E6F2493E}\"},{\"ProductID\":\"{EF305A2F-65FB-4BCA-922D-123D161F4F51}\",\"ProductName\":\"RMX-1000\",\"ProductCategoryName\":\"Remix station\",\"ProductCategoryID\":\"{B0496E38-516D-47E0-9AE0-5DC5C22C4BE7}\"},{\"ProductID\":\"{81003DF8-3B96-4D4B-B20E-68DDD6753C51}\",\"ProductName\":\"CDJ-3000\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{1FF13521-161A-4234-B109-176C9F70628B}\",\"ProductName\":\"CDJ-2000NXS2\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{D0769094-19B8-4F1F-BCF2-9DF26400A6B8}\",\"ProductName\":\"CDJ-900NXS\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{592B354A-A44D-4DB7-9D4E-A9AB70838F39}\",\"ProductName\":\"CDJ-850\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{F2B214FB-24B4-4AAD-8455-16F725369F3C}\",\"ProductName\":\"CDJ-350\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{FD865730-3D6B-4F20-A019-89B617C1263C}\",\"ProductName\":\"XDJ-1000MK2\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{1E399755-9D6B-4033-825D-84D6D5E6C4B3}\",\"ProductName\":\"XDJ-700\",\"ProductCategoryName\":\"DJ player\",\"ProductCategoryID\":\"{DA45F21A-9E2B-4837-AF88-3BA6A0D7D15E}\"},{\"ProductID\":\"{E65F16F4-B3E6-458E-8073-BADA71784F14}\",\"ProductName\":\"DJM-S7\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{4236155E-B377-439E-B302-45A6ED17D2E3}\",\"ProductName\":\"DJM-V10-LF\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{8D241DA6-6FF9-47E0-B4F8-F71DC0F2BCD8}\",\"ProductName\":\"DJM-S11\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{BBC7BBF0-B4BD-47FB-8CFA-29347FC0B0F5}\",\"ProductName\":\"DJM-V10\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{E418F670-6931-4121-9A14-502D7073D22C}\",\"ProductName\":\"DJM-900NXS2\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{1E490FA7-9D9D-44C7-8F55-B3BB7F78854B}\",\"ProductName\":\"DJM-750MK2\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{620CDBFD-2133-4625-84A9-68ACEFB8FC5C}\",\"ProductName\":\"DJM-450\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{91EAF323-4E33-46FE-ADE5-20BC2AAC0B01}\",\"ProductName\":\"DJM-250MK2\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{5D54AE85-3C56-40C8-8C80-4DBEA8B04F48}\",\"ProductName\":\"DJM-S3\",\"ProductCategoryName\":\"DJ mixer\",\"ProductCategoryID\":\"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}\"},{\"ProductID\":\"{34E84F4B-0BD2-4492-A744-E18D9F35820F}\",\"ProductName\":\"DDJ-FLX6\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{2777E6DC-FA37-4789-A9BB-39B1B14FBFB3}\",\"ProductName\":\"DDJ-1000SRT\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{8E2935B4-A356-4DBD-929A-EB3682A06CFC}\",\"ProductName\":\"DDJ-1000\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{CD400C1B-CA62-49C2-BFD3-A4F63A95893F}\",\"ProductName\":\"DDJ-800\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{031670A5-F1D1-4865-AD39-C16FD166ED4C}\",\"ProductName\":\"DDJ-400\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{F608D7E7-33A3-4D7C-B937-000E6DE2B8DB}\",\"ProductName\":\"DDJ-200\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{28047B69-E754-422E-A177-BCF19A9C1F96}\",\"ProductName\":\"DDJ-RZX\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{3A5AE1FA-F17A-4CF0-9078-EA9CAB583D4B}\",\"ProductName\":\"DDJ-RZ\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{9D58BFFB-C32E-4259-9E72-9995B1CA2F17}\",\"ProductName\":\"DDJ-XP2\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{E3A8CA13-8077-4F38-9398-8B33620ED0D2}\",\"ProductName\":\"DDJ-SR2\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{E066CFFB-A74B-4692-BDD1-2AD0BA7D4FBB}\",\"ProductName\":\"DDJ-SB3\",\"ProductCategoryName\":\"DJ controller\",\"ProductCategoryID\":\"{D7A7E2DF-B000-42C8-9533-543B93B3A203}\"},{\"ProductID\":\"{EF566662-846A-4F0D-8868-C2C8F5E61890}\",\"ProductName\":\"PLX-1000\",\"ProductCategoryName\":\"Turntable\",\"ProductCategoryID\":\"{8571EF32-B910-4DBD-979B-B60139ACA390}\"},{\"ProductID\":\"{2779C65B-8D51-4D5C-89A3-9EB6D64DCC69}\",\"ProductName\":\"PLX-500\",\"ProductCategoryName\":\"Turntable\",\"ProductCategoryID\":\"{8571EF32-B910-4DBD-979B-B60139ACA390}\"},{\"ProductID\":\"{01354BEC-8256-4453-A46F-55423117504E}\",\"ProductName\":\"HDJ-CUE1\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{FCC860EC-F656-4795-A553-2D4BFDF750A6}\",\"ProductName\":\"HDJ-CUE1BT\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{F9DE25BA-BC99-4304-AB81-8F44407D6183}\",\"ProductName\":\"HDJ-X10\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{A1D64256-C6B9-4091-A595-96549B34F009}\",\"ProductName\":\"HDJ-X7\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{D5BF910B-78DD-4328-A8C5-B3E669982A65}\",\"ProductName\":\"HDJ-S7\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{2AA66B45-F4FB-4E04-8666-14972DB6E745}\",\"ProductName\":\"HDJ-X5\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{03631E85-9BAA-44DB-944D-0870C34E5DC6}\",\"ProductName\":\"HDJ-X5BT\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{2C5FD6BC-F91F-47BA-A0AA-A1F525207E5D}\",\"ProductName\":\"HDJ-700\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{DAF7CCE9-4099-43C6-9AE7-A2F7FDE7035E}\",\"ProductName\":\"HRM-7\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{8272162F-9B0C-4115-B9E9-B9754D3836EB}\",\"ProductName\":\"HRM-6\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{BA917FCC-1349-48D6-88A9-6E1BE3189853}\",\"ProductName\":\"HRM-5\",\"ProductCategoryName\":\"Headphones\",\"ProductCategoryID\":\"{44ED94F0-1627-4B62-8255-194648BCCE83}\"},{\"ProductID\":\"{10989430-FFF8-428C-BB72-4BFDD8BE87B8}\",\"ProductName\":\"HDJ-HC02\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{9F7549B5-858A-4EC3-8582-7E0863B824F5}\",\"ProductName\":\"HC-CP08\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{CA693F01-8A04-4C32-8D37-677E5B862114}\",\"ProductName\":\"DJC-3000-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{6478E5A2-2C78-4684-BE06-2AE6E5E90178}\",\"ProductName\":\"DJC-FLX6-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{47DB2187-DE89-4813-A7E2-17BB10E6135C}\",\"ProductName\":\"DJC-RUCKSACK\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{2A1E756C-5931-48C5-A89B-3A757DA1B19E}\",\"ProductName\":\"DJC-S11-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{0EE434DE-0D51-4D48-941E-4D9B179E6180}\",\"ProductName\":\"DJC-XZ-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{24CE8074-BA81-4EE0-9387-EED3318E6792}\",\"ProductName\":\"DJRC-MULTI1\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{1EDA6E3A-486F-41AE-BDC6-B0A2E9626027}\",\"ProductName\":\"DJRC-V10\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{80CBC3DE-F9BF-48E7-93DA-1D00C77FEF98}\",\"ProductName\":\"DJC-200 BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{D903E12D-E776-4A44-94B2-E344B3C9CC25}\",\"ProductName\":\"DJC-B-WEGO3-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{8B374770-4E2E-49E8-9663-F0D9E8C47118}\",\"ProductName\":\"DJC-800-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{D9F6E036-58EB-485B-8EE0-31336468634D}\",\"ProductName\":\"PC-HS01\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{54F13395-A530-4107-990B-20FCBAC5B8CB}\",\"ProductName\":\"PN-X05\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{A872AAA6-296B-4061-92FE-6A091A3FC1AA}\",\"ProductName\":\"RB-VS1-K\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{9E1EF5DB-AF57-44F3-8C89-0C14DE780D3A}\",\"ProductName\":\"HC-CA0501\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{2EB7641D-1EEC-46E8-9B0A-396B11DAE352}\",\"ProductName\":\"HC-CA0502\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{2E0A5E97-E9A5-440F-BDA8-CA10D24A94DB}\",\"ProductName\":\"HC-CA0601\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{1CEAE576-798C-44D0-9BF4-D7CFC4E3F719}\",\"ProductName\":\"HC-CA0602\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{BDB4839E-0A7F-4C54-9C9E-9CDF9D9E1AF9}\",\"ProductName\":\"HC-CA0603\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{5C4C5F9A-3321-419F-8A6E-EC6608B19B5D}\",\"ProductName\":\"HC-CA0701\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{887F2AE5-3826-4571-9230-82D8058825AE}\",\"ProductName\":\"HC-CA0702\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{C3E9284A-9B24-4E85-A77B-EF494BEEF95E}\",\"ProductName\":\"HC-CA0401\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{216E5C41-3A0E-4A68-9427-1CDAFFFD8550}\",\"ProductName\":\"HC-CA0402\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{96F1594E-8024-49C7-A65B-DB253FBB3AD8}\",\"ProductName\":\"HC-CA0403\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{DB0EC672-3323-4C14-BAD8-7399426966C0}\",\"ProductName\":\"HC-EP0501\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{8BDA12F6-CCC9-463D-9D18-04313BB61F38}\",\"ProductName\":\"HC-EP0601\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{106CE7A7-E5CF-4F14-BE5D-F37372856ED2}\",\"ProductName\":\"HC-EP0701\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{911FC508-8175-4D16-844D-E7C0221910E8}\",\"ProductName\":\"HC-EP0201\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{115427BD-5AFE-46CB-932F-3EC53C3A841A}\",\"ProductName\":\"HC-EP0301\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{959608AE-B97A-4562-A1DA-1F9E92B23BC9}\",\"ProductName\":\"HC-EP0302\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{CFC22F5C-EA6C-4F77-AFF1-437C294D013C}\",\"ProductName\":\"HC-EP0401\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{5BF40B88-FB70-4C3B-80BC-68C37319BAE4}\",\"ProductName\":\"HC-EP0402\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{DC3EEB35-2B9A-48BD-97DA-B32EFA2246AD}\",\"ProductName\":\"HC-HB0201\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{7127339B-0181-4FB3-AAAC-E8B4CF26C59C}\",\"ProductName\":\"HC-PA0001\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{05F09DE5-CAD2-4843-B2B8-A21956756952}\",\"ProductName\":\"DJC-RR-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{77BA0C22-A6F9-4BF4-8181-ACE65833B07A}\",\"ProductName\":\"DJC-1X-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{BAF22C6D-4447-407D-93C5-18FC282D2AF0}\",\"ProductName\":\"DJC-IF2-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{9EB0CC48-61A5-4961-8D5A-61592D1883EB}\",\"ProductName\":\"DJC-RX2-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{B4DE0474-ADDD-4A3C-A455-D4D0ED652F3F}\",\"ProductName\":\"DJC-NXS2-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{C3BBC7AD-72DF-469F-A400-D299267BB0F0}\",\"ProductName\":\"DJC-1000-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{70C9BEB9-06B2-4E40-80B3-C587938B6C9A}\",\"ProductName\":\"DJC-700-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{3994209E-F354-4298-B170-473DC7DF7E73}\",\"ProductName\":\"DJC-S9-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{066134E4-FC34-4778-AFB7-127E49392ACB}\",\"ProductName\":\"DJC-TAS1-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{EF076A15-BAF4-4293-8B1D-C4B0BA84A0CF}\",\"ProductName\":\"DJC-TSP16-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{58A8FD67-E4F0-489E-84EA-3DB2ACA21E14}\",\"ProductName\":\"DJC-R-BAG\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{8D1DCC5E-7FAA-45CF-95B5-43EEFB2CB594}\",\"ProductName\":\"FLT-XDJRX2\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{13F008E7-A6B6-4AE3-BF15-ADED277391F7}\",\"ProductName\":\"FLT-450SYS\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{4EEBBF03-DFD1-4709-BCDE-1E3838AD87FC}\",\"ProductName\":\"DJC-FLTRZX\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{AB411B05-FFDE-4E51-AB6C-96F83FB570B8}\",\"ProductName\":\"DJC-STS1\",\"ProductCategoryName\":\"Accessories\",\"ProductCategoryID\":\"{194A2B36-805F-4CFC-97E8-5D5DDFDCE12B}\"},{\"ProductID\":\"{C3B7E020-E837-4774-A166-B9ADEF27C72F}\",\"ProductName\":\"XDJ-XZ\",\"ProductCategoryName\":\"All-in-one DJ system\",\"ProductCategoryID\":\"{AC30186B-AD65-4502-9A28-8CFC01C85F5F}\"},{\"ProductID\":\"{C138B77D-E440-48AD-A088-020621DB066E}\",\"ProductName\":\"XDJ-RX2\",\"ProductCategoryName\":\"All-in-one DJ system\",\"ProductCategoryID\":\"{AC30186B-AD65-4502-9A28-8CFC01C85F5F}\"},{\"ProductID\":\"{77D31F88-2049-4360-A98D-3405EA309E95}\",\"ProductName\":\"XDJ-RR\",\"ProductCategoryName\":\"All-in-one DJ system\",\"ProductCategoryID\":\"{AC30186B-AD65-4502-9A28-8CFC01C85F5F}\"},{\"ProductID\":\"{2320711C-819C-4A8C-AD80-6C374F611414}\",\"ProductName\":\"VM-50\",\"ProductCategoryName\":\"Monitor speakers\",\"ProductCategoryID\":\"{A2CE6988-E3FA-4D9F-B751-00C073F2CC52}\"},{\"ProductID\":\"{998DACB0-9CC0-4C1D-9CB1-F1E70B4238B5}\",\"ProductName\":\"VM-70\",\"ProductCategoryName\":\"Monitor speakers\",\"ProductCategoryID\":\"{A2CE6988-E3FA-4D9F-B751-00C073F2CC52}\"},{\"ProductID\":\"{2D5D6A3D-AE26-4E7F-ABFE-9F5F81D2BA96}\",\"ProductName\":\"VM-80\",\"ProductCategoryName\":\"Monitor speakers\",\"ProductCategoryID\":\"{A2CE6988-E3FA-4D9F-B751-00C073F2CC52}\"},{\"ProductID\":\"{8DB7D1DA-B2AF-48CF-AA44-55959C641A69}\",\"ProductName\":\"DM-40BT\",\"ProductCategoryName\":\"Monitor speakers\",\"ProductCategoryID\":\"{A2CE6988-E3FA-4D9F-B751-00C073F2CC52}\"},{\"ProductID\":\"{87B2B2DF-052E-4F2D-B39B-2C6705AB6351}\",\"ProductName\":\"DM-40\",\"ProductCategoryName\":\"Monitor speakers\",\"ProductCategoryID\":\"{A2CE6988-E3FA-4D9F-B751-00C073F2CC52}\"},{\"ProductID\":\"{2757CEF3-AEE8-4CFD-A1E6-30895F6AD422}\",\"ProductName\":\"TORAIZ-SQUID\",\"ProductCategoryName\":\"Music Production\",\"ProductCategoryID\":\"{63513C2D-E27C-44D9-8DA0-03E8C77FAB86}\"},{\"ProductID\":\"{79F0F6FB-721D-4065-ADA9-0929C035FF69}\",\"ProductName\":\"TORAIZ AS-1\",\"ProductCategoryName\":\"Music Production\",\"ProductCategoryID\":\"{63513C2D-E27C-44D9-8DA0-03E8C77FAB86}\"},{\"ProductID\":\"{10A75572-3621-43E1-8D61-19D2E33A14B9}\",\"ProductName\":\"TORAIZ SP-16\",\"ProductCategoryName\":\"Music Production\",\"ProductCategoryID\":\"{63513C2D-E27C-44D9-8DA0-03E8C77FAB86}\"},{\"ProductID\":\"{49A229FA-2136-4B40-BED6-22C50804468A}\",\"ProductName\":\"RB-DMX1\",\"ProductCategoryName\":\"DJ software \u0026 Interfaces\",\"ProductCategoryID\":\"{B554DD71-67CD-4797-AB53-D57D183867C6}\"},{\"ProductID\":\"{E9C6ECC9-05F8-4AC5-A11A-074D39634FCC}\",\"ProductName\":\"INTERFACE-2\",\"ProductCategoryName\":\"DJ software \u0026 Interfaces\",\"ProductCategoryID\":\"{B554DD71-67CD-4797-AB53-D57D183867C6}\"},{\"ProductID\":\"{A00235B4-7289-4170-92D3-7BDD1C41DC6D}\",\"ProductName\":\"DJS-1000\",\"ProductCategoryName\":\"DJ sampler\",\"ProductCategoryID\":\"{993A8274-27AA-49D0-B552-A1B2E6F2493E}\"},{\"ProductID\":\"{EF305A2F-65FB-4BCA-922D-123D161F4F51}\",\"ProductName\":\"RMX-1000\",\"ProductCategoryName\":\"Remix station\",\"ProductCategoryID\":\"{B0496E38-516D-47E0-9AE0-5DC5C22C4BE7}\"}]"));
        }),
        setProducts: async () => {
          const selected = {...filter.selected};
          const products = await filter.fetchProducts().catch((error) => console.error(error));
    
          products.forEach((product) => {
            const categoryID = product.ProductCategoryID;
            const categoryName = product.ProductCategoryName;
            const productID = product.ProductID;
            const productName = product.ProductName;
    
            if (!filter.products[categoryID]) {
              filter.products[categoryID] = {
                id: categoryID,
                name: categoryName,
                items: [],
              };
            }
    
            const existingProductsFound = filter.products[categoryID].items.filter((thisProduct) => thisProduct.id === productID);
    
            if (existingProductsFound.length > 0) {
              return;
            }
    
            filter.products[categoryID].items.push({
              id: productID,
              name: productName,
            });
    
            filter.els.theProductsCategory.disabled = false;
          });
    
          const theCategories = Object.values(filter.products);
    
          theCategories.sort((a, b) => {
            if (a.name > b.name) {
              return 1;
            }
    
            if (a.name < b.name) {
              return -1;
            }
    
            return 0;
          });
    
          let categoryIndex = 1;
          filter.els.theProductsCategory.options.length = 1;
    
          theCategories.forEach(theCategory => {
            filter.els.theProductsCategory.options[categoryIndex] = new Option(theCategory.name, theCategory.id);
    
            if (selected.category && theCategory.id === selected.category) {
              filter.els.theProductsCategory.selectedIndex = categoryIndex;
            };
    
            categoryIndex++;
          });
    
          filter.els.theProducts && filter.setProduct(selected);
        },
        setProduct: (selected) => {
          const theProducts = selected.category ? filter.products[selected.category].items : [];
          let productIndex = 1;
    
          theProducts.sort((a, b) => {
            if (a.name > b.name) {
              return 1;
            }
    
            if (a.name < b.name) {
              return -1;
            }
    
            return 0;
          });
    
          filter.els.theProducts.options.length = 1;
          filter.els.theProducts.options.selectedIndex = 0;
    
          theProducts.forEach((theProduct) => {
            filter.els.theProducts.options[productIndex] = new Option(theProduct.name, theProduct.id);
    
            if (selected.product && theProduct.id === selected.product) {
              filter.els.theProducts.selectedIndex = productIndex;
            };
    
            productIndex++;
          });
    
          filter.els.theProducts.disabled = theProducts.length <= 0;
        },
      };
    
      const list = {
        s: {
          selectors: {
            theWrap: '.store-map',
            theContent: '.store-list__content',
            theList: '.store-list__list',
            theCount: '.store-map__count',
            theArea: '.store-map__area',
            theItem: '.store-list__item',
            theActiveItem: '.store-list__item.is-active',
          },
          classes: {
            listIsHidden: 'list-is-hidden',
            isActive: 'is-active',
          },
        },
        els: {},
        init: () => {
          list.els.theWrap = d.querySelector(list.s.selectors.theWrap);
          list.els.theContent = d.querySelector(list.s.selectors.theContent);
          list.els.theList = d.querySelector(list.s.selectors.theList);
          list.els.theCount = d.querySelector(list.s.selectors.theCount);
          list.els.theArea = d.querySelector(list.s.selectors.theArea);
        },
        build: () => {
          let theList = [];
    
          map.shops.length
          ? map.shops.forEach(shop => theList.push(list.getListItem(shop)))
          : theList.push(list.getEmptyMessage());
    
          list.setAmount(map.shops.length);
          list.setCityName();
          list.els.theList.innerHTML = theList.join('');
    
          list.els.theContent.scrollTo({
            top: 0,
            left: 0,
            behavior: 'smooth',
          });
    
          list.bindIt();
        },
        bindIt: () => {
          list.els.theItems = list.els.theList.querySelectorAll(list.s.selectors.theItem);
    
          [...list.els.theItems].forEach((theItem) => {
            theItem.addEventListener('mouseenter', () => {
              list.dehighlightItem();
              theItem.classList.add(list.s.classes.isActive);
    
              marker.animate.stop();
              marker.animate.start(theItem.dataset.id);
            });
    
            theItem.addEventListener('mouseleave', () => {
            });
          });
        },
        show: () => list.els.theWrap.classList.remove(list.s.classes.listIsHidden),
        highlightItem: (id) => {
          if (!id) { return; }
    
          const theItem = list.els.theContent.querySelector(`[data-id="${id}"]`);
    
          list.dehighlightItem();
    
          theItem && theItem.classList.add(list.s.classes.isActive);
    
          theItem && list.els.theContent.scrollTo({
            top: theItem.offsetTop,
            left: 0,
            behavior: 'smooth',
          });
        },
        dehighlightItem: () => {
          const theActiveItem = list.els.theContent.querySelector(list.s.selectors.theActiveItem);
    
          theActiveItem && theActiveItem.classList.remove(list.s.classes.isActive);
        },
        setAmount: (amount) => list.els.theCount.innerHTML = amount,
        setCityName: () => list.els.theArea.innerHTML = map.options.city || map.options.country,
        getListItem: (shop) => {
          const protocol = shop.Website && shop.Website.indexOf('://') === -1 ? 'http://' : '';
          const websiteLink = shop.Website ? `<a href="${protocol}${shop.Website}" class="link link--underlined" target="_blank">
                        <span class="link__label">${general.els.theVisitWebsite ? general.els.theVisitWebsite.value : 'Visit website'}</span>
                      </a>` : '';
    
          return `
            <li class="store-list__item" data-id="${shop.Location_ID}" data-category="${shop.Category}">
              <article class="snippet-d">
                <header class="snippet-d__header">
                  <h3 class="snippet-d__heading">${shop.StoreName}</h3>
    
                  <span class="caption">${shop.Distance}</span>
                </header>
    
                <div class="snippet-d__main caption">
                  ${shop.StreetName} ${shop.BuildingNumber}<br>
                  ${shop.ZipCode} ${shop.City}
                </div>
    
                <a href="${general.getDetailLink(shop)}" class="snippet-d__link"></a>
    
                <div class="snippet-d__actions actions actions--split actions--force caption">
                  <div class="actions__item">
                    <div class="snippet-d__action">
                      ${websiteLink}
                    </div>
                  </div>
    
                  <div class="actions__item">
                    <div class="snippet-d__action">
                      <a href="${general.getDetailLink(shop)}" class="link link--underlined">
                        <span class="link__label">${general.els.theMoreDetails ? general.els.theMoreDetails.value : 'More details'}</span>
                      </a>
                    </div>
                  </div>
                </div>
              </article>
            </li>
          `;
        },
        getEmptyMessage: () => `
          <li class="store-list__item">
            ${general.els.theNoShopsFound.value || ''}
          </li>
        `,
      };
    
      const map = {
        s: {
          selectors: {
            theMapWrap: '#store-map__map',
          },
          classes: {},
        },
        el: {},
        options: {
          center: {
            lat: 0,
            lng: 0,
          },
          country: '',
          city: '',
          zoom: 5,
          bounds: {},
        },
        shops: [],
        markers: [],
        clusters: null,
        els: {},
        init: () => {
          map.els.theMapWrap = d.querySelector(map.s.selectors.theMapWrap);
    
          if (!map.els.theMapWrap) { console.error('Map container is not found in the DOM!'); return; }
    
          map.el = new google.maps.Map(map.els.theMapWrap, {
            zoomControl: true,
            mapTypeControl: false,
            scaleControl: false,
            streetViewControl: false,
            rotateControl: false,
            fullscreenControl: false,
          });
          map.geocoder = new google.maps.Geocoder();
    
          map.el.addListener('dragend', async () => {
            if (!map.canDrag) { return; }
    
            map.canDrag = false;
    
            const center = map.el.getCenter();
    
            map.options.center.lat = center.lat(),
            map.options.center.lng = center.lng();
    
            const location = await map.getLocation({location: map.options.center});
            const shops = await general.getShops();
    
            map.options.city = general.getCityName(location.address_components);
    
            list.setCityName();
    
            map.build(false);
            list.build();
          });
    
          return map.el;
        },
        build: (fit = true) => {
          map.el.setCenter(map.options.center);
    
          map.removeMarkers();
          map.addMarkers();
          // map.clusters = marker.cluster();
          fit && map.fitToMarkers();
        },
        addMarkers: () => {
          if (map.shops.length <= 0) {
            return;
          }
    
          map.shops.forEach((shop) => {
            map.markers.push(marker.add(shop));
          });
    
          return map.markers;
        },
        removeMarkers: () => {
          marker.animate.stop();
    
          map.markers.forEach((thisMarker) => {
            marker.hide(thisMarker);
          });
    
          map.markers = [];
        },
        fitToMarkers: () => {
          map.options.bounds = new google.maps.LatLngBounds();
    
          for (let i = 0; i < map.markers.length; i++) {
            map.options.bounds.extend(map.markers[i].getPosition());
          }
    
          map.el.fitBounds(map.options.bounds);
    
          return map.options.bounds;
        },
        getLocation: (whatToSearchFor) => new Promise((resolve, reject) => {
          general.overlay.show();
    
          const geocodeParams = {
            ...whatToSearchFor,
            // componentRestrictions:{
            //   country: map.options.country,
            // }
          };
    
          map.geocoder.geocode(geocodeParams, (geoResult, geoStatus) => {
            if (geoStatus === 'OK') {
              map.options.center.lat = geoResult[0].geometry.location.lat();
              map.options.center.lng = geoResult[0].geometry.location.lng();
              map.options.bounds = geoResult[0].geometry.bounds;
    
              resolve(geoResult[0]);
            } else {
              reject(geoStatus);
            }
    
            general.overlay.hide();
          });
        }),
        getMyLocation: () => new Promise((resolve, reject) => {
          if (!navigator.geolocation) {
            reject('Browser geolocation feature is not supported!');
          }
    
          general.overlay.show();
    
          navigator.geolocation.getCurrentPosition(
            async (position) => {
              const location = {
                lat: position.coords.latitude,
                lng: position.coords.longitude,
              };
    
              const myLocation = await map.getLocation({location: location});
    
              resolve(myLocation);
            },
            () => {
              filter.els.myLocationTrigger.classList.add(filter.s.classes.locationIsBlocked);
              general.overlay.hide();
    
              reject('Browser geolocation is blocked!');
            }
          );
        }),
      };
    
      const marker = {
        s: {
          selectors: {},
          classes: {},
        },
        els: {},
        init: () => {},
        add: (shop) => {
          const markerOptions = {
            map: map.el,
            position: {
              lat: parseFloat(shop.Latitude),
              lng: parseFloat(shop.Longitude),
            },
            title: shop.StoreName,
            category: shop.Category,
            id: shop.Location_ID,
            info: `<a href="${general.getDetailLink(shop)}" class="link">${shop.StoreName}</a>`,
          };
    
          const thisMarker = new google.maps.Marker(markerOptions);
    
          thisMarker.addListener('click', () => {
            marker.info(thisMarker);
    
            list.highlightItem(thisMarker.id);
          });
    
          return thisMarker;
        },
        hide: (marker) => {
          if (!marker) {
            return;
          }
    
          marker.setVisible(false);
        },
        show: (marker) => {
          if (!marker) {
            return;
          }
    
          marker.setVisible(true);
        },
        info: (thisMarker) => {
          if (!thisMarker) {
            return;
          }
    
          if (infowindow) {
            infowindow.close();
          }
    
          infowindow = new google.maps.InfoWindow({
            content: thisMarker.info,
          });
    
          infowindow.open(map.el, thisMarker);
        },
        animate: {
          start: (id) => {
            if (!id) { return; }
    
            map.markers.forEach((thisMarker) => {
              if (thisMarker.id === id) {
                marker.info(thisMarker);
    
                return;
              }
            });
          },
          stop: () => infowindow && infowindow.close(),
        },
        cluster: () => new MarkerClusterer(map.el, map.markers, {imagePath: '/Content/graphics/m'}),
      };
    
      w.addEventListener('DOMContentLoaded', general.init);
    
      return {
        build: general.onLoad
      };
    
    })(window, window.document, window.sl_translations);
    
  • URL: /components/raw/store-map/store-map.js
  • Filesystem Path: ../src/04_organisms/store-map/store-map.js
  • Size: 93.2 KB
  • Content:
    [
       {
          "ProductID":"{BBC7BBF0-B4BD-47FB-8CFA-29347FC0B0F5}",
          "ProductName":"DJM-V10",
          "ProductCategoryName":"DJ mixer",
          "ProductCategoryID":"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}"
       },
       {
          "ProductID":"{E65F16F4-B3E6-458E-8073-BADA71784F14}",
          "ProductName":"DJM-S7",
          "ProductCategoryName":"DJ mixer",
          "ProductCategoryID":"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}"
       },
       {
          "ProductID":"{A00235B4-7289-4170-92D3-7BDD1C41DC6D}",
          "ProductName":"DJS-1000",
          "ProductCategoryName":"DJ sampler",
          "ProductCategoryID":"{993A8274-27AA-49D0-B552-A1B2E6F2493E}"
       },
       {
          "ProductID":"{FCC860EC-F656-4795-A553-2D4BFDF750A6}",
          "ProductName":"HDJ-CUE1BT",
          "ProductCategoryName":"Headphones",
          "ProductCategoryID":"{44ED94F0-1627-4B62-8255-194648BCCE83}"
       },
       {
          "ProductID":"{AC22DB4C-62A9-4080-B094-61B41E235631}",
          "ProductName":"HDJ-X10C",
          "ProductCategoryName":"Headphones",
          "ProductCategoryID":"{44ED94F0-1627-4B62-8255-194648BCCE83}"
       },
       {
          "ProductID":"{4BCAF4F4-6B7E-4746-9AE2-D6AE2BEDDA8E}",
          "ProductName":"DJM-TOUR1",
          "ProductCategoryName":"DJ mixer",
          "ProductCategoryID":"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}"
       },
       {
          "ProductID":"{82FABB47-D032-4B94-A831-162AA32F222E}",
          "ProductName":"DJM-S9",
          "ProductCategoryName":"DJ mixer",
          "ProductCategoryID":"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}"
       },
       {
          "ProductID":"{91EAF323-4E33-46FE-ADE5-20BC2AAC0B01}",
          "ProductName":"DJM-250MK2",
          "ProductCategoryName":"DJ mixer",
          "ProductCategoryID":"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}"
       },
       {
          "ProductID":"{5D54AE85-3C56-40C8-8C80-4DBEA8B04F48}",
          "ProductName":"DJM-S3",
          "ProductCategoryName":"DJ mixer",
          "ProductCategoryID":"{2F43A6FD-266F-4D95-ACA8-9D25F04002C7}"
       },
       {
          "ProductID":"{CD400C1B-CA62-49C2-BFD3-A4F63A95893F}",
          "ProductName":"DDJ-800",
          "ProductCategoryName":"DJ controller",
          "ProductCategoryID":"{D7A7E2DF-B000-42C8-9533-543B93B3A203}"
       },
       {
          "ProductID":"{031670A5-F1D1-4865-AD39-C16FD166ED4C}",
          "ProductName":"DDJ-400",
          "ProductCategoryName":"DJ controller",
          "ProductCategoryID":"{D7A7E2DF-B000-42C8-9533-543B93B3A203}"
       },
       {
          "ProductID":"{5FE3B791-37E2-4F09-8573-CF24A4AE41D9}",
          "ProductName":"DDJ-SZ2",
          "ProductCategoryName":"DJ controller",
          "ProductCategoryID":"{D7A7E2DF-B000-42C8-9533-543B93B3A203}"
       },
       {
          "ProductID":"{F9DE25BA-BC99-4304-AB81-8F44407D6183}",
          "ProductName":"HDJ-X10",
          "ProductCategoryName":"Headphones",
          "ProductCategoryID":"{44ED94F0-1627-4B62-8255-194648BCCE83}"
       }
    ]
  • URL: /components/raw/store-map/store-map.json
  • Filesystem Path: ../src/04_organisms/store-map/store-map.json
  • Size: 2.7 KB
  • Content:
    .store-map {
      position: relative;
      --width--store-map-list: 100%;
    
      @media (min-width: 750px) {
        --width--store-map-list: 300px;
      }
    
      @media (min-width: 1000px) {
        --width--store-map-list: 325px;
      }
    }
    
    .store-map:after {
      transition: opacity 250ms;
      position: absolute;
      top: 0;
      left: 0;
      display: block;
      width: 100%;
      height: 100%;
      content: '';
      background-color: rgba(#fff, .7);
      opacity: 0;
      pointer-events: none;
    
      .is-searching-shops & {
        opacity: 1;
        pointer-events: all;
      }
    }
    
    .store-map__anchor {
      position: absolute;
      bottom: 100%;
      display: block;
      height: 44px;
    }
    
    .store-map__header {
      transition: width 200ms;
      position: sticky;
      top: 45px;
      z-index: 99;
      display: block;
      width: var(--width--store-map-list);
      overflow: hidden;
    
      .list-is-hidden & {
        display: none;
        width: 0;
    
        @media (min-width: 750px) {
          display: block;
        }
      }
    
      @media (min-width: 750px) {
        position: static;
      }
    }
    
    .store-map__heading {
      display: flex;
      align-items: center;
      width: var(--width--store-map-list);
      min-height: 50px;
      padding: 0 calc(var(--gap) * 4);
      color: var(--color--neutrals-0);
      background-color: var(--color--neutrals-8);
    }
    
    .store-map__switch {
      display: flex;
      align-items: center;
    
      @media (min-width: 750px) {
        display: none;
      }
    }
    
    .store-map__switch__item {
      display: flex;
      flex: 0 0 50%;
      align-items: center;
      justify-content: center;
      padding: calc(var(--gap) * 2) calc(var(--gap) * 4);
      color: var(--color--neutrals-0);
      text-decoration: none;
      background-color: var(--color--neutrals-7);
    
      &:hover {
        color: var(--color--neutrals-0);
        text-decoration: none;
      }
    
      &.is-active {
        background-color: var(--color--neutrals-6);
      }
    }
    
    .store-map__main {
      @media (min-width: 750px) {
        display: flex;
        height: 60vh;
      }
    }
    
    .store-map__list {
      transition: width 200ms;
      display: none;
      flex: 0 0 auto;
      width: var(--width--store-map-list);
      overflow: hidden;
    
      &.view-is-active {
        display: flex;
      }
    
      .list-is-hidden & {
        width: 0;
      }
    
      @media (min-width: 750px) {
        display: flex;
      }
    }
    
    .store-map__map {
      display: none;
      flex: 1 1 auto;
      min-height: calc(100vh - 200px);
      background-color: var(--color--neutrals-3);
    
      &.view-is-active {
        display: flex;
      }
    
      @media (min-width: 750px) {
        display: flex;
        min-height: 60vh;
        margin-top: -50px;
      }
    }
    
    #store-map__map {
      flex: 1 1 auto;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    
    .store-map__actions {
      margin-top: calc(var(--gap) * 8);
      padding: 0 var(--gutter--bucket);
    
      @media (min-width: 750px) {
        margin-top: calc(var(--gap) * 10);
      }
    }
    
    .gm-style .gm-style-iw-c {
      border-radius: 0 !important;
      padding: calc(var(--gap) * 3) calc(var(--gap) * 8);
    }
    
    .gm-style .gm-style-iw-d {
      padding: 0 calc(var(--gap) * 4) calc(var(--gap) * 0) 0;
    }
    
    .gm-style .gm-style-iw-c .link {
      font-weight: 700;
      font-size: var(--p--2);
      font-family: var(--font--main);
    }
    
    .gm-ui-hover-effect {
      top: -4px !important;
      right: -4px !important;
    }
    
  • URL: /components/raw/store-map/store-map.scss
  • Filesystem Path: ../src/04_organisms/store-map/store-map.scss
  • Size: 3.1 KB

No notes defined.