var/cache/dev/twig/a1/a12531506e9e45d29605aa91769142b682491406b10b87fa6b76e061779b1375.php line 16

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\SandboxExtension;
  6. use Twig\Markup;
  7. use Twig\Sandbox\SecurityError;
  8. use Twig\Sandbox\SecurityNotAllowedTagError;
  9. use Twig\Sandbox\SecurityNotAllowedFilterError;
  10. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  11. use Twig\Source;
  12. use Twig\Template;
  13. /* Product/detail.twig */
  14. class __TwigTemplate_2ff6fc0185ba932717ee492599358283389bbad343a0e2b97ffbfb94a9e80a46 extends \Eccube\Twig\Template
  15. {
  16.     private $source;
  17.     private $macros = [];
  18.     public function __construct(Environment $env)
  19.     {
  20.         parent::__construct($env);
  21.         $this->source $this->getSourceContext();
  22.         $this->blocks = [
  23.             'stylesheet' => [$this'block_stylesheet'],
  24.             'javascript' => [$this'block_javascript'],
  25.             'main' => [$this'block_main'],
  26.         ];
  27.     }
  28.     protected function doGetParent(array $context)
  29.     {
  30.         // line 11
  31.         return "default_frame.twig";
  32.     }
  33.     protected function doDisplay(array $context, array $blocks = [])
  34.     {
  35.         $macros $this->macros;
  36.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  37.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/detail.twig"));
  38.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  39.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""Product/detail.twig"));
  40.         // line 13
  41.         $context["body_class"] = "product_page";
  42.         // line 11
  43.         $this->parent $this->loadTemplate("default_frame.twig""Product/detail.twig"11);
  44.         $this->parent->display($contextarray_merge($this->blocks$blocks));
  45.         
  46.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  47.         
  48.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  49.     }
  50.     // line 15
  51.     public function block_stylesheet($context, array $blocks = [])
  52.     {
  53.         $macros $this->macros;
  54.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  55.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  56.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  57.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheet"));
  58.         // line 16
  59.         echo "    <style>
  60.         .slick-slider {
  61.             margin-bottom: 30px;
  62.         }
  63.         .slick-dots {
  64.             position: absolute;
  65.             bottom: -45px;
  66.             display: block;
  67.             width: 100%;
  68.             padding: 0;
  69.             list-style: none;
  70.             text-align: center;
  71.         }
  72.         .slick-dots li {
  73.             position: relative;
  74.             display: inline-block;
  75.             width: 20px;
  76.             height: 20px;
  77.             margin: 0 5px;
  78.             padding: 0;
  79.             cursor: pointer;
  80.         }
  81.         .slick-dots li button {
  82.             font-size: 0;
  83.             line-height: 0;
  84.             display: block;
  85.             width: 20px;
  86.             height: 20px;
  87.             padding: 5px;
  88.             cursor: pointer;
  89.             color: transparent;
  90.             border: 0;
  91.             outline: none;
  92.             background: transparent;
  93.         }
  94.         .slick-dots li button:hover,
  95.         .slick-dots li button:focus {
  96.             outline: none;
  97.         }
  98.         .slick-dots li button:hover:before,
  99.         .slick-dots li button:focus:before {
  100.             opacity: 1;
  101.         }
  102.         .slick-dots li button:before {
  103.             content: \" \";
  104.             line-height: 20px;
  105.             position: absolute;
  106.             top: 0;
  107.             left: 0;
  108.             width: 12px;
  109.             height: 12px;
  110.             text-align: center;
  111.             opacity: .25;
  112.             background-color: black;
  113.             border-radius: 50%;
  114.         }
  115.         .slick-dots li.slick-active button:before {
  116.             opacity: .75;
  117.             background-color: black;
  118.         }
  119.         .slick-dots li button.thumbnail img {
  120.             width: 0;
  121.             height: 0;
  122.         }
  123.         #form1 > .mb-3 {
  124.             visibility: hidden;
  125.             height:0;
  126.         }
  127.         form#form1 > div.mb-3:nth-child(4) {
  128.             visibility: visible;
  129.             height: auto;
  130.         }
  131.         /*#form1 > div:nth-child(14) {*/
  132.         /*    visibility: hidden;*/
  133.         /*}*/
  134.         #downloadSpinners {
  135.             display: block;
  136.             position: absolute;
  137.             left: 256px;
  138.             top: 256px;
  139.         }
  140.         #uchiwaCanvas {
  141.             background-color: #cccccc;
  142.             width: 90vW;
  143.             max-width: 512px;
  144.             margin-left: -20px;
  145.         }
  146.         .text-announce {
  147.             color: #ff0000;
  148.             font-weight: bold;
  149.         }
  150.         button#add-cart-button {
  151.             /*background-color:#ffffff;*/
  152.             color:#ffffff;
  153.         }
  154.         button#favorite {
  155.             background-color:#ffff00;
  156.             color:#666666;
  157.             border: 1px solid #aaaaaa;
  158.         }
  159.         button#favorite:hover {
  160.             background-color:#e6e600;
  161.             /*color:#000000;*/
  162.         }
  163.         @media (min-width: 768px) and (max-width: 1070px) {
  164.             #uchiwaCanvas {
  165.                 width: 45vW;
  166.             }
  167.         }
  168.     </style>
  169. ";
  170.         // line 150
  171.         echo "    <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/vuetify@3.7.16/dist/vuetify.min.css\" />
  172.     <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css\" />
  173.     <link rel=\"stylesheet\" href=\"https://fonts.bunny.net/css?family=roboto:400,500,700\" />
  174. ";
  175.         
  176.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  177.         
  178.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  179.     }
  180.     // line 155
  181.     public function block_javascript($context, array $blocks = [])
  182.     {
  183.         $macros $this->macros;
  184.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  185.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  186.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  187.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascript"));
  188.         // line 156
  189.         echo "<script>
  190.     eccube.classCategories = ";
  191.         // line 157
  192.         echo $this->extensions['Eccube\Twig\Extension\EccubeExtension']->getClassCategoriesAsJson((isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'157$this->source); })()));
  193.         echo ";
  194.         // 規格2に選択肢を割り当てる。
  195.         function fnSetClassCategories(form, classcat_id2_selected) {
  196.             var \$form = \$(form);
  197.             var product_id = \$form.find('input[name=product_id]').val();
  198.             var \$sele1 = \$form.find('select[name=classcategory_id1]');
  199.             var \$sele2 = \$form.find('select[name=classcategory_id2]');
  200.             eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  201.         }
  202.         ";
  203.         // line 168
  204.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruefalse168)) {
  205.             // line 169
  206.             echo "        fnSetClassCategories(
  207.             \$('#form1'), ";
  208.             // line 170
  209.             echo json_encode(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'170$this->source); })()), "classcategory_id2", [], "any"falsefalsefalse170), "vars", [], "any"falsefalsefalse170), "value", [], "any"falsefalsefalse170));
  210.             echo "
  211.         );
  212.         ";
  213.         } elseif (twig_get_attribute($this->env$this->source,         // line 172
  214. ($context["form"] ?? null), "classcategory_id1", [], "any"truetruefalse172)) {
  215.             // line 173
  216.             echo "        eccube.checkStock(\$('#form1'), ";
  217.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'173$this->source); })()), "id", [], "any"falsefalsefalse173), "html"nulltrue);
  218.             echo ", ";
  219.             echo json_encode(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'173$this->source); })()), "classcategory_id1", [], "any"falsefalsefalse173), "vars", [], "any"falsefalsefalse173), "value", [], "any"falsefalsefalse173));
  220.             echo ", null);
  221.         ";
  222.         }
  223.         // line 175
  224.         echo "    </script>
  225.     <script>
  226.         \$(function() {
  227.             // bfcache無効化
  228.             \$(window).bind('pageshow', function(event) {
  229.                 if (event.originalEvent.persisted) {
  230.                     location.reload(true);
  231.                 }
  232.             });
  233.             // Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  234.             // img タグに width, height が付与されている.
  235.             // 630px 未満の画面サイズでは縦横比が壊れるための対策
  236.             // see https://github.com/EC-CUBE/ec-cube/pull/5023
  237.             // \$('.ec-grid2__cell').hide();
  238.             var removeSize = function () {
  239.                 \$('.slide-item').height('');
  240.                 \$('.slide-item img')
  241.                     .removeAttr('width')
  242.                     .removeAttr('height')
  243.                     .removeAttr('style');
  244.             };
  245.             var slickInitial = function(slick) {
  246.                 \$('.ec-grid2__cell').fadeIn(1500);
  247.                 var baseHeight = \$(slick.target).height();
  248.                 var baseWidth = \$(slick.target).width();
  249.                 var rate = baseWidth / baseHeight;
  250.                 \$('.slide-item').height(baseHeight * rate); // 余白を削除する
  251.                 // transform を使用することでCLSの影響を受けないようにする
  252.                 \$('.slide-item img')
  253.                     .css(
  254.                         {
  255.                             'transform-origin': 'top left',
  256.                             'transform': 'scaleY(' + rate + ')',
  257.                             'transition': 'transform .1s'
  258.                         }
  259.                     );
  260.                 // 正しいサイズに近くなったら属性を解除する
  261.                 setTimeout(removeSize, 500);
  262.             };
  263.             \$('.item_visual').on('init', slickInitial);
  264.             // リサイズ時は CLS の影響を受けないため属性を解除する
  265.             \$(window).resize(removeSize);
  266.             \$('.item_visual').slick({
  267.                 dots: false,
  268.                 arrows: false,
  269.                 responsive: [{
  270.                     breakpoint: 768,
  271.                     settings: {
  272.                         dots: true
  273.                     }
  274.                 }]
  275.             });
  276.             \$('.slideThumb').on('click', function() {
  277.                 var index = \$(this).attr('data-index');
  278.                 \$('.item_visual').slick('slickGoTo', index, false);
  279.             })
  280.         });
  281.     </script>
  282.     <script>
  283.         \$(function() {
  284.             \$('.add-cart').on('click', function(event) {
  285.                     // console.log('set canvas image');
  286. //
  287. //     const c = document.getElementById('uchiwaCanvas');
  288. //
  289. //     c.toBlob(function(blob) {
  290. //     const imgFile = new File([blob], 'trimedfileupload.png', {type: \"image/png\"});
  291. //     const dt = new DataTransfer();
  292. //     dt.items.add(imgFile);
  293. //     const fileInput = document.getElementById(\"file\");
  294. //     fileInput.files = dt.files;
  295. // });
  296.     // console.log('data is : ', c);
  297.     // const imgUrl = c.toDataURL();
  298.     // console.log('image is : ', imgUrl);
  299.     //
  300.     // let fd = new FormData(\$('#form1').get(0))
  301.     // fd.delete(\"file\")
  302.     // fd.append(\"file\", imgUrl )
  303.     // document.getElementById('file').value = imgUrl;
  304.                 ";
  305.         // line 260
  306.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruefalse260)) {
  307.             // line 261
  308.             echo "                // 規格1フォームの必須チェック
  309.                 if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  310.                     \$('#classcategory_id1')[0].setCustomValidity('";
  311.             // line 263
  312.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  313.             echo "');
  314.                     return true;
  315.                 } else {
  316.                     \$('#classcategory_id1')[0].setCustomValidity('');
  317.                 }
  318.                 ";
  319.         }
  320.         // line 269
  321.         echo "
  322.                 ";
  323.         // line 270
  324.         if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruefalse270)) {
  325.             // line 271
  326.             echo "                // 規格2フォームの必須チェック
  327.                 if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  328.                     \$('#classcategory_id2')[0].setCustomValidity('";
  329.             // line 273
  330.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("項目が選択されていません"), "html"nulltrue);
  331.             echo "');
  332.                     return true;
  333.                 } else {
  334.                     \$('#classcategory_id2')[0].setCustomValidity('');
  335.                 }
  336.                 ";
  337.         }
  338.         // line 279
  339.         echo "
  340.                 // 個数フォームのチェック
  341.                 if (\$('#quantity').val() < 1) {
  342.                     \$('#quantity')[0].setCustomValidity('";
  343.         // line 282
  344.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("1以上で入力してください。"), "html"nulltrue);
  345.         echo "');
  346.                     return true;
  347.                 } else {
  348.                     \$('#quantity')[0].setCustomValidity('');
  349.                 }
  350.                 event.preventDefault();
  351.                 const \$form = \$('#form1');
  352.     const formData = new FormData(\$form.get(0));
  353.                 \$.ajax({
  354.                     url: \$form.attr('action'),
  355.                     type: \$form.attr('method'),
  356.                     // data: \$form.serialize(),
  357.                     data: formData,
  358.                     processData: false,
  359.                     // contentType: 'multipart/form-data',
  360.                     contentType: false,
  361.                     dataType: 'json',
  362.                     // async: false,
  363.                     beforeSend: function(xhr, settings) {
  364.                         // Buttonを無効にする
  365.                         \$('.add-cart').prop('disabled', true);
  366.                     }
  367.                 }).done(function(data) {
  368.                     // レスポンス内のメッセージをalertで表示
  369.                     \$.each(data.messages, function() {
  370.                         \$('#ec-modal-header').text(this);
  371.                     });
  372.                     \$('.ec-modal').show()
  373.                     // カートブロックを更新する
  374.                     \$.ajax({
  375.                         url: \"";
  376.         // line 315
  377.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("block_cart");
  378.         echo "\",
  379.                         type: 'GET',
  380.                         dataType: 'html'
  381.                     }).done(function(html) {
  382.                         \$('.ec-headerRole__cart').html(html);
  383.                     });
  384.                 }).fail(function(data) {
  385.                     alert('";
  386.         // line 322
  387.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへの追加に失敗しました。"), "html"nulltrue);
  388.         echo "');
  389.                 }).always(function(data) {
  390.                     // Buttonを有効にする
  391.                     \$('.add-cart').prop('disabled', false);
  392.                 });
  393.             });
  394.         });
  395.         \$('.ec-modal-wrap').on('click', function(e) {
  396.             // モーダル内の処理は外側にバブリングさせない
  397.             e.stopPropagation();
  398.         });
  399.         \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function() {
  400.             \$('.ec-modal').hide()
  401.         });
  402.         const sheet_size = '";
  403.         // line 337
  404.         echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'337$this->source); })()), "sheet_size", [], "any"falsefalsefalse337), "html"nulltrue);
  405.         echo "';
  406.         const decoration_type = '";
  407.         // line 338
  408.         echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'338$this->source); })()), "product_decoration_type", [], "any"falsefalsefalse338), "html"nulltrue);
  409.         echo "'
  410.     </script>
  411.     <script type=\"application/ld+json\">
  412.     {
  413.         \"@context\": \"https://schema.org/\",
  414.         \"@type\": \"Product\",
  415.         \"name\": \"";
  416.         // line 347
  417.         echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'347$this->source); })()), "name", [], "any"falsefalsefalse347), "html"nulltrue);
  418.         echo "\",
  419.         \"image\": [
  420.             ";
  421.         // line 349
  422.         $context['_parent'] = $context;
  423.         $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'349$this->source); })()), "ProductImage", [], "any"falsefalsefalse349));
  424.         $context['_iterated'] = false;
  425.         $context['loop'] = [
  426.           'parent' => $context['_parent'],
  427.           'index0' => 0,
  428.           'index'  => 1,
  429.           'first'  => true,
  430.         ];
  431.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  432.             $length count($context['_seq']);
  433.             $context['loop']['revindex0'] = $length 1;
  434.             $context['loop']['revindex'] = $length;
  435.             $context['loop']['length'] = $length;
  436.             $context['loop']['last'] = === $length;
  437.         }
  438.         foreach ($context['_seq'] as $context["_key"] => $context["img"]) {
  439.             // line 350
  440.             echo "                \"";
  441.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'350$this->source); })()), "request", [], "any"falsefalsefalse350), "schemeAndHttpHost", [], "any"falsefalsefalse350), "html"nulltrue);
  442.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($context["img"], "save_image"), "html"nulltrue);
  443.             echo "\"";
  444.             if ( !twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsefalse350)) {
  445.                 echo ",";
  446.             }
  447.             // line 351
  448.             echo "
  449.             ";
  450.             $context['_iterated'] = true;
  451.             ++$context['loop']['index0'];
  452.             ++$context['loop']['index'];
  453.             $context['loop']['first'] = false;
  454.             if (isset($context['loop']['length'])) {
  455.                 --$context['loop']['revindex0'];
  456.                 --$context['loop']['revindex'];
  457.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  458.             }
  459.         }
  460.         if (!$context['_iterated']) {
  461.             // line 353
  462.             echo "                \"";
  463.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'353$this->source); })()), "request", [], "any"falsefalsefalse353), "schemeAndHttpHost", [], "any"falsefalsefalse353), "html"nulltrue);
  464.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct(""), "save_image"), "html"nulltrue);
  465.             echo "\"
  466.             ";
  467.         }
  468.         $_parent $context['_parent'];
  469.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['img'], $context['_parent'], $context['loop']);
  470.         $context array_intersect_key($context$_parent) + $_parent;
  471.         // line 355
  472.         echo "        ],
  473.         \"description\": \"";
  474.         // line 356
  475.         echo twig_escape_filter($this->envtwig_slice($this->envtwig_replace_filter(((twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"truetruefalse356)) ? (_twig_default_filter(twig_get_attribute($this->env$this->source, ($context["Product"] ?? null), "description_list", [], "any"falsefalsefalse356), twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'356$this->source); })()), "description_detail", [], "any"falsefalsefalse356))) : (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'356$this->source); })()), "description_detail", [], "any"falsefalsefalse356))), ["
  476. => """ " => ""]), 0300), "html"nulltrue);
  477.         echo "\",
  478.         ";
  479.         // line 357
  480.         if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'357$this->source); })()), "code_min", [], "any"falsefalsefalse357)) {
  481.             // line 358
  482.             echo "        \"sku\": \"";
  483.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'358$this->source); })()), "code_min", [], "any"falsefalsefalse358), "html"nulltrue);
  484.             echo "\",
  485.         ";
  486.         }
  487.         // line 360
  488.         echo "        \"offers\": {
  489.             \"@type\": \"Offer\",
  490.             \"url\": \"";
  491.         // line 362
  492.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_detail", ["id" => twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'362$this->source); })()), "id", [], "any"falsefalsefalse362)]), "html"nulltrue);
  493.         echo "\",
  494.             \"priceCurrency\": \"";
  495.         // line 363
  496.         echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["eccube_config"]) || array_key_exists("eccube_config"$context) ? $context["eccube_config"] : (function () { throw new RuntimeError('Variable "eccube_config" does not exist.'363$this->source); })()), "currency", [], "any"falsefalsefalse363), "html"nulltrue);
  497.         echo "\",
  498.             \"price\": ";
  499.         // line 364
  500.         ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'364$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse364)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'364$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse364), "html"nulltrue))) : (print (0)));
  501.         echo ",
  502.             \"availability\": \"";
  503.         // line 365
  504.         echo ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'365$this->source); })()), "stock_find", [], "any"falsefalsefalse365)) ? ("InStock") : ("OutOfStock"));
  505.         echo "\"
  506.         }
  507.     }
  508.     </script>
  509.     <script async src=\"https://ga.jspm.io/npm:es-module-shims@1.6.2/dist/es-module-shims.js\"></script>
  510. ";
  511.         // line 381
  512.         echo "
  513.     <script src=\"https://cdn.jsdelivr.net/npm/vue@3.5.13/dist/vue.global.min.js\"></script>
  514.     <script src=\"https://cdn.jsdelivr.net/npm/vue3-sfc-loader/dist/vue3-sfc-loader.js\"></script>
  515. <script src=\"https://cdn.jsdelivr.net/npm/vuetify@3.7.16/dist/vuetify.min.js\"></script>
  516. ";
  517.         
  518.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  519.         
  520.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  521.     }
  522.     // line 388
  523.     public function block_main($context, array $blocks = [])
  524.     {
  525.         $macros $this->macros;
  526.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  527.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  528.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  529.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""main"));
  530.         // line 389
  531.         echo "    ";
  532.         $context["hasCategory"] = false;
  533.         // line 390
  534.         echo "    ";
  535.         $context["hasFile"] = false;
  536.         // line 391
  537.         echo "    ";
  538.         $context['_parent'] = $context;
  539.         $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'391$this->source); })()), "ProductCategories", [], "any"falsefalsefalse391));
  540.         foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  541.             // line 392
  542.             echo "        ";
  543.             if (((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsefalse392), "id", [], "any"falsefalsefalse392) == 8) || (twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsefalse392), "id", [], "any"falsefalsefalse392) == 20))) {
  544.                 // line 393
  545.                 echo "            ";
  546.                 if ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'393$this->source); })()), "product_input_type", [], "any"falsefalsefalse393) == "on")) {
  547.                     // line 394
  548.                     echo "                ";
  549.                     $context["hasCategory"] = true;
  550.                     // line 395
  551.                     echo "            ";
  552.                 }
  553.                 // line 396
  554.                 echo "        ";
  555.             }
  556.             // line 397
  557.             echo "        ";
  558.             if ((twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsefalse397), "id", [], "any"falsefalsefalse397) == 23)) {
  559.                 // line 398
  560.                 echo "        ";
  561.                 $context["hasFile"] = true;
  562.                 // line 399
  563.                 echo "        ";
  564.             }
  565.             // line 400
  566.             echo "    ";
  567.         }
  568.         $_parent $context['_parent'];
  569.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  570.         $context array_intersect_key($context$_parent) + $_parent;
  571.         // line 401
  572.         echo "    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,300..400,0..1,0&display=swap\" media=\"print\" onload=\"this.media='all'\">
  573.     <div class=\"ec-productRole\">
  574.         <div class=\"ec-grid2\">
  575.             <div class=\"ec-grid2__cell\">
  576.                 <div class=\"product-image\">
  577.                     ";
  578.         // line 406
  579.         if (((isset($context["hasCategory"]) || array_key_exists("hasCategory"$context) ? $context["hasCategory"] : (function () { throw new RuntimeError('Variable "hasCategory" does not exist.'406$this->source); })()) == true)) {
  580.             // line 407
  581.             echo "                        <div id=\"app\"></div>
  582.                         <div class=\"uchiwa_img_wrapper\" style=\"width:50%;margin: 20px\">
  583.                             <canvas id=\"uchiwaCanvas\" class=\"img_canvas\" height=\"512\" width=\"512\"></canvas>
  584.                         </div>
  585.                         <div id=\"downloadSpinners\">
  586.                             <svg class=\"q-spinner text-primary\" width=\"4em\" height=\"4em\" viewBox=\"0 0 38 38\"
  587.                                  xmlns=\"http://www.w3.org/2000/svg\">
  588.                                 <defs>
  589.                                     <linearGradient x1=\"8.042%\" y1=\"0%\" x2=\"65.682%\" y2=\"23.865%\" id=\"a\">
  590.                                         <stop stop-color=\"currentColor\" stop-opacity=\"0\" offset=\"0%\"></stop>
  591.                                         <stop stop-color=\"currentColor\" stop-opacity=\".631\" offset=\"63.146%\"></stop>
  592.                                         <stop stop-color=\"currentColor\" offset=\"100%\"></stop>
  593.                                     </linearGradient>
  594.                                 </defs>
  595.                                 <g transform=\"translate(1 1)\" fill=\"none\" fill-rule=\"evenodd\">
  596.                                     <path d=\"M36 18c0-9.94-8.06-18-18-18\" stroke=\"url(#a)\" stroke-width=\"2\">
  597.                                         <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 18 18\"
  598.                                                           to=\"360 18 18\" dur=\"0.9s\"
  599.                                                           repeatCount=\"indefinite\"></animateTransform>
  600.                                     </path>
  601.                                     <circle fill=\"currentColor\" cx=\"36\" cy=\"18\" r=\"1\">
  602.                                         <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 18 18\"
  603.                                                           to=\"360 18 18\" dur=\"0.9s\"
  604.                                                           repeatCount=\"indefinite\"></animateTransform>
  605.                                     </circle>
  606.                                 </g>
  607.                             </svg><!----></div>
  608.                     ";
  609.         }
  610.         // line 435
  611.         echo "                    ";
  612.         // line 436
  613.         echo "                    ";
  614.         // line 437
  615.         echo "                    ";
  616.         // line 438
  617.         echo "                    ";
  618.         // line 439
  619.         echo "                    ";
  620.         // line 440
  621.         echo "
  622.                 </div>
  623.                 <div class=\"ec-sliderItemRole\">
  624.                     ";
  625.         // line 445
  626.         if (((isset($context["hasCategory"]) || array_key_exists("hasCategory"$context) ? $context["hasCategory"] : (function () { throw new RuntimeError('Variable "hasCategory" does not exist.'445$this->source); })()) == false)) {
  627.             // line 446
  628.             echo "                        <div class=\"item_visual\">
  629.                             ";
  630.             // line 447
  631.             $context['_parent'] = $context;
  632.             $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'447$this->source); })()), "ProductImage", [], "any"falsefalsefalse447));
  633.             $context['_iterated'] = false;
  634.             $context['loop'] = [
  635.               'parent' => $context['_parent'],
  636.               'index0' => 0,
  637.               'index'  => 1,
  638.               'first'  => true,
  639.             ];
  640.             if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  641.                 $length count($context['_seq']);
  642.                 $context['loop']['revindex0'] = $length 1;
  643.                 $context['loop']['revindex'] = $length;
  644.                 $context['loop']['length'] = $length;
  645.                 $context['loop']['last'] = === $length;
  646.             }
  647.             foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  648.                 // line 448
  649.                 echo "                                <div class=\"slide-item\"><img src=\"";
  650.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($context["ProductImage"], "save_image"), "html"nulltrue);
  651.                 echo "\"
  652.                                                              alt=\"";
  653.                 // line 449
  654.                 ((twig_get_attribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsefalse449)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'449$this->source); })()), "name", [], "any"falsefalsefalse449), "html"nulltrue))) : (print ("")));
  655.                 echo "\" width=\"550\"
  656.                                                              height=\"550\"";
  657.                 // line 450
  658.                 if ((twig_get_attribute($this->env$this->source$context["loop"], "index", [], "any"falsefalsefalse450) > 1)) {
  659.                     echo " loading=\"lazy\"";
  660.                 }
  661.                 echo ">
  662.                                 </div>
  663.                             ";
  664.                 $context['_iterated'] = true;
  665.                 ++$context['loop']['index0'];
  666.                 ++$context['loop']['index'];
  667.                 $context['loop']['first'] = false;
  668.                 if (isset($context['loop']['length'])) {
  669.                     --$context['loop']['revindex0'];
  670.                     --$context['loop']['revindex'];
  671.                     $context['loop']['last'] = === $context['loop']['revindex0'];
  672.                 }
  673.             }
  674.             if (!$context['_iterated']) {
  675.                 // line 453
  676.                 echo "                                <div class=\"slide-item\"><img src=\"";
  677.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($this->extensions['Eccube\Twig\Extension\EccubeExtension']->getNoImageProduct(""), "save_image"), "html"nulltrue);
  678.                 echo "\"
  679.                                                              alt=\"";
  680.                 // line 454
  681.                 ((twig_get_attribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsefalse454)) ? (print (twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'454$this->source); })()), "name", [], "any"falsefalsefalse454), "html"nulltrue))) : (print ("")));
  682.                 echo "\" width=\"550\"
  683.                                                              height=\"550\"></div>
  684.                             ";
  685.             }
  686.             $_parent $context['_parent'];
  687.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  688.             $context array_intersect_key($context$_parent) + $_parent;
  689.             // line 457
  690.             echo "                        </div>
  691.                         <div class=\"item_nav\">
  692.                             ";
  693.             // line 459
  694.             $context['_parent'] = $context;
  695.             $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'459$this->source); })()), "ProductImage", [], "any"falsefalsefalse459));
  696.             $context['loop'] = [
  697.               'parent' => $context['_parent'],
  698.               'index0' => 0,
  699.               'index'  => 1,
  700.               'first'  => true,
  701.             ];
  702.             if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  703.                 $length count($context['_seq']);
  704.                 $context['loop']['revindex0'] = $length 1;
  705.                 $context['loop']['revindex'] = $length;
  706.                 $context['loop']['length'] = $length;
  707.                 $context['loop']['last'] = === $length;
  708.             }
  709.             foreach ($context['_seq'] as $context["_key"] => $context["ProductImage"]) {
  710.                 // line 460
  711.                 echo "                                <div class=\"slideThumb\" data-index=\"";
  712.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["loop"], "index0", [], "any"falsefalsefalse460), "html"nulltrue);
  713.                 echo "\"><img
  714.                                             src=\"";
  715.                 // line 461
  716.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($context["ProductImage"], "save_image"), "html"nulltrue);
  717.                 echo "\" alt=\"\" width=\"133\"
  718.                                             height=\"133\"
  719.                                             loading=\"lazy\"></div>
  720.                             ";
  721.                 ++$context['loop']['index0'];
  722.                 ++$context['loop']['index'];
  723.                 $context['loop']['first'] = false;
  724.                 if (isset($context['loop']['length'])) {
  725.                     --$context['loop']['revindex0'];
  726.                     --$context['loop']['revindex'];
  727.                     $context['loop']['last'] = === $context['loop']['revindex0'];
  728.                 }
  729.             }
  730.             $_parent $context['_parent'];
  731.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductImage'], $context['_parent'], $context['loop']);
  732.             $context array_intersect_key($context$_parent) + $_parent;
  733.             // line 465
  734.             echo "                        </div>
  735.                     ";
  736.         }
  737.         // line 467
  738.         echo "                </div>
  739.                 ";
  740.         // line 469
  741.         if ((((isset($context["hasCategory"]) || array_key_exists("hasCategory"$context) ? $context["hasCategory"] : (function () { throw new RuntimeError('Variable "hasCategory" does not exist.'469$this->source); })()) == true) || ((isset($context["hasFile"]) || array_key_exists("hasFile"$context) ? $context["hasFile"] : (function () { throw new RuntimeError('Variable "hasFile" does not exist.'469$this->source); })()) == true))) {
  742.             // line 470
  743.             echo "                    <div style=\"margin-top: 120px;\">
  744. ";
  745.             // line 472
  746.             echo "                        ";
  747.             // line 473
  748.             echo "                        <h4>ご注意</h4>
  749.                         <p class=\"text-announce\">実際の商品は、仕上がりイメージと若干異なる場合があります</p>
  750.                     ";
  751.             // line 475
  752.             if (((isset($context["hasCategory"]) || array_key_exists("hasCategory"$context) ? $context["hasCategory"] : (function () { throw new RuntimeError('Variable "hasCategory" does not exist.'475$this->source); })()) == true)) {
  753.                 // line 476
  754.                 echo "                        <p class=\"text-announce\">ひらがななどで全体が一枚でつながらない場合には、背景でつながるげることがあります</p>
  755.                     ";
  756.             }
  757.             // line 478
  758.             echo "                    </div>
  759.                     <div>
  760.                         <img class=\"material__img\" src=\"/ecshop/html/user_data/assets/img/material/color_basic1.jpg\"
  761.                              alt=\"カラー一覧\"><br>
  762.                         <img class=\"material__img\" src=\"/ecshop/html/user_data/assets/img/material/color_basic2.jpg\"
  763.                              alt=\"カラー一覧\"><br>
  764.                         <img class=\"material__img\" src=\"/ecshop/html/user_data/assets/img/material/color_basic3.jpg\"
  765.                              alt=\"カラー一覧\">
  766.                         <img class=\"material__img\" src=\"/ecshop/html/user_data/assets/img/material/color_glitter1.jpg\"
  767.                              alt=\"グリッターカラー一覧\"><br>
  768.                         <img class=\"material__img\" src=\"/ecshop/html/user_data/assets/img/material/use_font.jpg\"
  769.                              alt=\"書体見本\">
  770.                     </div>
  771.                 ";
  772.         }
  773.         // line 492
  774.         echo "            </div>
  775.             <div class=\"ec-grid2__cell\">
  776.                 <div class=\"ec-productRole__profile\">
  777.                     ";
  778.         // line 496
  779.         echo "                    <div class=\"ec-productRole__title\">
  780.                         <h2 class=\"ec-headingTitle\">";
  781.         // line 497
  782.         echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'497$this->source); })()), "name", [], "any"falsefalsefalse497), "html"nulltrue);
  783.         echo "</h2>
  784.                     </div>
  785.                     ";
  786.         // line 501
  787.         echo "                    ";
  788.         // line 502
  789.         echo "                    ";
  790.         // line 503
  791.         echo "                    ";
  792.         // line 504
  793.         echo "                    ";
  794.         // line 505
  795.         echo "                    ";
  796.         // line 506
  797.         echo "                    ";
  798.         // line 507
  799.         echo "                    ";
  800.         // line 508
  801.         echo "                    ";
  802.         // line 509
  803.         echo "                    ";
  804.         // line 510
  805.         echo "                    ";
  806.         // line 511
  807.         echo "                    ";
  808.         // line 512
  809.         echo "                    ";
  810.         // line 513
  811.         echo "                    ";
  812.         // line 514
  813.         echo "                    ";
  814.         // line 515
  815.         echo "                    ";
  816.         // line 516
  817.         echo "                    ";
  818.         // line 517
  819.         echo "                    ";
  820.         // line 518
  821.         echo "                    ";
  822.         // line 519
  823.         echo "                    ";
  824.         // line 520
  825.         echo "                    ";
  826.         // line 521
  827.         echo "                    ";
  828.         // line 522
  829.         echo "                    ";
  830.         // line 523
  831.         echo "                    ";
  832.         // line 524
  833.         echo "
  834.                     ";
  835.         // line 526
  836.         echo "                    <ul class=\"ec-productRole__tags\">
  837.                         ";
  838.         // line 527
  839.         $context['_parent'] = $context;
  840.         $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'527$this->source); })()), "Tags", [], "any"falsefalsefalse527));
  841.         foreach ($context['_seq'] as $context["_key"] => $context["Tag"]) {
  842.             // line 528
  843.             echo "                            <li class=\"ec-productRole__tag tag_";
  844.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Tag"], "id", [], "any"falsefalsefalse528), "html"nulltrue);
  845.             echo "\">";
  846.             echo twig_escape_filter($this->env$context["Tag"], "html"nulltrue);
  847.             echo "</li>
  848.                         ";
  849.         }
  850.         $_parent $context['_parent'];
  851.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Tag'], $context['_parent'], $context['loop']);
  852.         $context array_intersect_key($context$_parent) + $_parent;
  853.         // line 530
  854.         echo "                    </ul>
  855.                     ";
  856.         // line 532
  857.         echo "                    ";
  858.         if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'532$this->source); })()), "hasProductClass", [], "any"falsefalsefalse532)) {
  859.             // line 533
  860.             echo "<div class=\"ec-productRole__priceRegular\">
  861.                             ";
  862.             // line 534
  863.             if (( !(null === twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'534$this->source); })()), "getPrice01Min", [], "any"falsefalsefalse534)) && (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'534$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsefalse534) == twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'534$this->source); })()), "getPrice01IncTaxMax", [], "any"falsefalsefalse534)))) {
  864.                 // line 535
  865.                 echo "                                <span class=\"ec-productRole__priceRegularPrice\">";
  866.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  867.                 echo ":<span
  868.                                             class=\"price01-default\">";
  869.                 // line 536
  870.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'536$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsefalse536)), "html"nulltrue);
  871.                 echo "</span></span>
  872.                                 <span class=\"ec-productRole__priceRegularTax\">";
  873.                 // line 537
  874.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  875.                 echo "</span>
  876.                             ";
  877.             } elseif (( !(null === twig_get_attribute($this->env$this->source,             // line 538
  878. (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'538$this->source); })()), "getPrice01Min", [], "any"falsefalsefalse538)) &&  !(null === twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'538$this->source); })()), "getPrice01Max", [], "any"falsefalsefalse538)))) {
  879.                 // line 539
  880.                 echo "                                <span class=\"ec-productRole__priceRegularPrice\">";
  881.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  882.                 echo ":<span
  883.                                             class=\"price01-default\">";
  884.                 // line 540
  885.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'540$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsefalse540)), "html"nulltrue);
  886.                 echo "~ ";
  887.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'540$this->source); })()), "getPrice01IncTaxMax", [], "any"falsefalsefalse540)), "html"nulltrue);
  888.                 echo "</span></span>
  889.                                 <span class=\"ec-productRole__priceRegularTax\">";
  890.                 // line 541
  891.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  892.                 echo "</span>
  893.                             ";
  894.             }
  895.             // line 543
  896.             echo "                        </div>
  897.                     ";
  898.         } else {
  899.             // line 545
  900.             echo "                        ";
  901.             if ( !(null === twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'545$this->source); })()), "getPrice01Max", [], "any"falsefalsefalse545))) {
  902.                 // line 546
  903.                 echo "                            <span class=\"ec-productRole__priceRegularPrice\">";
  904.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("通常価格"), "html"nulltrue);
  905.                 echo ":";
  906.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'546$this->source); })()), "getPrice01IncTaxMin", [], "any"falsefalsefalse546)), "html"nulltrue);
  907.                 echo "</span>
  908.                             <span class=\"ec-productRole__priceRegularTax\">";
  909.                 // line 547
  910.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  911.                 echo "</span>
  912.                         ";
  913.             }
  914.             // line 549
  915.             echo "                    ";
  916.         }
  917.         // line 550
  918.         echo "                    ";
  919.         // line 551
  920.         echo "                    <div class=\"ec-productRole__price\">
  921.                         ";
  922.         // line 552
  923.         if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'552$this->source); })()), "hasProductClass", [], "any"falsefalsefalse552)) {
  924.             // line 553
  925.             if ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'553$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse553) == twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'553$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsefalse553))) {
  926.                 // line 554
  927.                 echo "                                <div class=\"ec-price\">
  928.                                     <span class=\"ec-price__price price02-default\">";
  929.                 // line 555
  930.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'555$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse555)), "html"nulltrue);
  931.                 echo "</span>
  932.                                     <span class=\"ec-price__tax\">";
  933.                 // line 556
  934.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  935.                 echo "</span>
  936.                                 </div>
  937.                             ";
  938.             } else {
  939.                 // line 559
  940.                 echo "                                <div class=\"ec-price\">
  941.                                     <span class=\"ec-price__price price02-default\">";
  942.                 // line 560
  943.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'560$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse560)), "html"nulltrue);
  944.                 echo " ~ ";
  945.                 echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'560$this->source); })()), "getPrice02IncTaxMax", [], "any"falsefalsefalse560)), "html"nulltrue);
  946.                 echo "</span>
  947.                                     <span class=\"ec-price__tax\">";
  948.                 // line 561
  949.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  950.                 echo "</span>
  951.                                 </div>
  952.                             ";
  953.             }
  954.             // line 564
  955.             echo "                        ";
  956.         } else {
  957.             // line 565
  958.             echo "                            <div class=\"ec-price\">
  959.                                 <span class=\"ec-price__price\">";
  960.             // line 566
  961.             echo twig_escape_filter($this->env$this->extensions['Eccube\Twig\Extension\EccubeExtension']->getPriceFilter(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'566$this->source); })()), "getPrice02IncTaxMin", [], "any"falsefalsefalse566)), "html"nulltrue);
  962.             echo "</span>
  963.                                 <span class=\"ec-price__tax\">";
  964.             // line 567
  965.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("税込"), "html"nulltrue);
  966.             echo "</span>
  967.                             </div>
  968.                         ";
  969.         }
  970.         // line 570
  971.         echo "                    </div>
  972.                     ";
  973.         // line 572
  974.         echo "                    ";
  975.         if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'572$this->source); })()), "code_min", [], "any"falsefalsefalse572))) {
  976.             // line 573
  977.             echo "                        <div class=\"ec-productRole__code\">
  978.                             ";
  979.             // line 574
  980.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("商品コード"), "html"nulltrue);
  981.             echo ": <span
  982.                                     class=\"product-code-default\">";
  983.             // line 575
  984.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'575$this->source); })()), "code_min", [], "any"falsefalsefalse575), "html"nulltrue);
  985.             if ((twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'575$this->source); })()), "code_min", [], "any"falsefalsefalse575) != twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'575$this->source); })()), "code_max", [], "any"falsefalsefalse575))) {
  986.                 echo " ~ ";
  987.                 echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'575$this->source); })()), "code_max", [], "any"falsefalsefalse575), "html"nulltrue);
  988.             }
  989.             echo "</span>
  990.                         </div>
  991.                     ";
  992.         }
  993.         // line 578
  994.         echo "                    ";
  995.         // line 579
  996.         echo "                    ";
  997.         if ( !twig_test_empty(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'579$this->source); })()), "ProductCategories", [], "any"falsefalsefalse579))) {
  998.             // line 580
  999.             echo "                        <div class=\"ec-productRole__category\">
  1000.                             <div>";
  1001.             // line 581
  1002.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("関連カテゴリ"), "html"nulltrue);
  1003.             echo "</div>
  1004.                             ";
  1005.             // line 582
  1006.             $context['_parent'] = $context;
  1007.             $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'582$this->source); })()), "ProductCategories", [], "any"falsefalsefalse582));
  1008.             foreach ($context['_seq'] as $context["_key"] => $context["ProductCategory"]) {
  1009.                 // line 583
  1010.                 echo "                                <ul>
  1011.                                     <li>
  1012.                                         ";
  1013.                 // line 585
  1014.                 $context['_parent'] = $context;
  1015.                 $context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source$context["ProductCategory"], "Category", [], "any"falsefalsefalse585), "path", [], "any"falsefalsefalse585));
  1016.                 $context['loop'] = [
  1017.                   'parent' => $context['_parent'],
  1018.                   'index0' => 0,
  1019.                   'index'  => 1,
  1020.                   'first'  => true,
  1021.                 ];
  1022.                 if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  1023.                     $length count($context['_seq']);
  1024.                     $context['loop']['revindex0'] = $length 1;
  1025.                     $context['loop']['revindex'] = $length;
  1026.                     $context['loop']['length'] = $length;
  1027.                     $context['loop']['last'] = === $length;
  1028.                 }
  1029.                 foreach ($context['_seq'] as $context["_key"] => $context["Category"]) {
  1030.                     // line 586
  1031.                     echo "                                            <a href=\"";
  1032.                     echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_list");
  1033.                     echo "?category_id=";
  1034.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Category"], "id", [], "any"falsefalsefalse586), "html"nulltrue);
  1035.                     echo "\">";
  1036.                     echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source$context["Category"], "name", [], "any"falsefalsefalse586), "html"nulltrue);
  1037.                     echo "</a>";
  1038.                     if ((twig_get_attribute($this->env$this->source$context["loop"], "last", [], "any"falsefalsefalse586) == false)) {
  1039.                         // line 587
  1040.                         echo "                                            <span>></span>";
  1041.                     }
  1042.                     ++$context['loop']['index0'];
  1043.                     ++$context['loop']['index'];
  1044.                     $context['loop']['first'] = false;
  1045.                     if (isset($context['loop']['length'])) {
  1046.                         --$context['loop']['revindex0'];
  1047.                         --$context['loop']['revindex'];
  1048.                         $context['loop']['last'] = === $context['loop']['revindex0'];
  1049.                     }
  1050.                 }
  1051.                 $_parent $context['_parent'];
  1052.                 unset($context['_seq'], $context['_iterated'], $context['_key'], $context['Category'], $context['_parent'], $context['loop']);
  1053.                 $context array_intersect_key($context$_parent) + $_parent;
  1054.                 // line 589
  1055.                 echo "                                    </li>
  1056.                                 </ul>
  1057.                             ";
  1058.             }
  1059.             $_parent $context['_parent'];
  1060.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['ProductCategory'], $context['_parent'], $context['loop']);
  1061.             $context array_intersect_key($context$_parent) + $_parent;
  1062.             // line 592
  1063.             echo "                        </div>
  1064.                     ";
  1065.         }
  1066.         // line 594
  1067.         echo "                    <form action=\"";
  1068.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_add_cart", ["id" => twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'594$this->source); })()), "id", [], "any"falsefalsefalse594)]), "html"nulltrue);
  1069.         echo "\" method=\"post\" id=\"form1\" name=\"form1\"
  1070.                           enctype=\"multipart/form-data\">
  1071.                         ";
  1072.         // line 596
  1073.         if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'596$this->source); })()), "stock_find", [], "any"falsefalsefalse596)) {
  1074.             // line 597
  1075.             echo "                            <div class=\"ec-productRole__actions\">
  1076.                                 ";
  1077.             // line 598
  1078.             if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id1", [], "any"truetruefalse598)) {
  1079.                 // line 599
  1080.                 echo "                                    <div class=\"ec-select\">
  1081.                                         ";
  1082.                 // line 600
  1083.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'600$this->source); })()), "classcategory_id1", [], "any"falsefalsefalse600), 'row');
  1084.                 echo "
  1085.                                         ";
  1086.                 // line 601
  1087.                 echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'601$this->source); })()), "classcategory_id1", [], "any"falsefalsefalse601), 'errors');
  1088.                 echo "
  1089.                                     </div>
  1090.                                     ";
  1091.                 // line 603
  1092.                 if (twig_get_attribute($this->env$this->source, ($context["form"] ?? null), "classcategory_id2", [], "any"truetruefalse603)) {
  1093.                     // line 604
  1094.                     echo "                                        <div class=\"ec-select\">
  1095.                                             ";
  1096.                     // line 605
  1097.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'605$this->source); })()), "classcategory_id2", [], "any"falsefalsefalse605), 'row');
  1098.                     echo "
  1099.                                             ";
  1100.                     // line 606
  1101.                     echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(twig_get_attribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'606$this->source); })()), "classcategory_id2", [], "any"falsefalsefalse606), 'errors');
  1102.                     echo "
  1103.                                         </div>
  1104.                                     ";
  1105.                 }
  1106.                 // line 609
  1107.                 echo "                                ";
  1108.             }
  1109.             // line 610
  1110.             echo "
  1111.                             </div>
  1112. ";
  1113.             // line 617
  1114.             echo "
  1115.                             ";
  1116.             // line 618
  1117.             echo $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock((isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'618$this->source); })()), 'rest');
  1118.             echo "
  1119.                             <div class=\"ec-productRole__btn\">
  1120.                                 <button id=\"add-cart-button\" type=\"submit\" class=\"ec-blockBtn--action add-cart\"
  1121.                                         disabled>
  1122.                                     ";
  1123.             // line 623
  1124.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに入れる"), "html"nulltrue);
  1125.             echo "
  1126.                                 </button>
  1127.                             </div>
  1128.                         ";
  1129.         } else {
  1130.             // line 627
  1131.             echo "                            <div class=\"ec-productRole__btn\">
  1132.                                 <button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  1133.                                     ";
  1134.             // line 629
  1135.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("ただいま品切れ中です。"), "html"nulltrue);
  1136.             echo "
  1137.                                 </button>
  1138.                             </div>
  1139.                         ";
  1140.         }
  1141.         // line 633
  1142.         echo "                        ";
  1143.         // line 634
  1144.         echo "                    </form>
  1145.                     <div class=\"ec-modal\">
  1146.                         <div class=\"ec-modal-overlay\">
  1147.                             <div class=\"ec-modal-wrap\">
  1148.                                 <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img
  1149.                                                 src=\"";
  1150.         // line 639
  1151.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/icon/cross-dark.svg"), "html"nulltrue);
  1152.         echo "\" alt=\"\"/></span></span>
  1153.                                 <div id=\"ec-modal-header\" class=\"text-center\">";
  1154.         // line 640
  1155.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートに追加しました。"), "html"nulltrue);
  1156.         echo "</div>
  1157.                                 <div class=\"ec-modal-box\">
  1158.                                     <div class=\"ec-role\">
  1159.                                         <span class=\"ec-inlineBtn--cancel\">";
  1160.         // line 643
  1161.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お買い物を続ける"), "html"nulltrue);
  1162.         echo "</span>
  1163.                                         <a href=\"";
  1164.         // line 644
  1165.         echo $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("cart");
  1166.         echo "\"
  1167.                                            class=\"ec-inlineBtn--action\">";
  1168.         // line 645
  1169.         echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("カートへ進む"), "html"nulltrue);
  1170.         echo "</a>
  1171.                                     </div>
  1172.                                 </div>
  1173.                             </div>
  1174.                         </div>
  1175.                     </div>
  1176.                     ";
  1177.         // line 651
  1178.         if (twig_get_attribute($this->env$this->source, (isset($context["BaseInfo"]) || array_key_exists("BaseInfo"$context) ? $context["BaseInfo"] : (function () { throw new RuntimeError('Variable "BaseInfo" does not exist.'651$this->source); })()), "option_favorite_product", [], "any"falsefalsefalse651)) {
  1179.             // line 652
  1180.             echo "                        <form action=\"";
  1181.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getUrl("product_add_favorite", ["id" => twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'652$this->source); })()), "id", [], "any"falsefalsefalse652)]), "html"nulltrue);
  1182.             echo "\" method=\"post\">
  1183.                             <div class=\"ec-productRole__btn\">
  1184.                                 ";
  1185.             // line 654
  1186.             if (((isset($context["is_favorite"]) || array_key_exists("is_favorite"$context) ? $context["is_favorite"] : (function () { throw new RuntimeError('Variable "is_favorite" does not exist.'654$this->source); })()) == false)) {
  1187.                 // line 655
  1188.                 echo "                                    <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--action\">
  1189.                                         ";
  1190.                 // line 656
  1191.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加"), "html"nulltrue);
  1192.                 echo "
  1193.                                     </button>
  1194.                                 ";
  1195.             } else {
  1196.                 // line 659
  1197.                 echo "                                    <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--action\"
  1198.                                             disabled=\"disabled\">";
  1199.                 // line 660
  1200.                 echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("お気に入りに追加済です。"), "html"nulltrue);
  1201.                 echo "
  1202.                                     </button>
  1203.                                 ";
  1204.             }
  1205.             // line 663
  1206.             echo "                            </div>
  1207.                         </form>
  1208.                     ";
  1209.         }
  1210.         // line 666
  1211.         echo "                    <div class=\"ec-productRole__description\">";
  1212.         echo twig_nl2br(twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'666$this->source); })()), "description_detail", [], "any"falsefalsefalse666));
  1213.         echo "
  1214.                     </div>
  1215.                 </div>
  1216.             </div>
  1217.         </div>
  1218.         ";
  1219.         // line 671
  1220.         if (twig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'671$this->source); })()), "freearea", [], "any"falsefalsefalse671)) {
  1221.             // line 672
  1222.             echo "            <div class=\"ec-productRole__description\">
  1223.                 ";
  1224.             // line 673
  1225.             echo twig_include($this->env$contexttwig_template_from_string($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'673$this->source); })()), "freearea", [], "any"falsefalsefalse673)));
  1226.             echo "
  1227.             </div>
  1228.         ";
  1229.         }
  1230.         // line 676
  1231.         echo "    </div>
  1232.     ";
  1233.         // line 679
  1234.         if (((isset($context["hasCategory"]) || array_key_exists("hasCategory"$context) ? $context["hasCategory"] : (function () { throw new RuntimeError('Variable "hasCategory" does not exist.'679$this->source); })()) == true)) {
  1235.             // line 680
  1236.             echo "        <script>
  1237.                 const sheetSize = \"";
  1238.             // line 681
  1239.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'681$this->source); })()), "sheet_size", [], "any"falsefalsefalse681), "html"nulltrue);
  1240.             echo "\";
  1241.             ";
  1242.             // line 683
  1243.             echo "            // https://mirai-kanban.com/ecshop/html/user_data/assets/js/test2.html
  1244.             const product_color_type1 = '";
  1245.             // line 684
  1246.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'684$this->source); })()), "product_color_type1", [], "any"falsefalsefalse684), "html"nulltrue);
  1247.             echo "'
  1248.             const product_color_type2 = '";
  1249.             // line 685
  1250.             echo twig_escape_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["Product"]) || array_key_exists("Product"$context) ? $context["Product"] : (function () { throw new RuntimeError('Variable "Product" does not exist.'685$this->source); })()), "product_color_type2", [], "any"falsefalsefalse685), "html"nulltrue);
  1251.             echo "'
  1252.             if (\$('select#classcategory_id2').length > 0) {
  1253.                 console.log('cat 2', \$('select#classcategory_id2'))
  1254.                 \$('select#classcategory_id1 option:nth-child(2)').prop('selected', true);
  1255.             }
  1256.             // \$('select#classcategory_id1').trigger('change');
  1257.             // subChange();
  1258.             // function subChange() {
  1259.             //     const myData = \$('select#classcategory_id1');
  1260.             //     const \$form = \$('form#form1');
  1261.             //     // var \$form = myData.parents('form');
  1262.             //     var product_id = \$form.find('input[name=product_id]').val();
  1263.             //     var \$sele1 = myData;
  1264.             //     var \$sele2 = \$form.find('select[name=classcategory_id2]');
  1265.             //
  1266.             //     // 規格1のみの場合
  1267.             //     if (!\$sele2.length) {
  1268.             //         eccube.checkStock(\$form, product_id, \$sele1.val(), null);
  1269.             //         // 規格2ありの場合
  1270.             //     } else {
  1271.             //         eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2);
  1272.             //     }
  1273.             // }
  1274.         </script>
  1275.         <script src=\"";
  1276.             // line 715
  1277.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/js/mirai.js"), "html"nulltrue);
  1278.             echo "\"></script>
  1279.         <script type=\"module\">
  1280.             // import { createApp, defineAsyncComponent } from 'vue';
  1281.             // import { createVuetify } from 'vuetify';
  1282.             // import {loadModule} from 'vue3-sfc-loader';
  1283.             // const { loadModule } = window['vue3-sfc-loader'];
  1284. // console.log('load modules');
  1285.             // import {createVuetify} from 'vuetify'
  1286.             // import { md2 } from 'vuetify/blueprints'
  1287.             const vue3_sfc_loader_options = {
  1288.                 moduleCache: { vue: Vue, vuetify: Vuetify.vuetify },
  1289.                 getFile(url) {
  1290.                     url = /.*?.js|.mjs|.css|.less|.vue\$/.test(url)
  1291.                         ? url
  1292.                         : `\${url}.vue`;
  1293.                     const type = /.*?.js|.mjs\$/.test(url)
  1294.                         ? \".mjs\"
  1295.                         : /.*?.vue\$/.test(url)
  1296.                             ? \".vue\"
  1297.                             : /.*?.css\$/.test(url)
  1298.                                 ? \".css\"
  1299.                                 : \".vue\";
  1300.                     const getContentData = (asBinary) =>
  1301.                         fetch(url).then((res) =>
  1302.                             !res.ok
  1303.                                 ? Promise.reject(url)
  1304.                                 : asBinary
  1305.                                     ? res.arrayBuffer()
  1306.                                     : res.text()
  1307.                         );
  1308.                     return { getContentData: getContentData, type: type };
  1309.                 },
  1310.                 addStyle(textContent) {
  1311.                     let styleElement = document.createElement(\"style\");
  1312.                     document.head.insertBefore(
  1313.                         Object.assign(styleElement, { textContent }),
  1314.                         document.head.getElementsByTagName(\"style\")[0] || null
  1315.                     );
  1316.                 },
  1317.                 handleModule(type, getContentData, path, options) {
  1318.                     switch (type) {
  1319.                         case \".css\":
  1320.                             return options.addStyle(getContentData(false));
  1321.                         case \".less\":
  1322.                             console.error(\".......\");
  1323.                     }
  1324.                 },
  1325.                 log(type, ...args) {
  1326.                     console.log(type, ...args);
  1327.                 },
  1328.             };
  1329.             const { loadModule } = window[\"vue3-sfc-loader\"];
  1330.             const app = Vue.createApp(
  1331.                 Vue.defineAsyncComponent(
  1332.                     () => loadModule(\"";
  1333.             // line 772
  1334.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/vue/main.vue"), "html"nulltrue);
  1335.             echo "\", vue3_sfc_loader_options)
  1336.                 ),
  1337.             )
  1338. // ";
  1339.             // line 775
  1340.             echo twig_escape_filter($this->env$this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("assets/vue/main.vue"), "html"nulltrue);
  1341.             echo "
  1342.             console.log('start vue');
  1343.             // const vuetify = createVuetify();
  1344.             // const app = createApp({
  1345.             //     components: {
  1346.             //         'my-component': defineAsyncComponent(() =>
  1347.             //             loadModule(
  1348.             //                 \"assets/vue/main.vue\",
  1349.             //                 vue3_sfc_loader_options
  1350.             //             )
  1351.             //         ),
  1352.             //     },
  1353.             //     template: `<my-component />`,
  1354.             // });
  1355.             const { createVuetify } = Vuetify;
  1356.             const vuetify = createVuetify({
  1357.                 theme: {
  1358.                     defaultTheme: 'light'
  1359.                 },
  1360.                 // blueprint: md2,
  1361.             });
  1362.             app.use(vuetify);
  1363.             app.mount('#app');
  1364.         </script>
  1365.         <script type=\"module\">
  1366.             ";
  1367.             // line 802
  1368.             echo "            ";
  1369.             // line 803
  1370.             echo "            ";
  1371.             // line 804
  1372.             echo "
  1373.             ";
  1374.             // line 806
  1375.             echo "            ";
  1376.             // line 807
  1377.             echo "            ";
  1378.             // line 808
  1379.             echo "            ";
  1380.             // line 809
  1381.             echo "
  1382.             // var vue = new Vue({
  1383.             //     el: '#app',
  1384.             //     components: {
  1385.             //         'vc-main-1': httpVueLoader('assets/vue/main.vue')
  1386.             //     }
  1387.             // });
  1388.         </script>
  1389.     ";
  1390.         } else {
  1391.             // line 818
  1392.             echo "        <script>
  1393.             \$('#add-cart-button').prop('disabled', false)
  1394.         </script>
  1395.     ";
  1396.         }
  1397.         // line 822
  1398.         echo "
  1399.     <script>
  1400.         \$('label[for=quantity]').text('数量')
  1401.     </script>
  1402. ";
  1403.         
  1404.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  1405.         
  1406.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  1407.     }
  1408.     public function getTemplateName()
  1409.     {
  1410.         return "Product/detail.twig";
  1411.     }
  1412.     public function isTraitable()
  1413.     {
  1414.         return false;
  1415.     }
  1416.     public function getDebugInfo()
  1417.     {
  1418.         return array (  1479 => 822,  1473 => 818,  1462 => 809,  1460 => 808,  1458 => 807,  1456 => 806,  1453 => 804,  1451 => 803,  1449 => 802,  1420 => 775,  1414 => 772,  1354 => 715,  1321 => 685,  1317 => 684,  1314 => 683,  1310 => 681,  1307 => 680,  1305 => 679,  1300 => 676,  1294 => 673,  1291 => 672,  1289 => 671,  1280 => 666,  1275 => 663,  1269 => 660,  1266 => 659,  1260 => 656,  1257 => 655,  1255 => 654,  1249 => 652,  1247 => 651,  1238 => 645,  1234 => 644,  1230 => 643,  1224 => 640,  1220 => 639,  1213 => 634,  1211 => 633,  1204 => 629,  1200 => 627,  1193 => 623,  1185 => 618,  1182 => 617,  1176 => 610,  1173 => 609,  1167 => 606,  1163 => 605,  1160 => 604,  1158 => 603,  1153 => 601,  1149 => 600,  1146 => 599,  1144 => 598,  1141 => 597,  1139 => 596,  1133 => 594,  1129 => 592,  1121 => 589,  1106 => 587,  1097 => 586,  1080 => 585,  1076 => 583,  1072 => 582,  1068 => 581,  1065 => 580,  1062 => 579,  1060 => 578,  1050 => 575,  1046 => 574,  1043 => 573,  1040 => 572,  1037 => 570,  1031 => 567,  1027 => 566,  1024 => 565,  1021 => 564,  1015 => 561,  1009 => 560,  1006 => 559,  1000 => 556,  996 => 555,  993 => 554,  991 => 553,  989 => 552,  986 => 551,  984 => 550,  981 => 549,  976 => 547,  969 => 546,  966 => 545,  962 => 543,  957 => 541,  951 => 540,  946 => 539,  944 => 538,  940 => 537,  936 => 536,  931 => 535,  929 => 534,  926 => 533,  923 => 532,  920 => 530,  909 => 528,  905 => 527,  902 => 526,  899 => 524,  897 => 523,  895 => 522,  893 => 521,  891 => 520,  889 => 519,  887 => 518,  885 => 517,  883 => 516,  881 => 515,  879 => 514,  877 => 513,  875 => 512,  873 => 511,  871 => 510,  869 => 509,  867 => 508,  865 => 507,  863 => 506,  861 => 505,  859 => 504,  857 => 503,  855 => 502,  853 => 501,  847 => 497,  844 => 496,  839 => 492,  823 => 478,  819 => 476,  817 => 475,  813 => 473,  811 => 472,  808 => 470,  806 => 469,  802 => 467,  798 => 465,  780 => 461,  775 => 460,  758 => 459,  754 => 457,  745 => 454,  740 => 453,  722 => 450,  718 => 449,  713 => 448,  695 => 447,  692 => 446,  690 => 445,  683 => 440,  681 => 439,  679 => 438,  677 => 437,  675 => 436,  673 => 435,  643 => 407,  641 => 406,  634 => 401,  628 => 400,  625 => 399,  622 => 398,  619 => 397,  616 => 396,  613 => 395,  610 => 394,  607 => 393,  604 => 392,  599 => 391,  596 => 390,  593 => 389,  583 => 388,  568 => 381,  559 => 365,  555 => 364,  551 => 363,  547 => 362,  543 => 360,  537 => 358,  535 => 357,  530 => 356,  527 => 355,  517 => 353,  503 => 351,  495 => 350,  477 => 349,  472 => 347,  460 => 338,  456 => 337,  438 => 322,  428 => 315,  392 => 282,  387 => 279,  378 => 273,  374 => 271,  372 => 270,  369 => 269,  360 => 263,  356 => 261,  354 => 260,  267 => 175,  259 => 173,  257 => 172,  252 => 170,  249 => 169,  247 => 168,  233 => 157,  230 => 156,  220 => 155,  207 => 150,  73 => 16,  63 => 15,  52 => 11,  50 => 13,  37 => 11,);
  1419.     }
  1420.     public function getSourceContext()
  1421.     {
  1422.         return new Source("{#
  1423. This file is part of EC-CUBE
  1424. Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  1425. http://www.ec-cube.co.jp/
  1426. For the full copyright and license information, please view the LICENSE
  1427. file that was distributed with this source code.
  1428. #}
  1429. {% extends 'default_frame.twig' %}
  1430. {% set body_class = 'product_page' %}
  1431. {% block stylesheet %}
  1432.     <style>
  1433.         .slick-slider {
  1434.             margin-bottom: 30px;
  1435.         }
  1436.         .slick-dots {
  1437.             position: absolute;
  1438.             bottom: -45px;
  1439.             display: block;
  1440.             width: 100%;
  1441.             padding: 0;
  1442.             list-style: none;
  1443.             text-align: center;
  1444.         }
  1445.         .slick-dots li {
  1446.             position: relative;
  1447.             display: inline-block;
  1448.             width: 20px;
  1449.             height: 20px;
  1450.             margin: 0 5px;
  1451.             padding: 0;
  1452.             cursor: pointer;
  1453.         }
  1454.         .slick-dots li button {
  1455.             font-size: 0;
  1456.             line-height: 0;
  1457.             display: block;
  1458.             width: 20px;
  1459.             height: 20px;
  1460.             padding: 5px;
  1461.             cursor: pointer;
  1462.             color: transparent;
  1463.             border: 0;
  1464.             outline: none;
  1465.             background: transparent;
  1466.         }
  1467.         .slick-dots li button:hover,
  1468.         .slick-dots li button:focus {
  1469.             outline: none;
  1470.         }
  1471.         .slick-dots li button:hover:before,
  1472.         .slick-dots li button:focus:before {
  1473.             opacity: 1;
  1474.         }
  1475.         .slick-dots li button:before {
  1476.             content: \" \";
  1477.             line-height: 20px;
  1478.             position: absolute;
  1479.             top: 0;
  1480.             left: 0;
  1481.             width: 12px;
  1482.             height: 12px;
  1483.             text-align: center;
  1484.             opacity: .25;
  1485.             background-color: black;
  1486.             border-radius: 50%;
  1487.         }
  1488.         .slick-dots li.slick-active button:before {
  1489.             opacity: .75;
  1490.             background-color: black;
  1491.         }
  1492.         .slick-dots li button.thumbnail img {
  1493.             width: 0;
  1494.             height: 0;
  1495.         }
  1496.         #form1 > .mb-3 {
  1497.             visibility: hidden;
  1498.             height:0;
  1499.         }
  1500.         form#form1 > div.mb-3:nth-child(4) {
  1501.             visibility: visible;
  1502.             height: auto;
  1503.         }
  1504.         /*#form1 > div:nth-child(14) {*/
  1505.         /*    visibility: hidden;*/
  1506.         /*}*/
  1507.         #downloadSpinners {
  1508.             display: block;
  1509.             position: absolute;
  1510.             left: 256px;
  1511.             top: 256px;
  1512.         }
  1513.         #uchiwaCanvas {
  1514.             background-color: #cccccc;
  1515.             width: 90vW;
  1516.             max-width: 512px;
  1517.             margin-left: -20px;
  1518.         }
  1519.         .text-announce {
  1520.             color: #ff0000;
  1521.             font-weight: bold;
  1522.         }
  1523.         button#add-cart-button {
  1524.             /*background-color:#ffffff;*/
  1525.             color:#ffffff;
  1526.         }
  1527.         button#favorite {
  1528.             background-color:#ffff00;
  1529.             color:#666666;
  1530.             border: 1px solid #aaaaaa;
  1531.         }
  1532.         button#favorite:hover {
  1533.             background-color:#e6e600;
  1534.             /*color:#000000;*/
  1535.         }
  1536.         @media (min-width: 768px) and (max-width: 1070px) {
  1537.             #uchiwaCanvas {
  1538.                 width: 45vW;
  1539.             }
  1540.         }
  1541.     </style>
  1542. {#    <link href=\"https://cdn.jsdelivr.net/npm/@mdi/font@5.x/css/materialdesignicons.min.css\" rel=\"stylesheet\">#}
  1543. {#    <link href=\"https://cdn.jsdelivr.net/npm/vuetify@3.0/dist/vuetify.min.css\" rel=\"stylesheet\">#}
  1544.     <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/vuetify@3.7.16/dist/vuetify.min.css\" />
  1545.     <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css\" />
  1546.     <link rel=\"stylesheet\" href=\"https://fonts.bunny.net/css?family=roboto:400,500,700\" />
  1547. {% endblock %}
  1548. {% block javascript %}
  1549. <script>
  1550.     eccube.classCategories = {{ class_categories_as_json(Product)|raw }};
  1551.         // 規格2に選択肢を割り当てる。
  1552.         function fnSetClassCategories(form, classcat_id2_selected) {
  1553.             var \$form = \$(form);
  1554.             var product_id = \$form.find('input[name=product_id]').val();
  1555.             var \$sele1 = \$form.find('select[name=classcategory_id1]');
  1556.             var \$sele2 = \$form.find('select[name=classcategory_id2]');
  1557.             eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2, classcat_id2_selected);
  1558.         }
  1559.         {% if form.classcategory_id2 is defined %}
  1560.         fnSetClassCategories(
  1561.             \$('#form1'), {{ form.classcategory_id2.vars.value|json_encode|raw }}
  1562.         );
  1563.         {% elseif form.classcategory_id1 is defined %}
  1564.         eccube.checkStock(\$('#form1'), {{ Product.id }}, {{ form.classcategory_id1.vars.value|json_encode|raw }}, null);
  1565.         {% endif %}
  1566.     </script>
  1567.     <script>
  1568.         \$(function() {
  1569.             // bfcache無効化
  1570.             \$(window).bind('pageshow', function(event) {
  1571.                 if (event.originalEvent.persisted) {
  1572.                     location.reload(true);
  1573.                 }
  1574.             });
  1575.             // Core Web Vital の Cumulative Layout Shift(CLS)対策のため
  1576.             // img タグに width, height が付与されている.
  1577.             // 630px 未満の画面サイズでは縦横比が壊れるための対策
  1578.             // see https://github.com/EC-CUBE/ec-cube/pull/5023
  1579.             // \$('.ec-grid2__cell').hide();
  1580.             var removeSize = function () {
  1581.                 \$('.slide-item').height('');
  1582.                 \$('.slide-item img')
  1583.                     .removeAttr('width')
  1584.                     .removeAttr('height')
  1585.                     .removeAttr('style');
  1586.             };
  1587.             var slickInitial = function(slick) {
  1588.                 \$('.ec-grid2__cell').fadeIn(1500);
  1589.                 var baseHeight = \$(slick.target).height();
  1590.                 var baseWidth = \$(slick.target).width();
  1591.                 var rate = baseWidth / baseHeight;
  1592.                 \$('.slide-item').height(baseHeight * rate); // 余白を削除する
  1593.                 // transform を使用することでCLSの影響を受けないようにする
  1594.                 \$('.slide-item img')
  1595.                     .css(
  1596.                         {
  1597.                             'transform-origin': 'top left',
  1598.                             'transform': 'scaleY(' + rate + ')',
  1599.                             'transition': 'transform .1s'
  1600.                         }
  1601.                     );
  1602.                 // 正しいサイズに近くなったら属性を解除する
  1603.                 setTimeout(removeSize, 500);
  1604.             };
  1605.             \$('.item_visual').on('init', slickInitial);
  1606.             // リサイズ時は CLS の影響を受けないため属性を解除する
  1607.             \$(window).resize(removeSize);
  1608.             \$('.item_visual').slick({
  1609.                 dots: false,
  1610.                 arrows: false,
  1611.                 responsive: [{
  1612.                     breakpoint: 768,
  1613.                     settings: {
  1614.                         dots: true
  1615.                     }
  1616.                 }]
  1617.             });
  1618.             \$('.slideThumb').on('click', function() {
  1619.                 var index = \$(this).attr('data-index');
  1620.                 \$('.item_visual').slick('slickGoTo', index, false);
  1621.             })
  1622.         });
  1623.     </script>
  1624.     <script>
  1625.         \$(function() {
  1626.             \$('.add-cart').on('click', function(event) {
  1627.                     // console.log('set canvas image');
  1628. //
  1629. //     const c = document.getElementById('uchiwaCanvas');
  1630. //
  1631. //     c.toBlob(function(blob) {
  1632. //     const imgFile = new File([blob], 'trimedfileupload.png', {type: \"image/png\"});
  1633. //     const dt = new DataTransfer();
  1634. //     dt.items.add(imgFile);
  1635. //     const fileInput = document.getElementById(\"file\");
  1636. //     fileInput.files = dt.files;
  1637. // });
  1638.     // console.log('data is : ', c);
  1639.     // const imgUrl = c.toDataURL();
  1640.     // console.log('image is : ', imgUrl);
  1641.     //
  1642.     // let fd = new FormData(\$('#form1').get(0))
  1643.     // fd.delete(\"file\")
  1644.     // fd.append(\"file\", imgUrl )
  1645.     // document.getElementById('file').value = imgUrl;
  1646.                 {% if form.classcategory_id1 is defined %}
  1647.                 // 規格1フォームの必須チェック
  1648.                 if (\$('#classcategory_id1').val() == '__unselected' || \$('#classcategory_id1').val() == '') {
  1649.                     \$('#classcategory_id1')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1650.                     return true;
  1651.                 } else {
  1652.                     \$('#classcategory_id1')[0].setCustomValidity('');
  1653.                 }
  1654.                 {% endif %}
  1655.                 {% if form.classcategory_id2 is defined %}
  1656.                 // 規格2フォームの必須チェック
  1657.                 if (\$('#classcategory_id2').val() == '__unselected' || \$('#classcategory_id2').val() == '') {
  1658.                     \$('#classcategory_id2')[0].setCustomValidity('{{ '項目が選択されていません'|trans }}');
  1659.                     return true;
  1660.                 } else {
  1661.                     \$('#classcategory_id2')[0].setCustomValidity('');
  1662.                 }
  1663.                 {% endif %}
  1664.                 // 個数フォームのチェック
  1665.                 if (\$('#quantity').val() < 1) {
  1666.                     \$('#quantity')[0].setCustomValidity('{{ '1以上で入力してください。'|trans }}');
  1667.                     return true;
  1668.                 } else {
  1669.                     \$('#quantity')[0].setCustomValidity('');
  1670.                 }
  1671.                 event.preventDefault();
  1672.                 const \$form = \$('#form1');
  1673.     const formData = new FormData(\$form.get(0));
  1674.                 \$.ajax({
  1675.                     url: \$form.attr('action'),
  1676.                     type: \$form.attr('method'),
  1677.                     // data: \$form.serialize(),
  1678.                     data: formData,
  1679.                     processData: false,
  1680.                     // contentType: 'multipart/form-data',
  1681.                     contentType: false,
  1682.                     dataType: 'json',
  1683.                     // async: false,
  1684.                     beforeSend: function(xhr, settings) {
  1685.                         // Buttonを無効にする
  1686.                         \$('.add-cart').prop('disabled', true);
  1687.                     }
  1688.                 }).done(function(data) {
  1689.                     // レスポンス内のメッセージをalertで表示
  1690.                     \$.each(data.messages, function() {
  1691.                         \$('#ec-modal-header').text(this);
  1692.                     });
  1693.                     \$('.ec-modal').show()
  1694.                     // カートブロックを更新する
  1695.                     \$.ajax({
  1696.                         url: \"{{ url('block_cart') }}\",
  1697.                         type: 'GET',
  1698.                         dataType: 'html'
  1699.                     }).done(function(html) {
  1700.                         \$('.ec-headerRole__cart').html(html);
  1701.                     });
  1702.                 }).fail(function(data) {
  1703.                     alert('{{ 'カートへの追加に失敗しました。'|trans }}');
  1704.                 }).always(function(data) {
  1705.                     // Buttonを有効にする
  1706.                     \$('.add-cart').prop('disabled', false);
  1707.                 });
  1708.             });
  1709.         });
  1710.         \$('.ec-modal-wrap').on('click', function(e) {
  1711.             // モーダル内の処理は外側にバブリングさせない
  1712.             e.stopPropagation();
  1713.         });
  1714.         \$('.ec-modal-overlay, .ec-modal, .ec-modal-close, .ec-inlineBtn--cancel').on('click', function() {
  1715.             \$('.ec-modal').hide()
  1716.         });
  1717.         const sheet_size = '{{ Product.sheet_size }}';
  1718.         const decoration_type = '{{ Product.product_decoration_type }}'
  1719.     </script>
  1720.     <script type=\"application/ld+json\">
  1721.     {
  1722.         \"@context\": \"https://schema.org/\",
  1723.         \"@type\": \"Product\",
  1724.         \"name\": \"{{ Product.name }}\",
  1725.         \"image\": [
  1726.             {% for img in Product.ProductImage %}
  1727.                 \"{{ app.request.schemeAndHttpHost }}{{ asset(img, 'save_image') }}\"{% if not loop.last %},{% endif %}
  1728.             {% else %}
  1729.                 \"{{ app.request.schemeAndHttpHost }}{{ asset(''|no_image_product, 'save_image') }}\"
  1730.             {% endfor %}
  1731.         ],
  1732.         \"description\": \"{{ Product.description_list | default(Product.description_detail) | replace({'\\n': '', '\\r': ''}) | slice(0,300) }}\",
  1733.         {% if Product.code_min %}
  1734.         \"sku\": \"{{ Product.code_min }}\",
  1735.         {% endif %}
  1736.         \"offers\": {
  1737.             \"@type\": \"Offer\",
  1738.             \"url\": \"{{ url('product_detail', {'id': Product.id}) }}\",
  1739.             \"priceCurrency\": \"{{ eccube_config.currency }}\",
  1740.             \"price\": {{ Product.getPrice02IncTaxMin ? Product.getPrice02IncTaxMin : 0}},
  1741.             \"availability\": \"{{ Product.stock_find ? \"InStock\" : \"OutOfStock\" }}\"
  1742.         }
  1743.     }
  1744.     </script>
  1745.     <script async src=\"https://ga.jspm.io/npm:es-module-shims@1.6.2/dist/es-module-shims.js\"></script>
  1746. {#<script type=\"importmap\">#}
  1747. {#  {#}
  1748. {#    \"imports\": {#}
  1749. {#      \"vue\": \"https://cdn.jsdelivr.net/npm/vue@3.5.13/dist/vue.esm-browser.js\",#}
  1750. {#\t  \"vuetify\": \"https://cdn.jsdelivr.net/npm/vuetify@3.7.12/dist/vuetify.esm.js\"#}
  1751. {#    }#}
  1752. {#  }#}
  1753. {#</script>#}
  1754. {#<script src=\"https://unpkg.com/http-vue-loader\"></script>#}
  1755. {#<script src=\"https://cdn.jsdelivr.net/npm/vue3-sfc-loader@0.9.5/dist/vue3-sfc-loader.min.js\"></script>#}
  1756.     <script src=\"https://cdn.jsdelivr.net/npm/vue@3.5.13/dist/vue.global.min.js\"></script>
  1757.     <script src=\"https://cdn.jsdelivr.net/npm/vue3-sfc-loader/dist/vue3-sfc-loader.js\"></script>
  1758. <script src=\"https://cdn.jsdelivr.net/npm/vuetify@3.7.16/dist/vuetify.min.js\"></script>
  1759. {% endblock %}
  1760. {% block main %}
  1761.     {% set hasCategory = false %}
  1762.     {% set hasFile = false %}
  1763.     {% for ProductCategory in Product.ProductCategories %}
  1764.         {% if ProductCategory.Category.id == 8 or ProductCategory.Category.id == 20 %}
  1765.             {% if Product.product_input_type == 'on' %}
  1766.                 {% set hasCategory = true %}
  1767.             {% endif %}
  1768.         {% endif %}
  1769.         {%  if ProductCategory.Category.id == 23 %}
  1770.         {% set hasFile = true %}
  1771.         {% endif %}
  1772.     {% endfor %}
  1773.     <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,300..400,0..1,0&display=swap\" media=\"print\" onload=\"this.media='all'\">
  1774.     <div class=\"ec-productRole\">
  1775.         <div class=\"ec-grid2\">
  1776.             <div class=\"ec-grid2__cell\">
  1777.                 <div class=\"product-image\">
  1778.                     {% if hasCategory == true %}
  1779.                         <div id=\"app\"></div>
  1780.                         <div class=\"uchiwa_img_wrapper\" style=\"width:50%;margin: 20px\">
  1781.                             <canvas id=\"uchiwaCanvas\" class=\"img_canvas\" height=\"512\" width=\"512\"></canvas>
  1782.                         </div>
  1783.                         <div id=\"downloadSpinners\">
  1784.                             <svg class=\"q-spinner text-primary\" width=\"4em\" height=\"4em\" viewBox=\"0 0 38 38\"
  1785.                                  xmlns=\"http://www.w3.org/2000/svg\">
  1786.                                 <defs>
  1787.                                     <linearGradient x1=\"8.042%\" y1=\"0%\" x2=\"65.682%\" y2=\"23.865%\" id=\"a\">
  1788.                                         <stop stop-color=\"currentColor\" stop-opacity=\"0\" offset=\"0%\"></stop>
  1789.                                         <stop stop-color=\"currentColor\" stop-opacity=\".631\" offset=\"63.146%\"></stop>
  1790.                                         <stop stop-color=\"currentColor\" offset=\"100%\"></stop>
  1791.                                     </linearGradient>
  1792.                                 </defs>
  1793.                                 <g transform=\"translate(1 1)\" fill=\"none\" fill-rule=\"evenodd\">
  1794.                                     <path d=\"M36 18c0-9.94-8.06-18-18-18\" stroke=\"url(#a)\" stroke-width=\"2\">
  1795.                                         <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 18 18\"
  1796.                                                           to=\"360 18 18\" dur=\"0.9s\"
  1797.                                                           repeatCount=\"indefinite\"></animateTransform>
  1798.                                     </path>
  1799.                                     <circle fill=\"currentColor\" cx=\"36\" cy=\"18\" r=\"1\">
  1800.                                         <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 18 18\"
  1801.                                                           to=\"360 18 18\" dur=\"0.9s\"
  1802.                                                           repeatCount=\"indefinite\"></animateTransform>
  1803.                                     </circle>
  1804.                                 </g>
  1805.                             </svg><!----></div>
  1806.                     {% endif %}
  1807.                     {#                    {{ dump(Product) }} #}
  1808.                     {#                    {{ dump(form) }} #}
  1809.                     {#                    {% for choice in form.order_color1.choices %} #}
  1810.                     {#                    {{ dump(choice) }} #}
  1811.                     {#                    {% endfor %} #}
  1812.                 </div>
  1813.                 <div class=\"ec-sliderItemRole\">
  1814.                     {% if hasCategory == false %}
  1815.                         <div class=\"item_visual\">
  1816.                             {% for ProductImage in Product.ProductImage %}
  1817.                                 <div class=\"slide-item\"><img src=\"{{ asset(ProductImage, 'save_image') }}\"
  1818.                                                              alt=\"{{ loop.first ? Product.name : '' }}\" width=\"550\"
  1819.                                                              height=\"550\"{% if loop.index > 1 %} loading=\"lazy\"{% endif %}>
  1820.                                 </div>
  1821.                             {% else %}
  1822.                                 <div class=\"slide-item\"><img src=\"{{ asset(''|no_image_product, 'save_image') }}\"
  1823.                                                              alt=\"{{ loop.first ? Product.name : '' }}\" width=\"550\"
  1824.                                                              height=\"550\"></div>
  1825.                             {% endfor %}
  1826.                         </div>
  1827.                         <div class=\"item_nav\">
  1828.                             {% for ProductImage in Product.ProductImage %}
  1829.                                 <div class=\"slideThumb\" data-index=\"{{ loop.index0 }}\"><img
  1830.                                             src=\"{{ asset(ProductImage, 'save_image') }}\" alt=\"\" width=\"133\"
  1831.                                             height=\"133\"
  1832.                                             loading=\"lazy\"></div>
  1833.                             {% endfor %}
  1834.                         </div>
  1835.                     {% endif %}
  1836.                 </div>
  1837.                 {% if hasCategory == true or hasFile == true %}
  1838.                     <div style=\"margin-top: 120px;\">
  1839. {#                        <p class=\"text-announce\">右側の項目でうちわのシミュレーションが確認できます。</p>#}
  1840.                         {#                        <p>上の文字と下の文字は空白で左右の位置を調整できます<br>(スペースで左右の位置を調整できます)</p> #}
  1841.                         <h4>ご注意</h4>
  1842.                         <p class=\"text-announce\">実際の商品は、仕上がりイメージと若干異なる場合があります</p>
  1843.                     {% if hasCategory == true  %}
  1844.                         <p class=\"text-announce\">ひらがななどで全体が一枚でつながらない場合には、背景でつながるげることがあります</p>
  1845.                     {% endif %}
  1846.                     </div>
  1847.                     <div>
  1848.                         <img class=\"material__img\" src=\"/ecshop/html/user_data/assets/img/material/color_basic1.jpg\"
  1849.                              alt=\"カラー一覧\"><br>
  1850.                         <img class=\"material__img\" src=\"/ecshop/html/user_data/assets/img/material/color_basic2.jpg\"
  1851.                              alt=\"カラー一覧\"><br>
  1852.                         <img class=\"material__img\" src=\"/ecshop/html/user_data/assets/img/material/color_basic3.jpg\"
  1853.                              alt=\"カラー一覧\">
  1854.                         <img class=\"material__img\" src=\"/ecshop/html/user_data/assets/img/material/color_glitter1.jpg\"
  1855.                              alt=\"グリッターカラー一覧\"><br>
  1856.                         <img class=\"material__img\" src=\"/ecshop/html/user_data/assets/img/material/use_font.jpg\"
  1857.                              alt=\"書体見本\">
  1858.                     </div>
  1859.                 {% endif %}
  1860.             </div>
  1861.             <div class=\"ec-grid2__cell\">
  1862.                 <div class=\"ec-productRole__profile\">
  1863.                     {# 商品名 #}
  1864.                     <div class=\"ec-productRole__title\">
  1865.                         <h2 class=\"ec-headingTitle\">{{ Product.name }}</h2>
  1866.                     </div>
  1867.                     {#                    <div style=\"width: 50%;margin: 20px;display:none;\"> #}
  1868.                     {#                        <input type=\"text\" id=\"uchiwa_up_text\" name=\"uchiwa_up_text\" value=\"未来\"/><br/> #}
  1869.                     {#                        <input type=\"text\" id=\"uchiwa_main_text\" name=\"uchiwa_main_text\" value=\"看\" #}
  1870.                     {#                               style=\"width:100%;\"/><br> #}
  1871.                     {#                        <input type=\"text\" id=\"uchiwa_low_text\" name=\"uchiwa_lo_text\" value=\"板\"/><br/> #}
  1872.                     {#                        <button id=\"uchiwa_set\" type=\"button\">再作画</button> #}
  1873.                     {#                        <br/> #}
  1874.                     {#                        一番外側の色: #}
  1875.                     {#                        <select id=\"uchiwa_back_color1\" name=\"back_color1\"> #}
  1876.                     {#                        </select> #}
  1877.                     {#                        <br/> #}
  1878.                     {#                        フチの外枠: #}
  1879.                     {#                        <select id=\"uchiwa_back_color2\" name=\"back_color2\"> #}
  1880.                     {#                        </select> #}
  1881.                     {#                        <br/> #}
  1882.                     {#                        フチの中: #}
  1883.                     {#                        <select id=\"uchiwa_back_color3\" name=\"back_color3\"> #}
  1884.                     {#                        </select> #}
  1885.                     {#                        <br/> #}
  1886.                     {#                        文字の色: #}
  1887.                     {#                        <select id=\"uchiwa_back_color4\" name=\"back_color4\"> #}
  1888.                     {#                        </select> #}
  1889.                     {#                        <br/> #}
  1890.                     {#                    </div> #}
  1891.                     {# タグ #}
  1892.                     <ul class=\"ec-productRole__tags\">
  1893.                         {% for Tag in Product.Tags %}
  1894.                             <li class=\"ec-productRole__tag tag_{{ Tag.id }}\">{{ Tag }}</li>
  1895.                         {% endfor %}
  1896.                     </ul>
  1897.                     {# 通常価格 #}
  1898.                     {% if Product.hasProductClass -%}
  1899.                         <div class=\"ec-productRole__priceRegular\">
  1900.                             {% if Product.getPrice01Min is not null and Product.getPrice01IncTaxMin == Product.getPrice01IncTaxMax %}
  1901.                                 <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:<span
  1902.                                             class=\"price01-default\">{{ Product.getPrice01IncTaxMin|price }}</span></span>
  1903.                                 <span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
  1904.                             {% elseif Product.getPrice01Min is not null and Product.getPrice01Max is not null %}
  1905.                                 <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:<span
  1906.                                             class=\"price01-default\">{{ Product.getPrice01IncTaxMin|price }}~ {{ Product.getPrice01IncTaxMax|price }}</span></span>
  1907.                                 <span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
  1908.                             {% endif %}
  1909.                         </div>
  1910.                     {% else %}
  1911.                         {% if Product.getPrice01Max is not null %}
  1912.                             <span class=\"ec-productRole__priceRegularPrice\">{{ '通常価格'|trans }}:{{ Product.getPrice01IncTaxMin|price }}</span>
  1913.                             <span class=\"ec-productRole__priceRegularTax\">{{ '税込'|trans }}</span>
  1914.                         {% endif %}
  1915.                     {% endif %}
  1916.                     {# 販売価格 #}
  1917.                     <div class=\"ec-productRole__price\">
  1918.                         {% if Product.hasProductClass -%}
  1919.                             {% if Product.getPrice02IncTaxMin == Product.getPrice02IncTaxMax %}
  1920.                                 <div class=\"ec-price\">
  1921.                                     <span class=\"ec-price__price price02-default\">{{ Product.getPrice02IncTaxMin|price }}</span>
  1922.                                     <span class=\"ec-price__tax\">{{ '税込'|trans }}</span>
  1923.                                 </div>
  1924.                             {% else %}
  1925.                                 <div class=\"ec-price\">
  1926.                                     <span class=\"ec-price__price price02-default\">{{ Product.getPrice02IncTaxMin|price }} ~ {{ Product.getPrice02IncTaxMax|price }}</span>
  1927.                                     <span class=\"ec-price__tax\">{{ '税込'|trans }}</span>
  1928.                                 </div>
  1929.                             {% endif %}
  1930.                         {% else %}
  1931.                             <div class=\"ec-price\">
  1932.                                 <span class=\"ec-price__price\">{{ Product.getPrice02IncTaxMin|price }}</span>
  1933.                                 <span class=\"ec-price__tax\">{{ '税込'|trans }}</span>
  1934.                             </div>
  1935.                         {% endif %}
  1936.                     </div>
  1937.                     {# 商品コード #}
  1938.                     {% if Product.code_min is not empty %}
  1939.                         <div class=\"ec-productRole__code\">
  1940.                             {{ '商品コード'|trans }}: <span
  1941.                                     class=\"product-code-default\">{{ Product.code_min }}{% if Product.code_min != Product.code_max %} ~ {{ Product.code_max }}{% endif %}</span>
  1942.                         </div>
  1943.                     {% endif %}
  1944.                     {# 関連カテゴリ #}
  1945.                     {% if Product.ProductCategories is not empty %}
  1946.                         <div class=\"ec-productRole__category\">
  1947.                             <div>{{ '関連カテゴリ'|trans }}</div>
  1948.                             {% for ProductCategory in Product.ProductCategories %}
  1949.                                 <ul>
  1950.                                     <li>
  1951.                                         {% for Category in ProductCategory.Category.path %}
  1952.                                             <a href=\"{{ url('product_list') }}?category_id={{ Category.id }}\">{{ Category.name }}</a> {%- if loop.last == false %}
  1953.                                             <span>></span>{% endif -%}
  1954.                                         {% endfor %}
  1955.                                     </li>
  1956.                                 </ul>
  1957.                             {% endfor %}
  1958.                         </div>
  1959.                     {% endif %}
  1960.                     <form action=\"{{ url('product_add_cart', {id:Product.id}) }}\" method=\"post\" id=\"form1\" name=\"form1\"
  1961.                           enctype=\"multipart/form-data\">
  1962.                         {% if Product.stock_find %}
  1963.                             <div class=\"ec-productRole__actions\">
  1964.                                 {% if form.classcategory_id1 is defined %}
  1965.                                     <div class=\"ec-select\">
  1966.                                         {{ form_row(form.classcategory_id1) }}
  1967.                                         {{ form_errors(form.classcategory_id1) }}
  1968.                                     </div>
  1969.                                     {% if form.classcategory_id2 is defined %}
  1970.                                         <div class=\"ec-select\">
  1971.                                             {{ form_row(form.classcategory_id2) }}
  1972.                                             {{ form_errors(form.classcategory_id2) }}
  1973.                                         </div>
  1974.                                     {% endif %}
  1975.                                 {% endif %}
  1976.                             </div>
  1977. {#                            {% if hasFile %}#}
  1978. {#                                <input type=\"file\" id=\"file\" name=\"file\" class=\"form-control\">#}
  1979. {#                                {% endif %}#}
  1980.                             {{ form_rest(form) }}
  1981.                             <div class=\"ec-productRole__btn\">
  1982.                                 <button id=\"add-cart-button\" type=\"submit\" class=\"ec-blockBtn--action add-cart\"
  1983.                                         disabled>
  1984.                                     {{ 'カートに入れる'|trans }}
  1985.                                 </button>
  1986.                             </div>
  1987.                         {% else %}
  1988.                             <div class=\"ec-productRole__btn\">
  1989.                                 <button type=\"button\" class=\"ec-blockBtn--action\" disabled=\"disabled\">
  1990.                                     {{ 'ただいま品切れ中です。'|trans }}
  1991.                                 </button>
  1992.                             </div>
  1993.                         {% endif %}
  1994.                         {#                        <div style=\"display: none\"><input type=\"text\" name=\"file\" id=\"image_file\"></div> #}
  1995.                     </form>
  1996.                     <div class=\"ec-modal\">
  1997.                         <div class=\"ec-modal-overlay\">
  1998.                             <div class=\"ec-modal-wrap\">
  1999.                                 <span class=\"ec-modal-close\"><span class=\"ec-icon\"><img
  2000.                                                 src=\"{{ asset('assets/icon/cross-dark.svg') }}\" alt=\"\"/></span></span>
  2001.                                 <div id=\"ec-modal-header\" class=\"text-center\">{{ 'カートに追加しました。'|trans }}</div>
  2002.                                 <div class=\"ec-modal-box\">
  2003.                                     <div class=\"ec-role\">
  2004.                                         <span class=\"ec-inlineBtn--cancel\">{{ 'お買い物を続ける'|trans }}</span>
  2005.                                         <a href=\"{{ url('cart') }}\"
  2006.                                            class=\"ec-inlineBtn--action\">{{ 'カートへ進む'|trans }}</a>
  2007.                                     </div>
  2008.                                 </div>
  2009.                             </div>
  2010.                         </div>
  2011.                     </div>
  2012.                     {% if BaseInfo.option_favorite_product %}
  2013.                         <form action=\"{{ url('product_add_favorite', {id:Product.id}) }}\" method=\"post\">
  2014.                             <div class=\"ec-productRole__btn\">
  2015.                                 {% if is_favorite == false %}
  2016.                                     <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--action\">
  2017.                                         {{ 'お気に入りに追加'|trans }}
  2018.                                     </button>
  2019.                                 {% else %}
  2020.                                     <button type=\"submit\" id=\"favorite\" class=\"ec-blockBtn--action\"
  2021.                                             disabled=\"disabled\">{{ 'お気に入りに追加済です。'|trans }}
  2022.                                     </button>
  2023.                                 {% endif %}
  2024.                             </div>
  2025.                         </form>
  2026.                     {% endif %}
  2027.                     <div class=\"ec-productRole__description\">{{ Product.description_detail|raw|nl2br }}
  2028.                     </div>
  2029.                 </div>
  2030.             </div>
  2031.         </div>
  2032.         {% if Product.freearea %}
  2033.             <div class=\"ec-productRole__description\">
  2034.                 {{ include(template_from_string(Product.freearea)) }}
  2035.             </div>
  2036.         {% endif %}
  2037.     </div>
  2038.     {% if hasCategory == true %}
  2039.         <script>
  2040.                 const sheetSize = \"{{ Product.sheet_size }}\";
  2041.             {#console.log('product test', \"{{ Product.sheet_size }}\" )#}
  2042.             // https://mirai-kanban.com/ecshop/html/user_data/assets/js/test2.html
  2043.             const product_color_type1 = '{{ Product.product_color_type1 }}'
  2044.             const product_color_type2 = '{{ Product.product_color_type2 }}'
  2045.             if (\$('select#classcategory_id2').length > 0) {
  2046.                 console.log('cat 2', \$('select#classcategory_id2'))
  2047.                 \$('select#classcategory_id1 option:nth-child(2)').prop('selected', true);
  2048.             }
  2049.             // \$('select#classcategory_id1').trigger('change');
  2050.             // subChange();
  2051.             // function subChange() {
  2052.             //     const myData = \$('select#classcategory_id1');
  2053.             //     const \$form = \$('form#form1');
  2054.             //     // var \$form = myData.parents('form');
  2055.             //     var product_id = \$form.find('input[name=product_id]').val();
  2056.             //     var \$sele1 = myData;
  2057.             //     var \$sele2 = \$form.find('select[name=classcategory_id2]');
  2058.             //
  2059.             //     // 規格1のみの場合
  2060.             //     if (!\$sele2.length) {
  2061.             //         eccube.checkStock(\$form, product_id, \$sele1.val(), null);
  2062.             //         // 規格2ありの場合
  2063.             //     } else {
  2064.             //         eccube.setClassCategories(\$form, product_id, \$sele1, \$sele2);
  2065.             //     }
  2066.             // }
  2067.         </script>
  2068.         <script src=\"{{ asset('assets/js/mirai.js') }}\"></script>
  2069.         <script type=\"module\">
  2070.             // import { createApp, defineAsyncComponent } from 'vue';
  2071.             // import { createVuetify } from 'vuetify';
  2072.             // import {loadModule} from 'vue3-sfc-loader';
  2073.             // const { loadModule } = window['vue3-sfc-loader'];
  2074. // console.log('load modules');
  2075.             // import {createVuetify} from 'vuetify'
  2076.             // import { md2 } from 'vuetify/blueprints'
  2077.             const vue3_sfc_loader_options = {
  2078.                 moduleCache: { vue: Vue, vuetify: Vuetify.vuetify },
  2079.                 getFile(url) {
  2080.                     url = /.*?.js|.mjs|.css|.less|.vue\$/.test(url)
  2081.                         ? url
  2082.                         : `\${url}.vue`;
  2083.                     const type = /.*?.js|.mjs\$/.test(url)
  2084.                         ? \".mjs\"
  2085.                         : /.*?.vue\$/.test(url)
  2086.                             ? \".vue\"
  2087.                             : /.*?.css\$/.test(url)
  2088.                                 ? \".css\"
  2089.                                 : \".vue\";
  2090.                     const getContentData = (asBinary) =>
  2091.                         fetch(url).then((res) =>
  2092.                             !res.ok
  2093.                                 ? Promise.reject(url)
  2094.                                 : asBinary
  2095.                                     ? res.arrayBuffer()
  2096.                                     : res.text()
  2097.                         );
  2098.                     return { getContentData: getContentData, type: type };
  2099.                 },
  2100.                 addStyle(textContent) {
  2101.                     let styleElement = document.createElement(\"style\");
  2102.                     document.head.insertBefore(
  2103.                         Object.assign(styleElement, { textContent }),
  2104.                         document.head.getElementsByTagName(\"style\")[0] || null
  2105.                     );
  2106.                 },
  2107.                 handleModule(type, getContentData, path, options) {
  2108.                     switch (type) {
  2109.                         case \".css\":
  2110.                             return options.addStyle(getContentData(false));
  2111.                         case \".less\":
  2112.                             console.error(\".......\");
  2113.                     }
  2114.                 },
  2115.                 log(type, ...args) {
  2116.                     console.log(type, ...args);
  2117.                 },
  2118.             };
  2119.             const { loadModule } = window[\"vue3-sfc-loader\"];
  2120.             const app = Vue.createApp(
  2121.                 Vue.defineAsyncComponent(
  2122.                     () => loadModule(\"{{ asset('assets/vue/main.vue') }}\", vue3_sfc_loader_options)
  2123.                 ),
  2124.             )
  2125. // {{ asset('assets/vue/main.vue') }}
  2126.             console.log('start vue');
  2127.             // const vuetify = createVuetify();
  2128.             // const app = createApp({
  2129.             //     components: {
  2130.             //         'my-component': defineAsyncComponent(() =>
  2131.             //             loadModule(
  2132.             //                 \"assets/vue/main.vue\",
  2133.             //                 vue3_sfc_loader_options
  2134.             //             )
  2135.             //         ),
  2136.             //     },
  2137.             //     template: `<my-component />`,
  2138.             // });
  2139.             const { createVuetify } = Vuetify;
  2140.             const vuetify = createVuetify({
  2141.                 theme: {
  2142.                     defaultTheme: 'light'
  2143.                 },
  2144.                 // blueprint: md2,
  2145.             });
  2146.             app.use(vuetify);
  2147.             app.mount('#app');
  2148.         </script>
  2149.         <script type=\"module\">
  2150.             {#import { createApp, ref } from 'vue';#}
  2151.             {#import { createVuetify } from 'vuetify';#}
  2152.             {#import App from \"{{ asset('assets/vue/app.js') }}\";#}
  2153.             {#const vuetify = createVuetify();#}
  2154.             {#const app = createApp({App});#}
  2155.             {#app.use(vuetify);#}
  2156.             {#app.mount('#app');#}
  2157.             // var vue = new Vue({
  2158.             //     el: '#app',
  2159.             //     components: {
  2160.             //         'vc-main-1': httpVueLoader('assets/vue/main.vue')
  2161.             //     }
  2162.             // });
  2163.         </script>
  2164.     {% else %}
  2165.         <script>
  2166.             \$('#add-cart-button').prop('disabled', false)
  2167.         </script>
  2168.     {% endif %}
  2169.     <script>
  2170.         \$('label[for=quantity]').text('数量')
  2171.     </script>
  2172. {% endblock %}
  2173. ""Product/detail.twig""/home/atplus4/mirai-kanban.com/public_html/ecshop/app/template/default/Product/detail.twig");
  2174.     }
  2175. }