/**
  * makeView
  *
  * @param $target
  * @param $instanceId
  * @param $mode
  *
  * @return \Illuminate\Contracts\View\View
  */
 protected function makeView($target, $instanceId, $mode)
 {
     /** @var SkinHandler $skinHandler */
     $skinHandler = app('xe.skin');
     $skinInstanceId = $skinHandler->mergeKey($target, $instanceId);
     $selectedSkin = $skinHandler->getAssigned([$target, $instanceId], $mode);
     if ($selectedSkin !== null) {
         $settingView = $selectedSkin->getSettingView();
     } else {
         $settingView = null;
     }
     // get skin list
     $skinList = $skinHandler->getList($target);
     $skins = function ($skinList, $selectedSkin) {
         (yield ['text' => '선택하세요', 'selected' => false]);
         foreach ($skinList as $id => $skin) {
             $support = [];
             $support[] = $skin->supportDesktop() ? '데스크탑' : '';
             $support[] = $skin->supportMobile() ? '모바일' : '';
             $support = '[' . implode('|', $support) . ']';
             (yield ['value' => $id, 'text' => $skin->getTitle() . $support, 'selected' => $selectedSkin === null ? false : $id === $selectedSkin->getId()]);
         }
     };
     $skins = $skins($skinList, $selectedSkin);
     \Frontend::js('assets/skin/section.js')->load();
     $url = route('settings.skin.section.setting');
     \Frontend::html('skin.loadSkinSetting')->content("<script>\n            XE.\$(function(\$){\n                \$('.__xe_skinSetting').xeSkinSetting({\n                    'loadUrl': '{$url}',\n                    'saveUrl': '{$url}'\n                });\n            });\n        </script>")->load();
     return View::make('skin.setting', compact('skinInstanceId', 'settingView', 'skins', 'mode', 'selectedSkin'));
 }