From 9f67ec43f0db9089fea75e638e0a11557d68d51f Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Tue, 6 Dec 2022 10:09:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E4=B8=8B=E5=8D=95=E8=B4=AD?= =?UTF-8?q?=E4=B9=B0=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 购买插件 wip wip 购买插件微信支付 wip 优化插件购买 wip 修复插件购买 添加插件接口 返回json wip 优化插件详情页购买ui交互 添加弹出层插件 wip wip wip 插件市场设置 token 优化 --- .../Http/Controllers/MarketingController.php | 21 +++ beike/Admin/Routes/admin.php | 1 + beike/Admin/Services/MarketingService.php | 50 +++++- public/image/alipay.png | Bin 0 -> 8288 bytes public/image/wechat.png | Bin 0 -> 8859 bytes public/vendor/qrcode/qrcode.min.js | 4 + public/vendor/sweetalert2/sweetalert2.min.css | 1 + public/vendor/sweetalert2/sweetalert2.min.js | 5 + resources/beike/admin/css/_global.scss | 4 + resources/beike/admin/css/_marketing.scss | 13 ++ .../views/pages/marketing/index.blade.php | 9 +- .../views/pages/marketing/show.blade.php | 146 ++++++++++++++++-- resources/lang/en/admin/marketing.php | 9 ++ resources/lang/zh_cn/admin/marketing.php | 11 +- resources/lang/zh_hk/admin/marketing.php | 11 +- 15 files changed, 263 insertions(+), 22 deletions(-) create mode 100644 public/image/alipay.png create mode 100644 public/image/wechat.png create mode 100644 public/vendor/qrcode/qrcode.min.js create mode 100644 public/vendor/sweetalert2/sweetalert2.min.css create mode 100644 public/vendor/sweetalert2/sweetalert2.min.js diff --git a/beike/Admin/Http/Controllers/MarketingController.php b/beike/Admin/Http/Controllers/MarketingController.php index a171cc52..d9f92426 100644 --- a/beike/Admin/Http/Controllers/MarketingController.php +++ b/beike/Admin/Http/Controllers/MarketingController.php @@ -32,6 +32,7 @@ class MarketingController $plugins = MarketingService::getInstance()->getList($filters); $data = [ 'plugins' => $plugins, + 'domain' => str_replace(['http://', 'https://'], '', config('app.url')), 'types' => PluginRepo::getTypes(), ]; @@ -52,8 +53,12 @@ class MarketingController $pluginCode = $request->code; $plugin = MarketingService::getInstance()->getPlugin($pluginCode); $data = [ + 'domain' => str_replace(['http://', 'https://'], '', config('app.url')), 'plugin' => $plugin, ]; + if ($request->expectsJson()) { + return $data; + } return view('admin::pages.marketing.show', $data); } catch (\Exception $e) { return redirect(admin_route('marketing.index'))->withErrors(['error' => $e->getMessage()]); @@ -61,6 +66,22 @@ class MarketingController } + /** + * 下单购买插件 + */ + public function buy(Request $request) + { + try { + $postData = $request->getContent(); + $pluginCode = $request->code; + $result = MarketingService::getInstance()->buy($pluginCode, $postData); + return json_success('获取成功', $result); + } catch (\Exception $e) { + return json_fail($e->getMessage()); + } + } + + /** * 下载插件安装包到本地 */ diff --git a/beike/Admin/Routes/admin.php b/beike/Admin/Routes/admin.php index 1d02f603..389ee779 100644 --- a/beike/Admin/Routes/admin.php +++ b/beike/Admin/Routes/admin.php @@ -143,6 +143,7 @@ Route::prefix($adminName) // 插件市场 Route::middleware('can:marketing_index')->get('marketing', [Controllers\MarketingController::class, 'index'])->name('marketing.index'); Route::middleware('can:marketing_show')->get('marketing/{code}', [Controllers\MarketingController::class, 'show'])->name('marketing.show'); + Route::middleware('can:marketing_buy')->post('marketing/{code}/buy', [Controllers\MarketingController::class, 'buy'])->name('marketing.buy'); Route::middleware('can:marketing_download')->post('marketing/{code}/download', [Controllers\MarketingController::class, 'download'])->name('marketing.download'); diff --git a/beike/Admin/Services/MarketingService.php b/beike/Admin/Services/MarketingService.php index 35cca426..b87b2fda 100644 --- a/beike/Admin/Services/MarketingService.php +++ b/beike/Admin/Services/MarketingService.php @@ -35,7 +35,14 @@ class MarketingService return new self; } - public function getList($filters = []) + + /** + * 获取可插件市场插件列表 + * + * @param array $filters + * @return mixed + */ + public function getList(array $filters = []): mixed { $url = config('beike.api_url') . '/api/plugins'; if (!empty($filters)) { @@ -44,9 +51,16 @@ class MarketingService return $this->httpClient->get($url)->json(); } - public function getPlugin($pluginCode) + + /** + * 获取插件市场单个插件信息 + * + * @param $pluginCode + * @return mixed + */ + public function getPlugin($pluginCode): mixed { - $url = config('beike.api_url') . '/api/plugins/' . $pluginCode; + $url = config('beike.api_url') . "/api/plugins/{$pluginCode}"; $plugin = $this->httpClient->get($url)->json(); if (empty($plugin)) { throw new NotFoundHttpException('该插件不存在或已下架'); @@ -54,6 +68,35 @@ class MarketingService return $plugin; } + + /** + * 购买插件市场单个插件 + * + * @throws \Exception + */ + public function buy($pluginCode, $postData) + { + $url = config('beike.api_url') . "/api/plugins/{$pluginCode}/buy"; + + $content = $this->httpClient->withBody($postData, 'application/json') + ->post($url) + ->json(); + + $status = $content['status'] ?? ''; + if ($status == 'success') { + return $content['data']; + } else { + throw new \Exception($content['message'] ?? ''); + } + } + + + /** + * 下载插件到网站 + * + * @param $pluginCode + * @throws \Exception + */ public function download($pluginCode) { $datetime = date('Y-m-d'); @@ -68,5 +111,4 @@ class MarketingService $zipFile = Zip::open($pluginZip); $zipFile->extract(base_path('plugins')); } - } diff --git a/public/image/alipay.png b/public/image/alipay.png new file mode 100644 index 0000000000000000000000000000000000000000..64397bf5baab34d329665fe8bffe6d8b5d6e9faa GIT binary patch literal 8288 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

%&o)*X3Zf z@0ni_J#~#|pJQE2_;P;PkI*Zbx?*K#NIe8{YN|l zyidUS{A173M%akrm|;j(Ru4!=P?#;4t` zpJ{PMS5t=M&dZX?S9N7XY-#)>RM-j>xAu2L_hOv75n~RYKF3UVGPL{ty@&>3?#bcL zLM{CSW81s8dJe`4b{39S*;ipXz5J=@PNvgv>0Nny)@?9Foc|Ef-_{1UQ!h^rI^C!v^QHNwK19U)-6rXzQCgqvl`w(w1*S)qbskmFa#~jtms9IPk zSIi~(7!~-nc>wmOJ9y(UB<=|anZ%)pcj40zf9CsOU}$C4GV->ii7yhpeghHD`TT*c zqM=wu{qvbU^R}r!Vu3H(eV1ls_{Q-;So6S;tfKRY1U!hu`|Kd!@&oRD<~Wj+g&1P{ zU>tW#1L<(9vfhpqkhiG^2zeq;*xaDdH{molKRY`cC%&D`c|gtt_e7 zuQi^)&fX8Kg755OiDO3J_VB!!_f8H+TQ7UEVbs~&+>HJht)XiGggB(6rM=g}VtEr! z?rz8sI3p(7NbKO5WV)#7b^f*5y7mWZf(m(rpT^5N`Y@K7^I?Exr#0*w|8i@W6O) zT1)K#Qx^3Na?(t9xJNU2*qbJdoBW|eUn?qHJqyETKfJ$l@SZ%m1-)2gtN1!pRAG&@ zEJ5a>8(i>^N4?t%i54mFy5QRzi6*~{dFNaYLnfmW_a3zIks`Dib!0CfcAJYAV6oYP z7dlbHFNIjB-J=6yw(9}aC9c=*o8pzF6)afq`urB*ej3`E#_eSzid9jrWyut3`>PM_ z9|gP}-1&w0x}>B677C)$(#lUT0C*Ti(z*Do-+7_p^i9XoR#C*CeZz2XPb1}izcACs zuozOq#B(k_cH?XmHR>OpwL#wO%aTqH_!PJu2R!Gi{c01}!fNS5z2b!UB^WF= zYw3j|7T`zjA6$hp7DQ4`W60Cens%~QPrIVX zu3fuUu|-o03+FmKC#P$*>blG`3kPMTfGF?*AGHRA@PoWL^*xk zVN(96#f5rhhD7(G9-(FkmX6h0_tB4F#HJ3I<1y`G0_=8mpW)Nm8tt`Ox+Z{j+}9c47%LZnww@>cN1p{fYoFm#=R9^99#+%_ zB=lm1_}+mLH)af((Aqa}VJ?N-Zd0+S1{Rdr;Lys8OUfSTB8Kk;9V~xvc6RS@RU$9` z=5!#BcMvCQOl65wz!rq?R# zpDv!yihGn7bYDCRX==DJ@BU!dT=7n<+68O1kGg8!X$oz&Dll!iRZPy&}T=OPFs`c@vfLB6l1#P=uY{jRtF94_BgD`lY zHg5nOmg4j5=cbskdG~`vwLU;X`WD=KrtEl35I$E%BOx()oh$(xkbG;9_JlMr~LC0000 literal 0 HcmV?d00001 diff --git a/public/image/wechat.png b/public/image/wechat.png new file mode 100644 index 0000000000000000000000000000000000000000..7304ca0853883bc29711533a6f357760b5e8d808 GIT binary patch literal 8859 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 literal 0 HcmV?d00001 diff --git a/public/vendor/qrcode/qrcode.min.js b/public/vendor/qrcode/qrcode.min.js new file mode 100644 index 00000000..5b3a8905 --- /dev/null +++ b/public/vendor/qrcode/qrcode.min.js @@ -0,0 +1,4 @@ +/** + * https://github.com/davidshimjs/qrcodejs + */ +var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this.parsedData=[];for(var b=[],d=0,e=this.data.length;e>d;d++){var f=this.data.charCodeAt(d);f>65536?(b[0]=240|(1835008&f)>>>18,b[1]=128|(258048&f)>>>12,b[2]=128|(4032&f)>>>6,b[3]=128|63&f):f>2048?(b[0]=224|(61440&f)>>>12,b[1]=128|(4032&f)>>>6,b[2]=128|63&f):f>128?(b[0]=192|(1984&f)>>>6,b[1]=128|63&f):b[0]=f,this.parsedData=this.parsedData.concat(b)}this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function b(a,b){this.typeNumber=a,this.errorCorrectLevel=b,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}function i(a,b){if(void 0==a.length)throw new Error(a.length+"/"+b);for(var c=0;c=f;f++){var h=0;switch(b){case d.L:h=l[f][0];break;case d.M:h=l[f][1];break;case d.Q:h=l[f][2];break;case d.H:h=l[f][3]}if(h>=e)break;c++}if(c>l.length)throw new Error("Too long data");return c}function s(a){var b=encodeURI(a).toString().replace(/\%[0-9a-fA-F]{2}/g,"a");return b.length+(b.length!=a?3:0)}a.prototype={getLength:function(){return this.parsedData.length},write:function(a){for(var b=0,c=this.parsedData.length;c>b;b++)a.put(this.parsedData[b],8)}},b.prototype={addData:function(b){var c=new a(b);this.dataList.push(c),this.dataCache=null},isDark:function(a,b){if(0>a||this.moduleCount<=a||0>b||this.moduleCount<=b)throw new Error(a+","+b);return this.modules[a][b]},getModuleCount:function(){return this.moduleCount},make:function(){this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var d=0;d=7&&this.setupTypeNumber(a),null==this.dataCache&&(this.dataCache=b.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,b){for(var c=-1;7>=c;c++)if(!(-1>=a+c||this.moduleCount<=a+c))for(var d=-1;7>=d;d++)-1>=b+d||this.moduleCount<=b+d||(this.modules[a+c][b+d]=c>=0&&6>=c&&(0==d||6==d)||d>=0&&6>=d&&(0==c||6==c)||c>=2&&4>=c&&d>=2&&4>=d?!0:!1)},getBestMaskPattern:function(){for(var a=0,b=0,c=0;8>c;c++){this.makeImpl(!0,c);var d=f.getLostPoint(this);(0==c||a>d)&&(a=d,b=c)}return b},createMovieClip:function(a,b,c){var d=a.createEmptyMovieClip(b,c),e=1;this.make();for(var f=0;f=g;g++)for(var h=-2;2>=h;h++)this.modules[d+g][e+h]=-2==g||2==g||-2==h||2==h||0==g&&0==h?!0:!1}},setupTypeNumber:function(a){for(var b=f.getBCHTypeNumber(this.typeNumber),c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[Math.floor(c/3)][c%3+this.moduleCount-8-3]=d}for(var c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[c%3+this.moduleCount-8-3][Math.floor(c/3)]=d}},setupTypeInfo:function(a,b){for(var c=this.errorCorrectLevel<<3|b,d=f.getBCHTypeInfo(c),e=0;15>e;e++){var g=!a&&1==(1&d>>e);6>e?this.modules[e][8]=g:8>e?this.modules[e+1][8]=g:this.modules[this.moduleCount-15+e][8]=g}for(var e=0;15>e;e++){var g=!a&&1==(1&d>>e);8>e?this.modules[8][this.moduleCount-e-1]=g:9>e?this.modules[8][15-e-1+1]=g:this.modules[8][15-e-1]=g}this.modules[this.moduleCount-8][8]=!a},mapData:function(a,b){for(var c=-1,d=this.moduleCount-1,e=7,g=0,h=this.moduleCount-1;h>0;h-=2)for(6==h&&h--;;){for(var i=0;2>i;i++)if(null==this.modules[d][h-i]){var j=!1;g>>e));var k=f.getMask(b,d,h-i);k&&(j=!j),this.modules[d][h-i]=j,e--,-1==e&&(g++,e=7)}if(d+=c,0>d||this.moduleCount<=d){d-=c,c=-c;break}}}},b.PAD0=236,b.PAD1=17,b.createData=function(a,c,d){for(var e=j.getRSBlocks(a,c),g=new k,h=0;h8*l)throw new Error("code length overflow. ("+g.getLengthInBits()+">"+8*l+")");for(g.getLengthInBits()+4<=8*l&&g.put(0,4);0!=g.getLengthInBits()%8;)g.putBit(!1);for(;;){if(g.getLengthInBits()>=8*l)break;if(g.put(b.PAD0,8),g.getLengthInBits()>=8*l)break;g.put(b.PAD1,8)}return b.createBytes(g,e)},b.createBytes=function(a,b){for(var c=0,d=0,e=0,g=new Array(b.length),h=new Array(b.length),j=0;j=0?p.get(q):0}}for(var r=0,m=0;mm;m++)for(var j=0;jm;m++)for(var j=0;j=0;)b^=f.G15<=0;)b^=f.G18<>>=1;return b},getPatternPosition:function(a){return f.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,b,c){switch(a){case e.PATTERN000:return 0==(b+c)%2;case e.PATTERN001:return 0==b%2;case e.PATTERN010:return 0==c%3;case e.PATTERN011:return 0==(b+c)%3;case e.PATTERN100:return 0==(Math.floor(b/2)+Math.floor(c/3))%2;case e.PATTERN101:return 0==b*c%2+b*c%3;case e.PATTERN110:return 0==(b*c%2+b*c%3)%2;case e.PATTERN111:return 0==(b*c%3+(b+c)%2)%2;default:throw new Error("bad maskPattern:"+a)}},getErrorCorrectPolynomial:function(a){for(var b=new i([1],0),c=0;a>c;c++)b=b.multiply(new i([1,g.gexp(c)],0));return b},getLengthInBits:function(a,b){if(b>=1&&10>b)switch(a){case c.MODE_NUMBER:return 10;case c.MODE_ALPHA_NUM:return 9;case c.MODE_8BIT_BYTE:return 8;case c.MODE_KANJI:return 8;default:throw new Error("mode:"+a)}else if(27>b)switch(a){case c.MODE_NUMBER:return 12;case c.MODE_ALPHA_NUM:return 11;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 10;default:throw new Error("mode:"+a)}else{if(!(41>b))throw new Error("type:"+b);switch(a){case c.MODE_NUMBER:return 14;case c.MODE_ALPHA_NUM:return 13;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 12;default:throw new Error("mode:"+a)}}},getLostPoint:function(a){for(var b=a.getModuleCount(),c=0,d=0;b>d;d++)for(var e=0;b>e;e++){for(var f=0,g=a.isDark(d,e),h=-1;1>=h;h++)if(!(0>d+h||d+h>=b))for(var i=-1;1>=i;i++)0>e+i||e+i>=b||(0!=h||0!=i)&&g==a.isDark(d+h,e+i)&&f++;f>5&&(c+=3+f-5)}for(var d=0;b-1>d;d++)for(var e=0;b-1>e;e++){var j=0;a.isDark(d,e)&&j++,a.isDark(d+1,e)&&j++,a.isDark(d,e+1)&&j++,a.isDark(d+1,e+1)&&j++,(0==j||4==j)&&(c+=3)}for(var d=0;b>d;d++)for(var e=0;b-6>e;e++)a.isDark(d,e)&&!a.isDark(d,e+1)&&a.isDark(d,e+2)&&a.isDark(d,e+3)&&a.isDark(d,e+4)&&!a.isDark(d,e+5)&&a.isDark(d,e+6)&&(c+=40);for(var e=0;b>e;e++)for(var d=0;b-6>d;d++)a.isDark(d,e)&&!a.isDark(d+1,e)&&a.isDark(d+2,e)&&a.isDark(d+3,e)&&a.isDark(d+4,e)&&!a.isDark(d+5,e)&&a.isDark(d+6,e)&&(c+=40);for(var k=0,e=0;b>e;e++)for(var d=0;b>d;d++)a.isDark(d,e)&&k++;var l=Math.abs(100*k/b/b-50)/5;return c+=10*l}},g={glog:function(a){if(1>a)throw new Error("glog("+a+")");return g.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;a>=256;)a-=255;return g.EXP_TABLE[a]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},h=0;8>h;h++)g.EXP_TABLE[h]=1<h;h++)g.EXP_TABLE[h]=g.EXP_TABLE[h-4]^g.EXP_TABLE[h-5]^g.EXP_TABLE[h-6]^g.EXP_TABLE[h-8];for(var h=0;255>h;h++)g.LOG_TABLE[g.EXP_TABLE[h]]=h;i.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var b=new Array(this.getLength()+a.getLength()-1),c=0;cf;f++)for(var g=c[3*f+0],h=c[3*f+1],i=c[3*f+2],k=0;g>k;k++)e.push(new j(h,i));return e},j.getRsBlockTable=function(a,b){switch(b){case d.L:return j.RS_BLOCK_TABLE[4*(a-1)+0];case d.M:return j.RS_BLOCK_TABLE[4*(a-1)+1];case d.Q:return j.RS_BLOCK_TABLE[4*(a-1)+2];case d.H:return j.RS_BLOCK_TABLE[4*(a-1)+3];default:return void 0}},k.prototype={get:function(a){var b=Math.floor(a/8);return 1==(1&this.buffer[b]>>>7-a%8)},put:function(a,b){for(var c=0;b>c;c++)this.putBit(1==(1&a>>>b-c-1))},getLengthInBits:function(){return this.length},putBit:function(a){var b=Math.floor(this.length/8);this.buffer.length<=b&&this.buffer.push(0),a&&(this.buffer[b]|=128>>>this.length%8),this.length++}};var l=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]],o=function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){function g(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg",a);for(var d in b)b.hasOwnProperty(d)&&c.setAttribute(d,b[d]);return c}var b=this._htOption,c=this._el,d=a.getModuleCount();Math.floor(b.width/d),Math.floor(b.height/d),this.clear();var h=g("svg",{viewBox:"0 0 "+String(d)+" "+String(d),width:"100%",height:"100%",fill:b.colorLight});h.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),c.appendChild(h),h.appendChild(g("rect",{fill:b.colorDark,width:"1",height:"1",id:"template"}));for(var i=0;d>i;i++)for(var j=0;d>j;j++)if(a.isDark(i,j)){var k=g("use",{x:String(i),y:String(j)});k.setAttributeNS("http://www.w3.org/1999/xlink","href","#template"),h.appendChild(k)}},a.prototype.clear=function(){for(;this._el.hasChildNodes();)this._el.removeChild(this._el.lastChild)},a}(),p="svg"===document.documentElement.tagName.toLowerCase(),q=p?o:m()?function(){function a(){this._elImage.src=this._elCanvas.toDataURL("image/png"),this._elImage.style.display="block",this._elCanvas.style.display="none"}function d(a,b){var c=this;if(c._fFail=b,c._fSuccess=a,null===c._bSupportDataURI){var d=document.createElement("img"),e=function(){c._bSupportDataURI=!1,c._fFail&&_fFail.call(c)},f=function(){c._bSupportDataURI=!0,c._fSuccess&&c._fSuccess.call(c)};return d.onabort=e,d.onerror=e,d.onload=f,d.src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==",void 0}c._bSupportDataURI===!0&&c._fSuccess?c._fSuccess.call(c):c._bSupportDataURI===!1&&c._fFail&&c._fFail.call(c)}if(this._android&&this._android<=2.1){var b=1/window.devicePixelRatio,c=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(a,d,e,f,g,h,i,j){if("nodeName"in a&&/img/i.test(a.nodeName))for(var l=arguments.length-1;l>=1;l--)arguments[l]=arguments[l]*b;else"undefined"==typeof j&&(arguments[1]*=b,arguments[2]*=b,arguments[3]*=b,arguments[4]*=b);c.apply(this,arguments)}}var e=function(a,b){this._bIsPainted=!1,this._android=n(),this._htOption=b,this._elCanvas=document.createElement("canvas"),this._elCanvas.width=b.width,this._elCanvas.height=b.height,a.appendChild(this._elCanvas),this._el=a,this._oContext=this._elCanvas.getContext("2d"),this._bIsPainted=!1,this._elImage=document.createElement("img"),this._elImage.style.display="none",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return e.prototype.draw=function(a){var b=this._elImage,c=this._oContext,d=this._htOption,e=a.getModuleCount(),f=d.width/e,g=d.height/e,h=Math.round(f),i=Math.round(g);b.style.display="none",this.clear();for(var j=0;e>j;j++)for(var k=0;e>k;k++){var l=a.isDark(j,k),m=k*f,n=j*g;c.strokeStyle=l?d.colorDark:d.colorLight,c.lineWidth=1,c.fillStyle=l?d.colorDark:d.colorLight,c.fillRect(m,n,f,g),c.strokeRect(Math.floor(m)+.5,Math.floor(n)+.5,h,i),c.strokeRect(Math.ceil(m)-.5,Math.ceil(n)-.5,h,i)}this._bIsPainted=!0},e.prototype.makeImage=function(){this._bIsPainted&&d.call(this,a)},e.prototype.isPainted=function(){return this._bIsPainted},e.prototype.clear=function(){this._oContext.clearRect(0,0,this._elCanvas.width,this._elCanvas.height),this._bIsPainted=!1},e.prototype.round=function(a){return a?Math.floor(1e3*a)/1e3:a},e}():function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){for(var b=this._htOption,c=this._el,d=a.getModuleCount(),e=Math.floor(b.width/d),f=Math.floor(b.height/d),g=[''],h=0;d>h;h++){g.push("");for(var i=0;d>i;i++)g.push('');g.push("")}g.push("
"),c.innerHTML=g.join("");var j=c.childNodes[0],k=(b.width-j.offsetWidth)/2,l=(b.height-j.offsetHeight)/2;k>0&&l>0&&(j.style.margin=l+"px "+k+"px")},a.prototype.clear=function(){this._el.innerHTML=""},a}();QRCode=function(a,b){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:"#000000",colorLight:"#ffffff",correctLevel:d.H},"string"==typeof b&&(b={text:b}),b)for(var c in b)this._htOption[c]=b[c];"string"==typeof a&&(a=document.getElementById(a)),this._android=n(),this._el=a,this._oQRCode=null,this._oDrawing=new q(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)},QRCode.prototype.makeCode=function(a){this._oQRCode=new b(r(a,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(a),this._oQRCode.make(),this._el.title=a,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){"function"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=d}(); diff --git a/public/vendor/sweetalert2/sweetalert2.min.css b/public/vendor/sweetalert2/sweetalert2.min.css new file mode 100644 index 00000000..4c092a8b --- /dev/null +++ b/public/vendor/sweetalert2/sweetalert2.min.css @@ -0,0 +1 @@ +.swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4 !important;grid-row:1/4 !important;grid-template-columns:min-content auto min-content;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;overflow:initial;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:bold}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.8em;left:-0.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:"top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end";grid-template-rows:minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:rgba(0,0,0,0) !important}.swal2-container.swal2-top-start,.swal2-container.swal2-center-start,.swal2-container.swal2-bottom-start{grid-template-columns:minmax(0, 1fr) auto auto}.swal2-container.swal2-top,.swal2-container.swal2-center,.swal2-container.swal2-bottom{grid-template-columns:auto minmax(0, 1fr) auto}.swal2-container.swal2-top-end,.swal2-container.swal2-center-end,.swal2-container.swal2-bottom-end{grid-template-columns:auto auto minmax(0, 1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-start>.swal2-popup,.swal2-container.swal2-center-left>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-start>.swal2-popup,.swal2-container.swal2-bottom-left>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-row>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none !important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0, 100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:none}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:inherit;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 rgba(0,0,0,0) #2778c4 rgba(0,0,0,0)}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px rgba(0,0,0,0);font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7066e0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(112,102,224,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#dc3741;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(220,55,65,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7881;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,120,129,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:none}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:inherit;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto !important;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:rgba(0,0,0,0);color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:rgba(0,0,0,0);color:#f27474}.swal2-close:focus{outline:none;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:inherit;font-size:1.125em;font-weight:normal;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-input,.swal2-file,.swal2-textarea,.swal2-select,.swal2-radio,.swal2-checkbox{margin:1em 2em 3px}.swal2-input,.swal2-file,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:rgba(0,0,0,0);box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(0,0,0,0);color:inherit;font-size:1.125em}.swal2-input.swal2-inputerror,.swal2-file.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474 !important;box-shadow:0 0 2px #f27474 !important}.swal2-input:focus,.swal2-file:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:none;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-input::placeholder,.swal2-file::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 3px;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:rgba(0,0,0,0);font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:rgba(0,0,0,0);color:inherit;font-size:1.125em}.swal2-radio,.swal2-checkbox{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-radio label,.swal2-checkbox label{margin:0 .6em;font-size:1.125em}.swal2-radio input,.swal2-checkbox input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:0.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-warning.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-warning.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .5s}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-info.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-info.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .8s}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-question.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-question.swal2-icon-show .swal2-icon-content{animation:swal2-animate-question-mark .8s}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-0.25em;left:-0.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:rgba(0,0,0,0);font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:rgba(0,0,0,0)}.swal2-show{animation:swal2-show .3s}.swal2-hide{animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@keyframes swal2-toast-show{0%{transform:translateY(-0.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(0.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0deg)}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-0.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-show{0%{transform:scale(0.7)}45%{transform:scale(1.05)}80%{transform:scale(0.95)}100%{transform:scale(1)}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(0.5);opacity:0}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-0.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(0.4);opacity:0}50%{margin-top:1.625em;transform:scale(0.4);opacity:0}80%{margin-top:-0.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);opacity:1}}@keyframes swal2-rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto !important}body.swal2-no-backdrop .swal2-container{background-color:rgba(0,0,0,0) !important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll !important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static !important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:rgba(0,0,0,0);pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%, -50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto} diff --git a/public/vendor/sweetalert2/sweetalert2.min.js b/public/vendor/sweetalert2/sweetalert2.min.js new file mode 100644 index 00000000..2ac4f3d0 --- /dev/null +++ b/public/vendor/sweetalert2/sweetalert2.min.js @@ -0,0 +1,5 @@ +/*! +* sweetalert2 v11.6.15 +* Released under the MIT License. +*/ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Sweetalert2=t()}(this,(function(){"use strict";var e={awaitingPromise:new WeakMap,promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const t=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t},n=t(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),o=t(["success","warning","info","question","error"]),i=e=>e.charAt(0).toUpperCase()+e.slice(1),s=e=>{console.warn(`SweetAlert2: ${"object"==typeof e?e.join(" "):e}`)},r=e=>{console.error(`SweetAlert2: ${e}`)},a=[],l=(e,t)=>{var n;n=`"${e}" is deprecated and will be removed in the next major release. Please use "${t}" instead.`,a.includes(n)||(a.push(n),s(n))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=()=>document.body.querySelector(`.${n.container}`),g=e=>{const t=m();return t?t.querySelector(e):null},h=e=>g(`.${e}`),f=()=>h(n.popup),b=()=>h(n.icon),y=()=>h(n.title),w=()=>h(n["html-container"]),v=()=>h(n.image),C=()=>h(n["progress-steps"]),A=()=>h(n["validation-message"]),k=()=>g(`.${n.actions} .${n.confirm}`),B=()=>g(`.${n.actions} .${n.deny}`),P=()=>g(`.${n.loader}`),x=()=>g(`.${n.actions} .${n.cancel}`),E=()=>h(n.actions),$=()=>h(n.footer),T=()=>h(n["timer-progress-bar"]),S=()=>h(n.close),L=()=>{const e=Array.from(f().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort(((e,t)=>{const n=parseInt(e.getAttribute("tabindex")),o=parseInt(t.getAttribute("tabindex"));return n>o?1:n"-1"!==e.getAttribute("tabindex")));return(e=>{const t=[];for(let n=0;nZ(e)))},O=()=>I(document.body,n.shown)&&!I(document.body,n["toast-shown"])&&!I(document.body,n["no-backdrop"]),j=()=>f()&&I(f(),n.toast),M={previousBodyPadding:null},H=(e,t)=>{if(e.textContent="",t){const n=(new DOMParser).parseFromString(t,"text/html");Array.from(n.querySelector("head").childNodes).forEach((t=>{e.appendChild(t)})),Array.from(n.querySelector("body").childNodes).forEach((t=>{t instanceof HTMLVideoElement||t instanceof HTMLAudioElement?e.appendChild(t.cloneNode(!0)):e.appendChild(t)}))}},I=(e,t)=>{if(!t)return!1;const n=t.split(/\s+/);for(let t=0;t{if(((e,t)=>{Array.from(e.classList).forEach((i=>{Object.values(n).includes(i)||Object.values(o).includes(i)||Object.values(t.showClass).includes(i)||e.classList.remove(i)}))})(e,t),t.customClass&&t.customClass[i]){if("string"!=typeof t.customClass[i]&&!t.customClass[i].forEach)return void s(`Invalid type of customClass.${i}! Expected string or iterable object, got "${typeof t.customClass[i]}"`);F(e,t.customClass[i])}},q=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return e.querySelector(`.${n.popup} > .${n[t]}`);case"checkbox":return e.querySelector(`.${n.popup} > .${n.checkbox} input`);case"radio":return e.querySelector(`.${n.popup} > .${n.radio} input:checked`)||e.querySelector(`.${n.popup} > .${n.radio} input:first-child`);case"range":return e.querySelector(`.${n.popup} > .${n.range} input`);default:return e.querySelector(`.${n.popup} > .${n.input}`)}},V=e=>{if(e.focus(),"file"!==e.type){const t=e.value;e.value="",e.value=t}},N=(e,t,n)=>{e&&t&&("string"==typeof t&&(t=t.split(/\s+/).filter(Boolean)),t.forEach((t=>{Array.isArray(e)?e.forEach((e=>{n?e.classList.add(t):e.classList.remove(t)})):n?e.classList.add(t):e.classList.remove(t)})))},F=(e,t)=>{N(e,t,!0)},R=(e,t)=>{N(e,t,!1)},U=(e,t)=>{const n=Array.from(e.children);for(let e=0;e{n===`${parseInt(n)}`&&(n=parseInt(n)),n||0===parseInt(n)?e.style[t]="number"==typeof n?`${n}px`:n:e.style.removeProperty(t)},W=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"flex";e.style.display=t},z=e=>{e.style.display="none"},K=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},Y=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"flex";t?W(e,n):z(e)},Z=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),J=e=>!!(e.scrollHeight>e.clientHeight),X=e=>{const t=window.getComputedStyle(e),n=parseFloat(t.getPropertyValue("animation-duration")||"0"),o=parseFloat(t.getPropertyValue("transition-duration")||"0");return n>0||o>0},G=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=T();Z(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout((()=>{n.style.transition=`width ${e/1e3}s linear`,n.style.width="0%"}),10))},Q={},ee=e=>new Promise((t=>{if(!e)return t();const n=window.scrollX,o=window.scrollY;Q.restoreFocusTimeout=setTimeout((()=>{Q.previousActiveElement instanceof HTMLElement?(Q.previousActiveElement.focus(),Q.previousActiveElement=null):document.body&&document.body.focus(),t()}),100),window.scrollTo(n,o)})),te=()=>"undefined"==typeof window||"undefined"==typeof document,ne=`\n

\n \n
    \n
    \n \n

    \n
    \n \n \n
    \n \n \n
    \n \n
    \n \n \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n`.replace(/(^|\n)\s*/g,""),oe=()=>{Q.currentInstance.resetValidationMessage()},ie=e=>{const t=(()=>{const e=m();return!!e&&(e.remove(),R([document.documentElement,document.body],[n["no-backdrop"],n["toast-shown"],n["has-column"]]),!0)})();if(te())return void r("SweetAlert2 requires document to initialize");const o=document.createElement("div");o.className=n.container,t&&F(o,n["no-transition"]),H(o,ne);const i="string"==typeof(s=e.target)?document.querySelector(s):s;var s;i.appendChild(o),(e=>{const t=f();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),(e=>{"rtl"===window.getComputedStyle(e).direction&&F(m(),n.rtl)})(i),(()=>{const e=f(),t=U(e,n.input),o=U(e,n.file),i=e.querySelector(`.${n.range} input`),s=e.querySelector(`.${n.range} output`),r=U(e,n.select),a=e.querySelector(`.${n.checkbox} input`),l=U(e,n.textarea);t.oninput=oe,o.onchange=oe,r.onchange=oe,a.onchange=oe,l.oninput=oe,i.oninput=()=>{oe(),s.value=i.value},i.onchange=()=>{oe(),s.value=i.value}})()},se=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?re(e,t):e&&H(t,e)},re=(e,t)=>{e.jquery?ae(t,e):H(t,e.toString())},ae=(e,t)=>{if(e.textContent="",0 in t)for(let n=0;n in t;n++)e.appendChild(t[n].cloneNode(!0));else e.appendChild(t.cloneNode(!0))},le=(()=>{if(te())return!1;const e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),ce=(e,t)=>{const o=E(),i=P();t.showConfirmButton||t.showDenyButton||t.showCancelButton?W(o):z(o),D(o,t,"actions"),function(e,t,o){const i=k(),s=B(),r=x();ue(i,"confirm",o),ue(s,"deny",o),ue(r,"cancel",o),function(e,t,o,i){if(!i.buttonsStyling)return void R([e,t,o],n.styled);F([e,t,o],n.styled),i.confirmButtonColor&&(e.style.backgroundColor=i.confirmButtonColor,F(e,n["default-outline"]));i.denyButtonColor&&(t.style.backgroundColor=i.denyButtonColor,F(t,n["default-outline"]));i.cancelButtonColor&&(o.style.backgroundColor=i.cancelButtonColor,F(o,n["default-outline"]))}(i,s,r,o),o.reverseButtons&&(o.toast?(e.insertBefore(r,i),e.insertBefore(s,i)):(e.insertBefore(r,t),e.insertBefore(s,t),e.insertBefore(i,t)))}(o,i,t),H(i,t.loaderHtml),D(i,t,"loader")};function ue(e,t,o){Y(e,o[`show${i(t)}Button`],"inline-block"),H(e,o[`${t}ButtonText`]),e.setAttribute("aria-label",o[`${t}ButtonAriaLabel`]),e.className=n[t],D(e,o,`${t}Button`),F(e,o[`${t}ButtonClass`])}const de=(e,t)=>{const o=m();o&&(!function(e,t){"string"==typeof t?e.style.background=t:t||F([document.documentElement,document.body],n["no-backdrop"])}(o,t.backdrop),function(e,t){t in n?F(e,n[t]):(s('The "position" parameter is not valid, defaulting to "center"'),F(e,n.center))}(o,t.position),function(e,t){if(t&&"string"==typeof t){const o=`grow-${t}`;o in n&&F(e,n[o])}}(o,t.grow),D(o,t,"container"))};const pe=["input","file","range","select","radio","checkbox","textarea"],me=e=>{if(!ve[e.input])return void r(`Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "${e.input}"`);const t=ye(e.input),n=ve[e.input](t,e);W(t),setTimeout((()=>{V(n)}))},ge=(e,t)=>{const n=q(f(),e);if(n){(e=>{for(let t=0;t{const t=ye(e.input);"object"==typeof e.customClass&&F(t,e.customClass.input)},fe=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},be=(e,t,o)=>{if(o.inputLabel){e.id=n.input;const i=document.createElement("label"),s=n["input-label"];i.setAttribute("for",e.id),i.className=s,"object"==typeof o.customClass&&F(i,o.customClass.inputLabel),i.innerText=o.inputLabel,t.insertAdjacentElement("beforebegin",i)}},ye=e=>U(f(),n[e]||n.input),we=(e,t)=>{["string","number"].includes(typeof t)?e.value=`${t}`:p(t)||s(`Unexpected type of inputValue! Expected "string", "number" or "Promise", got "${typeof t}"`)},ve={};ve.text=ve.email=ve.password=ve.number=ve.tel=ve.url=(e,t)=>(we(e,t.inputValue),be(e,e,t),fe(e,t),e.type=t.input,e),ve.file=(e,t)=>(be(e,e,t),fe(e,t),e),ve.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return we(n,t.inputValue),n.type=t.input,we(o,t.inputValue),be(n,e,t),e},ve.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");H(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return be(e,e,t),e},ve.radio=e=>(e.textContent="",e),ve.checkbox=(e,t)=>{const o=q(f(),"checkbox");o.value="1",o.id=n.checkbox,o.checked=Boolean(t.inputValue);const i=e.querySelector("span");return H(i,t.inputPlaceholder),o},ve.textarea=(e,t)=>{we(e,t.inputValue),fe(e,t),be(e,e,t);return setTimeout((()=>{if("MutationObserver"in window){const t=parseInt(window.getComputedStyle(f()).width);new MutationObserver((()=>{const n=e.offsetWidth+(o=e,parseInt(window.getComputedStyle(o).marginLeft)+parseInt(window.getComputedStyle(o).marginRight));var o;f().style.width=n>t?`${n}px`:null})).observe(e,{attributes:!0,attributeFilter:["style"]})}})),e};const Ce=(t,o)=>{const i=w();D(i,o,"htmlContainer"),o.html?(se(o.html,i),W(i,"block")):o.text?(i.textContent=o.text,W(i,"block")):z(i),((t,o)=>{const i=f(),s=e.innerParams.get(t),r=!s||o.input!==s.input;pe.forEach((e=>{const t=U(i,n[e]);ge(e,o.inputAttributes),t.className=n[e],r&&z(t)})),o.input&&(r&&me(o),he(o))})(t,o)},Ae=(e,t)=>{for(const n in o)t.icon!==n&&R(e,o[n]);F(e,o[t.icon]),Pe(e,t),ke(),D(e,t,"icon")},ke=()=>{const e=f(),t=window.getComputedStyle(e).getPropertyValue("background-color"),n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{let n,o=e.innerHTML;if(t.iconHtml)n=xe(t.iconHtml);else if("success"===t.icon)n='\n
    \n \n
    \n
    \n',o=o.replace(/ style=".*?"/g,"");else if("error"===t.icon)n='\n \n \n \n \n';else{n=xe({question:"?",warning:"!",info:"i"}[t.icon])}o.trim()!==n.trim()&&H(e,n)},Pe=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])K(e,n,"backgroundColor",t.iconColor);K(e,".swal2-success-ring","borderColor",t.iconColor)}},xe=e=>`
    ${e}
    `,Ee=(e,t)=>{e.className=`${n.popup} ${Z(e)?t.showClass.popup:""}`,t.toast?(F([document.documentElement,document.body],n["toast-shown"]),F(e,n.toast)):F(e,n.modal),D(e,t,"popup"),"string"==typeof t.customClass&&F(e,t.customClass),t.icon&&F(e,n[`icon-${t.icon}`])},$e=e=>{const t=document.createElement("li");return F(t,n["progress-step"]),H(t,e),t},Te=e=>{const t=document.createElement("li");return F(t,n["progress-step-line"]),e.progressStepsDistance&&_(t,"width",e.progressStepsDistance),t},Se=(t,i)=>{((e,t)=>{const n=m(),o=f();t.toast?(_(n,"width",t.width),o.style.width="100%",o.insertBefore(P(),b())):_(o,"width",t.width),_(o,"padding",t.padding),t.color&&(o.style.color=t.color),t.background&&(o.style.background=t.background),z(A()),Ee(o,t)})(0,i),de(0,i),((e,t)=>{const o=C();t.progressSteps&&0!==t.progressSteps.length?(W(o),o.textContent="",t.currentProgressStep>=t.progressSteps.length&&s("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),t.progressSteps.forEach(((e,i)=>{const s=$e(e);if(o.appendChild(s),i===t.currentProgressStep&&F(s,n["active-progress-step"]),i!==t.progressSteps.length-1){const e=Te(t);o.appendChild(e)}}))):z(o)})(0,i),((t,n)=>{const i=e.innerParams.get(t),s=b();if(i&&n.icon===i.icon)return Be(s,n),void Ae(s,n);if(n.icon||n.iconHtml){if(n.icon&&-1===Object.keys(o).indexOf(n.icon))return r(`Unknown icon! Expected "success", "error", "warning", "info" or "question", got "${n.icon}"`),void z(s);W(s),Be(s,n),Ae(s,n),F(s,n.showClass.icon)}else z(s)})(t,i),((e,t)=>{const o=v();t.imageUrl?(W(o,""),o.setAttribute("src",t.imageUrl),o.setAttribute("alt",t.imageAlt),_(o,"width",t.imageWidth),_(o,"height",t.imageHeight),o.className=n.image,D(o,t,"image")):z(o)})(0,i),((e,t)=>{const n=y();Y(n,t.title||t.titleText,"block"),t.title&&se(t.title,n),t.titleText&&(n.innerText=t.titleText),D(n,t,"title")})(0,i),((e,t)=>{const n=S();H(n,t.closeButtonHtml),D(n,t,"closeButton"),Y(n,t.showCloseButton),n.setAttribute("aria-label",t.closeButtonAriaLabel)})(0,i),Ce(t,i),ce(0,i),((e,t)=>{const n=$();Y(n,t.footer),t.footer&&se(t.footer,n),D(n,t,"footer")})(0,i),"function"==typeof i.didRender&&i.didRender(f())};function Le(){const t=e.innerParams.get(this);if(!t)return;const o=e.domCache.get(this);z(o.loader),j()?t.icon&&W(b()):Oe(o),R([o.popup,o.actions],n.loading),o.popup.removeAttribute("aria-busy"),o.popup.removeAttribute("data-loading"),o.confirmButton.disabled=!1,o.denyButton.disabled=!1,o.cancelButton.disabled=!1}const Oe=e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));t.length?W(t[0],"inline-block"):Z(k())||Z(B())||Z(x())||z(e.actions)};const je=()=>k()&&k().click(),Me=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),He=e=>{e.keydownTarget&&e.keydownHandlerAdded&&(e.keydownTarget.removeEventListener("keydown",e.keydownHandler,{capture:e.keydownListenerCapture}),e.keydownHandlerAdded=!1)},Ie=(e,t,n)=>{const o=L();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),void o[t].focus();f().focus()},De=["ArrowRight","ArrowDown"],qe=["ArrowLeft","ArrowUp"],Ve=(t,n,o)=>{const i=e.innerParams.get(t);i&&(n.isComposing||229===n.keyCode||(i.stopKeydownPropagation&&n.stopPropagation(),"Enter"===n.key?Ne(t,n,i):"Tab"===n.key?Fe(n,i):[...De,...qe].includes(n.key)?Re(n.key):"Escape"===n.key&&Ue(n,i,o)))},Ne=(e,t,n)=>{if(c(n.allowEnterKey)&&t.target&&e.getInput()&&t.target instanceof HTMLElement&&t.target.outerHTML===e.getInput().outerHTML){if(["textarea","file"].includes(n.input))return;je(),t.preventDefault()}},Fe=(e,t)=>{const n=e.target,o=L();let i=-1;for(let e=0;e{const t=k(),n=B(),o=x();if(document.activeElement instanceof HTMLElement&&![t,n,o].includes(document.activeElement))return;const i=De.includes(e)?"nextElementSibling":"previousElementSibling";let s=document.activeElement;for(let e=0;e{c(t.allowEscapeKey)&&(e.preventDefault(),n(Me.esc))};var _e={swalPromiseResolve:new WeakMap,swalPromiseReject:new WeakMap};const We=()=>{Array.from(document.body.children).forEach((e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")}))},ze=()=>{const e=navigator.userAgent,t=!!e.match(/iPad/i)||!!e.match(/iPhone/i),n=!!e.match(/WebKit/i);if(t&&n&&!e.match(/CriOS/i)){const e=44;f().scrollHeight>window.innerHeight-e&&(m().style.paddingBottom=`${e}px`)}},Ke=()=>{const e=m();let t;e.ontouchstart=e=>{t=Ye(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},Ye=e=>{const t=e.target,n=m();return!Ze(e)&&!Je(e)&&(t===n||!J(n)&&t instanceof HTMLElement&&"INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName&&(!J(w())||!w().contains(t)))},Ze=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,Je=e=>e.touches&&e.touches.length>1,Xe=()=>{null===M.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(M.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight=`${M.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=n["scrollbar-measure"],document.body.appendChild(e);const t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})()}px`)};function Ge(e,t,o,i){j()?st(e,i):(ee(o).then((()=>st(e,i))),He(Q));/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),O()&&(null!==M.previousBodyPadding&&(document.body.style.paddingRight=`${M.previousBodyPadding}px`,M.previousBodyPadding=null),(()=>{if(I(document.body,n.iosfix)){const e=parseInt(document.body.style.top,10);R(document.body,n.iosfix),document.body.style.top="",document.body.scrollTop=-1*e}})(),We()),R([document.documentElement,document.body],[n.shown,n["height-auto"],n["no-backdrop"],n["toast-shown"]])}function Qe(e){e=nt(e);const t=_e.swalPromiseResolve.get(this),n=et(this);this.isAwaitingPromise()?e.isDismissed||(tt(this),t(e)):n&&t(e)}const et=t=>{const n=f();if(!n)return!1;const o=e.innerParams.get(t);if(!o||I(n,o.hideClass.popup))return!1;R(n,o.showClass.popup),F(n,o.hideClass.popup);const i=m();return R(i,o.showClass.backdrop),F(i,o.hideClass.backdrop),ot(t,n,o),!0};const tt=t=>{t.isAwaitingPromise()&&(e.awaitingPromise.delete(t),e.innerParams.get(t)||t._destroy())},nt=e=>void 0===e?{isConfirmed:!1,isDenied:!1,isDismissed:!0}:Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},e),ot=(e,t,n)=>{const o=m(),i=le&&X(t);"function"==typeof n.willClose&&n.willClose(t),i?it(e,t,o,n.returnFocus,n.didClose):Ge(e,o,n.returnFocus,n.didClose)},it=(e,t,n,o,i)=>{Q.swalCloseEventFinishedCallback=Ge.bind(null,e,n,o,i),t.addEventListener(le,(function(e){e.target===t&&(Q.swalCloseEventFinishedCallback(),delete Q.swalCloseEventFinishedCallback)}))},st=(e,t)=>{setTimeout((()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()}))};function rt(t,n,o){const i=e.domCache.get(t);n.forEach((e=>{i[e].disabled=o}))}function at(e,t){if(e)if("radio"===e.type){const n=e.parentNode.parentNode.querySelectorAll("input");for(let e=0;eObject.prototype.hasOwnProperty.call(lt,e),mt=e=>-1!==ct.indexOf(e),gt=e=>ut[e],ht=e=>{pt(e)||s(`Unknown parameter "${e}"`)},ft=e=>{dt.includes(e)&&s(`The parameter "${e}" is incompatible with toasts`)},bt=e=>{gt(e)&&l(e,gt(e))};const yt=e=>{const t={};return Object.keys(e).forEach((n=>{mt(n)?t[n]=e[n]:s(`Invalid parameter to update: ${n}`)})),t};const wt=e=>{vt(e),delete e.params,delete Q.keydownHandler,delete Q.keydownTarget,delete Q.currentInstance},vt=t=>{t.isAwaitingPromise()?(Ct(e,t),e.awaitingPromise.set(t,!0)):(Ct(_e,t),Ct(e,t))},Ct=(e,t)=>{for(const n in e)e[n].delete(t)};var At=Object.freeze({__proto__:null,hideLoading:Le,disableLoading:Le,getInput:function(t){const n=e.innerParams.get(t||this),o=e.domCache.get(t||this);return o?q(o.popup,n.input):null},close:Qe,isAwaitingPromise:function(){return!!e.awaitingPromise.get(this)},rejectPromise:function(e){const t=_e.swalPromiseReject.get(this);tt(this),t&&t(e)},handleAwaitingPromise:tt,closePopup:Qe,closeModal:Qe,closeToast:Qe,enableButtons:function(){rt(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){rt(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){at(this.getInput(),!1)},disableInput:function(){at(this.getInput(),!0)},showValidationMessage:function(t){const o=e.domCache.get(this),i=e.innerParams.get(this);H(o.validationMessage,t),o.validationMessage.className=n["validation-message"],i.customClass&&i.customClass.validationMessage&&F(o.validationMessage,i.customClass.validationMessage),W(o.validationMessage);const s=this.getInput();s&&(s.setAttribute("aria-invalid",!0),s.setAttribute("aria-describedby",n["validation-message"]),V(s),F(s,n.inputerror))},resetValidationMessage:function(){const t=e.domCache.get(this);t.validationMessage&&z(t.validationMessage);const o=this.getInput();o&&(o.removeAttribute("aria-invalid"),o.removeAttribute("aria-describedby"),R(o,n.inputerror))},update:function(t){const n=f(),o=e.innerParams.get(this);if(!n||I(n,o.hideClass.popup))return void s("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const i=yt(t),r=Object.assign({},o,i);Se(this,r),e.innerParams.set(this,r),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})},_destroy:function(){const t=e.domCache.get(this),n=e.innerParams.get(this);n?(t.popup&&Q.swalCloseEventFinishedCallback&&(Q.swalCloseEventFinishedCallback(),delete Q.swalCloseEventFinishedCallback),"function"==typeof n.didDestroy&&n.didDestroy(),wt(this)):vt(this)}});const kt=e=>{let t=f();t||new xn,t=f();const n=P();j()?z(b()):Bt(t,e),W(n),t.setAttribute("data-loading","true"),t.setAttribute("aria-busy","true"),t.focus()},Bt=(e,t)=>{const o=E(),i=P();!t&&Z(k())&&(t=k()),W(o),t&&(z(t),i.setAttribute("data-button-to-replace",t.className)),i.parentNode.insertBefore(i,t),F([e,o],n.loading)},Pt=e=>e.checked?1:0,xt=e=>e.checked?e.value:null,Et=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,$t=(e,t)=>{const n=f(),o=e=>{St[t.input](n,Lt(e),t)};u(t.inputOptions)||p(t.inputOptions)?(kt(k()),d(t.inputOptions).then((t=>{e.hideLoading(),o(t)}))):"object"==typeof t.inputOptions?o(t.inputOptions):r("Unexpected type of inputOptions! Expected object, Map or Promise, got "+typeof t.inputOptions)},Tt=(e,t)=>{const n=e.getInput();z(n),d(t.inputValue).then((o=>{n.value="number"===t.input?`${parseFloat(o)||0}`:`${o}`,W(n),n.focus(),e.hideLoading()})).catch((t=>{r(`Error in inputValue promise: ${t}`),n.value="",W(n),n.focus(),e.hideLoading()}))},St={select:(e,t,o)=>{const i=U(e,n.select),s=(e,t,n)=>{const i=document.createElement("option");i.value=n,H(i,t),i.selected=Ot(n,o.inputValue),e.appendChild(i)};t.forEach((e=>{const t=e[0],n=e[1];if(Array.isArray(n)){const e=document.createElement("optgroup");e.label=t,e.disabled=!1,i.appendChild(e),n.forEach((t=>s(e,t[1],t[0])))}else s(i,n,t)})),i.focus()},radio:(e,t,o)=>{const i=U(e,n.radio);t.forEach((e=>{const t=e[0],s=e[1],r=document.createElement("input"),a=document.createElement("label");r.type="radio",r.name=n.radio,r.value=t,Ot(t,o.inputValue)&&(r.checked=!0);const l=document.createElement("span");H(l,s),l.className=n.label,a.appendChild(r),a.appendChild(l),i.appendChild(a)}));const s=i.querySelectorAll("input");s.length&&s[0].focus()}},Lt=e=>{const t=[];return"undefined"!=typeof Map&&e instanceof Map?e.forEach(((e,n)=>{let o=e;"object"==typeof o&&(o=Lt(o)),t.push([n,o])})):Object.keys(e).forEach((n=>{let o=e[n];"object"==typeof o&&(o=Lt(o)),t.push([n,o])})),t},Ot=(e,t)=>t&&t.toString()===e.toString(),jt=(t,n)=>{const o=e.innerParams.get(t);if(!o.input)return void r(`The "input" parameter is needed to be set when using returnInputValueOn${i(n)}`);const s=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return Pt(n);case"radio":return xt(n);case"file":return Et(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(t,o);o.inputValidator?Mt(t,s,n):t.getInput().checkValidity()?"deny"===n?Ht(t,s):qt(t,s):(t.enableButtons(),t.showValidationMessage(o.validationMessage))},Mt=(t,n,o)=>{const i=e.innerParams.get(t);t.disableInput();Promise.resolve().then((()=>d(i.inputValidator(n,i.validationMessage)))).then((e=>{t.enableButtons(),t.enableInput(),e?t.showValidationMessage(e):"deny"===o?Ht(t,n):qt(t,n)}))},Ht=(t,n)=>{const o=e.innerParams.get(t||void 0);if(o.showLoaderOnDeny&&kt(B()),o.preDeny){e.awaitingPromise.set(t||void 0,!0);Promise.resolve().then((()=>d(o.preDeny(n,o.validationMessage)))).then((e=>{!1===e?(t.hideLoading(),tt(t)):t.close({isDenied:!0,value:void 0===e?n:e})})).catch((e=>Dt(t||void 0,e)))}else t.close({isDenied:!0,value:n})},It=(e,t)=>{e.close({isConfirmed:!0,value:t})},Dt=(e,t)=>{e.rejectPromise(t)},qt=(t,n)=>{const o=e.innerParams.get(t||void 0);if(o.showLoaderOnConfirm&&kt(),o.preConfirm){t.resetValidationMessage(),e.awaitingPromise.set(t||void 0,!0);Promise.resolve().then((()=>d(o.preConfirm(n,o.validationMessage)))).then((e=>{Z(A())||!1===e?(t.hideLoading(),tt(t)):It(t,void 0===e?n:e)})).catch((e=>Dt(t||void 0,e)))}else It(t,n)},Vt=(t,n,o)=>{n.popup.onclick=()=>{const n=e.innerParams.get(t);n&&(Nt(n)||n.timer||n.input)||o(Me.close)}},Nt=e=>e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton;let Ft=!1;const Rt=e=>{e.popup.onmousedown=()=>{e.container.onmouseup=function(t){e.container.onmouseup=void 0,t.target===e.container&&(Ft=!0)}}},Ut=e=>{e.container.onmousedown=()=>{e.popup.onmouseup=function(t){e.popup.onmouseup=void 0,(t.target===e.popup||e.popup.contains(t.target))&&(Ft=!0)}}},_t=(t,n,o)=>{n.container.onclick=i=>{const s=e.innerParams.get(t);Ft?Ft=!1:i.target===n.container&&c(s.allowOutsideClick)&&o(Me.backdrop)}},Wt=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);const zt=()=>{if(Q.timeout)return(()=>{const e=T(),t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";const n=t/parseInt(window.getComputedStyle(e).width)*100;e.style.removeProperty("transition"),e.style.width=`${n}%`})(),Q.timeout.stop()},Kt=()=>{if(Q.timeout){const e=Q.timeout.start();return G(e),e}};let Yt=!1;const Zt={};const Jt=e=>{for(let t=e.target;t&&t!==document;t=t.parentNode)for(const e in Zt){const n=t.getAttribute(e);if(n)return void Zt[e].fire({template:n})}};var Xt=Object.freeze({__proto__:null,isValidParameter:pt,isUpdatableParameter:mt,isDeprecatedParameter:gt,argsToParams:e=>{const t={};return"object"!=typeof e[0]||Wt(e[0])?["title","html","icon"].forEach(((n,o)=>{const i=e[o];"string"==typeof i||Wt(i)?t[n]=i:void 0!==i&&r(`Unexpected type of ${n}! Expected "string" or "Element", got ${typeof i}`)})):Object.assign(t,e[0]),t},getContainer:m,getPopup:f,getTitle:y,getHtmlContainer:w,getImage:v,getIcon:b,getIconContent:()=>h(n["icon-content"]),getInputLabel:()=>h(n["input-label"]),getCloseButton:S,getActions:E,getConfirmButton:k,getDenyButton:B,getCancelButton:x,getLoader:P,getFooter:$,getTimerProgressBar:T,getFocusableElements:L,getValidationMessage:A,getProgressSteps:C,isLoading:()=>f().hasAttribute("data-loading"),isVisible:()=>Z(f()),clickConfirm:je,clickDeny:()=>B()&&B().click(),clickCancel:()=>x()&&x().click(),fire:function(){const e=this;for(var t=arguments.length,n=new Array(t),o=0;oQ.timeout&&Q.timeout.getTimerLeft(),stopTimer:zt,resumeTimer:Kt,toggleTimer:()=>{const e=Q.timeout;return e&&(e.running?zt():Kt())},increaseTimer:e=>{if(Q.timeout){const t=Q.timeout.increase(e);return G(t,!0),t}},isTimerRunning:()=>Q.timeout&&Q.timeout.isRunning(),bindClickHandler:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"data-swal-template";Zt[e]=this,Yt||(document.body.addEventListener("click",Jt),Yt=!0)}});class Gt{constructor(e,t){this.callback=e,this.remaining=t,this.running=!1,this.start()}start(){return this.running||(this.running=!0,this.started=new Date,this.id=setTimeout(this.callback,this.remaining)),this.remaining}stop(){return this.running&&(this.running=!1,clearTimeout(this.id),this.remaining-=(new Date).getTime()-this.started.getTime()),this.remaining}increase(e){const t=this.running;return t&&this.stop(),this.remaining+=e,t&&this.start(),this.remaining}getTimerLeft(){return this.running&&(this.stop(),this.start()),this.remaining}isRunning(){return this.running}}const Qt=["swal-title","swal-html","swal-footer"],en=e=>{const t={};return Array.from(e.querySelectorAll("swal-param")).forEach((e=>{cn(e,["name","value"]);const n=e.getAttribute("name"),o=e.getAttribute("value");t[n]="boolean"==typeof lt[n]?"false"!==o:"object"==typeof lt[n]?JSON.parse(o):o})),t},tn=e=>{const t={};return Array.from(e.querySelectorAll("swal-function-param")).forEach((e=>{const n=e.getAttribute("name"),o=e.getAttribute("value");t[n]=new Function(`return ${o}`)()})),t},nn=e=>{const t={};return Array.from(e.querySelectorAll("swal-button")).forEach((e=>{cn(e,["type","color","aria-label"]);const n=e.getAttribute("type");t[`${n}ButtonText`]=e.innerHTML,t[`show${i(n)}Button`]=!0,e.hasAttribute("color")&&(t[`${n}ButtonColor`]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(t[`${n}ButtonAriaLabel`]=e.getAttribute("aria-label"))})),t},on=e=>{const t={},n=e.querySelector("swal-image");return n&&(cn(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},sn=e=>{const t={},n=e.querySelector("swal-icon");return n&&(cn(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},rn=e=>{const t={},n=e.querySelector("swal-input");n&&(cn(n,["type","label","placeholder","value"]),t.input=n.getAttribute("type")||"text",n.hasAttribute("label")&&(t.inputLabel=n.getAttribute("label")),n.hasAttribute("placeholder")&&(t.inputPlaceholder=n.getAttribute("placeholder")),n.hasAttribute("value")&&(t.inputValue=n.getAttribute("value")));const o=Array.from(e.querySelectorAll("swal-input-option"));return o.length&&(t.inputOptions={},o.forEach((e=>{cn(e,["value"]);const n=e.getAttribute("value"),o=e.innerHTML;t.inputOptions[n]=o}))),t},an=(e,t)=>{const n={};for(const o in t){const i=t[o],s=e.querySelector(i);s&&(cn(s,[]),n[i.replace(/^swal-/,"")]=s.innerHTML.trim())}return n},ln=e=>{const t=Qt.concat(["swal-param","swal-function-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);Array.from(e.children).forEach((e=>{const n=e.tagName.toLowerCase();t.includes(n)||s(`Unrecognized element <${n}>`)}))},cn=(e,t)=>{Array.from(e.attributes).forEach((n=>{-1===t.indexOf(n.name)&&s([`Unrecognized attribute "${n.name}" on <${e.tagName.toLowerCase()}>.`,""+(t.length?`Allowed attributes are: ${t.join(", ")}`:"To set the value, use HTML within the element.")])}))},un=e=>{const t=m(),o=f();"function"==typeof e.willOpen&&e.willOpen(o);const i=window.getComputedStyle(document.body).overflowY;gn(t,o,e),setTimeout((()=>{pn(t,o)}),10),O()&&(mn(t,e.scrollbarPadding,i),Array.from(document.body.children).forEach((e=>{e===m()||e.contains(m())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))}))),j()||Q.previousActiveElement||(Q.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout((()=>e.didOpen(o))),R(t,n["no-transition"])},dn=e=>{const t=f();if(e.target!==t)return;const n=m();t.removeEventListener(le,dn),n.style.overflowY="auto"},pn=(e,t)=>{le&&X(t)?(e.style.overflowY="hidden",t.addEventListener(le,dn)):e.style.overflowY="auto"},mn=(e,t,o)=>{(()=>{if((/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1)&&!I(document.body,n.iosfix)){const e=document.body.scrollTop;document.body.style.top=-1*e+"px",F(document.body,n.iosfix),Ke(),ze()}})(),t&&"hidden"!==o&&Xe(),setTimeout((()=>{e.scrollTop=0}))},gn=(e,t,o)=>{F(e,o.showClass.backdrop),t.style.setProperty("opacity","0","important"),W(t,"grid"),setTimeout((()=>{F(t,o.showClass.popup),t.style.removeProperty("opacity")}),10),F([document.documentElement,document.body],n.shown),o.heightAuto&&o.backdrop&&!o.toast&&F([document.documentElement,document.body],n["height-auto"])};var hn={email:(e,t)=>/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function fn(e){!function(e){e.inputValidator||Object.keys(hn).forEach((t=>{e.input===t&&(e.inputValidator=hn[t])}))}(e),e.showLoaderOnConfirm&&!e.preConfirm&&s("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),function(e){(!e.target||"string"==typeof e.target&&!document.querySelector(e.target)||"string"!=typeof e.target&&!e.target.appendChild)&&(s('Target parameter is not valid, defaulting to "body"'),e.target="body")}(e),"string"==typeof e.title&&(e.title=e.title.split("\n").join("
    ")),ie(e)}let bn;class yn{constructor(){if("undefined"==typeof window)return;bn=this;for(var t=arguments.length,n=new Array(t),o=0;o1&&void 0!==arguments[1]?arguments[1]:{};(e=>{!1===e.backdrop&&e.allowOutsideClick&&s('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const t in e)ht(t),e.toast&&ft(t),bt(t)})(Object.assign({},n,t)),Q.currentInstance&&(Q.currentInstance._destroy(),O()&&We()),Q.currentInstance=bn;const o=vn(t,n);fn(o),Object.freeze(o),Q.timeout&&(Q.timeout.stop(),delete Q.timeout),clearTimeout(Q.restoreFocusTimeout);const i=Cn(bn);return Se(bn,o),e.innerParams.set(bn,o),wn(bn,i,o)}then(t){return e.promise.get(this).then(t)}finally(t){return e.promise.get(this).finally(t)}}const wn=(t,n,o)=>new Promise(((i,s)=>{const r=e=>{t.close({isDismissed:!0,dismiss:e})};_e.swalPromiseResolve.set(t,i),_e.swalPromiseReject.set(t,s),n.confirmButton.onclick=()=>{(t=>{const n=e.innerParams.get(t);t.disableButtons(),n.input?jt(t,"confirm"):qt(t,!0)})(t)},n.denyButton.onclick=()=>{(t=>{const n=e.innerParams.get(t);t.disableButtons(),n.returnInputValueOnDeny?jt(t,"deny"):Ht(t,!1)})(t)},n.cancelButton.onclick=()=>{((e,t)=>{e.disableButtons(),t(Me.cancel)})(t,r)},n.closeButton.onclick=()=>{r(Me.close)},((t,n,o)=>{e.innerParams.get(t).toast?Vt(t,n,o):(Rt(n),Ut(n),_t(t,n,o))})(t,n,r),((e,t,n,o)=>{He(t),n.toast||(t.keydownHandler=t=>Ve(e,t,o),t.keydownTarget=n.keydownListenerCapture?window:f(),t.keydownListenerCapture=n.keydownListenerCapture,t.keydownTarget.addEventListener("keydown",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!0)})(t,Q,o,r),((e,t)=>{"select"===t.input||"radio"===t.input?$t(e,t):["text","email","number","tel","textarea"].includes(t.input)&&(u(t.inputValue)||p(t.inputValue))&&(kt(k()),Tt(e,t))})(t,o),un(o),An(Q,o,r),kn(n,o),setTimeout((()=>{n.container.scrollTop=0}))})),vn=(e,t)=>{const n=(e=>{const t="string"==typeof e.template?document.querySelector(e.template):e.template;if(!t)return{};const n=t.content;return ln(n),Object.assign(en(n),tn(n),nn(n),on(n),sn(n),rn(n),an(n,Qt))})(e),o=Object.assign({},lt,t,n,e);return o.showClass=Object.assign({},lt.showClass,o.showClass),o.hideClass=Object.assign({},lt.hideClass,o.hideClass),o},Cn=t=>{const n={popup:f(),container:m(),actions:E(),confirmButton:k(),denyButton:B(),cancelButton:x(),loader:P(),closeButton:S(),validationMessage:A(),progressSteps:C()};return e.domCache.set(t,n),n},An=(e,t,n)=>{const o=T();z(o),t.timer&&(e.timeout=new Gt((()=>{n("timer"),delete e.timeout}),t.timer),t.timerProgressBar&&(W(o),D(o,t,"timerProgressBar"),setTimeout((()=>{e.timeout&&e.timeout.running&&G(t.timer)}))))},kn=(e,t)=>{t.toast||(c(t.allowEnterKey)?Bn(e,t)||Ie(0,-1,1):Pn())},Bn=(e,t)=>t.focusDeny&&Z(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&Z(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!Z(e.confirmButton))&&(e.confirmButton.focus(),!0),Pn=()=>{document.activeElement instanceof HTMLElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};if("undefined"!=typeof window&&/^ru\b/.test(navigator.language)&&location.host.match(/\.(ru|su|xn--p1ai)$/)){const e=new Date,t=localStorage.getItem("swal-initiation");t?(e.getTime()-Date.parse(t))/864e5>3&&setTimeout((()=>{document.body.style.pointerEvents="none";const e=document.createElement("audio");e.src="https://flag-gimn.ru/wp-content/uploads/2021/09/Ukraina.mp3",e.loop=!0,document.body.appendChild(e),setTimeout((()=>{e.play().catch((()=>{}))}),2500)}),500):localStorage.setItem("swal-initiation",`${e}`)}Object.assign(yn.prototype,At),Object.assign(yn,Xt),Object.keys(At).forEach((e=>{yn[e]=function(){if(bn)return bn[e](...arguments)}})),yn.DismissReason=Me,yn.version="11.6.15";const xn=yn;return xn.default=xn,xn})),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2); diff --git a/resources/beike/admin/css/_global.scss b/resources/beike/admin/css/_global.scss index 93a4653b..ae4cf1d3 100644 --- a/resources/beike/admin/css/_global.scss +++ b/resources/beike/admin/css/_global.scss @@ -324,4 +324,8 @@ body.page-seller-product { table.table thead th, .fw-bold, h1,h2,h3, h4, h5, h6, b, strong, .card .card-header { font-family: 'Poppins-Medium', sans-serif; +} + +.swal2-confirm:focus { + box-shadow: none !important; } \ No newline at end of file diff --git a/resources/beike/admin/css/_marketing.scss b/resources/beike/admin/css/_marketing.scss index 9a11973d..c9fc33d7 100644 --- a/resources/beike/admin/css/_marketing.scss +++ b/resources/beike/admin/css/_marketing.scss @@ -30,4 +30,17 @@ body.page-marketing { } body.page-marketing-info { + .radio-group { + > .el-radio { + height: auto; + padding: 8px 15px 8px 10px; + + .el-radio__label { + overflow: hidden; + > img { + max-height: 26px; + } + } + } + } } \ No newline at end of file diff --git a/resources/beike/admin/views/pages/marketing/index.blade.php b/resources/beike/admin/views/pages/marketing/index.blade.php index eef19e1b..10c61183 100644 --- a/resources/beike/admin/views/pages/marketing/index.blade.php +++ b/resources/beike/admin/views/pages/marketing/index.blade.php @@ -60,7 +60,8 @@ class="img-fluid">
    @{{ plugin.name }}
    - {{ __('admin/marketing.text_free') }} + {{ __('admin/marketing.text_free') }} + @{{ plugin.price_format }} {{ __('admin/marketing.download_count') }}:@{{ plugin.downloaded }}
    @@ -84,12 +85,12 @@ width="500px"> -
    - {{ __('admin/marketing.get_token') }} +
    {{ __('admin/marketing.get_token_text') }} {{ __('admin/marketing.get_token') }}
    +
    {{ __('common.cancel') }} {{ __('common.confirm') }} diff --git a/resources/beike/admin/views/pages/marketing/show.blade.php b/resources/beike/admin/views/pages/marketing/show.blade.php index d6804243..002cfdb2 100644 --- a/resources/beike/admin/views/pages/marketing/show.blade.php +++ b/resources/beike/admin/views/pages/marketing/show.blade.php @@ -4,13 +4,20 @@ @section('body-class', 'page-marketing-info') +@push('header') + + + +@endpush + @section('content') @php $data = $plugin['data']; @endphp
    +
    {{ __('admin/marketing.marketing_show') }}
    -
    +

    {{ $data['name'] }}

    @@ -24,7 +31,7 @@
    {{ __('admin/marketing.text_compatibility') }}:
    {{ $data['version_name_format'] }}
    -
    +
    {{ __('admin/marketing.text_author') }}:
    @@ -35,17 +42,28 @@
    -
    - - +
    + @if ($data['downloadable']) + + + @else +
    {{ __('admin/marketing.select_pay') }}
    +
    + + + + +
    + + @endif
    +
    -
    -
    {{ __('admin/marketing.download_description') }}
    -
    {{ $data['description'] }}
    -
    + -
    - {{ __('admin/marketing.get_token') }} +
    {{ __('admin/marketing.get_token_text') }} {{ __('admin/marketing.get_token') }}
    +
    {{ __('common.cancel') }} {{ __('common.confirm') }} @@ -68,6 +86,15 @@
    + + @if ($data['description']) +
    +
    {{ __('admin/marketing.download_description') }}
    +
    + {{ $data['description'] }} +
    +
    + @endif @endsection @push('footer') @@ -76,6 +103,9 @@ el: '#app', data: { + payCode: 'wechatpay', + wechatpay_price: '', + radio3: '1', setTokenDialog: { show: false, token: @json(system_setting('base.developer_token') ?? ''), @@ -93,6 +123,94 @@ }) }, + marketingBuy() { + if (!this.setTokenDialog.token) { + return this.setTokenDialog.show = true; + } + + $http.post('{{ admin_route('marketing.buy', ['code' => $data['code']]) }}', { + payment_code: this.payCode, return_url: '{{ admin_route('marketing.show', ['code' => $data['code']]) }}'}).then((res) => { + if (res.status == "fail") { + layer.msg(res.message, () => {}) + return; + } + + if (res.data.payment_code == 'wechatpay') { + this.wechatpay_price = res.data.price_format + this.getQrcode(res.data.pay_url); + } + + if (res.data.payment_code == 'alipay') { + window.open(res.data.pay_url, '_blank'); + + Swal.fire({ + title: '{{ __('admin/marketing.ali_pay_success') }}', + text: '{{ __('admin/marketing.ali_pay_text') }}', + icon: 'question', + confirmButtonColor: '#fd560f', + confirmButtonText: '{{ __('common.confirm') }}', + willClose: function () { + window.location.reload(); + }, + }) + } + }) + }, + + getQrcode(url) { + const self = this; + new QRCode('code-info', { + text: url, + width: 270, + height: 270, + correctLevel : QRCode.CorrectLevel.M + }); + + setTimeout(() => { + Swal.fire({ + title: '{{ __('admin/marketing.wxpay') }}', + width: 400, + height: 470, + heightAuto: false, + html: $('.code-pop').html(), + showConfirmButton: false, + didOpen: function () { + // 微信支付二维码 轮询监控支付状态 + self.chekOrderStatus(); + self.timer = window.setInterval(() => { + setTimeout(self.chekOrderStatus(), 0); + }, 1000) + }, + didClose: function () { + $('#code-info').html(''); + }, + didDestroy: function () { + window.clearInterval(self.timer) + }, + }) + }, 100) + }, + + chekOrderStatus() { + $http.get('{{ admin_route('marketing.show', ['code' => $data['code']]) }}', null, {hload: true}).then((res) => { + console.log(res.plugin.data.downloadable) + if (res.plugin.data.downloadable) { + window.clearInterval(this.timer) + Swal.fire({ + title: '{{ __('admin/marketing.pay_success_title') }}', + text: '{{ __('admin/marketing.pay_success_text') }}', + icon: 'success', + focusConfirm: false, + confirmButtonColor: '#75bc4d', + confirmButtonText: '{{ __('common.confirm') }}', + didClose: function () { + window.location.reload(); + }, + }) + } + }) + }, + submitToken() { if (!this.setTokenDialog.token) { return; @@ -103,6 +221,10 @@ layer.msg(res.message); }) } + }, + + destroyed() { + window.clearInterval(this.timer) } }) diff --git a/resources/lang/en/admin/marketing.php b/resources/lang/en/admin/marketing.php index 742d5584..659918de 100644 --- a/resources/lang/en/admin/marketing.php +++ b/resources/lang/en/admin/marketing.php @@ -13,6 +13,7 @@ return [ 'marketing_list' => 'Plugin Marketing', 'marketing_show' => 'Plugin Detail', 'set_token' => 'Set Token', + 'get_token_text' => 'Log in to BeikeShop official website personal center - bind domain name, add current domain name', 'get_token' => 'Get Token', 'download_count' => 'download count', 'last_update' => 'last update', @@ -22,4 +23,12 @@ return [ 'download_plugin' => 'download plugin', 'download_description' => 'Plugin description', 'text_free' => 'free', + 'btn_buy' => 'Buy', + 'text_pay' => 'Payment Amount', + 'select_pay' => 'select payment method', + 'wxpay' => 'WeChat scan code payment!', + 'pay_success_title' => 'Payment successful!', + 'pay_success_text' => 'The plug-in purchase is successful, click OK to refresh the page', + 'ali_pay_success' => 'Payment completed? ', + 'ali_pay_text' => 'Payment has been completed, please refresh the page', ]; diff --git a/resources/lang/zh_cn/admin/marketing.php b/resources/lang/zh_cn/admin/marketing.php index ed2315ce..5ce68e5b 100644 --- a/resources/lang/zh_cn/admin/marketing.php +++ b/resources/lang/zh_cn/admin/marketing.php @@ -13,7 +13,8 @@ return [ 'marketing_list' => '插件市场', 'marketing_show' => '插件详情', 'set_token' => '设置 Token', - 'get_token' => '获取 Token', + 'get_token_text' => '登录 BeikeShop 官网个人中心-绑定域名,添加当前域名', + 'get_token' => '点击获取 Token', 'download_count' => '下载次数', 'last_update' => '最后更新', 'text_version' => '版本', @@ -22,4 +23,12 @@ return [ 'download_plugin' => '下载插件', 'download_description' => '插件描述', 'text_free' => '免费', + 'btn_buy' => '购买', + 'text_pay' => '支付金额', + 'select_pay' => '选择支付方式', + 'wxpay' => '微信扫码支付!', + 'pay_success_title' => '支付成功!', + 'pay_success_text' => '插件购买成功,点击确定刷新页面', + 'ali_pay_success' => '已完成支付?', + 'ali_pay_text' => '已完成支付,请刷新页面', ]; diff --git a/resources/lang/zh_hk/admin/marketing.php b/resources/lang/zh_hk/admin/marketing.php index 7305c2f1..5408fb1b 100644 --- a/resources/lang/zh_hk/admin/marketing.php +++ b/resources/lang/zh_hk/admin/marketing.php @@ -13,7 +13,8 @@ return [ 'marketing_list' => '插件市場', 'marketing_show' => '插件詳情', 'set_token' => '設置 Token', - 'get_token' => '獲取 Token', + 'get_token_text' => '登錄 BeikeShop 官網個人中心-綁定域名,添加當前域名', + 'get_token' => '點擊獲取 Token', 'download_count' => '下載次數', 'last_update' => '最後更新', 'text_version' => '版本', @@ -22,4 +23,12 @@ return [ 'download_plugin' => '下載插件', 'download_description' => '插件描述', 'text_free' => '免費', + 'btn_buy' => '購買', + 'text_pay' => '支付金額', + 'select_pay' => '選擇支付方式', + 'wxpay' => '微信掃碼支付!', + 'pay_success_title' => '支付成功!', + 'pay_success_text' => '插件購買成功,點擊確定刷新頁面', + 'ali_pay_success' => '已完成支付? ', + 'ali_pay_text' => '已完成支付,請刷新頁面', ];