www.musicbandclothing.com Open in urlscan Pro
2606:4700:10::6816:2558  Public Scan

URL: https://www.musicbandclothing.com/
Submission: On December 04 via manual from US — Scanned from CH

Form analysis 4 forms found in the DOM

GET /search

<form class="search_slider" action="/search" method="get" role="search" itemprop="search" onsubmit="Mask.show()">
  <input type="hidden" name="type" value="product">
  <input class="input1" type="search" name="q" placeholder="1-Word Searches Only " aria-label="1-Word Searches Only ">
  <button type="submit" class="btn1" style="display:none"><i class="photofont photo-search"></i></button>
  <i class="photofont icon photo-close suggest-close" data-slide-layer="close"></i>
</form>

GET /search

<form class="search_slider" action="/search" method="get" role="search" itemprop="search" onsubmit="Mask.show()">
  <input class="input1" type="search" name="q" placeholder="1-Word Searches Only " aria-label="1-Word Searches Only ">
  <button type="submit" class="btn1"><i class="photofont photo-search"></i></button>
</form>

POST /cart/add

<form method="post" action="/cart/add" class="product-form" id="ProductFormcommon-product-detail">
  <input type="hidden" name="id" value="7d6e8bd5-5e0e-43ff-8190-66db9eb87000">
  <div class="zen-customer-lr">
    <div class="zen-customers__right">
      <div class="asdqweqwewq">
        <style>
          .product-page-add_to_cart-section .select-option {
            width: 100%;
          }

          .product-page-add_to_cart-section .select-option .selector-wrapper span.icon.photofont.photo-unfold {
            position: absolute;
            right: 12px;
            top: 44%;
            pointer-events: none;
          }

          .dropdown-toggle::after {
            display: none;
          }

          .selector-wrapper-position {
            position: relative;
          }

          .ringsize-font {
            margin-top: 10px;
            font-size: 12px;
            line-height: 1.4;
          }

          .photocharms-warnfill,
          a.photocharms-warnfill:not([href]):not([tabindex]) {
            color: #00f;
            text-decoration: underline;
            cursor: pointer;
          }

          #examples_hide {
            max-height: 580px;
          }

          @media(max-width:768px) {
            #examples_hide {
              max-height: 100vh;
            }
          }
        </style>
        <div data-select="" class="select-option show">
          <div class="selector-wrapper product-form__item">
            <label class="select-field-title" for="OptionSelector-1" data-name="Choose The Size">Choose The Size :</label>
            <select onchange="Product.changeOption(this,1)" class="single-option-selector product-form__input" id="OptionSelector-1" data-index="0" data-option="option1" data-name="Choose The Size">
              <option value="XS" selected="selected">XS</option>
              <option value="S">S</option>
              <option value="M">M</option>
              <option value="L">L</option>
              <option value="XL">XL</option>
              <option value="XXL">XXL</option>
              <option value="XXXL">XXXL</option>
            </select>
            <span class="icon photofont photo-unfold"></span>
          </div>
        </div>
        <div data-select="" class="select-option show">
          <div class="selector-wrapper product-form__item">
            <label class="select-field-title" for="OptionSelector-2" data-name="Choose The Color">Choose The Color :</label>
            <select onchange="Product.changeOption(this,1)" class="single-option-selector product-form__input" id="OptionSelector-2" data-index="1" data-option="option2" data-name="Choose The Color">
              <option value="white" selected="selected">white</option>
              <option value="black">black</option>
            </select>
            <span class="icon photofont photo-unfold"></span>
          </div>
        </div>
        <script>
          /* 
           * Others: 加载字体 
           * Date:   2021.06.16
           * Parame: ["AIV1","AIV2","AIV3"...](array) or "AIV1"(string)
           */
          function loadCustomFonts(fontArr) {
            let css = ``;
            fontArr = $.isArray(fontArr) ? fontArr : [fontArr];
            $.each(fontArr, function(i, v) {
              css += `@font-face{font-family:'${v}';src:url('https://pic.stylelab.com/fonts/${v}.woff?${new Date().getTime()}') format('woff');font-weight:normal;font-style:normal}`;
            });
            $('#customFontStyle').length > 0 ? $('#customFontStyle').append(css) : $('<style>', {
              id: 'customFontStyle'
            }).css({}).text(css).appendTo('body');
          }
          /* 
           * Others: 格式化sku 
           * Date:   2021.04.27
           * Parame: sku
           */
          function formatSku(sku) {
            return sku;
          }
          translation = function(str) {
            var put = document.createElement('div');
            put.innerHTML = str;
            str = put.innerText || put.textContent;
            return str;
          }
          var mask_loading_image_unify = "https://cdn.lazyshop.com/files/7a7038c6-7f90-40e0-81e5-7f4d5a4ffa38/other/d0c717947bbbc313555fc4f35cc320ff.gif" ?
            "https://cdn.lazyshop.com/files/7a7038c6-7f90-40e0-81e5-7f4d5a4ffa38/other/d0c717947bbbc313555fc4f35cc320ff.gif" : '';
        </script>
        <style>
          /*   自定义下拉列表样式start */
          .custom-selector-container {
            position: relative;
          }

          .custom-selector-container .custom-selector {
            padding: 10px;
            border: 1px solid #eee;
            font-weight: normal;
            text-transform: capitalize;
            border-radius: 4px;
            margin-right: 10px;
            cursor: pointer;
          }

          .custom-selector-active {
            border-color: #000 !important;
          }

          .custom-selector-container .custom-selector input {
            display: none;
          }

          .custom-selector-container .custom-selector-box {
            display: flex;
          }

          .custom-selector-container .custom-selector-label {
            display: flex;
            justify-content: left;
            align-items: center;
            height: 100%;
            margin: 0;
            white-space: nowrap;
            color: #000;
            font-size: 1rem;
            width: auto;
            padding-left: 0rem;
            text-transform: initial;
            margin-bottom: 12px;
            font-weight: 600;
          }

          .custom-selector-container span.icon.photofont.photo-unfold {
            position: absolute;
            right: 12px;
            top: 55%;
            pointer-events: none;
          }

          #images-example {
            color: #e60044;
            text-decoration: underline;
          }

          /*   自定义下拉列表样式end */
          .list-conent {
            display: flex;
            flex-wrap: wrap;
          }

          .font-click {
            list-style: none;
            margin-right: 5px;
            padding: 7px 0;
            border: 1px solid #999;
            margin-bottom: 5px;
            font-size: 12px;
            font-weight: 600;
            width: 24%;
            cursor: pointer;
            text-align: center;
            border-radius: 4px;
          }

          .font-click p {
            margin: 0 auto;
          }

          .font-click .font-radio {
            display: none;
          }

          .font-click.active {
            border: 1px solid red;
          }

          .text-font-container,
          .text-color-container {
            width: 100%;
            margin-bottom: 1.5rem;
          }

          .color-list-conent .color-click {
            list-style: none;
          }

          .font-list-title,
          .font-color-title {
            font-size: 1rem;
            color: #000;
          }

          .color-list-conent {
            display: flex;
            flex-wrap: wrap;
          }

          textarea {
            width: 100%;
            height: 100%;
            resize: none;
          }

          .color-container .color-title {
            font-size: 1rem;
            color: #000;
            font-weight: 700;
            margin: 0;
            padding: 0;
          }

          .color-list-conent .font-click,
          .color-list-conent .color-click {
            margin-right: 5px;
            padding: 7px 0;
            border: 1px solid #999;
            margin-bottom: 5px;
            font-size: 12px;
            font-weight: 600;
            width: calc(25% - 4px);
            cursor: pointer;
            text-align: center;
            border-radius: 4px;
          }

          .color-list-conent .font-click.active,
          .color-list-conent .color-click.active {
            border-color: red;
          }

          .color-list-conent .color-click {
            padding: 0;
          }

          .color-list-conent .color-click p {
            display: block;
            height: 32px;
            width: 100%;
            margin: 0;
          }

          .color-list-conent .font-click:nth-child(4n),
          .color-list-conent .color-click:nth-child(4n) {
            margin-right: 0
          }

          .color-list-conent .font-click .font-radio,
          .color-click .color-radio {
            display: none;
          }

          .color-list-conent .font-click p {
            margin: 0
          }

          .photo-box .area-photo-upload,
          .area-crop-upload {
            align-items: center;
            padding: 0 10px;
            height: 4rem;
            margin: 1rem 0;
            border: 1px solid #000;
            border-radius: 4px;
            color: #000;
            background: #fff !important;
          }

          .el-upload button {
            background: transparent;
            border: none;
            color: #fff;
            text-align: center;
            text-transform: capitalize;
            display: inline-block;
          }

          .text-input-container {
            position: relative;
            overflow: hidden;
            height: 4rem;
            align-items: center;
            padding: 0;
            border: 1px solid #000;
            border-radius: 4px;
            margin-bottom: 1rem;
          }

          .text-area-container {
            height: 6rem;
          }

          .text-input-container input {
            position: absolute;
            border: none;
            border-radius: 0;
            width: 100%;
            height: 100%;
            padding: 0 8px;
            color: #000;
          }

          .text-input-container .leftnum {
            position: absolute;
            right: 16px;
            top: 50%;
            transform: translateY(-50%);
          }

          .dialog-footer {
            display: flex;
            justify-content: center;
            margin: 1rem 0 0;
          }

          .dialog-footer .el-button {
            padding: 1rem 2rem;
            font-size: 14px;
            border-radius: 3px;
          }

          .el-button--primary,
          .el-button--primary.is-active,
          .el-button--primary:active {
            background-color: #e60044 !important;
            border-color: #e60044 !important;
          }

          .el-dialog {
            min-width: 543px
          }

          .product-txt-label {
            margin-top: 1rem;
            font-size: 1rem;
            margin-bottom: .5rem
          }

          .product-txt-label span {
            font-size: 1rem;
          }

          .el-dialog__headerbtn .el-dialog__close {
            font-size: 28px
          }

          .el-upload--text {
            cursor: pointer;
            background: #000;
            color: #fff;
            border-radius: 25px;
            padding: 3px .5rem;
            width: auto;
            text-align: center;
            text-transform: capitalize;
            display: inline-block;
            font-size: .9rem;
          }

          .text-container {
            margin-bottom: 1rem;
            width: 100%;
          }

          .photo-crop-container {
            margin-bottom: 1rem
          }

          @media(max-width:768px) {
            .el-dialog {
              min-width: 100%
            }

            .product-txt-label {
              margin-top: 0;
              font-size: .9rem;
              margin-bottom: .5rem;
            }

            .product-txt-label span {
              font-size: 0.8rem;
            }

            .text-input-container,
            .area-crop-upload {
              height: 3.5rem
            }

            .custom-selector-container,
            #custom-area-container {
              position: relative;
              padding: 0 1rem;
            }
          }

          .text-special-style {
            display: flex;
            justify-content: space-between;
            width: 100%;
            align-items: center;
          }

          .text-special-style .label-input-container {
            width: 45%;
          }

          /*   .text-special-style .leftnum{display:none;} */
          .text-heart {
            position: relative;
          }

          .text-heart:after {
            content: "";
            position: absolute;
            background: url("https://cdn.lazyshop.com/assets/fb06e3ad54213fa02e6e24a68a725f5a/tc2.png") no-repeat;
            background-size: contain;
            width: 44px;
            height: 44px;
            left: -21px;
            top: -25px;
          }

          .ui-widget-header .ui-icon {
            background-image: url(https://cdn.lazyshop.com/assets/fb06e3ad54213fa02e6e24a68a725f5a/ui-icons_444444_256x240.png);
          }
        </style>
        <script src="https://cdn.lazyshop.com/assets/fb06e3ad54213fa02e6e24a68a725f5a/qiniu.min.js" type="text/javascript"></script>
        <div class="custom-selector-container" id="selectorContent"><input id="selector-flag" name="properties[isdefault]" value="0" type="hidden"><label class="custom-selector-label">Design:</label>
          <div class="custom-selector-box"><label class="custom-selector custom-selector-active"><input type="radio" name="custom-selector-radio" value="0" checked=""><span>Use default picture</span></label><label class="custom-selector"><input
                type="radio" name="custom-selector-radio" value="1"><span>Upload your own</span></label></div>
        </div>
        <script>
          //去掉sku的-部分
          function formatSku(sku) {
            var splitSku = typeof customJson.splitSku != 'undefined' ? customJson.splitSku : false;
            var cutSku = typeof customJson.cutSku != 'undefined' ? customJson.cutSku : false;
            var sku_val = sku;
            if (splitSku && sku_val.indexOf('-') > -1) {
              var zenSkuArr = sku_val.split('-');
              sku_val = zenSkuArr[0];
            }
            if (cutSku) {
              sku_val = sku_val.substring(0, sku_val.length - cutSku);
            }
            return sku_val;
          }
          window.addEventListener('EVENT_PHOTO_DIALOG', function(event) {
            $('html').css({
              height: "100%",
              overflow: "hidden"
            });
            $('body').css({
              height: "100%",
              overflow: "hidden"
            });
          });
          window.addEventListener('EVENT_PHOTO_DIALOG_CLOSE', function(event) {
            $('html').css({
              height: "",
              overflow: ""
            });
            $('body').css({
              height: "",
              overflow: ""
            });
          });
          var customValue =
            `{"isSelectorProductImage":true,"productImage":1,"dataType":1,"selector":{"label":"Design","data":[{"name":"Use default picture","value":0},{"name":"Upload your own","value":1}]},"crop":{"data":[{"width":794,"height":1276}]}}`;
          var customJson = JSON.parse(
            `{"isSelectorProductImage":true,"productImage":1,"dataType":1,"selector":{"label":"Design","data":[{"name":"Use default picture","value":0},{"name":"Upload your own","value":1}]},"crop":{"data":[{"width":794,"height":1276}]}}`);
          var _zenSku = "CTS1885-XS";
          var splitSku = typeof customJson.splitSku != 'undefined' ? customJson.splitSku : false;
          var cutSku = typeof customJson.cutSku != 'undefined' ? customJson.cutSku : false;
          var isSunziRemark = typeof customJson.isSunziRemark != 'undefined' ? customJson.isSunziRemark : false; //
          var isSunziText = typeof customJson.isSunziText != 'undefined' ? customJson.isSunziText : true; //
          var is_variant_options = typeof customJson.is_variant_options != 'undefined' ? customJson.is_variant_options : false;
          var is_variant_options_type = typeof customJson.is_variant_options_type != 'undefined' ? customJson.is_variant_options_type : 'option1';
          var is_variant_lable = typeof customJson.is_variant_lable != 'undefined' ? customJson.is_variant_lable : false;
          var walletDataNew = typeof customJson.walletDataNew != 'undefined' ? customJson.walletDataNew : false;
          var variant_options_val = '';
          if (splitSku || cutSku) {
            _zenSku = formatSku(_zenSku);
          }
          var textIsOptional = '';
          var productImage = typeof customJson.productImage != 'undefined' ? customJson.productImage : 0;
          //lazyshop获取产品图片的属性为featured_media,做个兼容 2022-3-30 alice
          var productVariantImage = "" ? "" : "https://cdn.lazyshop.com/files/b518c305-0630-4844-a40a-d5afcd59a65c/product/e50ec55e4d4d051d64b8ef21efa308d2.jpeg";
          if (productImage == 1 && productVariantImage != '') {
            let productImageUrlValue = "" ? "" : "https://cdn.lazyshop.com/files/b518c305-0630-4844-a40a-d5afcd59a65c/product/e50ec55e4d4d051d64b8ef21efa308d2.jpeg";
            var productImageUrl = productImageUrlValue.indexOf("https") > -1 ? productImageUrlValue : "https:" + productImageUrlValue;
          } else {
            let productImageUrlValue = "https://cdn.lazyshop.com/files/b518c305-0630-4844-a40a-d5afcd59a65c/product/e50ec55e4d4d051d64b8ef21efa308d2.jpeg?x-oss-process=image%2Fauto-orient%2C1%2Fresize%2Cm_fixed%2Cw_1000%2Ch_1000";
            var productImageUrl = productImageUrlValue.indexOf("https") > -1 ? productImageUrlValue : "https:" + productImageUrlValue;
          }
          var dataType = typeof customJson.dataType != 'undefined' ? customJson.dataType : ''; //区分ai数据格式
          var isAiUrl = typeof customJson.isAiUrl != 'undefined' ? customJson.isAiUrl : false; //只刻字的产品要求固定模板图传ai图字段 2021-11-26 alice
          var aiUrl = 'https://pic.stylelab.com/img/photo/' + _zenSku + '-ai.png'; //固定模板图的地址
          var isSelectorProductImage = typeof customJson.isSelectorProductImage != 'undefined' ? customJson.isSelectorProductImage : false; //true:当selector改变时,如果用户选择使用固定图片传主图到效果图列,否则不传
          var fixImageValue = "http://ai.oss.maiyuan.online/EMDX/emdx-2734-v-1.jpg"; //用户选择不传图则使用在metafield中配置的固定图片url 2022-3-26 alice
          var fixImage = fixImageValue;
          if (fixImageValue && fixImageValue.indexOf("{") > -1) {
            let fixImageJson = JSON.parse(fixImageValue);
            fixImage = typeof fixImageJson[_zenSku] != 'undefined' ? fixImageJson[_zenSku] : fixImage;
          }
          var useFixImage = false; //true:用户选择在元字段中配置的固定图片 不自己传图 2022-3-26 alice
          var useFixText = false; //true:用户选择在元字段中配置的固定文字 不自己输入文字
          var fixText = ""; //用户选择不传图则使用在元字段中配置的固定文字
          //读取配置生成自定下拉框选项 2022-3-26 alice
          if (typeof customJson.selector != 'undefined') {
            var selectorConfig = customJson.selector.data;
            var selectorHtml = '<input id="selector-flag" name="properties[isdefault]" value="0" type="hidden"/><label class="custom-selector-label">' + customJson.selector.label + ':</label><div class="custom-selector-box">';
            selectorConfig.forEach(function(sItem, sIndex) {
              if (sIndex == 0) {
                selectorHtml += '<label class="custom-selector custom-selector-active"><input type="radio" name="custom-selector-radio" value="' + sItem.value + '" checked>';
              } else {
                selectorHtml += '<label class="custom-selector"><input type="radio" name="custom-selector-radio" value="' + sItem.value + '">';
              }
              selectorHtml += '<span>' + sItem.name + '</span></label>';
            });
            selectorHtml += '</div>';
            $("#selectorContent").html(selectorHtml);
          }
          var optionList = {};
          if (customValue.indexOf('optionName') > -1) {
            var optionNum = 0;
            optionNum++;
            optionList['option' + optionNum] = `XS`;
            optionNum++;
            optionList['option' + optionNum] = `white`;
          }
          var photoArray = [];
          if (typeof customJson.photo != 'undefined') {
            //多个传图的遮罩图、ai图命名是否都相同 true:是 false:否(sku_从1开始的数字序号)
            var samePhoto = typeof customJson.photo.samePhoto != 'undefined' ? customJson.photo.samePhoto : false;
            var productItem = typeof customJson.photo.productItem != 'undefined' ? customJson.photo.productItem : '';
            var styleConfig = 0;
            //     //PC端传图区展示位正方形块 移动端传图区单行展示
            //     if($(window).width() > 768){
            //       styleConfig = 1;
            //     }else{
            //       styleConfig = 0;
            //     }
            var photoOptionName = '';
            var photoOptionVal = '';
            //如果传图配置受某一个变体控制
            if (typeof customJson.photo.optionName != 'undefined') {
              photoOptionName = customJson.photo.optionName;
              photoOptionVal = optionList[photoOptionName]; //获取控制传图的变体的默认值
            }
            var photoConfig = customJson.photo.data;
            //如果是变体值是数字,选择几就有几个传图
            if (customJson.photo.type == 'num') {
              var photoNum = parseInt(photoOptionVal);
              for (var i = 1; i <= photoNum; i++) {
                let photoItem = setPhotoArray(photoConfig, i);
                if (samePhoto) {
                  photoItem = setPhotoArray(photoConfig);
                }
                photoArray.push(photoItem);
              }
            } else if (customJson.photo.type == 'value') { //如果变体值不同走不同的传图配置
              photoConfig[photoOptionVal].forEach(function(item, index) {
                let photoNo = index + 1;
                let photoItem = setPhotoArray(item, photoNo);
                if (samePhoto) {
                  photoItem = setPhotoArray(item);
                }
                photoArray.push(photoItem);
              });
            } else if (customJson.photo.type == 'sku') { //如果变体值不同走不同的传图配置
              photoConfig[_zenSku].forEach(function(item, index) {
                let photoNo = index + 1;
                let photoItem = setPhotoArray(item, photoNo);
                if (samePhoto) {
                  photoItem = setPhotoArray(item);
                }
                photoArray.push(photoItem);
              });
            } else { //传图配置与变体无关
              photoConfig.forEach(function(item, index) {
                let photoNo = index + 1;
                let photoItem = setPhotoArray(item, photoNo);
                if (samePhoto) {
                  photoItem = setPhotoArray(item);
                }
                photoArray.push(photoItem);
              });
            }
            //构造插件中遮罩图传图的参数
            function setPhotoArray(item, photoNo = '') {
              let cSku = _zenSku;
              if (productItem) {
                cSku = productItem;
              }
              let photoName = cSku;
              if (photoNo) {
                photoName = cSku + "_" + photoNo;
              }
              return {
                "require": true,
                "type": "multipic",
                "sku": photoName,
                "basePhotoImg": "https://pic.stylelab.com/img/photo/" + photoName + ".png?33zKaQ",
                "ainame": "",
                "isAiLucid": typeof item.isAiLucid != 'undefined' ? item.isAiLucid : 1, //后端生成的ai图边缘是否为透明	1:透明 0:不透明 不设置默认是0
                "bgcolor": typeof item.bgcolor != 'undefined' ? item.bgcolor : "rgb(255,255,255)", //效果图的背景颜色 一般填rgb(255,255,255) 为空则是黑色
                "isAiColor": typeof item.isAiColor != 'undefined' ? item.isAiColor : '', //后端生成的ai图边缘颜色值,当该参数不为空时,isAiLucid需要设置为0
                "grayscale": typeof item.grayscale != 'undefined' ? item.grayscale : false, // 将图片显示为灰色.
                "style": styleConfig,
                "dpi": typeof item.dpi != 'undefined' ? item.dpi : ''
              };
            }
          }
          var cropArray = [];
          if (typeof customJson.crop != 'undefined') {
            var cropPrompt = typeof customJson.crop.cropPrompt != 'undefined' ? customJson.crop.cropPrompt : '';
            var cropOptionName = '';
            var cropOptionVal = '';
            if (typeof customJson.crop.optionName != 'undefined') {
              cropOptionName = customJson.crop.optionName;
              cropOptionVal = optionList[cropOptionName];
            }
            var cropConfig = customJson.crop.data;
            //如果是变体值是数字,选择几就有几个切图传图
            if (customJson.crop.type == 'num') {
              var cropNum = parseInt(cropOptionVal);
              for (var i = 1; i <= cropNum; i++) {
                var uploadLabel = item.uploadLabel || "Photo" + " " + i;
                if (cropNum == 1) {
                  uploadLabel = item.uploadLabel || "Photo"
                }
                var aspectRatio = 0;
                if (cropConfig.width > 0) {
                  aspectRatio = cropConfig.width / cropConfig.height;
                }
                let cropItem = setCropArray(uploadLabel, aspectRatio);
                cropArray.push(cropItem);
              }
            } else if (customJson.crop.type == 'value') { //如果变体值不同走不同的传图配置
              cropConfig[cropOptionVal].forEach(function(item, index) {
                let cropNo = index + 1;
                var uploadLabel = item.uploadLabel || "Photo" + " " + cropNo;
                if (cropConfig[cropOptionVal].length == 1) {
                  uploadLabel = item.uploadLabel || "Photo"
                }
                var aspectRatio = 0;
                if (item.width > 0) {
                  aspectRatio = item.width / item.height;
                }
                let cropItem = setCropArray(uploadLabel, aspectRatio);
                cropArray.push(cropItem);
              });
            } else if (customJson.crop.type == 'sku') { //如果变体值不同走不同的传图配置
              cropConfig[_zenSku].forEach(function(item, index) {
                let cropNo = index + 1;
                var uploadLabel = item.uploadLabel || "Photo" + " " + cropNo;
                if (cropConfig[_zenSku].length == 1) {
                  uploadLabel = item.uploadLabel || "Photo"
                }
                var aspectRatio = 0;
                if (item.width > 0) {
                  aspectRatio = item.width / item.height;
                }
                let cropItem = setCropArray(uploadLabel, aspectRatio);
                cropArray.push(cropItem);
              });
            } else { //切图传图配置与变体无关
              cropConfig.forEach(function(item, index) {
                let cropNo = index + 1;
                var uploadLabel = item.uploadLabel || "Photo" + " " + cropNo;
                if (cropConfig.length == 1) {
                  uploadLabel = item.uploadLabel || "Photo"
                }
                var aspectRatio = 0;
                if (item.width > 0) {
                  aspectRatio = item.width / item.height;
                }
                let cropItem = setCropArray(uploadLabel, aspectRatio);
                cropArray.push(cropItem);
              });
            }
            //构造插件中切图传图的参数
            function setCropArray(uploadLabel, aspectRatio) {
              return {
                uploadLabel: uploadLabel, //传图描述标签
                btnUploadText: "Upload", //上传按钮文案
                require: true, //是否必传图片
                hasCropOrigin: true,
                sku: _zenSku,
                style: 0, //设置上传样式,0:单行展示 1:矩形上传表单
                type: '',
                aspectRatio: aspectRatio
              };
            }
            // 构建套装产品主图
            if (typeof customJson.isSuitCropHandle != 'undefined' && customJson.isSuitCropHandle != '') {
              var HandleList = ''
              HandleList = HandleList.substring(0, HandleList.length - 1)
              var newHandleList = HandleList.split(",");
            }
          }
          if (typeof customJson.text != 'undefined') {
            textIsOptional = customJson.text.textIsOptional || '';
            var textHtml = '';
            var textOptionName = '';
            var textOptionVal = '';
            if (typeof customJson.text.optionName != 'undefined') {
              textOptionName = customJson.text.optionName;
              textOptionVal = optionList[textOptionName];
            }
          }
          //定义插件的参数
          var _zenConfig = {
            photoAwcdn: 1,
            photoObj: [],
            carvingObj: [],
            crystalObj: [],
            curveCarvingObj: [],
            nameObj: [],
            crop: cropArray,
            cropPrompt: cropPrompt ? translation(cropPrompt) : '',
            photo: photoArray,
            carving: [],
            crystal: [],
            btnUploadText: "Upload",
            uploadLabel: "Photo",
            changeText: "Change",
            photoCancelText: "Cancel",
            photoConfirmText: "Confirm",
            cropConfirmText: "Confirm",
            cropCancelText: "Cancel",
            curveCarving: []
          };
        </script>
        <div id="custom-area-container" style="display: none;">
          <div class="color-container"></div>
          <div class="photo-crop-container">
            <div id="app">
              <div class="zen-photo-carving">
                <div class="crop-container">
                  <div data-v-56cdf94c="">
                    <div data-v-56cdf94c="" class="area-crop-upload area-crop-upload-0">
                      <div data-v-56cdf94c="" class="area-crop-upload-flex"><span data-v-56cdf94c="" class="area-crop-upload-text">Photo<font data-v-56cdf94c="" color="red">*</font></span></div>
                      <div data-v-56cdf94c="" class="area-crop-upload-flex">
                        <div data-v-56cdf94c="" class="avatar-uploader">
                          <div tabindex="0" class="el-upload el-upload--text"><button data-v-56cdf94c="" type="button" class="btn-upload-open crop-btn-upload-open">Upload</button><input type="file" name="file" accept="" class="el-upload__input">
                          </div>
                        </div>
                      </div>
                    </div>
                    <div data-v-56cdf94c="" class="el-dialog__wrapper" style="display: none;">
                      <div role="dialog" aria-modal="true" aria-label="dialog" class="el-dialog el-dialog--center" style="margin-top: 15vh; width: 40%;">
                        <div class="el-dialog__header"><span class="el-dialog__title"></span><button type="button" aria-label="Close" class="el-dialog__headerbtn"><i class="el-dialog__close el-icon el-icon-close"></i></button></div><!----><!---->
                      </div>
                    </div><!---->
                  </div>
                </div>
                <div data-v-475d19a0="" class="el-dialog__wrapper" style="display: none;">
                  <div role="dialog" aria-modal="true" aria-label="dialog" class="el-dialog" style="margin-top: 15vh; width: 40%;">
                    <div class="el-dialog__header"><span class="el-dialog__title"></span><button type="button" aria-label="Close" class="el-dialog__headerbtn"><i class="el-dialog__close el-icon el-icon-close"></i></button></div><!----><!---->
                  </div>
                </div>
                <div class="hidden-input"><input type="text" name="customVal" required="required" class="zen-require"></div>
              </div>
            </div>
            <input type="hidden" id="customInfo" name="properties[customInfo]" value="" style="display:none" required="">
            <a rel="nofollow" id="images-example" target="_blank" href="https://www.google.com.hk/search?q=Shadow+Of+Intent+images&amp;tbm=isch&amp;ved=2ahUKEwidmtvsmbv5AhUUTPUHHW83DV0Q2-cCegQIABAA">Get some inspirations on Google</a>
          </div>
          <div class="text-container" id="textContent"></div>
          <div class="text-font-container"></div>
          <div class="text-color-container"></div>
        </div>
        <link href="https://spjs.cdn.soufeel.com/js/zen-photo-carving-0.6.2/zen-photo-carving-chunk-vendors.css?202112180855" rel="stylesheet">
        <link href="https://spjs.cdn.soufeel.com/js/zen-photo-carving-0.6.2/zen-photo-carving-app.css?202112180855" rel="stylesheet">
        <script src="https://spjs.cdn.soufeel.com/js/zen-photo-carving-0.6.2/zen-photo-carving-chunk-vendors.js?202112180855"></script>
        <script src="https://spjs.cdn.soufeel.com/js/zen-photo-carving-0.6.2/zen-photo-carving-app.js?202112180855"></script>
        <script>
          $(document).ready(function() {
            $('.zen-require').attr('name', 'customVal');
            //根据配置构造文字输入框
            if (typeof customJson.text != 'undefined') {
              var textConfig = customJson.text.data;
              var textType = customJson.text.type || '';
              if (textType == 'num') { //变体值是数字,选择几就展示几个文字输入框
                var textNum = parseInt(textOptionVal);
                for (var i = 1; i <= textNum; i++) {
                  textHtml += getTextHtml(textConfig, i);
                }
              } else if (textType == 'value') { //不同变体值对应不同的文字输入框配置
                textConfig[textOptionVal].forEach(function(item, index) {
                  textHtml += getTextHtml(item, index);
                });
              } else if (textType == 'sku') { //不同变体值对应不同的文字输入框配置
                textConfig[_zenSku].forEach(function(item, index) {
                  textHtml += getTextHtml(item, index);
                });
              } else { //文字输入框配置与变体无关
                textConfig.forEach(function(item, index) {
                  textHtml += getTextHtml(item, index);
                });
              }
              $('#textContent').html(textHtml);
              //初始化日期选择器(如果配置中有日期选择器的话)
              if ($('.dateInput').length > 0) {
                $('.dateInput').each(function() {
                  let dID = $(this).attr('id');
                  let dateFormat = $(this).data('format');
                  $("#" + dID).datepicker({
                    dateFormat: dateFormat,
                    changeYear: true,
                    currentText: "Current year",
                    showButtonPanel: $(this).data('panel'),
                    yearRange: $(this).data('range'),
                    onClose: function(dateText, inst) { // 关闭事件
                      if (dateFormat == 'yy') {
                        var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val(); //获取用户选择的年份值
                        var defaultDate = new Date(year, 01, 01);
                        $(this).datepicker("option", "defaultDate", defaultDate);
                        $(this).datepicker('setDate', defaultDate);
                      }
                    }
                  });
                  if (dateFormat == 'yy') {
                    $('#textContent').prepend('<style>.ui-datepicker-calendar,.ui-datepicker-month,.ui-datepicker-prev,.ui-datepicker-next{display:none;}.ui-datepicker select.ui-datepicker-year{width: 90%;}</style>');
                  }
                });
              }
              if (customJson.text.textInputStyle == 1) {
                $('#textContent').addClass('text-special-style');
                let str = '<div class="text-heart"></div>';
                $('#textContent').find('.label-input-container').eq(0).after(str);
              }
            }
            //       $(".product-form__cart-submit").click(function(e){
            //         e.preventDefault();
            //         if(zenValidateForm()){
            //           $("form.product-form").submit();
            //         }
            //       });
            //统一多文字字体选择
            if (typeof customJson.fontList != 'undefined') {
              var fontListTitle = customJson.fontList.title;
              var fontListData = customJson.fontList.data;
              var fontListHtml = '';
              if (fontListTitle) {
                fontListHtml += '<h1 class="font-list-title">' + fontListTitle + ':</h1>';
              }
              if (fontListData) {
                fontListHtml += '<div class="list-conent">';
                fontListData.forEach((v, i) => {
                  var checked = (i == 0) ? ' checked ' : '';
                  var active = (i == 0) ? ' active ' : '';
                  fontListHtml += '<li class="font-click ' + active + '"><p style="font-family:' + v + '">ABC</p><input class="font-radio" type="radio" name="font" value="' + v + '" ' + checked + '></li>';
                  loadCustomFonts(v);
                })
                fontListHtml += '</div>';
              }
              $('.text-font-container').html(fontListHtml);
              $(".font-click").click(function() {
                $(this).addClass("active").siblings().removeClass("active");
                $(this).find(".font-radio").prop("checked", true);
              })
            }
            //统一多文字颜色选择
            if (typeof customJson.fontColorList != 'undefined') {
              var fontColorTitle = customJson.fontColorList.title;
              var fontColorData = customJson.fontColorList.data;
              var fontColorHtml = '';
              if (fontColorTitle) {
                fontColorHtml += '<h1 class="font-color-title">' + fontColorTitle + ':</h1>';
              }
              if (fontColorData) {
                fontColorHtml += '<div class="list-conent">';
                fontColorData.forEach((v, i) => {
                  var checked = (i == 0) ? ' checked ' : '';
                  var active = (i == 0) ? ' active ' : '';
                  fontColorHtml += '<li class="color-click ' + active + '"><p style="background-color:' + v + ';"></p><input class="font-color-radio" type="radio" name="fontColor" value="' + v + '" ' + checked + '></li>';
                })
                fontColorHtml += '</div>';
              }
              $('.text-color-container').html(fontColorHtml);
              $(".color-click").click(function() {
                $(this).addClass("active").siblings().removeClass("active");
                $(this).find(".font-color-radio").prop("checked", true);
              })
            }
            //通用颜色选择
            if (typeof customJson.colorList != 'undefined') {
              var colorLabel = customJson.colorList.label;
              var colorData = customJson.colorList.data;
              var colorHtml = '';
              if (colorLabel) {
                colorHtml += '<h1 class="color-title">' + colorLabel + ':</h1>';
              }
              if (colorData) {
                colorHtml += '<div class="color-list-conent">';
                var i = 0;
                $.each(colorData, function(k, v) {
                  var checked = (i == 0) ? ' checked ' : '';
                  var active = (i == 0) ? ' active ' : '';
                  colorHtml += '<li class="color-click ' + active + '"><p style="background-color:' + v + ';"></p><input class="color-radio" type="radio" name="color" value="' + k + '" ' + checked + '></li>';
                  i++;
                });
                colorHtml += '</div>';
              }
              $('.color-container').html(colorHtml);
              $(".color-click").click(function() {
                $(this).addClass("active").siblings().removeClass("active");
                $(this).find(".color-radio").prop("checked", true);
              })
            }
            //监听自定义下拉选项
            if (typeof customJson.selector != 'undefined') {
              setCustomBySelector();
              $(".custom-selector").bind("click", function() {
                $(".custom-selector").removeClass("custom-selector-active");
                $(this).addClass("custom-selector-active");
                setCustomBySelector()
              });
            }
          });
          if (typeof customJson.selector != 'undefined') {
            function setCustomBySelector() {
              let selectorValue = $("input[name='custom-selector-radio']:checked").val();
              //使用固定图片
              if (selectorValue == 0) {
                if (typeof customJson.productImage != 'undefined' && customJson.productImage == 1 && isSelectorProductImage) {
                  productImage = 1;
                }
                useFixImage = true;
                useFixText = true;
                $("#custom-area-container").hide();
                $("#selector-flag").val(0);
              } else { //展示自定义区域
                if (typeof customJson.productImage != 'undefined' && customJson.productImage == 1 && isSelectorProductImage) {
                  productImage = 0;
                }
                useFixImage = false;
                useFixText = false;
                $("#custom-area-container").show();
                $("#selector-flag").val(1);
              }
            }
          }
          Product.validators.push(async () => {
            return zenValidateForm();
          })
          //构建文字输入框的html
          function getTextHtml(coors, i) {
            var t_name_str = '';
            var limit = coors.limit || 20;
            var label = coors.label || "";
            var textType = coors.type || "";
            var placeholderText = typeof coors.placeholder != 'undefined' ? coors.placeholder : "Type words here...";
            var defaultValue = coors.defaultValue || '';
            var hasNo = coors.hasNo || '';
            var toUpper = coors.toUpper || false;
            var toLower = coors.toLower || false;
            if (hasNo) {
              let noVal = i + 1;
              placeholderText = placeholderText + ' ' + noVal;
            }
            t_name_str += '<div class="label-input-container">';
            if (label) {
              if (label.indexOf('##') > -1) {
                label = label.replace('##', '<br>');
              }
              t_name_str += '<label class="product-txt-label" for="fonttext">' + label + ':</label>';
            }
            if (textType == 'textarea') {
              t_name_str += '<div class="text-input-container">';
              t_name_str += '<textarea type="text" class="fonttext" name="fonttext" maxlength="' + limit + '" value=""  oninput="changeText(' + i + ',this,' + limit + ',' + toUpper + ',' + toLower + ')" placeholder="' + placeholderText +
                '"></textarea>';
              t_name_str += '<div class="leftnum" id="leftnumbox' + i + '"><span id="leftnum' + i + '">' + limit + '</span> Left</div>';
              t_name_str += '</div>';
            } else if (textType == 'number') {
              var numberRange = coors.numberRange || '1-100';
              t_name_str += '<div class="text-input-container">';
              t_name_str += '<input type="number" class="fonttext" name="fonttext" maxlength="' + limit + '" value=""  oninput="checkNumber(this,\'' + numberRange + '\')" placeholder="' + placeholderText + '"/>';
              t_name_str += '</div>';
            } else if (textType == 'date') {
              var dateFormat = coors.dateFormat || 'yymmdd';
              var yearRange = coors.yearRange || '1851:c';
              var showButtonPanel = typeof coors.showButtonPanel != 'undefined' ? coors.showButtonPanel : true;
              t_name_str += '<div class="text-input-container">';
              t_name_str += '<input type="text" id="datepicker' + i + '"data-format="' + dateFormat + '" data-range="' + yearRange + '" data-panel="' + showButtonPanel + '" class="fonttext dateInput" name="fonttext" readonly="readonly" value="">';
              t_name_str += '</div>';
            } else if (textType == 'select') {
              t_name_str += '<div class="text-input-container">';
              t_name_str += '<select class="fonttext">';
              coors.options.forEach(function(vv, ii) {
                t_name_str += '<option value="' + vv + '">' + vv + '</option>'
              });
              t_name_str += '</select>';
              t_name_str += '</div>';
            } else if (textType == 'none') {
              t_name_str += '<div class="text-input-container" style="display:none;">';
              t_name_str += '<input type="hidden" class="fonttext " name="fonttext" value="' + defaultValue + '"/>';
              t_name_str += '</div>';
            } else {
              t_name_str += '<div class="text-input-container">';
              t_name_str += '<input type="text" class="fonttext" name="fonttext" maxlength="' + limit + '" value="' + defaultValue + '"  oninput="changeText(' + i + ',this,' + limit + ',' + toUpper + ',' + toLower + ')" placeholder="' +
                placeholderText + '"/>';
              t_name_str += '<div class="leftnum" id="leftnumbox' + i + '"><span id="leftnum' + i + '">' + limit + '</span> Left</div>';
              t_name_str += '</div>';
            }
            t_name_str += '</div>';
            return t_name_str;
          }

          function createNumPhoto(goal_num) {
            let current_num = objCount(window._zenConfig.photo);
            goal_num = parseInt(goal_num);
            let diff_num = goal_num - current_num;
            if (diff_num > 0) {
              for (var ii = 0; ii < diff_num; ii++) {
                var photoNum = current_num + ii + 1;
                let photoContent = setPhotoArray(customJson.photo.data, photoNum);
                if (samePhoto) {
                  photoContent = setPhotoArray(customJson.photo.data);
                }
                window._zenConfig.photo.push(photoContent);
              }
            } else if (diff_num < 0) {
              for (var j = current_num; j > goal_num; j--) {
                window._zenConfig.photo.splice(j - 1, 1);
              }
            }
          }

          function createNumCrop(goal_num) {
            let current_num = objCount(window._zenConfig.crop);
            goal_num = parseInt(goal_num);
            let diff_num = goal_num - current_num;
            if (diff_num > 0) {
              for (var ii = 0; ii < diff_num; ii++) {
                var cropNum = current_num + ii + 1;
                let uploadLabel = "Photo" + " " + cropNum;
                let aspectRatio = 0;
                let cropConfig = customJson.crop.data
                if (cropConfig.width > 0) {
                  aspectRatio = cropConfig.width / cropConfig.height;
                }
                let cropContent = setCropArray(uploadLabel, aspectRatio);
                window._zenConfig.crop.push(cropContent);
              }
            } else if (diff_num < 0) {
              for (var j = current_num; j > goal_num; j--) {
                window._zenConfig.crop.splice(j - 1, 1);
              }
            }
          }

          function createNumText(goal_num) {
            let current_num = $(".fonttext").length;
            let diff_num = goal_num - current_num;
            if (diff_num > 0) {
              for (var ii = 0; ii < diff_num; ii++) {
                var textNum = current_num + ii;
                let textHTML = getTextHtml(customJson.text.data, textNum);
                $('#textContent').append(textHTML);
              }
            } else if (diff_num < 0) {
              for (var j = current_num; j > goal_num; j--) {
                $('.text-input-container').eq(j - 1).remove();
              }
            }
          }
          //计算对象元素个数
          function objCount(obj) {
            var count = 0;
            if ($.isArray(obj)) {
              count = obj.length;
            } else {
              for (var i in obj) {
                count++;
              }
            }
            return count;
          }

          function createConfig(data, type = 'photo') {
            if (type == 'photo') {
              let photoNum = objCount(window._zenConfig.photo)
              window._zenConfig.photo.splice(0, photoNum);
              setTimeout(function() {
                data.forEach(function(item, i) {
                  let photoNo = i + 1;
                  let dataValue = setPhotoArray(item, photoNo);
                  if (samePhoto) {
                    dataValue = setPhotoArray(item);
                  }
                  window._zenConfig.photo.push(dataValue);
                });
              }, 100);
            } else if (type == 'crop') {
              let cropNum = objCount(window._zenConfig.crop)
              window._zenConfig.crop.splice(0, cropNum);
              setTimeout(function() {
                data.forEach(function(item, i) {
                  let cropNo = i + 1;
                  let uploadLabel = "Photo" + " " + cropNo;
                  if (data.length == 1) {
                    uploadLabel = "Photo"
                  }
                  let aspectRatio = 0;
                  if (item.width > 0) {
                    aspectRatio = item.width / item.height;
                  }
                  let dataValue = setCropArray(uploadLabel, aspectRatio);
                  window._zenConfig.crop.push(dataValue);
                });
              }, 100);
            } else {
              $('#textContent').html('');
              let textHTML = '';
              data.forEach(function(item, i) {
                textHTML += getTextHtml(item, i);
              });
              $('#textContent').append(textHTML);
            }
          }

          function changeText(i, obj, limitv, toUpper, toLower) {
            var objLenOld = $(obj).val().length;
            var objVal = $(obj).val().replace(/[\r\n]/g, "");
            var objLen = objVal.length;
            if (objLen < objLenOld) {
              $(obj).attr('maxlength', limitv + objLenOld - objLen);
            } else {
              $(obj).attr('maxlength', limitv);
            }
            if (objLen > limitv) {
              var lenDiff = objLen - limitv;
              $(obj).val($(obj).val().substr(-1, lenDiff));
              $('#leftnum' + i).text(0);
            } else {
              $('#leftnum' + i).text(parseInt(limitv) - objLen);
            }
            if (toUpper) {
              var upper = $(obj).val().substr(0, toUpper);
              $(obj).val($(obj).val().replace(upper, upper.toUpperCase()));
            }
            if (toLower) {
              var lower = $(obj).val().substr(toLower);
              $(obj).val($(obj).val().replace(lower, lower.toLowerCase()));
            }
          }

          function checkNumber(obj, numberRange) {
            var val = parseInt($(obj).val());
            $(obj).val(val);
            var rangeArr = $.trim(numberRange).split("-");
            var minN = parseInt(rangeArr[0]);
            var maxN = parseInt(rangeArr[1]);
            if (val < minN) {
              $(obj).val(minN);
            }
            if (val > maxN) {
              $(obj).val(maxN);
            }
          }

          function getPositions(letter, subStr) {
            var positions = [];
            subStr.forEach(function(item, index) {
              var pos = letter.indexOf(item);
              while (pos > -1) {
                if (item.indexOf('\n') > -1) {
                  positions.push(pos - 1);
                }
                positions.push(pos);
                pos = letter.indexOf(item, pos + 1);
              }
            });
            return positions;
          }
          Listener.on([Listener.product.update.before], function(event, variant) {
            //是否开启了 变体存储   is_variant_options,默认为 false
            if (is_variant_options == true) {
              variant_options_val = variant[is_variant_options_type];
            }
            //如果设置变体图则读取变体图作为主图 lazyshop获取产品图片的属性为featured_media,做个兼容 2022-3-30 alice
            if (productImage == 1) {
              if (typeof variant.featured_image != 'undefined') {
                productImageUrl = variant.featured_image.src;
              } else if (typeof variant.featured_media != 'undefined' && variant.featured_media != null && variant.featured_media != '') {
                productImageUrl = variant.featured_media.src;
              }
            }
            //一个变体切换,更改功能
            if (typeof customJson.photo != 'undefined' && photoOptionVal && photoOptionName && photoOptionVal != variant[photoOptionName]) {
              photoOptionVal = variant[photoOptionName];
              _zenSku = variant.sku;
              if (splitSku || cutSku) {
                _zenSku = formatSku(variant.sku);
              }
              if (customJson.photo.type == 'num') {
                createNumPhoto(photoOptionVal);
              } else if (customJson.photo.type == 'sku') {
                createConfig(customJson.photo.data[_zenSku]);
              } else {
                createConfig(customJson.photo.data[photoOptionVal]);
              }
            }
            if (typeof customJson.crop != 'undefined' && cropOptionVal && cropOptionName && cropOptionVal != variant[cropOptionName]) {
              cropOptionVal = variant[cropOptionName];
              _zenSku = variant.sku;
              if (splitSku || cutSku) {
                _zenSku = formatSku(variant.sku);
              }
              if (customJson.crop.type == 'num') {
                createNumCrop(cropOptionVal);
              } else if (customJson.crop.type == 'sku') {
                createConfig(customJson.crop.data[_zenSku], 'crop');
              } else {
                createConfig(customJson.crop.data[cropOptionVal], 'crop');
              }
            }
            if (typeof customJson.text != 'undefined' && textOptionVal && textOptionName && textOptionVal != variant[textOptionName]) {
              textOptionVal = variant[textOptionName];
              _zenSku = variant.sku;
              if (splitSku || cutSku) {
                _zenSku = formatSku(variant.sku);
              }
              if (customJson.text.type == 'num') {
                createNumText(textOptionVal);
              } else if (customJson.text.type == 'sku') {
                createConfig(customJson.text.data[_zenSku], 'text');
              } else {
                createConfig(customJson.text.data[textOptionVal], 'text');
              }
            }
            //多个变体切换,更该功能,把sku切换拿出来单独判断 2021-10-28 alice
            //满足以下任何一个判断,最后修改_zenSku,isDiffSku作为标记 2021-10-28 alice
            let isDiffSku = false;
            if (photoOptionName == '' && typeof customJson.photo != 'undefined' && customJson.photo.type == 'sku' && _zenSku != variant.sku) {
              isDiffSku = true;
              createConfig(customJson.photo.data[variant.sku]);
            }
            if (cropOptionName == '' && typeof customJson.crop != 'undefined' && customJson.crop.type == 'sku' && _zenSku != variant.sku) {
              isDiffSku = true;
              createConfig(customJson.crop.data[variant.sku], 'crop');
            }
            if (textOptionName == '' && typeof customJson.text != 'undefined' && customJson.text.type == 'sku' && _zenSku != variant.sku) {
              isDiffSku = true;
              createConfig(customJson.text.data[variant.sku], 'text');
            }
            if (isDiffSku) {
              _zenSku = variant.sku;
              if (splitSku || cutSku) {
                _zenSku = formatSku(variant.sku);
              }
            }
            if (isAiUrl) {
              let aiSku = splitSku || cutSku ? formatSku(variant.sku) : variant.sku;
              aiUrl = 'https://pic.stylelab.com/img/photo/' + aiSku + '-ai.png'; //固定模板图的地址
            }
            if (fixImageValue && fixImageValue.indexOf("{") > -1) {
              let fixImageJson = JSON.parse(fixImageValue);
              let _newSku = variant.sku;
              if (splitSku || cutSku) {
                _newSku = formatSku(variant.sku);
              }
              fixImage = typeof fixImageJson[_newSku] != 'undefined' ? fixImageJson[_newSku] : fixImage;
            }
          });
          async function zenValidateForm() {
            var _zenFlag = true;
            var customInfo = {};
            if (productImage != 0) {
              customInfo['_sunzi_effect'] = productImageUrl;
            }
            var photoCount = objCount(window._zenConfig.photo);
            //添加条件photoCount>0 2021-10-28,兼容变体切换是否传图 alice
            //如果用在metafield中配置的固定图片,则不走自定义图片的验证和数据拼接 2022-3-26 alice
            if (typeof customJson.photo != 'undefined' && photoCount > 0 && !useFixImage) {
              let customData = JSON.parse($(".zen-require").val());
              if (photoCount > 1) {
                customInfo['_sunzi_sources'] = [];
                customInfo['_sunzi_ais'] = [];
                customInfo['_sunzi_effects'] = [];
                for (var i = 0; i < photoCount; i++) {
                  if (!customData.photo[i].ai) {
                    _zenFlag = false;
                    $('.area-photo-upload-' + i).css('border-color', 'red');
                  } else {
                    customInfo['_sunzi_sources'].push(customData.photo[i].origin);
                    customInfo['_sunzi_ais'].push(customData.photo[i].ai);
                    customInfo['_sunzi_effects'].push(customData.photo[i].crop);
                    $('.area-photo-upload-' + i).css('border-color', '#000');
                  }
                }
                if (_zenFlag && customJson.photo.isEffectsMerge == true) {
                  customInfo['_sunzi_effect'] = await imageMerge(customInfo['_sunzi_effects']);
                  delete customInfo['_sunzi_effects'];
                } else if (_zenFlag && customJson.walletDataNew == true) {
                  // 此片段是老钱包产品的新数据功能,双面遮罩图传图
                  customInfo['_sunzi_source'] = customData.photo[0].origin
                  customInfo['_sunzi_effect'] = customData.photo[0].crop
                  customInfo['_sunzi_text_effect'] = customData.photo[1].crop
                  customInfo['_sunzi_letter_effect'] = customData.photo[1].origin
                  delete customInfo['_sunzi_sources'];
                  delete customInfo['_sunzi_ais'];
                  delete customInfo['_sunzi_effects'];
                }
              } else if (photoCount > 0) {
                if (!customData.photo[0].ai) {
                  _zenFlag = false;
                  $('.area-photo-upload-0').css('border-color', 'red');
                } else {
                  customInfo['_sunzi_source'] = customData.photo[0].origin;
                  customInfo['_sunzi_ai'] = customData.photo[0].ai;
                  customInfo['_sunzi_effect'] = customData.photo[0].crop;
                  $('.area-photo-upload-0').css('border-color', '#000');
                }
              } else {
                _zenFlag = false;
              }
            }
            //添加条件cropCount>0 2021-10-28,兼容变体切换是否传图 alice
            var cropCount = objCount(window._zenConfig.crop);
            //如果用在metafield中配置的固定图片,则不走自定义图片的验证和数据拼接 2022-3-26 alice
            if (typeof customJson.crop != 'undefined' && cropCount > 0 && !useFixImage) {
              let customData = JSON.parse($(".zen-require").val());
              let cropCustomData = JSON.parse($(".zen-require").val());
              if (cropCount > 1) {
                customInfo['_sunzi_sources'] = [];
                for (var i = 0; i < cropCount; i++) {
                  if (!customData.crop[i].crop) {
                    _zenFlag = false;
                    $('.area-crop-upload-' + i).css('border-color', 'red');
                  } else {
                    customInfo['_sunzi_sources'].push(customData.crop[i].crop);
                    $('.area-crop-upload-' + i).css('border-color', '#000');
                  }
                }
                if (_zenFlag && customJson.crop.isSourcesMerge == true) {
                  customInfo['_sunzi_source'] = await imageMerge(customInfo['_sunzi_sources']);
                  delete customInfo['_sunzi_sources'];
                }
              } else if (cropCount > 0) {
                if (!cropCustomData.crop[0].crop) {
                  _zenFlag = false;
                  $('.area-crop-upload-0').css('border-color', 'red');
                } else {
                  if (dataType == 1) { //切图传图拼图(CPT004)
                    customInfo['_sunzi_ai'] = cropCustomData.crop[0].crop;
                    customInfo['_sunzi_source'] = cropCustomData.crop[0].cropOrigin;
                  } else {
                    customInfo['_sunzi_source'] = cropCustomData.crop[0].crop;
                  }
                  $('.area-crop-upload-0').css('border-color', '#000');
                }
              } else {
                _zenFlag = false;
              }
            }
            if (isSunziRemark == true) {
              customInfo['_sunzi_remark'] = {};
              if (typeof customJson.text != 'undefined' && $('.fonttext').length > 0) {
                if ($('.fonttext').length > 1) {
                  var textRemarkArr = [];
                  $('.fonttext').each(function(i, v) {
                    if (!$.trim($(this).val())) {
                      _zenFlag = false;
                      $('.text-input-container').eq(i).css('border-color', 'red');
                    } else {
                      textRemarkArr.push($(this).val());
                    }
                  });
                  $.each(textRemarkArr, function(k, v) {
                    if (customJson.text.type == 'sku') {
                      var textJson = customJson.text.data[_zenSku];
                      if (typeof textJson[k].textFormatKey != 'undefined' && textJson[k].textFormatKey != '') {
                        if (typeof textJson[k].textFormatKeyNum != 'undefined' && textJson[k].textFormatKeyNum != '') {
                          console.log(textJson[k].textFormatKeyNum);
                          if (typeof customInfo['_sunzi_remark'][textJson[k].textFormatKey] != 'undefined') {
                            customInfo['_sunzi_remark'][textJson[k].textFormatKey] += ' ' + textJson[k].textFormatKeyNum + ':' + v;
                          } else {
                            customInfo['_sunzi_remark'][textJson[k].textFormatKey] = textJson[k].textFormatKeyNum + ':' + v;
                          }
                        } else {
                          customInfo['_sunzi_remark'][textJson[k].textFormatKey] = v;
                        }
                        //customInfo['_sunzi_remark'][textJson.textFormatKey] = v;
                      }
                    } else {
                      var textJson = customJson.text.data[k];
                      if (customJson.text.type == 'num') {
                        textJson = customJson.text.data;
                      }
                      if (typeof textJson.textFormatKey != 'undefined' && textJson.textFormatKey != '') {
                        customInfo['_sunzi_remark'][textJson.textFormatKey] = v;
                      }
                    }
                  });
                } else if ($('.fonttext').length > 0) {
                  var textJson = customJson.text.data[0];
                  if (customJson.text.type == 'num') {
                    textJson = customJson.text.data;
                  }
                  if (typeof textJson.textFormatKey != 'undefined' && textJson.textFormatKey != '') {
                    customInfo['_sunzi_remark'][textJson.textFormatKey] = $('.fonttext').eq(0).val();
                  }
                }
              }
              if (typeof customJson.colorList != 'undefined' && customJson.colorList != '') {
                console.log(customJson.colorList.formatKey);
                console.log($("input[name='color']:checked").val());
                customInfo['_sunzi_remark'][customJson.colorList.formatKey] = $("input[name='color']:checked").val();
              }
            }
            if (isSunziText == true && !useFixText) {
              //是否开启了 变体存储   is_variant_options,默认为 false
              if (is_variant_options == true) {
                customInfo['_sunzi_text'] = {};
                customInfo['_sunzi_text']['value'] = variant_options_val;
                if (is_variant_lable) {
                  customInfo['_sunzi_text']['number'] = is_variant_lable;
                }
              } else {
                //添加条件$('.fonttext').length > 0 2021-10-28,兼容变体切换是否传图 alice
                if (typeof customJson.text != 'undefined' && $('.fonttext').length > 0) {
                  if ($('.fonttext').length > 1) {
                    customInfo['_sunzi_texts'] = [];
                    var inum = 0;
                    $('.fonttext').each(function(i, v) {
                      let _textIsOptional = '';
                      if (customJson.text.type == 'sku') {
                        _textIsOptional = customJson.text.data[_zenSku][i].textIsOptional ? customJson.text.data[_zenSku][i].textIsOptional : textIsOptional; // 如果每个输入框单独配置刻字可选,以单独配置为主.
                      } else if (customJson.text.type == 'num') {
                        _textIsOptional = customJson.text.data.textIsOptional ? customJson.text.data.textIsOptional : textIsOptional;
                      } else if (customJson.text.type == 'value') {
                        _textIsOptional = customJson.text.data[textOptionVal][i].textIsOptional ? customJson.text.data[textOptionVal][i].textIsOptional : textIsOptional; // 如果每个输入框单独配置刻字可选,以单独配置为主.
                      } else {
                        _textIsOptional = customJson.text.data[i].textIsOptional ? customJson.text.data[i].textIsOptional : textIsOptional; // 如果每个输入框单独配置刻字可选,以单独配置为主.
                      }
                      if (!$.trim($(this).val()) && _textIsOptional != 1) {
                        _zenFlag = false;
                        $('.text-input-container').eq(i).css('border-color', 'red');
                      } else {
                        if (!$.trim($(this).val()) && _textIsOptional == 1) {
                          return;
                        }
                        customInfo['_sunzi_texts'][inum] = {};
                        customInfo['_sunzi_texts'][inum]['value'] = $(this).val();
                        if (customJson.text.type == 'num') {
                          var textJson = customJson.text.data;
                        } else if (customJson.text.type == 'value') {
                          var textJson = customJson.text.data[textOptionVal][i];
                        } else if (customJson.text.type == 'sku') {
                          var textJson = customJson.text.data[_zenSku][i];
                        } else {
                          var textJson = customJson.text.data[i];
                        }
                        if (typeof textJson.insertFlag != 'undefined' && textJson.insertFlag != '') {
                          var testStr = $.trim($(this).val());
                          var testArr = testStr.split('');
                          var nArr = getPositions(testStr, ['\n', ' ']);
                          testArr.forEach(function(vv, ii) {
                            if (ii < testArr.length - 1 && ((nArr.length > 0 && $.inArray(ii, nArr) == -1) || nArr.length == 0)) {
                              testArr[ii] += textJson.insertFlag;
                            }
                          });
                          customInfo['_sunzi_texts'][inum]['value'] = testArr.join('');
                        }
                        if (typeof customJson.fontList != 'undefined' && customJson.fontList != '') {
                          customInfo['_sunzi_texts'][inum]['font'] = $("input[name='font']:checked").val();
                        }
                        if (typeof customJson.fontColorList != 'undefined' && customJson.fontColorList != '') {
                          customInfo['_sunzi_texts'][inum]['fontColor'] = $("input[name='font-color-radio']:checked").val();
                        }
                        if (typeof textJson.textFormatKey != 'undefined' && textJson.textFormatKey != '') {
                          customInfo['_sunzi_texts'][inum]['number'] = textJson.textFormatKey;
                        } else {
                          var no = inum + 1;
                          let nn = no + '';
                          customInfo['_sunzi_texts'][inum]['number'] = nn;
                        }
                        if (textJson.font != 'undefined' && textJson.font != '') {
                          customInfo['_sunzi_texts'][inum]['font'] = textJson.font;
                        }
                        if (textJson.size != 'undefined' && textJson.size != '') {
                          customInfo['_sunzi_texts'][inum]['fontSize'] = textJson.size;
                        }
                        $('.text-input-container').eq(i).css('border-color', '#000');
                        inum++;
                      }
                    });
                    if (customInfo['_sunzi_texts'].length <= 0) {
                      _zenFlag = false;
                      $('.text-input-container').css('border-color', 'red');
                    }
                  } else if ($('.fonttext').length > 0) {
                    if (!$.trim($('.fonttext').eq(0).val()) && textIsOptional != 1) {
                      _zenFlag = false;
                      $('.text-input-container').eq(0).css('border-color', 'red');
                    } else {
                      if ($.trim($('.fonttext').eq(0).val())) {
                        customInfo['_sunzi_text'] = {};
                        customInfo['_sunzi_text']['value'] = $('.fonttext').eq(0).val();
                        if (customJson.text.type == 'num') {
                          var textJson = customJson.text.data;
                        } else if (customJson.text.type == 'value') {
                          var textJson = customJson.text.data[textOptionVal];
                        } else if (customJson.text.type == 'sku') {
                          var textJson = customJson.text.data[_zenSku];
                        } else {
                          var textJson = customJson.text.data[0];
                        }
                        if (!$.trim($('.fonttext').eq(0).val()) && textJson.isDefaultValue == 1) {
                          customInfo['_sunzi_text']['value'] = textJson.defaultValue;
                        }
                        if (textJson.font != 'undefined' && textJson.font != '') {
                          customInfo['_sunzi_text']['font'] = textJson.font;
                        }
                        if (textJson.size != 'undefined' && textJson.size != '') {
                          customInfo['_sunzi_text']['fontSize'] = textJson.size;
                        }
                        if (typeof textJson.insertFlag != 'undefined' && textJson.insertFlag != '') {
                          var testStr = $.trim($('.fonttext').eq(0).val());
                          var testArr = testStr.split('');
                          var nArr = getPositions(testStr, ['\n', ' ']);
                          testArr.forEach(function(vv, ii) {
                            if (ii < testArr.length - 1 && ((nArr.length > 0 && $.inArray(ii, nArr) == -1) || nArr.length == 0)) {
                              testArr[ii] += textJson.insertFlag;
                            }
                          });
                          customInfo['_sunzi_text']['value'] = testArr.join('');
                        }
                        if (typeof customJson.fontList != 'undefined' && customJson.fontList != '') {
                          customInfo['_sunzi_text']['font'] = $("input[name='font']:checked").val();
                        }
                        if (typeof customJson.fontColorList != 'undefined' && customJson.fontColorList != '') {
                          customInfo['_sunzi_text']['fontColor'] = $("input[name='fontColor']:checked").val();
                        }
                        $('.text-input-container').eq(0).css('border-color', '#000');
                      }
                    }
                  } else {
                    _zenFlag = false;
                  }
                }
              }
            }
            // 切图传图套装产品数据 2021-12-16 lile
            if (typeof customJson.isSuitCropHandle != 'undefined' && customJson.isSuitCropHandle != '') {
              customInfo['_sunzi_effects'] = [];
              customInfo['_sunzi_effects'].push(productImageUrl);
              newHandleList.forEach((e, i) => {
                customInfo['_sunzi_effects'].push(e);
              })
              delete customInfo['_sunzi_effect'];
            }
            //只刻字的产品要求固定模板图传ai图字段 2021-11-26 alice
            if (isAiUrl) {
              customInfo['_sunzi_ai'] = aiUrl;
            }
            //当在metafield中设置了固定图片,且用户选择用固定图片制作不自定义图片时保存 2022-3-26 alice
            if (fixImage && useFixImage) {
              customInfo['_sunzi_ai'] = fixImage;
              customInfo['_sunzi_source'] = fixImage;
            }
            //当在metafield中设置了固定文字,且用户选择用固定文字制作不自定义文字时保存
            if (fixText && useFixText) {
              customInfo['_sunzi_text'] = {};
              customInfo['_sunzi_text']['value'] = fixText;
            }
            if (_zenFlag) {
              $('.text-input-container').css('border-color', '#000');
              $("#customInfo").val(JSON.stringify(customInfo));
            }
            return _zenFlag;
          }
          /* 
           * Others: Multiple images combined into one image 
           * Parame: ["src1","src2","src3"...]
           * Author: Coman 420500235@qq.com
           * Date:   2021.11.16
           */
          async function imageMerge(arcArr, folderName) {
            var convertBase64ToBlob = function(base64) {
              var base64Arr = base64.split(',');
              var imgtype = '';
              var base64String = '';
              if (base64Arr.length > 1) {
                base64String = base64Arr[1];
                imgtype = base64Arr[0].substring(base64Arr[0].indexOf(':') + 1, base64Arr[0].indexOf(';'));
              }
              var bytes = atob(base64String);
              var bytesCode = new ArrayBuffer(bytes.length);
              var byteArray = new Uint8Array(bytesCode);
              for (var i = 0; i < bytes.length; i++) {
                byteArray[i] = bytes.charCodeAt(i);
              }
              return new Blob([bytesCode], {
                type: imgtype
              });
            }
            var cdnAsyncUpload = function(picurl) {
              var token;
              $.ajax({
                type: "POST",
                async: false,
                url: picurl + "assist/uptoken",
                dataType: 'json',
                success: function(data) {
                  token = data.token;
                }
              });
              return token;
            }
            var randomString = function(len) {
              var len = len || 32;
              var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
              var maxPos = $chars.length;
              var randomstr = '';
              for (i = 0; i < len; i++) {
                randomstr += $chars.charAt(Math.floor(Math.random() * maxPos));
              }
              return randomstr;
            }
            folderName = folderName || 'scrop';
            let qiniuRegion;
            if (typeof qiniu == 'undefined') {
              qiniuRegion = '';
            } else {
              qiniuRegion = qiniu.region.na0;
            }
            let putExtra = {
              fname: "",
              params: {},
              mimeType: null
            };
            let config = {
              region: qiniuRegion,
              concurrentRequestLimit: 3
            };
            let mergeSrc;
            let cdnurl = "https://spic.qn.cdn.imaiyuan.com/";
            let picurl = "https://pic.stylelab.com/";
            let tmpCanvas = new fabric.Canvas(); // 合成图画布
            let previewHeight = 0;
            let top = 0;
            let w = 500;
            let h = 400;
            let obj = [];
            let ihArr = [];
            try {
              $.each(arcArr, (i, v) => {
                previewHeight += h;
                ihArr.push(h);
              });
              tmpCanvas.setWidth(w).setHeight(previewHeight);
              $.each(arcArr, (i, v) => {
                var p1 = new Promise(function(resolve, reject) {
                  let src = v;
                  fabric.Image.fromURL(src, function(oImg) {
                    oImg.scaleToWidth(w);
                    tmpCanvas.add(oImg);
                    tmpCanvas.moveTo(oImg, i); // Multiple images fixed hierarchy
                    tmpCanvas.renderAll();
                    resolve();
                  }.bind(this), {
                    crossOrigin: 'anonymous',
                    top: top
                  });
                });
                obj.push(p1);
                top += ihArr[i];
              });
              if (top > 0) {
                await new Promise((resolve1, reject) => {
                  top = 0;
                  Promise.all(obj).then(async (results) => {
                    $.each(tmpCanvas.getObjects(), (i, v) => { // crop Reallocating height
                      tmpCanvas.item(i).set('top', top);
                      top += v.height * v.scaleX;
                    });
                    tmpCanvas.setHeight(top);
                    tmpCanvas.renderAll();
                    let base64 = tmpCanvas.toDataURL({
                      format: 'png',
                      quality: 0.8
                    });
                    let blob = convertBase64ToBlob(base64);
                    let filename = folderName + '/' + new Date().Format("yyyyMMdd") + '/' + randomString(6);
                    let key = filename + '-' + _zenSku + '.png';
                    let token = cdnAsyncUpload(picurl);
                    let res = new Promise((resolve, reject) => {
                      var observer = {
                        next(result) {
                          //                   jQuery(".sbar").text(parseInt(result.total.percent) + "%");
                          //                   jQuery('.sbar').css({'width': parseInt(result.total.percent) + '%'});
                        },
                        error(err) {
                          console.log(err.message);
                        },
                        complete(res) {
                          mergeSrc = cdnurl + res.key;
                          resolve();
                          resolve1();
                        }
                      };
                      var observable = qiniu.upload(blob, key, token, putExtra, config);
                      observable.subscribe(observer);
                    });
                  });
                });
                return mergeSrc;
              } else {
                return false;
              }
            } catch (e) {
              console.log('error:', e);
              return false;
            }
            Date.prototype.Format = function(fmt) {
              var o = {
                "M+": this.getMonth() + 1,
                "d+": this.getDate(),
                "h+": this.getHours(),
                "m+": this.getMinutes(),
                "s+": this.getSeconds(),
                "q+": Math.floor((this.getMonth() + 3) / 3),
                "S": this.getMilliseconds()
              };
              if (/(y+)/.test(fmt)) {
                fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
              }
              for (var k in o)
                if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
              return fmt;
            };
          }
        </script>
        <div class="common-standar_btn">
          <div class="qtyTitle">Qty:</div>
          <div class="product-form__item product-form__item--quantity">
            <div class="js-qty">
              <button type="button" class="js-qty__adjust--minus" onclick="minus()"><i class="photofont icon photo-move"></i></button>
              <input class="js-qty__input" type="text" id="Quantity" value="1" name="quantity" min="0" pattern="[0-99]*">
              <button type="button" class="js-qty__adjust--plus" onclick="plus()"><i class="photofont icon photo-add"></i></button>
            </div>
            <script>
              function minus() {
                var Quantity = $('#Quantity');
                var qty = parseInt(Quantity.val());
                var minus = qty - 1;
                if (minus < 1) {
                  minus = 1;
                }
                Quantity.val(minus);
              }

              function plus() {
                var Quantity = $('#Quantity');
                var qty = parseInt(Quantity.val());
                var plus = qty + 1;
                if (plus > 99) {
                  plus = 99;
                }
                Quantity.val(plus);
              }
            </script>
          </div>
          <div class="product-form__item product-form__item--submit">
            <button type="button" name="add" onclick="Product.addFormToCart(this.form)" class="btn product-form__cart-submit">
              <span>Add to Cart</span>
            </button>
          </div>
        </div>
      </div>
    </div>
  </div>
  <input type="hidden" name="csrf_token" value="{{ csrf }}">
  <input type="hidden" name="form_type" value="product">
  <input type="hidden" name="utf8" value="✓">
</form>

POST /contact#ContactFooter-pc

<form method="post" action="/contact#ContactFooter-pc" id="ContactFooter-pc">
  <div class="errors" style="display:none;" id="custom_subscribe_error">
    <ul>
      <li>
      </li>
    </ul>
  </div>
  <input type="hidden" name="contact[tags]" value="newsletter">
  <div class="email_button">
    <input type="email" name="contact[email]" id="newsletter_footer-pc" class="input-text required-entry validate-email " value="" placeholder="Enter Email Address" autocorrect="off" autocapitalize="off">
    <button type="submit" title="Subscribe" class="button">
      <span>SUBSCRIBE</span>
    </button>
  </div>
  <script>
    $("#ContactFooter-pc").on("submit", function() {
      if ($("#newsletter_footer-pc").val() == '') {
        $("#custom_subscribe_error").show();
        $("#custom_subscribe_error").find("ul > li").text("This is a required field.")
        return false;
      }
    });
  </script>
  <input type="hidden" name="csrf_token" value="{{ csrf }}">
  <input type="hidden" name="form_type" value="customer">
  <input type="hidden" name="utf8" value="✓">
</form>

Text Content

Contact Us


America
 * US Dollar
 * Canadian Dollar
 * Mexican Peso
 * Brazilian Real
 * Chilean Peso
 * Colombian Peso

Europe
 * Euro
 * British Pound Sterling
 * Russian Ruble
 * Czech Republic Koruna
 * Norwegian Krone
 * Croatian Kuna
 * Swedish Krona
 * Ukrainian Hryvnia
 * Swiss Franc

Asia Pacific
 * New Taiwan Dollar
 * Hong Kong Dollar
 * Australian Dollar
 * Philippine Peso
 * New Zealand Dollar
 * Vietnamese Dong
 * Japanese Yen
 * Singapore Dollar
 * Thai Baht
 * Malaysian Ringgit
 * Israeli New Sheqel
 * Indian Rupee
 * Indonesian Rupiah
 * Macanese Pataca
 * Qatari Rial
 * South Korean Won
 * Saudi Riyal
 * United Arab Emirates Dirham

Africa
 * South African Rand

{{#each this}}
{{#if title}}
{{title}}
{{/if}}
   {{#each codes}}
 * {{label}}
   {{/each}}

{{/each}}

USD
 * RETURN & EXCHANGE within 60 days
 * FREE SHIPPING over $49.00

 * track order


SEARCH HISTORY


OTHERS ARE SEARCHING

 * tee
 * poster
 * blanket

SEARCH HERE



SEARCH HISTORY


OTHERS ARE SEARCHING

 * tee
 * poster
 * blanket

Search
0 Cart


 * * Clothing
      * Shadow Of Intent T-shirts
      * Shadow Of Intent Hoodies
      * Shadow Of Intent Sweatshirts
      * Shadow Of Intent Hawaiian Shirts
      * Shadow Of Intent Boxers
      * Shadow Of Intent Socks
      * All Print Bucket Hats
      * Single Photo Bucket Hats
   
   * Decorations
      * LEGO Building Blocks
      * Shadow Of Intent Puzzles
      * Shadow Of Intent Plaques
      * Shadow Of Intent Posters
      * Shadow Of Intent Canvas
      * Shadow Of Intent Wall Clocks
      * Shadow Of Intent Night Lamps
   
   * Home & Living
      * Shadow Of Intent Blankets
      * Shadow Of Intent Pillows
      * Shadow Of Intent Aprons
      * Shadow Of Intent Mugs
      * Shadow Of Intent Fridge Magnets
   
   * Bags & Accessories
      * Shadow Of Intent Totebags
      * Shadow Of Intent Backpacks
      * Shadow Of Intent Luggage Tags
   
   * Accessories
      * Shadow Of Intent Keychains
      * Shadow Of Intent Phone Cases
      * Shadow Of Intent Stickers
      * Shadow Of Intent Greeting Cards
      * Shadow Of Intent Wallet Cards
      * Shadow Of Intent Bound Notebooks
      * Shadow Of Intent Air Freshener
 * * Search
   * 0 Cart

 * 
 * track order
 * 

 * Clothing
   * Shadow Of Intent T-shirts
   * Shadow Of Intent Hoodies
   * Shadow Of Intent Sweatshirts
   * Shadow Of Intent Hawaiian Shirts
   * Shadow Of Intent Boxers
   * Shadow Of Intent Socks
   * All Print Bucket Hats
   * Single Photo Bucket Hats
 * Decorations
   * LEGO Building Blocks
   * Shadow Of Intent Puzzles
   * Shadow Of Intent Plaques
   * Shadow Of Intent Posters
   * Shadow Of Intent Canvas
   * Shadow Of Intent Wall Clocks
   * Shadow Of Intent Night Lamps
 * Home & Living
   * Shadow Of Intent Blankets
   * Shadow Of Intent Pillows
   * Shadow Of Intent Aprons
   * Shadow Of Intent Mugs
   * Shadow Of Intent Fridge Magnets
 * Bags & Accessories
   * Shadow Of Intent Totebags
   * Shadow Of Intent Backpacks
   * Shadow Of Intent Luggage Tags
 * Accessories
   * Shadow Of Intent Keychains
   * Shadow Of Intent Phone Cases
   * Shadow Of Intent Stickers
   * Shadow Of Intent Greeting Cards
   * Shadow Of Intent Wallet Cards
   * Shadow Of Intent Bound Notebooks
   * Shadow Of Intent Air Freshener

You've just added this product to the cart

{{ title }} x {{ quantity }}

Continue Shopping
View Cart & Checkout
30% Of Shadow Of Intent Fans Bought One Of These Items
 * $19.95
   $33.95
   Shadow Of Intent T-shirt Shadow Of Intent Band T-shirt Cotton Shirt
   41% OFF
 * $42.95
   $71.95
   Shadow Of Intent Hoodie black goat and dagger Hoodie
   40% OFF
 * $15.95
   $26.95
   Shadow Of Intent Pillow The Last Pray For God Pillow
   41% OFF
 * $25.95
   $43.95
   Shadow Of Intent Blanket Big Monster Eat Little Monster Blanket
   41% OFF
 * $39.95
   $66.95
   Shadow Of Intent Backpack Giant Ice Monster Backpack
   40% OFF
 * $19.95
   $33.95
   Shadow Of Intent Mug Little Demon Play Together Mug
   41% OFF
 * $25.95
   $43.95
   Shadow Of Intent Poster Red Moon Poster Wall Art Sticky Poster
   41% OFF
 * $19.95
   $34.95
   Shadow Of Intent Totebag Demon Eye Totebag
   43% OFF
 * $9.99
   $12.59
   Shadow Of Intent Luggage Tag Black Flower Gate Luggage Tag
   21% OFF
 * $12.95
   $21.95
   Shadow Of Intent Canvas American Deathcore Band Canvas
   41% OFF





Spend 49.00 to enjoy FREE SHIPPING!
{{#if_gt grandTotal freeshipping_total_price}}
{{ free_shipping_congratulations }}
{{/if_gt}} {{#if_lteq grandTotal freeshipping_total_price}}
{{{ free_shipping_spend}}}
{{/if_lteq}}
   {{#items}}

 * {{producttitle}}
   
   {{sku}}
   {{#if alphaText}}
   (Text: {{alphaText}})
   {{else if engravingText}}
   (Text: {{engravingText}})
   {{/if}}
   
   {{ lineprice }}
   {{/items}}

{{#if_gt itemCount 0}}
{{#products}}
{{ title }}
+ADD FOR

{{/products}} View Cart & Checkout
{{/if_gt}}

Hot Sale

HOW TO DESIGN
STEP1

Choose What You Like.
There are various items you can choose such as hoodies, blankets and so on.
STEP2

Choose The Design.
Use the default picture or Upload your own.
STEP3

Arrive Safely And Quickly.
You will receive a satisfied item!
1 / 2



SHADOW OF INTENT T-SHIRT RECLAIMER T-SHIRT COTTON SHIRT

SKU:CTS1885-XS
$19.95 $33.95
41% OFF

Choose The Size : XS S M L XL XXL XXXL
Choose The Color : white black
Design:
Use default pictureUpload your own
Photo*
Upload



Get some inspirations on Google



Qty:

Add to Cart

description

Design your everyday with Shadow Of Intent t-shirt you will love to snuggle up
with. Match your style with patterns and designs from our professional design
team.

Material: Our products are made up of 100% cotton.

Sizes: XS-XXXL. Small size is suitable for ladies. This t-shirt is unisex.

This item requires 3-5 business days to handcraft.

shipping

Free shipping for orders over $49

You can choose the shipping method during checkout:

Standard shipping: $7.99

Arrives 7-15 business days after the production time

Express Shipping: $29.95

Delivery 4-6 business days after the production time

SHIPPING TO:
AfghanistanAland IslandsAlbaniaAlgeriaAndorraAngolaAnguillaAntigua And
BarbudaArgentinaArmeniaArubaAscension
IslandAustraliaAustriaAzerbaijanBahamasBahrainBangladeshBarbadosBelarusBelgiumBelizeBeninBermudaBhutanBoliviaBosnia
And HerzegovinaBotswanaBouvet IslandBrazilBritish Indian Ocean
TerritoryBruneiBulgariaBurkina FasoBurundiCambodiaCanadaCape VerdeCaribbean
NetherlandsCayman IslandsCentral African RepublicChadChileChinaChristmas
IslandCocos (Keeling) IslandsColombiaComorosCongoCongo, The Democratic Republic
Of TheCook IslandsCosta RicaCroatiaCubaCuraçaoCyprusCzech RepublicCôte
d'IvoireDenmarkDjiboutiDominicaDominican RepublicEcuadorEgyptEl
SalvadorEquatorial GuineaEritreaEstoniaEswatiniEthiopiaFalkland Islands
(Malvinas)Faroe IslandsFijiFinlandFranceFrench GuianaFrench PolynesiaFrench
Southern
TerritoriesGabonGambiaGeorgiaGermanyGhanaGibraltarGreeceGreenlandGrenadaGuadeloupeGuatemalaGuernseyGuineaGuinea
BissauGuyanaHaitiHeard Island And Mcdonald IslandsHoly See (Vatican City
State)HondurasHong KongHungaryIcelandIndiaIndonesiaIran, Islamic Republic
OfIraqIrelandIsle Of
ManIsraelItalyJamaicaJapanJerseyJordanKazakhstanKenyaKiribatiKorea, Democratic
People's Republic OfKosovoKuwaitKyrgyzstanLao People's Democratic
RepublicLatviaLebanonLesothoLiberiaLibyan Arab
JamahiriyaLiechtensteinLithuaniaLuxembourgMacaoMadagascarMalawiMalaysiaMaldivesMaliMaltaMartiniqueMauritaniaMauritiusMayotteMexicoMoldova,
Republic
ofMonacoMongoliaMontenegroMontserratMoroccoMozambiqueMyanmarNamibiaNauruNepalNetherlandsNetherlands
AntillesNew CaledoniaNew ZealandNicaraguaNigerNigeriaNiueNorfolk IslandNorth
MacedoniaNorwayOmanPakistanPalestinian Territory, OccupiedPanamaPapua New
GuineaParaguayPeruPhilippinesPitcairnPolandPortugalQatarRepublic of
CameroonReunionRomaniaRussiaRwandaSaint BarthélemySaint HelenaSaint Kitts And
NevisSaint LuciaSaint MartinSaint Pierre And MiquelonSamoaSan MarinoSao Tome And
PrincipeSaudi ArabiaSenegalSerbiaSeychellesSierra LeoneSingaporeSint
MaartenSlovakiaSloveniaSolomon IslandsSomaliaSouth AfricaSouth Georgia And The
South Sandwich IslandsSouth KoreaSouth SudanSpainSri LankaSt.
VincentSudanSurinameSvalbard And Jan
MayenSwedenSwitzerlandSyriaTaiwanTajikistanTanzania, United Republic
OfThailandTimor LesteTogoTokelauTongaTrinidad and TobagoTristan da
CunhaTunisiaTurkeyTurkmenistanTurks and Caicos IslandsTuvaluUgandaUkraineUnited
Arab EmiratesUnited KingdomUnited StatesUnited States Minor Outlying
IslandsUruguayUzbekistanVanuatuVenezuelaVietnamVirgin Islands, BritishWallis And
FutunaWestern SaharaYemenZambiaZimbabwe


Shadow Of Intent T-shirts
 * Shadow Of Intent T-shirt Reclaimer T-shirt Cotton Shirt
   $19.95
   $33.95
   41% OFF
 * Shadow Of Intent T-shirt Shadow Of Intent Logo T-shirt Cotton Shirt
   $19.95
   $33.95
   41% OFF
 * Shadow Of Intent T-shirt American Deathcore Band T-shirt Cotton Shirt
   $19.95
   $33.95
   41% OFF
 * Shadow Of Intent T-shirt Black Flower Gate T-shirt Cotton Shirt
   $19.95
   $33.95
   41% OFF
 * Shadow Of Intent T-shirt Demon Eye T-shirt Cotton Shirt
   $19.95
   $33.95
   41% OFF
 * Shadow Of Intent T-shirt Red Moon T-shirt Cotton Shirt
   $19.95
   $33.95
   41% OFF
 * Shadow Of Intent T-shirt Little Demon Play Together T-shirt Cotton Shirt
   $19.95
   $33.95
   41% OFF
 * Shadow Of Intent T-shirt Giant Ice Monster T-shirt Cotton Shirt
   $19.95
   $33.95
   41% OFF
 * Shadow Of Intent T-shirt Big Monster Eat Little Monster T-shirt Cotton Shirt
   $19.95
   $33.95
   41% OFF
 * Shadow Of Intent T-shirt The Last Pray For God T-shirt Cotton Shirt
   $19.95
   $33.95
   41% OFF
 * Shadow Of Intent T-shirt black goat and dagger T-shirt Cotton Shirt
   $19.95
   $33.95
   41% OFF
 * Shadow Of Intent T-shirt Shadow Of Intent Band T-shirt Cotton Shirt
   $19.95
   $33.95
   41% OFF

View More

Shadow Of Intent Keychains
 * Shadow Of Intent Keychain Demon Eye by Shadow Of Intent Keychain
   $15.95
   $26.95
   41% OFF
 * Shadow Of Intent Keychain Reclaimer by Shadow Of Intent Keychain
   $15.95
   $26.95
   41% OFF
 * Shadow Of Intent Keychain Big Monster Eat Little Monster by Shadow Of Intent
   Keychain
   $15.95
   $26.95
   41% OFF
 * Shadow Of Intent Keychain American Deathcore Band by Shadow Of Intent
   Keychain
   $15.95
   $26.95
   41% OFF
 * Shadow Of Intent Keychain Red Moon by Shadow Of Intent Keychain
   $15.95
   $26.95
   41% OFF
 * Shadow Of Intent Keychain Shadow Of Intent Logo by Shadow Of Intent Keychain
   $15.95
   $26.95
   41% OFF
 * Shadow Of Intent Keychain Black Flower Gate by Shadow Of Intent Keychain
   $15.95
   $26.95
   41% OFF
 * Shadow Of Intent Keychain Little Demon Play Together by Shadow Of Intent
   Keychain
   $15.95
   $26.95
   41% OFF
 * Shadow Of Intent Keychain Giant Ice Monster by Shadow Of Intent Keychain
   $15.95
   $26.95
   41% OFF
 * Shadow Of Intent Keychain The Last Pray For God by Shadow Of Intent Keychain
   $15.95
   $26.95
   41% OFF
 * Shadow Of Intent Keychain black goat and dagger by Shadow Of Intent Keychain
   $15.95
   $26.95
   41% OFF
 * Shadow Of Intent Keychain Shadow Of Intent Band by Shadow Of Intent Keychain
   $15.95
   $26.95
   41% OFF

View More

Shadow Of Intent Posters
 * Shadow Of Intent Poster Red Moon Poster Wall Art Sticky Poster
   $25.95
   $43.95
   41% OFF
 * Shadow Of Intent Poster Giant Ice Monster Poster Wall Art Sticky Poster
   $25.95
   $43.95
   41% OFF
 * Shadow Of Intent Poster Black Flower Gate Poster Wall Art Sticky Poster
   $25.95
   $43.95
   41% OFF
 * Shadow Of Intent Poster Shadow Of Intent Logo Poster Wall Art Sticky Poster
   $25.95
   $43.95
   41% OFF
 * Shadow Of Intent Poster American Deathcore Band Poster Wall Art Sticky Poster
   $25.95
   $43.95
   41% OFF
 * Shadow Of Intent Poster Reclaimer Poster Wall Art Sticky Poster
   $25.95
   $43.95
   41% OFF
 * Shadow Of Intent Poster Demon Eye Poster Wall Art Sticky Poster
   $25.95
   $43.95
   41% OFF
 * Shadow Of Intent Poster Little Demon Play Together Poster Wall Art Sticky
   Poster
   $25.95
   $43.95
   41% OFF
 * Shadow Of Intent Poster Big Monster Eat Little Monster Poster Wall Art Sticky
   Poster
   $25.95
   $43.95
   41% OFF
 * Shadow Of Intent Poster The Last Pray For God Poster Wall Art Sticky Poster
   $25.95
   $43.95
   41% OFF
 * Shadow Of Intent Poster Shadow Of Intent Band Poster Wall Art Sticky Poster
   $25.95
   $43.95
   41% OFF
 * Shadow Of Intent Poster black goat and dagger Poster Wall Art Sticky Poster
   $25.95
   $43.95
   41% OFF

View More



WELCOME TO SHADOW OF INTENT MERCH STORE

Welcome to the Shadow of Intent Merch Store, where you can find a wide range of
products that cater to all fans of the band. Our store offers a variety of
unique items that allow you to show your love and support for Shadow of Intent
in style.

 


ABOUT SHADOW OF INTENT

Shadow of Intent is an American deathcore band from Connecticut. They formed in
2013 as a Halo-themed studio project by Ben Duerr and Chris Wiseman. The band's
name is a reference to a Covenant ship in the Halo series. They are not signed
to a label and have released their albums independently. They have released four
studio albums to date, along with two instrumental versions of previous
releases, and a deluxe album. Their fourth studio album entitled Elegy was
released independently on January 14, 2022.


WHAT GENRE OF MUSIC IS SHADOW ACADEMY?


ROCK


SHADOW ACADEMY / GENRE

 

Shadow Academy are a progressive rock duo, based in Los Angeles, made up of Dan
Avidan, noted for being one of the hosts of the popular Let's Play Channel Game
Grumps, and for a fairly prolific music career which includes being a member of
The Northern Hues, Skyhill, Ninja Sex Party and Starbomb.


WHAT ALBUMS ARE SHADOW OF INTENT HALO?

Shadow of Intent's three albums Primordial, Reclaimer, and Melancholy all cover
serious topics in society and relevant content, as well as Primordial and
Reclaimer relating to the Halo franchise and other game-lore, all three Metal
albums relate to listeners of all genres and relatability.

 

Overall, the Shadow of Intent Merch Store offers a variety of products that
cater to fans of the band. Whether you're looking for clothing, accessories, or
posters, there's something for every fan to enjoy and show their support for
this talented metal band.

One of the key highlights of our store is the quality of our products. We take
great pride in offering high-quality clothing made from the finest materials,
ensuring that our customers receive products that are both comfortable and
durable.

Another great feature of our store is the variety of designs we offer. From
classic band logos to album artwork, our selection of designs is sure to appeal
to every fan. We offer a range of clothing and accessories that feature unique
designs, allowing you to showcase your love for Shadow of Intent in a way that's
both stylish and distinctive.

In addition to all these great features, we also pride ourselves on excellent
customer service. Our team is always happy to answer any questions you may have
and provide you with any assistance you need when shopping on our store. We
strive to make your shopping experience as smooth and enjoyable as possible, so
you can feel confident in your purchase and proud to show off your Shadow of
Intent merchandise. So why wait? Visit the Shadow of Intent Merch Store today
and discover all the amazing products we have to offer. Whether you're a
long-time fan or just discovering the band, we have something for everyone.

 

 

Got a question? Need some advice? Have a problem with delivery? Feel free to
email us at cs@musicbandclothing.com




 * FREE SHIPPING
   Over $49.00
 * RETURN & EXCHANGE
   within 60 days
 * PAYMENT
   100% Secure
 * Personalized Unique Design
   Personalized


TERMS & POLICIES

 * Intellectual Property Rights
 * Terms of Shipment
 * Return and Exchange Policy
 * Terms of Service
 * Privacy Policy


COMPANY INFO

 * About Us
 * Contact and FAQ
 * Track Order


SUBSCRIBE

 * Subscribe to our newsletter, so that you can be the first to know about new
   offers and promotions.

 * 

SUBSCRIBE
© 2023, musicbandclothing.com
 * Choosing a selection results in a full page refresh.