diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index eba99d850..edea8a968 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -155,6 +155,12 @@ class DialogController extends AbstractController $user->task_dialog_id = $dialog->id; $user->save(); } + //去掉标记未读 + $isMarkDialogUser = WebSocketDialogUser::whereDialogId($dialog->id)->whereUserid($user->userid)->whereIsMarkUnread(1)->first(); + if ($isMarkDialogUser) { + $isMarkDialogUser->is_mark_unread = 0; + $isMarkDialogUser->save(); + } // $data = $list->toArray(); if ($list->currentPage() === 1) { @@ -490,4 +496,48 @@ class DialogController extends AbstractController 'top_at' => $dialogUser->top_at?->toDateTimeString(), ]); } + + + /** + * @api {get} api/dialog/msg/mark 13. 消息标记操作 + * + * @apiDescription 需要token身份 + * @apiVersion 1.0.0 + * @apiGroup dialog + * @apiName msg__mark + * + * @apiParam {Number} dialog_id 消息ID + * @apiParam {String} type 类型 + * - read + * - unread + * + * @apiSuccess {Number} ret 返回状态码(1正确、0错误) + * @apiSuccess {String} msg 返回信息(错误描述) + * @apiSuccess {Object} data 返回数据 + */ + public function msg__mark() + { + $user = User::auth(); + $dialogId = intval(Request::input('dialog_id')); + $type = Request::input('type'); + $dialogUser = WebSocketDialogUser::whereUserid($user->userid)->whereDialogId($dialogId)->first(); + if (!$dialogUser) { + return Base::retError("会话不存在"); + } + if ($type == 'read') { + WebSocketDialogMsgRead::whereUserid($user->userid) + ->whereReadAt(null) + ->whereDialogId($dialogId) + ->update( + [ + 'read_at' => Carbon::now() + ]); + $dialogUser->is_mark_unread = 0; + $dialogUser->save(); + } elseif ($type == 'unread') { + $dialogUser->is_mark_unread = 1; + $dialogUser->save(); + } + return Base::retSuccess("success"); + } } diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index bea82db36..ed7c51ab6 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -13,6 +13,7 @@ use App\Models\ProjectInvite; use App\Models\ProjectLog; use App\Models\ProjectTask; use App\Models\ProjectTaskFile; +use App\Models\ProjectTaskFlowChange; use App\Models\ProjectUser; use App\Models\User; use App\Models\WebSocketDialog; @@ -915,6 +916,7 @@ class ProjectController extends AbstractController $time_before = Request::input('time_before'); $complete = Request::input('complete', 'all'); $archived = Request::input('archived', 'no'); + $deleted = Request::input('deleted'); $keys = Request::input('keys'); $sorts = Request::input('sorts'); $keys = is_array($keys) ? $keys : []; @@ -953,7 +955,7 @@ class ProjectController extends AbstractController $builder->whereNotNull('project_tasks.end_at')->where('project_tasks.end_at', '<', Carbon::parse($time_before)); } elseif (is_array($time)) { if (Base::isDateOrTime($time[0]) && Base::isDateOrTime($time[1])) { - $builder->betweenTime(Carbon::parse($time[0])->startOfDay(), Carbon::parse($time[1])->endOfDay()); + $builder->betweenTime(Carbon::parse($time[0])->startOfDay(), Carbon::parse($time[1])->endOfDay(),'taskTime'); } } // @@ -969,6 +971,10 @@ class ProjectController extends AbstractController $builder->whereNull('project_tasks.archived_at'); } // + if ($deleted == 'yes') { + $builder->onlyTrashed(); + } + // foreach ($sorts as $column => $direction) { if (!in_array($column, ['complete_at', 'archived_at', 'end_at'])) continue; if (!in_array($direction, ['asc', 'desc'])) continue; @@ -1013,56 +1019,111 @@ class ProjectController extends AbstractController if (Carbon::parse($time[1])->timestamp - Carbon::parse($time[0])->timestamp > 90 * 86400) { return Base::retError('时间范围限制最大90天'); } - // + $type = Request::input('type','taskTime'); $headings = []; $headings[] = '任务ID'; + $headings[] = '父级任务ID'; + $headings[] = '所属项目'; $headings[] = '任务标题'; - $headings[] = '负责人'; - $headings[] = '创建人'; - $headings[] = '是否完成'; - $headings[] = '完成时间'; - $headings[] = '是否归档'; - $headings[] = '归档时间'; $headings[] = '任务开始时间'; $headings[] = '任务结束时间'; - $headings[] = '结束剩余'; - $headings[] = '所属项目'; - $headings[] = '父级任务ID'; + $headings[] = '完成时间'; + $headings[] = '归档时间'; + $headings[] = '任务计划用时'; + $headings[] = '实际完成用时'; + $headings[] = '超时时间'; + $headings[] = '开发用时'; + $headings[] = '验收/测试用时'; + $headings[] = '负责人'; + $headings[] = '创建人'; $datas = []; // $builder = ProjectTask::select(['project_tasks.*', 'project_task_users.userid as ownerid']) ->join('project_task_users', 'project_tasks.id', '=', 'project_task_users.task_id') ->where('project_task_users.owner', 1) ->whereIn('project_task_users.userid', $userid) - ->betweenTime(Carbon::parse($time[0])->startOfDay(), Carbon::parse($time[1])->endOfDay()); + ->betweenTime(Carbon::parse($time[0])->startOfDay(), Carbon::parse($time[1])->endOfDay(),$type); $builder->orderByDesc('project_tasks.id')->chunk(100, function($tasks) use (&$datas) { /** @var ProjectTask $task */ foreach ($tasks as $task) { + $flowChanges = ProjectTaskFlowChange::whereTaskId($task->id)->get(); + $developTime = 0;//开发时间 + $testTime = 0;//验收/测试时间 + foreach ($flowChanges as $change) { + if (strpos($change->before_flow_item_name, 'end') === false) { + $upOne = ProjectTaskFlowChange::where('id', '<', $change->id)->whereTaskId($task->id)->orderByDesc('id')->first(); + if ($upOne) { + if (strpos($change->before_flow_item_name, 'progress') !== false && strpos($change->before_flow_item_name, '进行') !== false) { + $devCtime = Carbon::parse($change->created_at)->timestamp; + $oCtime = Carbon::parse($upOne->created_at)->timestamp; + $minusNum = $devCtime - $oCtime; + $developTime += $minusNum; + } + if (strpos($change->before_flow_item_name, 'test') !== false || strpos($change->before_flow_item_name, '测试') !== false || strpos($change->before_flow_item_name, '验收') !== false) { + $testCtime = Carbon::parse($change->created_at)->timestamp; + $tTime = Carbon::parse($upOne->created_at)->timestamp; + $tMinusNum = $testCtime - $tTime; + $testTime += $tMinusNum; + } + } + } + } + if (!$task->complete_at) { + $lastChange = ProjectTaskFlowChange::whereTaskId($task->id)->orderByDesc('id')->first(); + $nowTime = time(); + $unFinishTime = $nowTime - Carbon::parse($lastChange->created_at)->timestamp; + if (strpos($lastChange->after_flow_item_name, 'progress') !== false || strpos($lastChange->after_flow_item_name, '进行') !== false) { + $developTime += $unFinishTime; + } elseif (strpos($lastChange->after_flow_item_name, 'test') !== false || strpos($lastChange->after_flow_item_name, '测试') !== false || strpos($lastChange->after_flow_item_name, '验收') !== false) { + $testTime += $unFinishTime; + } + } + $firstChange = ProjectTaskFlowChange::whereTaskId($task->id)->orderBy('id')->first(); + if (strpos($firstChange->after_flow_item_name, 'end') !== false) { + $firstDevTime = Carbon::parse($firstChange->created_at)->timestamp - Carbon::parse($task->created_at)->timestamp; + $developTime += $firstDevTime; + } + if (count($flowChanges) === 0 && $task->start_at) { + $lastTime = $task->complete_at ? Carbon::parse($task->complete_at)->timestamp : time(); + $developTime = $lastTime - Carbon::parse($task->start_at)->timestamp; + } + $totalTime = $developTime + $testTime; //任务总用时 if ($task->complete_at) { $a = Carbon::parse($task->complete_at)->timestamp; - $b = Carbon::parse($task->end_at)->timestamp; - if ($b > $a) { - $endSurplus = Base::timeDiff($a, $b); - } else { - $endSurplus = "-" . Base::timeDiff($b, $a); + if ($task->start_at) { + $b = Carbon::parse($task->start_at)->timestamp; + $totalTime = $a - $b; } - } else { - $endSurplus = '-'; } + $planTime = '-';//任务计划用时 + $overTime = '-';//超时时间 + if ($task->end_at) { + $startTime = Carbon::parse($task->start_at)->timestamp; + $endTime = Carbon::parse($task->end_at)->timestamp; + $planTotalTime = $endTime - $startTime; + $residueTime = $planTotalTime - $totalTime; + if ($residueTime < 0) { + $overTime = Base::timeFormat(abs($residueTime)); + } + $planTime = Base::timeDiff($startTime, $endTime); + } + $actualTime = $task->complete_at ? $totalTime : 0;//实际完成用时 $datas[] = [ $task->id, + $task->parent_id ?: '-', + Base::filterEmoji($task->project?->name) ?: '-', Base::filterEmoji($task->name), - Base::filterEmoji(User::userid2nickname($task->ownerid)) . " (ID: {$task->ownerid})", - Base::filterEmoji(User::userid2nickname($task->userid)) . " (ID: {$task->userid})", - $task->complete_at ? '已完成' : '-', - $task->complete_at ?: '-', - $task->archived_at ? '已归档' : '-', - $task->archived_at ?: '-', $task->start_at ?: '-', $task->end_at ?: '-', - $endSurplus, - Base::filterEmoji($task->project?->name) ?: '-', - $task->parent_id ?: '-', + $task->complete_at ?: '-', + $task->archived_at ?: '-', + $planTime ?: '-', + $actualTime ? Base::timeFormat($actualTime) : '-', + $overTime, + $developTime > 0? Base::timeFormat($developTime) : '-', + $testTime > 0 ? Base::timeFormat($testTime) : '-', + Base::filterEmoji(User::userid2nickname($task->ownerid)) . " (ID: {$task->ownerid})", + Base::filterEmoji(User::userid2nickname($task->userid)) . " (ID: {$task->userid})", ]; } }); @@ -1471,6 +1532,9 @@ class ProjectController extends AbstractController $task_id = intval($data['task_id']); // $task = ProjectTask::userTask($task_id, true, 2); + if ($task->deleted_at) { + throw new ApiException('任务已删除'); + } // 更新任务 $updateMarking = []; $task->updateTask($data, $updateMarking); @@ -1590,8 +1654,21 @@ class ProjectController extends AbstractController User::auth(); // $task_id = intval(Request::input('task_id')); + $type = Request::input('type'); // $task = ProjectTask::userTask($task_id, null, true); + if($type == 'recovery'){ + $task->deleted_at = null; + $task->deleted_userid = 0; + $task->save(); + return Base::retSuccess('操作成功', ['id' => $task->id]); + } + if($type == 'completely_delete'){ + $task->forceDelete(); + return Base::retSuccess('彻底删除成功', ['id' => $task->id]); + } + $task->deleted_userid = User::userid(); + $task->save(); // $task->deleteTask(); return Base::retSuccess('删除成功', ['id' => $task->id]); diff --git a/app/Http/Controllers/Api/SystemController.php b/app/Http/Controllers/Api/SystemController.php index da2163959..56d6e04d7 100755 --- a/app/Http/Controllers/Api/SystemController.php +++ b/app/Http/Controllers/Api/SystemController.php @@ -41,7 +41,7 @@ class SystemController extends AbstractController User::auth('admin'); $all = Request::input(); foreach ($all AS $key => $value) { - if (!in_array($key, ['reg', 'reg_invite', 'login_code', 'password_policy', 'project_invite', 'chat_nickname', 'auto_archived', 'archived_day'])) { + if (!in_array($key, ['reg', 'reg_invite', 'login_code', 'password_policy', 'project_invite', 'chat_nickname', 'auto_archived', 'archived_day', 'start_home', 'home_footer'])) { unset($all[$key]); } } @@ -72,6 +72,7 @@ class SystemController extends AbstractController $setting['chat_nickname'] = $setting['chat_nickname'] ?: 'optional'; $setting['auto_archived'] = $setting['auto_archived'] ?: 'close'; $setting['archived_day'] = floatval($setting['archived_day']) ?: 7; + $setting['start_home'] = $setting['start_home'] ?: 'close'; // return Base::retSuccess('success', $setting ?: json_decode('{}')); } @@ -478,4 +479,79 @@ class SystemController extends AbstractController // return $data; } + + + /** + * @api {get} api/system/get/starthome 13. 启动首页设置信息 + * + * @apiDescription 用于判断注册是否需要启动首页 + * @apiVersion 1.0.0 + * @apiGroup system + * @apiName get__starthome + * + * @apiSuccess {Number} ret 返回状态码(1正确、0错误) + * @apiSuccess {String} msg 返回信息(错误描述) + * @apiSuccess {Object} data 返回数据 + */ + public function get__starthome() + { + return Base::retSuccess('success', [ + 'need_start' => Base::settingFind('system', 'start_home') == 'open', + 'home_footer' => Base::settingFind('system', 'home_footer') + ]); + } + + + /** + * @api {get} api/system/emailSetting 14. 获取邮箱设置、保存邮箱设置 + * + * @apiVersion 1.0.0 + * @apiGroup system + * @apiName emailSetting + * + * @apiParam {String} type + * - get: 获取(默认) + * - all: 获取所有(需要管理员权限) + * - save: 保存设置(参数:smtp_server port account password reg_verify notice task_remind_hours task_remind_hours2) + * @apiSuccess {Number} ret 返回状态码(1正确、0错误) + * @apiSuccess {String} msg 返回信息(错误描述) + * @apiSuccess {Object} data 返回数据 + */ + public function emailSetting() + { + $type = trim(Request::input('type')); + if ($type == 'save') { + if (env("SYSTEM_SETTING") == 'disabled') { + return Base::retError('当前环境禁止修改'); + } + User::auth('admin'); + $all = Request::input(); + foreach ($all as $key => $value) { + if (!in_array($key, ['smtp_server', 'port', 'account', 'password', 'reg_verify', 'notice', 'task_remind_hours', 'task_remind_hours2'])) { + unset($all[$key]); + } + } + $setting = Base::setting('emailSetting', Base::newTrim($all)); + } else { + $setting = Base::setting('emailSetting'); + } + // + if ($type == 'all' || $type == 'save') { + User::auth('admin'); + $setting['reg_invite'] = $setting['reg_invite'] ?: Base::generatePassword(8); + } else { + if (isset($setting['reg_invite'])) unset($setting['reg_invite']); + } + // + $setting['smtp_server'] = $setting['smtp_server'] ?: ''; + $setting['port'] = $setting['port'] ?: ''; + $setting['account'] = $setting['account'] ?: ''; + $setting['password'] = $setting['password'] ?: ''; + $setting['reg_verify'] = $setting['reg_verify'] ?: 'close'; + $setting['notice'] = $setting['notice'] ?: 'open'; + $setting['task_remind_hours'] = floatval($setting['task_remind_hours']) ?: 0; + $setting['task_remind_hours2'] = floatval($setting['task_remind_hours2']) ?: 0; + // + return Base::retSuccess('success', $setting ?: json_decode('{}')); + } } diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 03f921959..ab61b88a2 100755 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -3,12 +3,14 @@ namespace App\Http\Controllers\Api; use App\Models\User; +use App\Models\UserEmailVerification; use App\Module\Base; use Arr; use Cache; use Captcha; use Carbon\Carbon; use Request; +use Validator; /** * @apiDefine users @@ -42,6 +44,7 @@ class UsersController extends AbstractController $type = trim(Request::input('type')); $email = trim(Request::input('email')); $password = trim(Request::input('password')); + $isRegVerify = Base::settingFind('emailSetting', 'reg_verify') === 'open' ? true : false; if ($type == 'reg') { $setting = Base::setting('system'); if ($setting['reg'] == 'close') { @@ -53,6 +56,10 @@ class UsersController extends AbstractController } } $user = User::reg($email, $password); + if ($isRegVerify) { + UserEmailVerification::userEmailSend($user); + return Base::retError('注册成功,请验证邮箱后登录', ['code' => 1000]); + } } else { $needCode = !Base::isError(User::needCode($email)); if ($needCode) { @@ -68,21 +75,25 @@ class UsersController extends AbstractController $retError = function ($msg) use ($email) { Cache::forever("code::" . $email, "need"); $needCode = !Base::isError(User::needCode($email)); - $needData = [ 'code' => $needCode ? 'need' : 'no' ]; + $needData = ['code' => $needCode ? 'need' : 'no']; return Base::retError($msg, $needData); }; $user = User::whereEmail($email)->first(); if (empty($user)) { - return $retError('账号或密码错误'); + return $retError('账号不存在,请确认账号是否输入正确'); } if ($user->password != Base::md52($password, $user->encrypt)) { - return $retError('账号或密码错误'); + return $retError('密码错误,请输入正确密码'); } // if (in_array('disable', $user->identity)) { return $retError('帐号已停用...'); } Cache::forget("code::" . $email); + if ($isRegVerify && $user->is_email_verity === 0) { + UserEmailVerification::userEmailSend($user); + return $retError('请验证邮箱后再登录'); + } } // $array = [ @@ -559,4 +570,53 @@ class UsersController extends AbstractController // return Base::retSuccess('修改成功', $userInfo); } + + /** + * @api {get} api/users/email/verification 13. 邮箱验证 + * + * @apiDescription 不需要token身份 + * @apiVersion 1.0.0 + * @apiGroup users + * @apiName email__verification + * + * @apiParam {String} code 验证参数 + * + * @apiSuccess {Number} ret 返回状态码(1正确、0错误) + * @apiSuccess {String} msg 返回信息(错误描述) + * @apiSuccess {Object} data 返回数据(同"获取我的信息"接口) + */ + public function email__verification() + { + $data = Request::input(); + // 表单验证 + $validator = Validator::make($data, [ + "code" => ["required"], + ], [ + "code.required" => "required字段非法", + ]); + if ($validator->fails()) + return Base::retError($validator->errors()->first()); + $res = UserEmailVerification::where('code', $data['code'])->first(); + if (empty($res)) { + return Base::retError('无效连接,请重新注册'); + } + // 如果已经校验过 + if (intval($res->status) === 1) + return Base::retError('链接已经使用过',['code' => 2]); + + $oldTime = strtotime($res->created_at); + $time = time(); + //24个小时失效 + if (abs($time - $oldTime) > 86400) { + return Base::retError("链接已失效,请重新登录/注册"); + } + UserEmailVerification::where('code', $data['code']) + ->update([ + 'status' => 1 + ]); + User::where('userid', $res->userid)->update([ + 'is_email_verity' => 1 + ]); + return Base::retSuccess('绑定邮箱成功'); + } } diff --git a/app/Http/Controllers/IndexController.php b/app/Http/Controllers/IndexController.php index d5ec0c190..2ad8cb376 100755 --- a/app/Http/Controllers/IndexController.php +++ b/app/Http/Controllers/IndexController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\Module\Base; use App\Tasks\AutoArchivedTask; use App\Tasks\DeleteTmpTask; +use App\Tasks\OverdueRemindEmailTask; use Hhxsv5\LaravelS\Swoole\Task\Task; use Redirect; @@ -61,6 +62,8 @@ class IndexController extends InvokeController Task::deliver(new DeleteTmpTask('tmp', 24)); // 自动归档任务 Task::deliver(new AutoArchivedTask()); + // 任务到期邮件提醒 + Task::deliver(new OverdueRemindEmailTask()); return "success"; } diff --git a/app/Models/Project.php b/app/Models/Project.php index d4dacc17d..ca47d2f2b 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -376,6 +376,7 @@ class Project extends AbstractModel $idc = []; $hasStart = false; $hasEnd = false; + $testNum = 0; $upTaskList = []; foreach ($flows as $item) { $id = intval($item['id']); @@ -416,6 +417,9 @@ class Project extends AbstractModel if ($flow->status == 'end') { $hasEnd = true; } + if ($flow->status == 'test') { + $testNum++; + } if (!$isInsert) { $upTaskList[$flow->id] = $flow->status . "|" . $flow->name; } @@ -424,6 +428,9 @@ class Project extends AbstractModel if (!$hasStart) { throw new ApiException('至少需要1个开始状态'); } + if($testNum > 1){ + throw new ApiException('验收/测试状态只能有1个'); + } if (!$hasEnd) { throw new ApiException('至少需要1个结束状态'); } diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index b5f3e958d..e69c7f8ae 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -7,10 +7,12 @@ use App\Module\Base; use App\Tasks\PushTask; use Arr; use Carbon\Carbon; +use Config; use DB; use Exception; use Hhxsv5\LaravelS\Swoole\Task\Task; use Illuminate\Database\Eloquent\SoftDeletes; +use Mail; use Request; /** @@ -40,6 +42,7 @@ use Request; * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property \Illuminate\Support\Carbon|null $deleted_at + * @property int|null $deleted_userid 删除会员 * @property-read \App\Models\ProjectTaskContent|null $content * @property-read int $file_num * @property-read int $msg_num @@ -58,7 +61,7 @@ use Request; * @property-read int|null $task_user_count * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask allData($userid = null) * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask authData($userid = null, $owner = null) - * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask betweenTime($start, $end) + * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask betweenTime($start, $end, $type) * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask newQuery() * @method static \Illuminate\Database\Query\Builder|ProjectTask onlyTrashed() @@ -71,6 +74,7 @@ use Request; * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereCompleteAt($value) * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereDeletedUserid($value) * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereDesc($value) * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereDialogId($value) * @method static \Illuminate\Database\Eloquent\Builder|ProjectTask whereEndAt($value) @@ -312,18 +316,29 @@ class ProjectTask extends AbstractModel * @param $query * @param $start * @param $end + * @param $type * @return mixed */ - public function scopeBetweenTime($query, $start, $end) + public function scopeBetweenTime($query, $start, $end, $type) { - $query->where(function ($q1) use ($start, $end) { - $q1->where(function ($q2) use ($start) { - $q2->where('project_tasks.start_at', '<=', $start)->where('project_tasks.end_at', '>=', $start); - })->orWhere(function ($q2) use ($end) { - $q2->where('project_tasks.start_at', '<=', $end)->where('project_tasks.end_at', '>=', $end); - })->orWhere(function ($q2) use ($start, $end) { - $q2->where('project_tasks.start_at', '>', $start)->where('project_tasks.end_at', '<', $end); - }); + $query->where(function ($q1) use ($start, $end, $type) { + if ($type === 'taskTime') { + $q1->where(function ($q2) use ($start) { + $q2->where('project_tasks.start_at', '<=', $start)->where('project_tasks.end_at', '>=', $start); + })->orWhere(function ($q2) use ($end) { + $q2->where('project_tasks.start_at', '<=', $end)->where('project_tasks.end_at', '>=', $end); + })->orWhere(function ($q2) use ($start, $end) { + $q2->where('project_tasks.start_at', '>', $start)->where('project_tasks.end_at', '<', $end); + }); + } else { + $q1->where(function ($q2) use ($start) { + $q2->where('project_tasks.created_at', '>=', $start); + })->orWhere(function ($q2) use ($end) { + $q2->where('project_tasks.created_at', '<=', $end); + })->orWhere(function ($q2) use ($start, $end) { + $q2->where('project_tasks.created_at', '>', $start)->where('project_tasks.created_at', '<', $end); + }); + } }); return $query; } @@ -742,6 +757,9 @@ class ProjectTask extends AbstractModel $this->addLog("修改{任务}时间", [ 'change' => [$oldStringAt, $newStringAt] ]); + + //修改计划时间需要重置任务邮件提醒日志 + ProjectTaskMailLog::whereTaskId($this->id)->delete(); } // 以下紧顶级任务可修改 if ($this->parent_id === 0) { @@ -1179,6 +1197,7 @@ class ProjectTask extends AbstractModel public static function userTask($task_id, $archived = true, $permission = 0, $with = []) { $task = self::with($with)->allData()->where("project_tasks.id", intval($task_id))->first(); + $task = $task ?: ProjectTask::where("project_tasks.id", intval($task_id))->onlyTrashed()->first(); // if (empty($task)) { throw new ApiException('任务不存在', [ 'task_id' => $task_id ], -4002); @@ -1211,4 +1230,58 @@ class ProjectTask extends AbstractModel // return $task; } + + /** + * 预超期任务提醒 + * @param $task + */ + public static function overdueRemindEmail($task) + { + $ownerIds = ProjectTaskUser::whereTaskId($task['id'])->whereOwner(1)->pluck('userid')->toArray(); + $users = User::whereIn('userid', $ownerIds)->get(); + if (!$users) { + throw new ApiException("ProjectTask::overdueRemindEmail--没有负责人"); + } + $type = $task['end_at'] < Carbon::now() ? 2 : 1; + $setting = Base::setting('emailSetting'); + $hours = floatval($setting['task_remind_hours']); + $hours2 = floatval($setting['task_remind_hours2']); + $time = $type === 1 ? $hours : $hours2; + Config::set("mail.mailers.smtp.host", Base::settingFind('emailSetting', 'smtp_server') ?: Config::get("mail.mailers.smtp.host")); + Config::set("mail.mailers.smtp.port", Base::settingFind('emailSetting', 'port') ?: Config::get("mail.mailers.smtp.port")); + Config::set("mail.mailers.smtp.username", Base::settingFind('emailSetting', 'account') ?: Config::get("mail.mailers.smtp.username")); + Config::set("mail.mailers.smtp.password", Base::settingFind('emailSetting', 'password') ?: Config::get("mail.mailers.smtp.password")); + foreach ($users as $user) { + /** @var User $user */ + if (ProjectTaskMailLog::whereTaskId($task['id'])->whereUserid($user->userid)->whereType($type)->whereIsSend(1)->exists()) { + return; + } + $email = $user->email; + $isSend = 1; + try { + $emailContent = [ + 'name' => $task['name'], + 'time' => $time, + 'type' => $type + ]; + Mail::send('taskOverdueRemind', $emailContent, function ($m) use ($email) { + $m->from(Config::get("mail.mailers.smtp.username"), env('APP_NAME')); + $m->to($email); + $m->subject("任务提醒"); + }); + } catch (\Exception $e) { + $isSend = 0; + \Log::error($email . '--邮箱发送报错:', [$e->getMessage()]); + } + $logData = [ + 'userid' => $user->userid, + 'task_id' => $task['id'], + 'email' => $email, + 'type' => $type, + 'is_send' => $isSend, + ]; + $emailLog = ProjectTaskMailLog::whereTaskId($task['id'])->whereUserid($user->userid)->whereType($type)->first(); + ProjectTaskMailLog::createInstance($logData, $emailLog->id ?? null)->save(); + } + } } diff --git a/app/Models/ProjectTaskMailLog.php b/app/Models/ProjectTaskMailLog.php new file mode 100644 index 000000000..3d852dcc2 --- /dev/null +++ b/app/Models/ProjectTaskMailLog.php @@ -0,0 +1,43 @@ + 0) { + $isRegVerify = Base::settingFind('emailSetting', 'reg_verify') === 'open' ? true : false; + $user = self::whereUserid(User::email2userid($email))->first(); + if ($isRegVerify && $user->is_email_verity === 0) { + UserEmailVerification::userEmailSend($user); + throw new ApiException('您的账号已注册过,请验证邮箱'); + } throw new ApiException('邮箱地址已存在'); } //密码 diff --git a/app/Models/UserEmailVerification.php b/app/Models/UserEmailVerification.php new file mode 100644 index 000000000..fdb71063a --- /dev/null +++ b/app/Models/UserEmailVerification.php @@ -0,0 +1,79 @@ +userid)->where('created_at', '>', Carbon::now()->subMinutes(1440))->first(); + if ($res) return; + //删除 + self::where('userid', $user->userid)->delete(); + $info['created_at'] = date("Y-m-d H:i:s"); + $info['userid'] = $user->userid; + $info['email'] = $user->email; + $info['code'] = md5(uniqid(md5(microtime(true)), true)) . md5($user->userid . md5('lddsgagsgkdiid' . microtime(true))); + $url = Base::fillUrl('single/valid/email') . '?code=' . $info['code']; + $info['status'] = 0; + $userEmailVerification = self::createInstance($info); + $userEmailVerification->save(); + try { + // 15秒后超时 + Config::set("mail.mailers.smtp.host", Base::settingFind('emailSetting', 'smtp_server') ?: Config::get("mail.mailers.smtp.host")); + Config::set("mail.mailers.smtp.port", Base::settingFind('emailSetting', 'port') ?: Config::get("mail.mailers.smtp.port")); + Config::set("mail.mailers.smtp.username", Base::settingFind('emailSetting', 'account') ?: Config::get("mail.mailers.smtp.username")); + Config::set("mail.mailers.smtp.password", Base::settingFind('emailSetting', 'password') ?: Config::get("mail.mailers.smtp.password")); + Mail::send('email', ['url' => $url], function ($m) use ($user) { + $m->from(Base::settingFind('emailSetting', 'account') ?: Config::get("mail.mailers.smtp.username"), env('APP_NAME')); + $m->to($user->email); + $m->subject("绑定邮箱验证"); + }); + } catch (Exception $exception) { + // 一般是请求超时 + if (strpos($exception->getMessage(), "Timed Out") !== false) { + throw new ApiException("language.TimedOut"); + } elseif ($exception->getCode() == 550) { + throw new ApiException('邮件内容被拒绝,请检查邮箱是否开启接收功能'); + } else { + throw new ApiException($exception->getMessage()); + } + } + } +} diff --git a/app/Models/WebSocketDialog.php b/app/Models/WebSocketDialog.php index 7bd1e98dd..8134dc917 100644 --- a/app/Models/WebSocketDialog.php +++ b/app/Models/WebSocketDialog.php @@ -105,13 +105,16 @@ class WebSocketDialog extends AbstractModel $last_msg = WebSocketDialogMsg::whereDialogId($dialog->id)->orderByDesc('id')->first(); $dialog->last_msg = $last_msg; // 未读信息 - $dialog->unread = WebSocketDialogMsgRead::whereDialogId($dialog->id)->whereUserid($userid)->whereReadAt(null)->count(); + $unread = WebSocketDialogMsgRead::whereDialogId($dialog->id)->whereUserid($userid)->whereReadAt(null)->count(); + $isMarkUnread = WebSocketDialogUser::whereDialogId($dialog->id)->whereUserid($userid)->whereIsMarkUnread(1)->exists(); + $dialog->unread = $unread > 0 ? $unread : ($isMarkUnread ? 1 : 0); // 对话人数 $builder = WebSocketDialogUser::whereDialogId($dialog->id); $dialog->people = $builder->count(); // 对方信息 $dialog->dialog_user = null; $dialog->group_info = null; + $dialog->top_at = $dialog->top_at ?? WebSocketDialogUser::whereDialogId($dialog->id)->whereUserid($userid)->value('top_at'); switch ($dialog->type) { case "user": $dialog_user = $builder->where('userid', '!=', $userid)->first(); diff --git a/app/Models/WebSocketDialogUser.php b/app/Models/WebSocketDialogUser.php index 8b1952f14..2e4e5a6ba 100644 --- a/app/Models/WebSocketDialogUser.php +++ b/app/Models/WebSocketDialogUser.php @@ -9,6 +9,7 @@ namespace App\Models; * @property int|null $dialog_id 对话ID * @property int|null $userid 会员ID * @property string|null $top_at 置顶时间 + * @property int $is_mark_unread 是否标记为未读:0否,1是 * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser newModelQuery() @@ -17,6 +18,7 @@ namespace App\Models; * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser whereDialogId($value) * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser whereIsMarkUnread($value) * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser whereTopAt($value) * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser whereUserid($value) diff --git a/app/Module/Base.php b/app/Module/Base.php index ce48c18f6..338b94fe5 100755 --- a/app/Module/Base.php +++ b/app/Module/Base.php @@ -1712,24 +1712,46 @@ class Base */ public static function timeDiff($s, $e) { - $d = $e - $s; - if ($d > 86400) { - $day = floor($d / 86400); - $hour = ceil(($d - ($day * 86400)) / 3600); - if ($hour > 0) { - return $day . '天' . $hour . '小时'; - } else { - return $day . '天'; - } - } elseif ($d > 3600) { - return ceil($d / 3600) . '小时'; - } elseif ($d > 60) { - return ceil($d / 60) . '分钟'; - } elseif ($d > 1) { - return '1分钟内'; - } else { - return '0秒'; + $time = $e - $s; + $days = 0; + if ($time >= 86400) { // 如果大于1天 + $days = (int)($time / 86400); + $time = $time % 86400; // 计算天后剩余的毫秒数 } + $hours = 0; + if ($time >= 3600) { // 如果大于1小时 + $hours = (int)($time / 3600); + $time = $time % 3600; // 计算小时后剩余的毫秒数 + } + $minutes = ceil($time / 60); // 剩下的毫秒数都算作分 + $daysStr = $days > 0 ? $days . '天' : ''; + $hoursStr = ($hours > 0 || ($days > 0 && $minutes > 0)) ? $hours . '时' : ''; + $minuteStr = ($minutes > 0) ? $minutes . '分' : ''; + return $daysStr . $hoursStr . $minuteStr; + } + + /** + * 时间秒数格式化 + * @param int $time 时间秒数 + * @return string + */ + public static function timeFormat($time) + { + $days = 0; + if ($time >= 86400) { // 如果大于1天 + $days = (int)($time / 86400); + $time = $time % 86400; // 计算天后剩余的毫秒数 + } + $hours = 0; + if ($time >= 3600) { // 如果大于1小时 + $hours = (int)($time / 3600); + $time = $time % 3600; // 计算小时后剩余的毫秒数 + } + $minutes = ceil($time / 60); // 剩下的毫秒数都算作分 + $daysStr = $days > 0 ? $days . '天' : ''; + $hoursStr = ($hours > 0 || ($days > 0 && $minutes > 0)) ? $hours . '时' : ''; + $minuteStr = ($minutes > 0) ? $minutes . '分' : ''; + return $daysStr . $hoursStr . $minuteStr; } /** @@ -2978,4 +3000,112 @@ class Base }, $str); } + //去重复 + public static function assoc_unique($array, $keyid,$desc=true) { + if(empty($array)){ + return false; + } + $array = array_values($array); + //倒叙排列数 + if($desc) + { + $array =(new Self)->array_rsort($array,true); + } + + //提取需要判断的项目变成一维数组 + $a = (new Self)->array_tq($array,$keyid); + + //去除一维数组重复值 + $a = array_unique($a); + //提取二维数组项目值 + foreach($array[0] AS $key=>$value) + { + $akey[] = $key; + } + //重新拼接二维数组 + foreach($akey AS $key=>$value) + { + $b = (new Self)->array_tq($array,$value); + foreach($a AS $key2=>$value2) + { + $c[$key2][$value] = $b[$key2]; + } + } + + if($desc) + { + $c = (new Self)->array_rsort($c,true); + } + return $c; + } + + //提取二维数组项目 + public static function array_tq($array,$aval="") + { + foreach($array AS $key=>$value) + { + $result[] = $value[$aval]; + } + return $result; + } + + public static function array_rsort($arr,$isvalues=false) + { + if(is_array($arr)){ + $flag = false; + //一维数组 + if(count($arr) == count($arr,1)){ + $flag = true; + $i = 0; + //转换成二维数组 + foreach($arr AS $key=>$value){ + $a[$i]["okey"] = $key; + $a[$i]["value"] = $value; + $i++; + } + $arr = $a; + } + //多维数组 + else + { + //添加临时key值 + foreach($arr AS $key=>$value){ + $value["okey"] = $key; + $array[] = $value; + } + $arr = $array; + } + + //倒叙并还原key值 + $count = count($arr)-1; + for($i=0;$i$value){ + if($isvalues){ + $c[] = $value["value"]; + }else{ + $c[$value["okey"]] = $value["value"]; + } + } + } + //多维数组去除临时key值 + else + { + foreach($b AS $key=>$value) { + unset($value["okey"]); + if($isvalues){ + $c[] = $value; + }else{ + $c[$key] = $value; + } + } + } + return $c; + } + } } diff --git a/app/Tasks/OverdueRemindEmailTask.php b/app/Tasks/OverdueRemindEmailTask.php new file mode 100644 index 000000000..e8f3240b8 --- /dev/null +++ b/app/Tasks/OverdueRemindEmailTask.php @@ -0,0 +1,53 @@ + 0) { + $taskLists1 = ProjectTask::whereNull('complete_at') + ->where('end_at', '>=', Carbon::now()->addMinutes($hours * 60 - 3)->rawFormat('Y-m-d H:i:s')) + ->where('end_at', '<=', Carbon::now()->addMinutes($hours * 60 + 3)->rawFormat('Y-m-d H:i:s')) + ->whereNull('archived_at') + ->take(100) + ->get() + ->toArray(); + } + if ($hours2 > 0) { + $taskLists2 = ProjectTask::whereNull('complete_at') + ->where('end_at', '>=', Carbon::now()->subMinutes($hours2 * 60 + 3)->rawFormat('Y-m-d H:i:s')) + ->where('end_at', '<=', Carbon::now()->subMinutes($hours2 * 60 - 3)->rawFormat('Y-m-d H:i:s')) + ->whereNull('archived_at') + ->take(100) + ->get() + ->toArray(); + + } + $taskLists = array_merge($taskLists1, $taskLists2); + $taskLists = Base::assoc_unique($taskLists, 'id'); + foreach ($taskLists as $task) { + ProjectTask::overdueRemindEmail($task); + } + } + } + +} diff --git a/config/mail.php b/config/mail.php index 54299aabf..b6804c057 100644 --- a/config/mail.php +++ b/config/mail.php @@ -36,15 +36,14 @@ return [ 'mailers' => [ 'smtp' => [ 'transport' => 'smtp', - 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), - 'port' => env('MAIL_PORT', 587), - 'encryption' => env('MAIL_ENCRYPTION', 'tls'), - 'username' => env('MAIL_USERNAME'), - 'password' => env('MAIL_PASSWORD'), - 'timeout' => null, - 'auth_mode' => null, + 'host' => 'smtp.qq.com', + 'port' => 465, + 'encryption' => 'ssl', + 'username' => '302645122@qq.com', + 'password' => 'ijncezxbmhrvbhab', + 'timeout' => 15, ], - + 'ses' => [ 'transport' => 'ses', ], @@ -70,6 +69,7 @@ return [ 'array' => [ 'transport' => 'array', ], + ], /* diff --git a/database/migrations/2022_03_02_161123_add_is_email_verity_to_users.php b/database/migrations/2022_03_02_161123_add_is_email_verity_to_users.php new file mode 100644 index 000000000..adc698cfe --- /dev/null +++ b/database/migrations/2022_03_02_161123_add_is_email_verity_to_users.php @@ -0,0 +1,32 @@ +boolean('is_email_verity')->default(0)->nullable(false)->after('disable_at')->comment('邮箱是否已验证'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn("is_email_verity"); + }); + } +} diff --git a/database/migrations/2022_03_02_172504_create_user_email_verifications_table.php b/database/migrations/2022_03_02_172504_create_user_email_verifications_table.php new file mode 100644 index 000000000..ea2bfebe6 --- /dev/null +++ b/database/migrations/2022_03_02_172504_create_user_email_verifications_table.php @@ -0,0 +1,35 @@ +id(); + $table->integer('userid')->nullable()->default(0)->comment('用户id'); + $table->string('code')->nullable()->default('')->comment('验证参数'); + $table->string('email')->nullable()->default('')->comment('电子邮箱'); + $table->integer('status')->nullable()->default(0)->comment('0-未验证,1-已验证'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_email_verifications'); + } +} diff --git a/database/migrations/2022_03_03_154459_create_project_task_mail_logs_table.php b/database/migrations/2022_03_03_154459_create_project_task_mail_logs_table.php new file mode 100644 index 000000000..b8110f853 --- /dev/null +++ b/database/migrations/2022_03_03_154459_create_project_task_mail_logs_table.php @@ -0,0 +1,36 @@ +id(); + $table->integer('userid')->nullable()->default(0)->comment('用户id'); + $table->integer('task_id')->nullable()->default(0)->comment('任务id'); + $table->string('email')->nullable()->default('')->comment('电子邮箱'); + $table->tinyInteger('type')->nullable()->default(0)->comment('提醒类型:1第一次任务提醒,2第二次任务超期提醒'); + $table->tinyInteger('is_send')->nullable()->default(0)->comment('邮件发送是否成功:0否,1是'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('project_task_mail_logs'); + } +} diff --git a/database/migrations/2022_03_08_124155_add_web_socket_dialog_users_add_is_mark_unread.php b/database/migrations/2022_03_08_124155_add_web_socket_dialog_users_add_is_mark_unread.php new file mode 100644 index 000000000..e94544efc --- /dev/null +++ b/database/migrations/2022_03_08_124155_add_web_socket_dialog_users_add_is_mark_unread.php @@ -0,0 +1,32 @@ +boolean('is_mark_unread')->default(0)->nullable(false)->after('top_at')->comment('是否标记为未读:0否,1是'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('web_socket_dialog_users', function (Blueprint $table) { + $table->dropColumn("is_mark_unread"); + }); + } +} diff --git a/database/migrations/2022_03_09_100139_add_project_task_mail_logs_add_deletes.php b/database/migrations/2022_03_09_100139_add_project_task_mail_logs_add_deletes.php new file mode 100644 index 000000000..133e6f8c5 --- /dev/null +++ b/database/migrations/2022_03_09_100139_add_project_task_mail_logs_add_deletes.php @@ -0,0 +1,34 @@ +softDeletes(); + } + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('project_task_mail_logs', function (Blueprint $table) { + $table->dropSoftDeletes(); + }); + } +} diff --git a/database/migrations/2022_03_09_143604_add_project_tasks_deleted_userid.php b/database/migrations/2022_03_09_143604_add_project_tasks_deleted_userid.php new file mode 100644 index 000000000..7e4602ff0 --- /dev/null +++ b/database/migrations/2022_03_09_143604_add_project_tasks_deleted_userid.php @@ -0,0 +1,34 @@ +bigInteger('deleted_userid')->nullable()->default(0)->after('deleted_at')->comment('删除会员'); + } + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('project_tasks', function (Blueprint $table) { + $table->dropColumn("deleted_userid"); + }); + } +} diff --git a/public/images/index/box-pic1.png b/public/images/index/box-pic1.png new file mode 100644 index 000000000..75005fafc Binary files /dev/null and b/public/images/index/box-pic1.png differ diff --git a/public/images/index/box-pic2.png b/public/images/index/box-pic2.png new file mode 100644 index 000000000..3d6fe7a02 Binary files /dev/null and b/public/images/index/box-pic2.png differ diff --git a/public/images/index/box-pic3.png b/public/images/index/box-pic3.png new file mode 100644 index 000000000..0f6467664 Binary files /dev/null and b/public/images/index/box-pic3.png differ diff --git a/public/images/index/box-pic4.png b/public/images/index/box-pic4.png new file mode 100644 index 000000000..b80864dd6 Binary files /dev/null and b/public/images/index/box-pic4.png differ diff --git a/public/images/index/decoration.png b/public/images/index/decoration.png new file mode 100644 index 000000000..bb1f6ea5b Binary files /dev/null and b/public/images/index/decoration.png differ diff --git a/public/images/index/footer-bg.png b/public/images/index/footer-bg.png new file mode 100644 index 000000000..c29ccc91d Binary files /dev/null and b/public/images/index/footer-bg.png differ diff --git a/public/images/index/indexlogo.png b/public/images/index/indexlogo.png new file mode 100644 index 000000000..e09caa940 Binary files /dev/null and b/public/images/index/indexlogo.png differ diff --git a/public/images/index/language.png b/public/images/index/language.png new file mode 100644 index 000000000..6d507086e Binary files /dev/null and b/public/images/index/language.png differ diff --git a/public/images/index/pic.png b/public/images/index/pic.png new file mode 100644 index 000000000..4a7671b2a Binary files /dev/null and b/public/images/index/pic.png differ diff --git a/public/images/index/square.png b/public/images/index/square.png new file mode 100644 index 000000000..f37f1199f Binary files /dev/null and b/public/images/index/square.png differ diff --git a/public/images/indexlogo.png b/public/images/indexlogo.png new file mode 100644 index 000000000..abb290382 Binary files /dev/null and b/public/images/indexlogo.png differ diff --git a/public/images/language.png b/public/images/language.png new file mode 100644 index 000000000..6d507086e Binary files /dev/null and b/public/images/language.png differ diff --git a/public/images/mark.svg b/public/images/mark.svg new file mode 100644 index 000000000..b2b82e32c --- /dev/null +++ b/public/images/mark.svg @@ -0,0 +1,13 @@ + + + +0 + + diff --git a/public/js/app.js b/public/js/app.js index bcee253f2..fbfa082e1 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1,2 +1,2 @@ /*! For license information please see app.js.LICENSE.txt */ -(()=>{var e,t,n,i,r,a={36890:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>C});var i=n(88239),r=n(72444),a=/%[sdj%]/g;function o(){for(var e=arguments.length,t=Array(e),n=0;n=o)return e;switch(e){case"%s":return String(t[i++]);case"%d":return Number(t[i++]);case"%j":try{return JSON.stringify(t[i++])}catch(e){return"[Circular]"}break;default:return e}})),l=t[i];i()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,url:new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},m={integer:function(e){return m.number(e)&&parseInt(e,10)===e},float:function(e){return m.number(e)&&!m.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear},number:function(e){return!isNaN(e)&&"number"==typeof e},object:function(e){return"object"===(void 0===e?"undefined":(0,r.Z)(e))&&!m.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&!!e.match(p.email)&&e.length<255},url:function(e){return"string"==typeof e&&!!e.match(p.url)},hex:function(e){return"string"==typeof e&&!!e.match(p.hex)}};const v=function(e,t,n,i,a){if(e.required&&void 0===t)h(e,t,n,i,a);else{var s=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(s)>-1?m[s](t)||i.push(o(a.messages.types[s],e.fullField,e.type)):s&&(void 0===t?"undefined":(0,r.Z)(t))!==e.type&&i.push(o(a.messages.types[s],e.fullField,e.type))}};const g={required:h,whitespace:f,type:v,range:function(e,t,n,i,r){var a="number"==typeof e.len,s="number"==typeof e.min,l="number"==typeof e.max,u=t,c=null,d="number"==typeof t,h="string"==typeof t,f=Array.isArray(t);if(d?c="number":h?c="string":f&&(c="array"),!c)return!1;f&&(u=t.length),h&&(u=t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length),a?u!==e.len&&i.push(o(r.messages[c].len,e.fullField,e.len)):s&&!l&&ue.max?i.push(o(r.messages[c].max,e.fullField,e.max)):s&&l&&(ue.max)&&i.push(o(r.messages[c].range,e.fullField,e.min,e.max))},enum:function(e,t,n,i,r){e.enum=Array.isArray(e.enum)?e.enum:[],-1===e.enum.indexOf(t)&&i.push(o(r.messages.enum,e.fullField,e.enum.join(", ")))},pattern:function(e,t,n,i,r){if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||i.push(o(r.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){new RegExp(e.pattern).test(t)||i.push(o(r.messages.pattern.mismatch,e.fullField,t,e.pattern))}}};const b=function(e,t,n,i,a){var o=[],s=Array.isArray(t)?"array":void 0===t?"undefined":(0,r.Z)(t);g.required(e,t,i,o,a,s),n(o)};const y=function(e,t,n,i,r){var a=e.type,o=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(s(t,a)&&!e.required)return n();g.required(e,t,i,o,r,a),s(t,a)||g.type(e,t,i,o,r)}n(o)},_={string:function(e,t,n,i,r){var a=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(s(t,"string")&&!e.required)return n();g.required(e,t,i,a,r,"string"),s(t,"string")||(g.type(e,t,i,a,r),g.range(e,t,i,a,r),g.pattern(e,t,i,a,r),!0===e.whitespace&&g.whitespace(e,t,i,a,r))}n(a)},method:function(e,t,n,i,r){var a=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(s(t)&&!e.required)return n();g.required(e,t,i,a,r),void 0!==t&&g.type(e,t,i,a,r)}n(a)},number:function(e,t,n,i,r){var a=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(s(t)&&!e.required)return n();g.required(e,t,i,a,r),void 0!==t&&(g.type(e,t,i,a,r),g.range(e,t,i,a,r))}n(a)},boolean:function(e,t,n,i,r){var a=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(s(t)&&!e.required)return n();g.required(e,t,i,a,r),void 0!==t&&g.type(e,t,i,a,r)}n(a)},regexp:function(e,t,n,i,r){var a=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(s(t)&&!e.required)return n();g.required(e,t,i,a,r),s(t)||g.type(e,t,i,a,r)}n(a)},integer:function(e,t,n,i,r){var a=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(s(t)&&!e.required)return n();g.required(e,t,i,a,r),void 0!==t&&(g.type(e,t,i,a,r),g.range(e,t,i,a,r))}n(a)},float:function(e,t,n,i,r){var a=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(s(t)&&!e.required)return n();g.required(e,t,i,a,r),void 0!==t&&(g.type(e,t,i,a,r),g.range(e,t,i,a,r))}n(a)},array:function(e,t,n,i,r){var a=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(s(t,"array")&&!e.required)return n();g.required(e,t,i,a,r,"array"),s(t,"array")||(g.type(e,t,i,a,r),g.range(e,t,i,a,r))}n(a)},object:function(e,t,n,i,r){var a=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(s(t)&&!e.required)return n();g.required(e,t,i,a,r),void 0!==t&&g.type(e,t,i,a,r)}n(a)},enum:function(e,t,n,i,r){var a=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(s(t)&&!e.required)return n();g.required(e,t,i,a,r),t&&g.enum(e,t,i,a,r)}n(a)},pattern:function(e,t,n,i,r){var a=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(s(t,"string")&&!e.required)return n();g.required(e,t,i,a,r),s(t,"string")||g.pattern(e,t,i,a,r)}n(a)},date:function(e,t,n,i,r){var a=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(s(t)&&!e.required)return n();if(g.required(e,t,i,a,r),!s(t)){var o=void 0;o="number"==typeof t?new Date(t):t,g.type(e,o,i,a,r),o&&g.range(e,o.getTime(),i,a,r)}}n(a)},url:y,hex:y,email:y,required:b};function w(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var x=w();function k(e){this.rules=null,this._messages=x,this.define(e)}k.prototype={messages:function(e){return e&&(this._messages=d(w(),e)),this._messages},define:function(e){if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!==(void 0===e?"undefined":(0,r.Z)(e))||Array.isArray(e))throw new Error("Rules must be an object");this.rules={};var t=void 0,n=void 0;for(t in e)e.hasOwnProperty(t)&&(n=e[t],this.rules[t]=Array.isArray(n)?n:[n])},validate:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments[2],s=e,l=n,h=a;if("function"==typeof l&&(h=l,l={}),this.rules&&0!==Object.keys(this.rules).length){if(l.messages){var f=this.messages();f===x&&(f=w()),d(f,l.messages),l.messages=f}else l.messages=this.messages();var p=void 0,m=void 0,v={},g=l.keys||Object.keys(this.rules);g.forEach((function(n){p=t.rules[n],m=s[n],p.forEach((function(r){var a=r;"function"==typeof a.transform&&(s===e&&(s=(0,i.Z)({},s)),m=s[n]=a.transform(m)),(a="function"==typeof a?{validator:a}:(0,i.Z)({},a)).validator=t.getValidationMethod(a),a.field=n,a.fullField=a.fullField||n,a.type=t.getType(a),a.validator&&(v[n]=v[n]||[],v[n].push({rule:a,value:m,source:s,field:n}))}))}));var b={};u(v,l,(function(e,t){var n=e.rule,a=!("object"!==n.type&&"array"!==n.type||"object"!==(0,r.Z)(n.fields)&&"object"!==(0,r.Z)(n.defaultField));function s(e,t){return(0,i.Z)({},t,{fullField:n.fullField+"."+e})}function u(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],u=r;if(Array.isArray(u)||(u=[u]),u.length,u.length&&n.message&&(u=[].concat(n.message)),u=u.map(c(n)),l.first&&u.length)return b[n.field]=1,t(u);if(a){if(n.required&&!e.value)return u=n.message?[].concat(n.message).map(c(n)):l.error?[l.error(n,o(l.messages.required,n.field))]:[],t(u);var d={};if(n.defaultField)for(var h in e.value)e.value.hasOwnProperty(h)&&(d[h]=n.defaultField);for(var f in d=(0,i.Z)({},d,e.rule.fields))if(d.hasOwnProperty(f)){var p=Array.isArray(d[f])?d[f]:[d[f]];d[f]=p.map(s.bind(null,f))}var m=new k(d);m.messages(l.messages),e.rule.options&&(e.rule.options.messages=l.messages,e.rule.options.error=l.error),m.validate(e.value,e.rule.options||l,(function(e){t(e&&e.length?u.concat(e):e)}))}else t(u)}a=a&&(n.required||!n.required&&e.value),n.field=e.field;var d=n.validator(n,e.value,u,e.source,l);d&&d.then&&d.then((function(){return u()}),(function(e){return u(e)}))}),(function(e){y(e)}))}else h&&h();function y(e){var t,n=void 0,i=void 0,r=[],a={};for(n=0;n{e.exports=n(51609)},55448:(e,t,n)=>{"use strict";var i=n(64867),r=n(36026),a=n(4372),o=n(15327),s=n(94097),l=n(84109),u=n(67985),c=n(85061),d=n(45655),h=n(65263);e.exports=function(e){return new Promise((function(t,n){var f,p=e.data,m=e.headers,v=e.responseType;function g(){e.cancelToken&&e.cancelToken.unsubscribe(f),e.signal&&e.signal.removeEventListener("abort",f)}i.isFormData(p)&&delete m["Content-Type"];var b=new XMLHttpRequest;if(e.auth){var y=e.auth.username||"",_=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";m.Authorization="Basic "+btoa(y+":"+_)}var w=s(e.baseURL,e.url);function x(){if(b){var i="getAllResponseHeaders"in b?l(b.getAllResponseHeaders()):null,a={data:v&&"text"!==v&&"json"!==v?b.response:b.responseText,status:b.status,statusText:b.statusText,headers:i,config:e,request:b};r((function(e){t(e),g()}),(function(e){n(e),g()}),a),b=null}}if(b.open(e.method.toUpperCase(),o(w,e.params,e.paramsSerializer),!0),b.timeout=e.timeout,"onloadend"in b?b.onloadend=x:b.onreadystatechange=function(){b&&4===b.readyState&&(0!==b.status||b.responseURL&&0===b.responseURL.indexOf("file:"))&&setTimeout(x)},b.onabort=function(){b&&(n(c("Request aborted",e,"ECONNABORTED",b)),b=null)},b.onerror=function(){n(c("Network Error",e,null,b)),b=null},b.ontimeout=function(){var t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",i=e.transitional||d.transitional;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(c(t,e,i.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",b)),b=null},i.isStandardBrowserEnv()){var k=(e.withCredentials||u(w))&&e.xsrfCookieName?a.read(e.xsrfCookieName):void 0;k&&(m[e.xsrfHeaderName]=k)}"setRequestHeader"in b&&i.forEach(m,(function(e,t){void 0===p&&"content-type"===t.toLowerCase()?delete m[t]:b.setRequestHeader(t,e)})),i.isUndefined(e.withCredentials)||(b.withCredentials=!!e.withCredentials),v&&"json"!==v&&(b.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&b.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&b.upload&&b.upload.addEventListener("progress",e.onUploadProgress),(e.cancelToken||e.signal)&&(f=function(e){b&&(n(!e||e&&e.type?new h("canceled"):e),b.abort(),b=null)},e.cancelToken&&e.cancelToken.subscribe(f),e.signal&&(e.signal.aborted?f():e.signal.addEventListener("abort",f))),p||(p=null),b.send(p)}))}},51609:(e,t,n)=>{"use strict";var i=n(64867),r=n(91849),a=n(30321),o=n(47185);var s=function e(t){var n=new a(t),s=r(a.prototype.request,n);return i.extend(s,a.prototype,n),i.extend(s,n),s.create=function(n){return e(o(t,n))},s}(n(45655));s.Axios=a,s.Cancel=n(65263),s.CancelToken=n(14972),s.isCancel=n(26502),s.VERSION=n(97288).version,s.all=function(e){return Promise.all(e)},s.spread=n(8713),s.isAxiosError=n(16268),e.exports=s,e.exports.default=s},65263:e=>{"use strict";function t(e){this.message=e}t.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},t.prototype.__CANCEL__=!0,e.exports=t},14972:(e,t,n)=>{"use strict";var i=n(65263);function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;this.promise.then((function(e){if(n._listeners){var t,i=n._listeners.length;for(t=0;t{"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},30321:(e,t,n)=>{"use strict";var i=n(64867),r=n(15327),a=n(80782),o=n(13572),s=n(47185),l=n(54875),u=l.validators;function c(e){this.defaults=e,this.interceptors={request:new a,response:new a}}c.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=s(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&l.assertOptions(t,{silentJSONParsing:u.transitional(u.boolean),forcedJSONParsing:u.transitional(u.boolean),clarifyTimeoutError:u.transitional(u.boolean)},!1);var n=[],i=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(i=i&&t.synchronous,n.unshift(t.fulfilled,t.rejected))}));var r,a=[];if(this.interceptors.response.forEach((function(e){a.push(e.fulfilled,e.rejected)})),!i){var c=[o,void 0];for(Array.prototype.unshift.apply(c,n),c=c.concat(a),r=Promise.resolve(e);c.length;)r=r.then(c.shift(),c.shift());return r}for(var d=e;n.length;){var h=n.shift(),f=n.shift();try{d=h(d)}catch(e){f(e);break}}try{r=o(d)}catch(e){return Promise.reject(e)}for(;a.length;)r=r.then(a.shift(),a.shift());return r},c.prototype.getUri=function(e){return e=s(this.defaults,e),r(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},i.forEach(["delete","get","head","options"],(function(e){c.prototype[e]=function(t,n){return this.request(s(n||{},{method:e,url:t,data:(n||{}).data}))}})),i.forEach(["post","put","patch"],(function(e){c.prototype[e]=function(t,n,i){return this.request(s(i||{},{method:e,url:t,data:n}))}})),e.exports=c},80782:(e,t,n)=>{"use strict";var i=n(64867);function r(){this.handlers=[]}r.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){i.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=r},94097:(e,t,n)=>{"use strict";var i=n(91793),r=n(7303);e.exports=function(e,t){return e&&!i(t)?r(e,t):t}},85061:(e,t,n)=>{"use strict";var i=n(80481);e.exports=function(e,t,n,r,a){var o=new Error(e);return i(o,t,n,r,a)}},13572:(e,t,n)=>{"use strict";var i=n(64867),r=n(18527),a=n(26502),o=n(45655),s=n(65263);function l(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new s("canceled")}e.exports=function(e){return l(e),e.headers=e.headers||{},e.data=r.call(e,e.data,e.headers,e.transformRequest),e.headers=i.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),i.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||o.adapter)(e).then((function(t){return l(e),t.data=r.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return a(t)||(l(e),t&&t.response&&(t.response.data=r.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},80481:e=>{"use strict";e.exports=function(e,t,n,i,r){return e.config=t,n&&(e.code=n),e.request=i,e.response=r,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}},e}},47185:(e,t,n)=>{"use strict";var i=n(64867);e.exports=function(e,t){t=t||{};var n={};function r(e,t){return i.isPlainObject(e)&&i.isPlainObject(t)?i.merge(e,t):i.isPlainObject(t)?i.merge({},t):i.isArray(t)?t.slice():t}function a(n){return i.isUndefined(t[n])?i.isUndefined(e[n])?void 0:r(void 0,e[n]):r(e[n],t[n])}function o(e){if(!i.isUndefined(t[e]))return r(void 0,t[e])}function s(n){return i.isUndefined(t[n])?i.isUndefined(e[n])?void 0:r(void 0,e[n]):r(void 0,t[n])}function l(n){return n in t?r(e[n],t[n]):n in e?r(void 0,e[n]):void 0}var u={url:o,method:o,data:o,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:l};return i.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=u[e]||a,r=t(e);i.isUndefined(r)&&t!==l||(n[e]=r)})),n}},36026:(e,t,n)=>{"use strict";var i=n(85061);e.exports=function(e,t,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(i("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},18527:(e,t,n)=>{"use strict";var i=n(64867),r=n(45655);e.exports=function(e,t,n){var a=this||r;return i.forEach(n,(function(n){e=n.call(a,e,t)})),e}},45655:(e,t,n)=>{"use strict";var i=n(34155),r=n(64867),a=n(16016),o=n(80481),s={"Content-Type":"application/x-www-form-urlencoded"};function l(e,t){!r.isUndefined(e)&&r.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var u,c={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==i&&"[object process]"===Object.prototype.toString.call(i))&&(u=n(55448)),u),transformRequest:[function(e,t){return a(t,"Accept"),a(t,"Content-Type"),r.isFormData(e)||r.isArrayBuffer(e)||r.isBuffer(e)||r.isStream(e)||r.isFile(e)||r.isBlob(e)?e:r.isArrayBufferView(e)?e.buffer:r.isURLSearchParams(e)?(l(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):r.isObject(e)||t&&"application/json"===t["Content-Type"]?(l(t,"application/json"),function(e,t,n){if(r.isString(e))try{return(t||JSON.parse)(e),r.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||c.transitional,n=t&&t.silentJSONParsing,i=t&&t.forcedJSONParsing,a=!n&&"json"===this.responseType;if(a||i&&r.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(a){if("SyntaxError"===e.name)throw o(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(e){c.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){c.headers[e]=r.merge(s)})),e.exports=c},97288:e=>{e.exports={version:"0.24.0"}},91849:e=>{"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),i=0;i{"use strict";var i=n(64867);function r(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var a;if(n)a=n(t);else if(i.isURLSearchParams(t))a=t.toString();else{var o=[];i.forEach(t,(function(e,t){null!=e&&(i.isArray(e)?t+="[]":e=[e],i.forEach(e,(function(e){i.isDate(e)?e=e.toISOString():i.isObject(e)&&(e=JSON.stringify(e)),o.push(r(t)+"="+r(e))})))})),a=o.join("&")}if(a){var s=e.indexOf("#");-1!==s&&(e=e.slice(0,s)),e+=(-1===e.indexOf("?")?"?":"&")+a}return e}},7303:e=>{"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},4372:(e,t,n)=>{"use strict";var i=n(64867);e.exports=i.isStandardBrowserEnv()?{write:function(e,t,n,r,a,o){var s=[];s.push(e+"="+encodeURIComponent(t)),i.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),i.isString(r)&&s.push("path="+r),i.isString(a)&&s.push("domain="+a),!0===o&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},91793:e=>{"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},16268:e=>{"use strict";e.exports=function(e){return"object"==typeof e&&!0===e.isAxiosError}},67985:(e,t,n)=>{"use strict";var i=n(64867);e.exports=i.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(e){var i=e;return t&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=r(window.location.href),function(t){var n=i.isString(t)?r(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},16016:(e,t,n)=>{"use strict";var i=n(64867);e.exports=function(e,t){i.forEach(e,(function(n,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[i])}))}},84109:(e,t,n)=>{"use strict";var i=n(64867),r=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,a,o={};return e?(i.forEach(e.split("\n"),(function(e){if(a=e.indexOf(":"),t=i.trim(e.substr(0,a)).toLowerCase(),n=i.trim(e.substr(a+1)),t){if(o[t]&&r.indexOf(t)>=0)return;o[t]="set-cookie"===t?(o[t]?o[t]:[]).concat([n]):o[t]?o[t]+", "+n:n}})),o):o}},8713:e=>{"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},54875:(e,t,n)=>{"use strict";var i=n(97288).version,r={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){r[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));var a={};r.transitional=function(e,t,n){function r(e,t){return"[Axios v"+i+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,i,o){if(!1===e)throw new Error(r(i," has been removed"+(t?" in "+t:"")));return t&&!a[i]&&(a[i]=!0,console.warn(r(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,i,o)}},e.exports={assertOptions:function(e,t,n){if("object"!=typeof e)throw new TypeError("options must be an object");for(var i=Object.keys(e),r=i.length;r-- >0;){var a=i[r],o=t[a];if(o){var s=e[a],l=void 0===s||o(s,a,e);if(!0!==l)throw new TypeError("option "+a+" must be "+l)}else if(!0!==n)throw Error("Unknown option "+a)}},validators:r}},64867:(e,t,n)=>{"use strict";var i=n(91849),r=Object.prototype.toString;function a(e){return"[object Array]"===r.call(e)}function o(e){return void 0===e}function s(e){return null!==e&&"object"==typeof e}function l(e){if("[object Object]"!==r.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function u(e){return"[object Function]"===r.call(e)}function c(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),a(e))for(var n=0,i=e.length;n{var t=/^(attrs|props|on|nativeOn|class|style|hook)$/;function n(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(this,arguments)}}e.exports=function(e){return e.reduce((function(e,i){var r,a,o,s,l;for(o in i)if(r=e[o],a=i[o],r&&t.test(o))if("class"===o&&("string"==typeof r&&(l=r,e[o]=r={},r[l]=!0),"string"==typeof a&&(l=a,i[o]=a={},a[l]=!0)),"on"===o||"nativeOn"===o||"hook"===o)for(s in a)r[s]=n(r[s],a[s]);else if(Array.isArray(r))e[o]=r.concat(a);else if(Array.isArray(a))e[o]=[r].concat(a);else for(s in a)r[s]=a[s];else e[o]=i[o];return e}),{})}},56446:(e,t,n)=>{"use strict";n(90091),n(92693);var i=n(70538),r=n(20629);const a={name:"Spinner"};var o=n(51900);const s=(0,o.Z)(a,(function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"common-spinner",attrs:{id:"common-spinner"}},[t("Loading",{staticClass:"common-circular"})],1)}),[],!1,null,null,null).exports;var l=n(71905),u=n(9669),c=n.n(u),d=n(80641);function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function f(e){for(var t=1;tl?1:-1;n=a+1,i=o+1}for(;n0)return 1;n=u+1}for(;i0)return-1;i=c+1}return 0},getReleases:function(){var e=this;if(!(this.repoStatus>0||this.loadIng>0)){var t=$A.getStorageJson("cacheAppdown"),n=600;if(t.time&&t.time+n>Math.round((new Date).getTime()/1e3))return this.repoReleases=t.data,this.chackReleases(),void setTimeout(this.getReleases,6e5);this.loadIng++,c().get("https://api.github.com/repos/"+this.repoName+"/releases/latest").then((function(n){var i=n.status,r=n.data;e.loadIng--,200===i&&(t={time:Math.round((new Date).getTime()/1e3),data:r},$A.setStorage("cacheAppdown",t),e.repoReleases=t.data,e.chackReleases()),setTimeout(e.getReleases,6e5)})).catch((function(){e.loadIng--,setTimeout(e.getReleases,6e5)}))}},chackReleases:function(){var e=$A.getDomain(window.systemInfo.homeUrl||window.systemInfo.apiUrl);if((""==e||$A.leftExists(e,"127.0.0.1"))&&(e="public"),this.$Electron){var t=(window.navigator.userAgent+"").match(/\s+(Main|Sub)TaskWindow\/(.*?)\/(.*?)\//);if(!t)return;var n=null;if("darwin"===t[2])n="".concat(e,"-").concat(this.repoReleases.tag_name,"-mac-").concat(t[3],".pkg");else{if("win32"!==t[2])return;n="".concat(e,"-").concat(this.repoReleases.tag_name,"-win-").concat(t[3],".exe")}if(this.repoData=(this.repoReleases.assets||[]).find((function(e){return e.name==n})),!this.repoData)return;var i=window.systemInfo.version,r=$A.leftDelete(this.repoReleases.tag_name.toLowerCase(),"v");1===this.compareVersion(r,i)&&(console.log("New version: "+r),this.$Electron.sendMessage("downloadFile",{url:this.repoData.browser_download_url}))}else if(this.repoData=(this.repoReleases.assets||[]).find((function(t){var n=t.name;return $A.strExists(n,e)})),this.repoData){var a=$A.leftDelete(this.repoReleases.tag_name.toLowerCase(),"v");console.log("Exist client: "+a),this.repoStatus=1}},installApplication:function(){this.$Electron&&(this.$Electron.sendMessage("openFile",{path:this.downloadResult.savePath}),this.$Electron.sendMessage("windowQuit"))},useSSOLogin:function(){d.Store.set("useSSOLogin",!0)}}};function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const b={components:{RightBottom:(0,o.Z)(m,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"common-right-bottom"},[e.showSSO?n("div",{staticClass:"common-right-bottom-link",on:{click:e.useSSOLogin}},[n("Icon",{attrs:{type:"ios-globe-outline"}}),e._v("\n "+e._s(e.$L("使用 SSO 登录"))+"\n ")],1):e._e(),e._v(" "),e.showDown?[e.$Electron?n("div",{staticClass:"common-right-bottom-link",on:{click:function(t){e.updateWinShow=!0}}},[n("Icon",{attrs:{type:"md-download"}}),e._v("\n "+e._s(e.$L(e.repoTitle))+"\n ")],1):n("a",{staticClass:"common-right-bottom-link",attrs:{href:e.repoReleases.html_url,target:"_blank"}},[n("Icon",{attrs:{type:"md-download"}}),e._v("\n "+e._s(e.$L(e.repoTitle))+"\n ")],1)]:e._e(),e._v(" "),n("Modal",{attrs:{"ok-text":e.$L("立即升级"),closable:!1,"mask-closable":!1,"class-name":"common-right-bottom-notification"},on:{"on-ok":e.installApplication,"on-cancel":function(t){e.repoStatus=2}},model:{value:e.updateWinShow,callback:function(t){e.updateWinShow=t},expression:"updateWinShow"}},[n("div",{staticClass:"notification-head",attrs:{slot:"header"},slot:"header"},[n("div",{staticClass:"notification-title"},[e._v(e._s(e.$L("发现新版本")))]),e._v(" "),n("Tag",{attrs:{color:"volcano"}},[e._v(e._s(e.repoReleases.tag_name))])],1),e._v(" "),n("MarkdownPreview",{staticClass:"notification-body overlay-y",attrs:{initialValue:e.repoReleases.body}})],1)],2)}),[],!1,null,null,null).exports,Spinner:s},data:function(){return{transitionName:null}},created:function(){this.electronEvents()},mounted:function(){var e=this,t=window.location.hash;0===t.indexOf("#")&&(t=t.substr(1))&&this.$nextTick((function(){t=$A.removeURLParameter(t,"token"),e.goForward({path:t})})),this.sessionStorage("/",1);var n=window.location.pathname;n&&0===this.sessionStorage(n)&&this.sessionStorage(n,this.sessionStorage("::count")+1),setInterval(this.searchEnter,1e3),window.addEventListener("resize",this.windowSizeListener)},beforeDestroy:function(){window.removeEventListener("resize",this.windowSizeListener)},computed:function(e){for(var t=1;t0?(e.cacheDrawerOverlay[e.cacheDrawerOverlay.length-1].close(),!0):void 0)},this.$Electron.registerMsgListener("dispatch",(function(t){if($A.isJson(t)){var n=t.action,i=t.data;e.$store.dispatch(n,i)}})))}}};var y=n(93379),_=n.n(y),w=n(9756),x={insert:"head",singleton:!1};_()(w.Z,x);w.Z.locals;const k=(0,o.Z)(b,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("transition",{attrs:{name:e.transitionName}},[n("keep-alive",[n("router-view",{staticClass:"child-view",class:{"view-768":e.$store.state.windowMax768}})],1)],1),e._v(" "),n("Spinner"),e._v(" "),n("RightBottom")],1)}),[],!1,null,"7867eae3",null).exports,C=[{name:"index",path:"/",component:function(){return n.e(855).then(n.bind(n,45855))}},{name:"manage",path:"/manage",meta:{slide:!1},component:function(){return n.e(956).then(n.bind(n,2956))},children:[{name:"manage-dashboard",path:"dashboard",component:function(){return n.e(476).then(n.bind(n,476))}},{name:"manage-calendar",path:"calendar",component:function(){return n.e(535).then(n.bind(n,37535))}},{name:"manage-messenger",path:"messenger",component:function(){return n.e(915).then(n.bind(n,88915))}},{path:"setting",component:function(){return n.e(341).then(n.bind(n,88341))},children:[{name:"manage-setting",path:"",redirect:"personal"},{name:"manage-setting-personal",path:"personal",component:function(){return n.e(252).then(n.bind(n,32252))}},{name:"manage-setting-password",path:"password",component:function(){return n.e(607).then(n.bind(n,60607))}},{name:"manage-setting-system",path:"system",component:function(){return n.e(135).then(n.bind(n,87135))}}]},{name:"manage-project-invite",path:"project/invite",component:function(){return n.e(481).then(n.bind(n,49481))}},{name:"manage-project",path:"project/:id",component:function(){return n.e(91).then(n.bind(n,42091))}},{name:"manage-file",path:"file",component:function(){return n.e(304).then(n.bind(n,20304))}}]},{name:"single-file-msg",path:"/single/file/msg/:id",component:function(){return n.e(528).then(n.bind(n,35528))}},{name:"single-file-task",path:"/single/file/task/:id",component:function(){return n.e(889).then(n.bind(n,63889))}},{name:"single-file",path:"/single/file/:id",component:function(){return n.e(954).then(n.bind(n,29954))}},{name:"single-task",path:"/single/task/:id",component:function(){return n.e(862).then(n.bind(n,72862))}},{name:"login",path:"/login",component:function(){return n.e(578).then(n.bind(n,13578))}},{name:"404",path:"*",component:function(){return n.e(418).then(n.bind(n,54418))}}];function S(e,t){for(var n in t)e[n]=t[n];return e}var O=/[!'()*]/g,T=function(e){return"%"+e.charCodeAt(0).toString(16)},D=/%2C/g,E=function(e){return encodeURIComponent(e).replace(O,T).replace(D,",")};function $(e){try{return decodeURIComponent(e)}catch(e){0}return e}var M=function(e){return null==e||"object"==typeof e?e:String(e)};function P(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var n=e.replace(/\+/g," ").split("="),i=$(n.shift()),r=n.length>0?$(n.join("=")):null;void 0===t[i]?t[i]=r:Array.isArray(t[i])?t[i].push(r):t[i]=[t[i],r]})),t):t}function I(e){var t=e?Object.keys(e).map((function(t){var n=e[t];if(void 0===n)return"";if(null===n)return E(t);if(Array.isArray(n)){var i=[];return n.forEach((function(e){void 0!==e&&(null===e?i.push(E(t)):i.push(E(t)+"="+E(e)))})),i.join("&")}return E(t)+"="+E(n)})).filter((function(e){return e.length>0})).join("&"):null;return t?"?"+t:""}var j=/\/?$/;function A(e,t,n,i){var r=i&&i.options.stringifyQuery,a=t.query||{};try{a=N(a)}catch(e){}var o={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||"/",hash:t.hash||"",query:a,params:t.params||{},fullPath:R(t,r),matched:e?F(e):[]};return n&&(o.redirectedFrom=R(n,r)),Object.freeze(o)}function N(e){if(Array.isArray(e))return e.map(N);if(e&&"object"==typeof e){var t={};for(var n in e)t[n]=N(e[n]);return t}return e}var L=A(null,{path:"/"});function F(e){for(var t=[];e;)t.unshift(e),e=e.parent;return t}function R(e,t){var n=e.path,i=e.query;void 0===i&&(i={});var r=e.hash;return void 0===r&&(r=""),(n||"/")+(t||I)(i)+r}function B(e,t,n){return t===L?e===t:!!t&&(e.path&&t.path?e.path.replace(j,"")===t.path.replace(j,"")&&(n||e.hash===t.hash&&V(e.query,t.query)):!(!e.name||!t.name)&&(e.name===t.name&&(n||e.hash===t.hash&&V(e.query,t.query)&&V(e.params,t.params))))}function V(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var n=Object.keys(e).sort(),i=Object.keys(t).sort();return n.length===i.length&&n.every((function(n,r){var a=e[n];if(i[r]!==n)return!1;var o=t[n];return null==a||null==o?a===o:"object"==typeof a&&"object"==typeof o?V(a,o):String(a)===String(o)}))}function z(e){for(var t=0;t=0&&(t=e.slice(i),e=e.slice(0,i));var r=e.indexOf("?");return r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),{path:e,query:n,hash:t}}(r.path||""),u=t&&t.path||"/",c=l.path?q(l.path,u,n||r.append):u,d=function(e,t,n){void 0===t&&(t={});var i,r=n||P;try{i=r(e||"")}catch(e){i={}}for(var a in t){var o=t[a];i[a]=Array.isArray(o)?o.map(M):M(o)}return i}(l.query,r.query,i&&i.options.parseQuery),h=r.hash||l.hash;return h&&"#"!==h.charAt(0)&&(h="#"+h),{_normalized:!0,path:c,query:d,hash:h}}var he,fe=function(){},pe={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,i=this.$route,r=n.resolve(this.to,i,this.append),a=r.location,o=r.route,s=r.href,l={},u=n.options.linkActiveClass,c=n.options.linkExactActiveClass,d=null==u?"router-link-active":u,h=null==c?"router-link-exact-active":c,f=null==this.activeClass?d:this.activeClass,p=null==this.exactActiveClass?h:this.exactActiveClass,m=o.redirectedFrom?A(null,de(o.redirectedFrom),null,n):o;l[p]=B(i,m,this.exactPath),l[f]=this.exact||this.exactPath?l[p]:function(e,t){return 0===e.path.replace(j,"/").indexOf(t.path.replace(j,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(i,m);var v=l[p]?this.ariaCurrentValue:null,g=function(e){me(e)&&(t.replace?n.replace(a,fe):n.push(a,fe))},b={click:me};Array.isArray(this.event)?this.event.forEach((function(e){b[e]=g})):b[this.event]=g;var y={class:l},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:o,navigate:g,isActive:l[f],isExactActive:l[p]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?e():e("span",{},_)}if("a"===this.tag)y.on=b,y.attrs={href:s,"aria-current":v};else{var w=ve(this.$slots.default);if(w){w.isStatic=!1;var x=w.data=S({},w.data);for(var k in x.on=x.on||{},x.on){var C=x.on[k];k in b&&(x.on[k]=Array.isArray(C)?C:[C])}for(var O in b)O in x.on?x.on[O].push(b[O]):x.on[O]=g;var T=w.data.attrs=S({},w.data.attrs);T.href=s,T["aria-current"]=v}else y.on=b}return e(this.tag,y,this.$slots.default)}};function me(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||e.defaultPrevented||void 0!==e.button&&0!==e.button)){if(e.currentTarget&&e.currentTarget.getAttribute){var t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function ve(e){if(e)for(var t,n=0;n-1&&(s.params[h]=n.params[h]);return s.path=ce(c.path,s.params),l(c,s,o)}if(s.path){s.params={};for(var f=0;f=e.length?n():e[r]?t(e[r],(function(){i(r+1)})):i(r+1)};i(0)}var We={redirected:2,aborted:4,cancelled:8,duplicated:16};function He(e,t){return Ue(e,t,We.redirected,'Redirected when going from "'+e.fullPath+'" to "'+function(e){if("string"==typeof e)return e;if("path"in e)return e.path;var t={};return Ke.forEach((function(n){n in e&&(t[n]=e[n])})),JSON.stringify(t,null,2)}(t)+'" via a navigation guard.')}function qe(e,t){return Ue(e,t,We.cancelled,'Navigation cancelled from "'+e.fullPath+'" to "'+t.fullPath+'" with a new navigation.')}function Ue(e,t,n,i){var r=new Error(i);return r._isRouter=!0,r.from=e,r.to=t,r.type=n,r}var Ke=["params","query","hash"];function Ge(e){return Object.prototype.toString.call(e).indexOf("Error")>-1}function Ye(e,t){return Ge(e)&&e._isRouter&&(null==t||e.type===t)}function Ze(e){return function(t,n,i){var r=!1,a=0,o=null;Xe(e,(function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){r=!0,a++;var l,u=et((function(t){var r;((r=t).__esModule||Qe&&"Module"===r[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:he.extend(t),n.components[s]=t,--a<=0&&i()})),c=et((function(e){var t="Failed to resolve async component "+s+": "+e;o||(o=Ge(e)?e:new Error(t),i(o))}));try{l=e(u,c)}catch(e){c(e)}if(l)if("function"==typeof l.then)l.then(u,c);else{var d=l.component;d&&"function"==typeof d.then&&d.then(u,c)}}})),r||i()}}function Xe(e,t){return Je(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function Je(e){return Array.prototype.concat.apply([],e)}var Qe="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function et(e){var t=!1;return function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(!t)return t=!0,e.apply(this,n)}}var tt=function(e,t){this.router=e,this.base=function(e){if(!e)if(ge){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=L,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function nt(e,t,n,i){var r=Xe(e,(function(e,i,r,a){var o=function(e,t){"function"!=typeof e&&(e=he.extend(e));return e.options[t]}(e,t);if(o)return Array.isArray(o)?o.map((function(e){return n(e,i,r,a)})):n(o,i,r,a)}));return Je(i?r.reverse():r)}function it(e,t){if(t)return function(){return e.apply(t,arguments)}}tt.prototype.listen=function(e){this.cb=e},tt.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},tt.prototype.onError=function(e){this.errorCbs.push(e)},tt.prototype.transitionTo=function(e,t,n){var i,r=this;try{i=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var a=this.current;this.confirmTransition(i,(function(){r.updateRoute(i),t&&t(i),r.ensureURL(),r.router.afterHooks.forEach((function(e){e&&e(i,a)})),r.ready||(r.ready=!0,r.readyCbs.forEach((function(e){e(i)})))}),(function(e){n&&n(e),e&&!r.ready&&(Ye(e,We.redirected)&&a===L||(r.ready=!0,r.readyErrorCbs.forEach((function(t){t(e)}))))}))},tt.prototype.confirmTransition=function(e,t,n){var i=this,r=this.current;this.pending=e;var a,o,s=function(e){!Ye(e)&&Ge(e)&&(i.errorCbs.length?i.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},l=e.matched.length-1,u=r.matched.length-1;if(B(e,r)&&l===u&&e.matched[l]===r.matched[u])return this.ensureURL(),e.hash&&$e(this.router,r,e,!1),s(((o=Ue(a=r,e,We.duplicated,'Avoided redundant navigation to current location: "'+a.fullPath+'".')).name="NavigationDuplicated",o));var c=function(e,t){var n,i=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,i=Re&&n;i&&this.listeners.push(Ee());var r=function(){var n=e.current,r=at(e.base);e.current===L&&r===e._startLocation||e.transitionTo(r,(function(e){i&&$e(t,e,n,!0)}))};window.addEventListener("popstate",r),this.listeners.push((function(){window.removeEventListener("popstate",r)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var i=this,r=this.current;this.transitionTo(e,(function(e){Be(U(i.base+e.fullPath)),$e(i.router,e,r,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var i=this,r=this.current;this.transitionTo(e,(function(e){Ve(U(i.base+e.fullPath)),$e(i.router,e,r,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(at(this.base)!==this.current.fullPath){var t=U(this.base+this.current.fullPath);e?Be(t):Ve(t)}},t.prototype.getCurrentLocation=function(){return at(this.base)},t}(tt);function at(e){var t=window.location.pathname,n=t.toLowerCase(),i=e.toLowerCase();return!e||n!==i&&0!==n.indexOf(U(i+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var ot=function(e){function t(t,n,i){e.call(this,t,n),i&&function(e){var t=at(e);if(!/^\/#/.test(t))return window.location.replace(U(e+"/#"+t)),!0}(this.base)||st()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=Re&&t;n&&this.listeners.push(Ee());var i=function(){var t=e.current;st()&&e.transitionTo(lt(),(function(i){n&&$e(e.router,i,t,!0),Re||dt(i.fullPath)}))},r=Re?"popstate":"hashchange";window.addEventListener(r,i),this.listeners.push((function(){window.removeEventListener(r,i)}))}},t.prototype.push=function(e,t,n){var i=this,r=this.current;this.transitionTo(e,(function(e){ct(e.fullPath),$e(i.router,e,r,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var i=this,r=this.current;this.transitionTo(e,(function(e){dt(e.fullPath),$e(i.router,e,r,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;lt()!==t&&(e?ct(t):dt(t))},t.prototype.getCurrentLocation=function(){return lt()},t}(tt);function st(){var e=lt();return"/"===e.charAt(0)||(dt("/"+e),!1)}function lt(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function ut(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function ct(e){Re?Be(ut(e)):window.location.hash=e}function dt(e){Re?Ve(ut(e)):window.location.replace(ut(e))}var ht=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var i=this;this.transitionTo(e,(function(e){i.stack=i.stack.slice(0,i.index+1).concat(e),i.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var i=this;this.transitionTo(e,(function(e){i.stack=i.stack.slice(0,i.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var i=this.stack[n];this.confirmTransition(i,(function(){var e=t.current;t.index=n,t.updateRoute(i),t.router.afterHooks.forEach((function(t){t&&t(i,e)}))}),(function(e){Ye(e,We.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(tt),ft=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=we(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!Re&&!1!==e.fallback,this.fallback&&(t="hash"),ge||(t="abstract"),this.mode=t,t){case"history":this.history=new rt(this,e.base);break;case"hash":this.history=new ot(this,e.base,this.fallback);break;case"abstract":this.history=new ht(this,e.base)}},pt={currentRoute:{configurable:!0}};function mt(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}ft.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},pt.currentRoute.get=function(){return this.history&&this.history.current},ft.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof rt||n instanceof ot){var i=function(e){n.setupListeners(),function(e){var i=n.current,r=t.options.scrollBehavior;Re&&r&&"fullPath"in e&&$e(t,e,i,!1)}(e)};n.transitionTo(n.getCurrentLocation(),i,i)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},ft.prototype.beforeEach=function(e){return mt(this.beforeHooks,e)},ft.prototype.beforeResolve=function(e){return mt(this.resolveHooks,e)},ft.prototype.afterEach=function(e){return mt(this.afterHooks,e)},ft.prototype.onReady=function(e,t){this.history.onReady(e,t)},ft.prototype.onError=function(e){this.history.onError(e)},ft.prototype.push=function(e,t,n){var i=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){i.history.push(e,t,n)}));this.history.push(e,t,n)},ft.prototype.replace=function(e,t,n){var i=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){i.history.replace(e,t,n)}));this.history.replace(e,t,n)},ft.prototype.go=function(e){this.history.go(e)},ft.prototype.back=function(){this.go(-1)},ft.prototype.forward=function(){this.go(1)},ft.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},ft.prototype.resolve=function(e,t,n){var i=de(e,t=t||this.history.current,n,this),r=this.match(i,t),a=r.redirectedFrom||r.fullPath,o=function(e,t,n){var i="hash"===n?"#"+t:t;return e?U(e+"/"+i):i}(this.history.base,a,this.mode);return{location:i,route:r,href:o,normalizedTo:i,resolved:r}},ft.prototype.getRoutes=function(){return this.matcher.getRoutes()},ft.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==L&&this.history.transitionTo(this.history.getCurrentLocation())},ft.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==L&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(ft.prototype,pt),ft.install=function e(t){if(!e.installed||he!==t){e.installed=!0,he=t;var n=function(e){return void 0!==e},i=function(e,t){var i=e.$options._parentVnode;n(i)&&n(i=i.data)&&n(i=i.registerRouteInstance)&&i(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,i(this,this)},destroyed:function(){i(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",W),t.component("RouterLink",pe);var r=t.config.optionMergeStrategies;r.beforeRouteEnter=r.beforeRouteLeave=r.beforeRouteUpdate=r.created}},ft.version="3.5.3",ft.isNavigationFailure=Ye,ft.NavigationFailureType=We,ft.START_LOCATION=L,ge&&window.Vue&&window.Vue.use(ft);const vt=ft;var gt=n(40158),bt=n.n(gt);function yt(e){return function(e){if(Array.isArray(e))return _t(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return _t(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _t(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);ne.length)&&(t=e.length);for(var n=0,i=new Array(t);n0){window.__projectId=t;var n=e.cacheProjects.find((function(e){return e.id==t}));if(n)return n}return{}},projectParameter:function(e){return function(t){if(!e.projectId)return!1;var n=e.cacheProjectParameter.find((function(t){return t.project_id==e.projectId}));return n||(n=$A.projectParameterTemplate(e.projectId),e.cacheProjectParameter.push(n)),n&&!!n[t]}},taskData:function(e){var t=e.taskId;if(0==t&&(t=$A.runNum(window.__taskId)),t>0){window.__taskId=t;var n=e.cacheTasks.find((function(e){return e.id==t}));if(n)return n}return{}},transforTasks:function(e){return function(t){return t.filter((function(e){var n=e.parent_id;return!(n>0&&t.find((function(e){return e.id==n})))})).map((function(n){if(n.parent_id>0){var i=e.cacheTasks.find((function(e){return e.id==n.parent_id}));return i?Object.assign({},i,{id:n.id,parent_id:n.parent_id,name:n.name,start_at:n.start_at,end_at:n.end_at,complete_at:n.complete_at,_time:n._time,flow_item_id:n.flow_item_id,flow_item_name:n.flow_item_name,flow_item_status:n.flow_item_status,sub_top:!0,sub_my:[]}):Object.assign({},n,{sub_top:!0,sub_my:[]})}return Object.assign({},n,{sub_top:!1,sub_my:t.filter((function(e){return e.parent_id==n.id}))})}))}},dashboardTask:function(e){var t=$A.Date($A.formatDate("Y-m-d 00:00:00")),n=$A.Date($A.formatDate("Y-m-d 23:59:59")),i=$A.Date($A.formatDate("Y-m-d H:i:s")),r=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return!e.archived_at&&((!e.complete_at||!0!==t)&&e.owner)},a=e.cacheTasks.filter((function(e){return r(e)}));if(e.taskCompleteTemps.length>0){var o,s=e.cacheTasks.filter((function(t){return e.taskCompleteTemps.includes(t.id)&&r(t,!1)}));if(s.length>0)(o=a=$A.cloneJSON(a)).push.apply(o,Dt(s))}return{today:a.filter((function(e){var i=$A.Date(e.start_at),r=$A.Date(e.end_at);return i<=t&&t<=r||i<=n&&n<=r||i>t&&n>r})),overdue:a.filter((function(e){return e.end_at&&$A.Date(e.end_at)<=i})),all:a}}};function Mt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var i,r,a=[],o=!0,s=!1;try{for(n=n.call(e);!(o=(i=n.next()).done)&&(a.push(i.value),!t||a.length!==t);o=!0);}catch(e){s=!0,r=e}finally{try{o||null==n.return||n.return()}finally{if(s)throw r}}return a}(e,t)||It(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Pt(e){return function(e){if(Array.isArray(e))return jt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||It(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function It(e,t){if(e){if("string"==typeof e)return jt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?jt(e,t):void 0}}function jt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n0?r.token||n.userToken:"",n.userInfo=r,n.userId=r.userid,n.userToken=r.token,n.userIsAdmin=$A.inArray("admin",r.identity),$A.setStorage("userInfo",n.userInfo),i("getBasicData"),i("websocketConnection"),e()}))},saveUserOnlineStatus:function(e,t){var n=e.state,i=t.userid,r=t.online;n.userOnline[i]!==r&&(n.userOnline=Object.assign({},n.userOnline,At({},i,r)))},getUserBasic:function(e,t){var n=e.state,i=e.dispatch;if(!0!==n.cacheLoading.loadUserBasic){var r=$A.Time(),a=$A.cloneJSON(n.cacheUserWait);t&&t.userid&&a.push(t),n.cacheUserWait=[];var o=[],s=0;a.some((function(e){var t=n.cacheUserBasic.find((function(t){return t.userid==e.userid}));if(t&&r-t._time<=30)return setTimeout((function(){n.cacheUserActive=Object.assign(t,{__:Math.random()}),d.Store.set("cacheUserActive",t)}),s+=5),!1;o.push(e)})),0!==o.length&&(o.length>30&&(n.cacheUserWait=o.slice(30),o=o.slice(0,30)),n.cacheLoading.loadUserBasic=!0,i("call",{url:"users/basic",data:{userid:Pt(new Set(o.map((function(e){return e.userid}))))}}).then((function(e){r=$A.Time(),o.forEach((function(t){var n=e.data.find((function(e){return e.userid==t.userid}))||Object.assign(t,{email:""});n._time=r,i("saveUserBasic",n)})),n.cacheLoading.loadUserBasic=!1,i("getUserBasic")})).catch((function(e){console.warn(e),n.cacheLoading.loadUserBasic=!1,i("getUserBasic")})))}else t&&n.cacheUserWait.push(t)},saveUserBasic:function(e,t){var n=e.state;$A.execMainDispatch("saveUserBasic",t);var i=n.cacheUserBasic.findIndex((function(e){return e.userid==t.userid}));i>-1?(t=Object.assign({},n.cacheUserBasic[i],t),n.cacheUserBasic.splice(i,1,t)):n.cacheUserBasic.push(t),n.cacheUserActive=Object.assign(t,{__:Math.random()}),d.Store.set("cacheUserActive",t),setTimeout((function(){$A.setStorage("cacheUserBasic",n.cacheUserBasic)}))},userNickNameInput:function(e){var t=e.dispatch;return new Promise((function(e,n){var i=function(t,i){"function"==typeof t&&t(),!0===i?setTimeout(e,301):setTimeout(n,301)};$A.modalInput({title:"设置昵称",placeholder:"请输入昵称",okText:"保存",onOk:function(e,n){e?t("call",{url:"users/editdata",data:{nickname:e},checkNick:!1}).then((function(){t("getUserInfo").then((function(){i(n,!0)})).catch((function(){i(n,!1)}))})).catch((function(e){var t=e.msg;$A.modalError(t,301),i(n,!1)})):i(n,!1)},onCancel:function(){i(null,!1)}})}))},logout:function(e){e.state;var t=e.dispatch,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t("handleClearCache",{}).then((function(){var e=["/","/login"].includes(window.location.pathname)?"":encodeURIComponent(window.location.href);!1===n&&(e=null),$A.goForward({name:"login",query:e?{from:e}:{}},!0)}))},handleClearCache:function(e,t){var n=e.state,i=e.dispatch;return new Promise((function(e){try{var r=$A.getStorageString("cacheLoginEmail"),a=$A.getStorageString("cacheThemeMode");window.localStorage.clear(),n.cacheUserBasic=[],n.cacheDialogs=[],n.cacheProjects=[],n.cacheColumns=[],n.cacheTasks=[],$A.setStorage("cacheProjectParameter",n.cacheProjectParameter),$A.setStorage("cacheServerUrl",n.cacheServerUrl),$A.setStorage("cacheLoginEmail",r),$A.setStorage("cacheThemeMode",a),i("saveUserInfo",$A.isJson(t)?t:n.userInfo),e()}catch(t){e()}}))},saveFile:function(e,t){var n=e.state,i=e.dispatch;if($A.execMainDispatch("saveFile",t),$A.isArray(t))t.forEach((function(e){i("saveFile",e)}));else if($A.isJson(t)){var r={_load:!1,_edit:!1},a=n.files.findIndex((function(e){return e.id==t.id}));a>-1?n.files.splice(a,1,Object.assign(r,n.files[a],t)):n.files.push(Object.assign(r,t))}},forgetFile:function(e,t){var n=e.state,i=e.dispatch;$A.execMainDispatch("forgetFile",t),($A.isArray(t)?t:[t]).some((function(e){n.files=n.files.filter((function(t){return t.id!=e})),n.files.some((function(t){t.pid==e&&i("forgetFile",t.id)}))}))},getFiles:function(e,t){var n=e.state,i=e.dispatch;return new Promise((function(e,r){i("call",{url:"file/lists",data:{pid:t}}).then((function(r){var a=r.data.map((function(e){return e.id}));n.files=n.files.filter((function(e){return e.pid!=t||a.includes(e.id)})),i("saveFile",r.data),e(r)})).catch((function(e){console.warn(e),r(e)}))}))},searchFiles:function(e,t){e.state;var n=e.dispatch;return new Promise((function(e,i){n("call",{url:"file/search",data:{key:t}}).then((function(t){n("saveFile",t.data),e(t)})).catch((function(e){console.warn(e),i(e)}))}))},saveProject:function(e,t){var n=e.state,i=e.dispatch;if($A.execMainDispatch("saveProject",t),$A.isArray(t))t.forEach((function(e){i("saveProject",e)}));else if($A.isJson(t)){void 0!==t.project_column&&(i("saveColumn",t.project_column),delete t.project_column);var r=n.cacheProjects.findIndex((function(e){return e.id==t.id}));r>-1?n.cacheProjects.splice(r,1,Object.assign({},n.cacheProjects[r],t)):(void 0===t.project_user&&(t.project_user=[]),n.cacheProjects.push(t)),n.cacheDialogs.some((function(e){if("group"==e.type&&"project"==e.group_type&&e.group_info.id==t.id)for(var n in void 0!==t.name&&(e.name=t.name),e.group_info)e.group_info.hasOwnProperty(n)&&void 0!==t[n]&&(e.group_info[n]=t[n])})),setTimeout((function(){$A.setStorage("cacheProjects",n.cacheProjects)}))}},forgetProject:function(e,t){var n=e.state;$A.execMainDispatch("forgetProject",t);var i=$A.isArray(t)?t:[t];if(i.some((function(e){var t=n.cacheProjects.findIndex((function(t){return t.id==e}));t>-1&&n.cacheProjects.splice(t,1)})),i.includes(n.projectId)){var r=n.cacheProjects.find((function(e){var n=e.id;return n&&n!=t}));r?$A.goForward({path:"/manage/project/"+r.id}):$A.goForward({path:"/manage/dashboard"})}setTimeout((function(){$A.setStorage("cacheProjects",n.cacheProjects)}))},getProjects:function(e,t){var n=e.state,i=e.dispatch;return new Promise((function(e,r){if(0===n.userId)return n.cacheProjects=[],void r({msg:"Parameter error"});i("call",{url:"project/lists",data:t||{}}).then((function(t){var r=t.data;n.projectTotal=r.total_all,i("saveProject",r.data),e(r)})).catch((function(e){console.warn(e),r(e)}))}))},getProjectOne:function(e,t){var n=e.state,i=e.dispatch;return new Promise((function(e,r){0!==$A.runNum(t)?(n.projectLoad++,i("call",{url:"project/one",data:{project_id:t}}).then((function(t){setTimeout((function(){n.projectLoad--}),10),i("saveProject",t.data),e(t)})).catch((function(e){console.warn(e),n.projectLoad--,r(e)}))):r({msg:"Parameter error"})}))},archivedProject:function(e,t){e.state;var n=e.dispatch;return new Promise((function(e,i){0!==$A.runNum(t)?n("call",{url:"project/archived",data:{project_id:t}}).then((function(i){n("forgetProject",t),e(i)})).catch((function(e){console.warn(e),n("getProjectOne",t).catch((function(){})),i(e)})):i({msg:"Parameter error"})}))},removeProject:function(e,t){e.state;var n=e.dispatch;return new Promise((function(e,i){0!==$A.runNum(t)?n("call",{url:"project/remove",data:{project_id:t}}).then((function(i){n("forgetProject",t),e(i)})).catch((function(e){console.warn(e),n("getProjectOne",t).catch((function(){})),i(e)})):i({msg:"Parameter error"})}))},exitProject:function(e,t){e.state;var n=e.dispatch;return new Promise((function(e,i){0!==$A.runNum(t)?n("call",{url:"project/exit",data:{project_id:t}}).then((function(i){n("forgetProject",t),e(i)})).catch((function(e){console.warn(e),n("getProjectOne",t).catch((function(){})),i(e)})):i({msg:"Parameter error"})}))},saveColumn:function(e,t){var n=e.state,i=e.dispatch;if($A.execMainDispatch("saveColumn",t),$A.isArray(t))t.forEach((function(e){i("saveColumn",e)}));else if($A.isJson(t)){var r=n.cacheColumns.findIndex((function(e){return e.id==t.id}));r>-1?n.cacheColumns.splice(r,1,Object.assign({},n.cacheColumns[r],t)):n.cacheColumns.push(t),setTimeout((function(){$A.setStorage("cacheColumns",n.cacheColumns)}))}},forgetColumn:function(e,t){var n=e.state,i=e.dispatch;$A.execMainDispatch("forgetColumn",t);var r=$A.isArray(t)?t:[t],a=[];r.some((function(e){var t=n.cacheColumns.findIndex((function(t){return t.id==e}));t>-1&&(a.push(n.cacheColumns[t].project_id),i("getProjectOne",n.cacheColumns[t].project_id).catch((function(){})),n.cacheColumns.splice(t,1))})),Array.from(new Set(a)).some((function(e){return i("getProjectOne",e).catch((function(){}))})),setTimeout((function(){$A.setStorage("cacheColumns",n.cacheColumns)}))},getColumns:function(e,t){var n=e.state,i=e.dispatch;return new Promise((function(e,r){if(0===n.userId)return n.cacheColumns=[],void r({msg:"Parameter error"});n.projectLoad++,i("call",{url:"project/column/lists",data:{project_id:t}}).then((function(r){var a=r.data;n.projectLoad--;var o=a.data.map((function(e){return e.id}));if(n.cacheColumns=n.cacheColumns.filter((function(e){return e.project_id!=t||o.includes(e.id)})),i("saveColumn",a.data),e(a.data),1===n.cacheColumns.filter((function(e){return e.project_id==t})).length){var s=n.cacheProjectParameter.find((function(e){return e.project_id==t}))||{};void 0!==s.cardInit&&!1!==s.cardInit||i("toggleProjectParameter",{project_id:t,key:{card:!1,cardInit:!0}})}})).catch((function(e){console.warn(e),n.projectLoad--,r(e)}))}))},removeColumn:function(e,t){e.state;var n=e.dispatch;return new Promise((function(e,i){0!==$A.runNum(t)?n("call",{url:"project/column/remove",data:{column_id:t}}).then((function(i){n("forgetColumn",t),e(i)})).catch((function(e){console.warn(e),i(e)})):i({msg:"Parameter error"})}))},saveTask:function(e,t){var n=e.state,i=e.dispatch;if($A.execMainDispatch("saveTask",t),$A.isArray(t))t.forEach((function(e){i("saveTask",e)}));else if($A.isJson(t)){if(t._time=$A.Time(),t.flow_item_name&&-1!==t.flow_item_name.indexOf("|")){var r=Mt(t.flow_item_name.split("|"),2);t.flow_item_status=r[0],t.flow_item_name=r[1]}void 0!==t.archived_at&&n.cacheTasks.filter((function(e){return e.parent_id==t.id})).some((function(e){i("saveTask",Object.assign(e,{archived_at:t.archived_at,archived_userid:t.archived_userid}))}));var a={};void 0!==t.update_marking&&(a=$A.isJson(t.update_marking)?t.update_marking:{},delete t.update_marking);var o=n.cacheTasks.findIndex((function(e){return e.id==t.id}));o>-1?n.cacheTasks.splice(o,1,Object.assign({},n.cacheTasks[o],t)):n.cacheTasks.push(t),(!0===a.is_update_maintask||t.parent_id>0&&-1===n.cacheTasks.findIndex((function(e){return e.id==t.parent_id})))&&i("getTaskOne",t.parent_id).catch((function(){})),!0===a.is_update_project&&i("getProjectOne",t.project_id).catch((function(){})),!0===a.is_update_content&&i("getTaskContent",t.id),!0===a.is_update_subtask&&i("getTaskForParent",t.id).catch((function(){})),n.cacheDialogs.some((function(e){if("group"==e.type&&"task"==e.group_type&&e.group_info.id==t.id)for(var n in void 0!==t.name&&(e.name=t.name),e.group_info)e.group_info.hasOwnProperty(n)&&void 0!==t[n]&&(e.group_info[n]=t[n])})),setTimeout((function(){$A.setStorage("cacheTasks",n.cacheTasks)}))}},forgetTask:function(e,t){var n=e.state,i=e.dispatch;$A.execMainDispatch("forgetTask",t);var r=$A.isArray(t)?t:[t],a=[],o=[];r.some((function(e){var t=n.cacheTasks.findIndex((function(t){return t.id==e}));t>-1&&(n.cacheTasks[t].parent_id&&a.push(n.cacheTasks[t].parent_id),o.push(n.cacheTasks[t].project_id),n.cacheTasks.splice(t,1))})),Array.from(new Set(a)).some((function(e){return i("getTaskOne",e).catch((function(){}))})),Array.from(new Set(o)).some((function(e){return i("getProjectOne",e).catch((function(){}))})),r.includes(n.taskId)&&(n.taskId=0),setTimeout((function(){$A.setStorage("cacheTasks",n.cacheTasks)}))},increaseTaskMsgNum:function(e,t){var n=e.state;$A.execMainDispatch("increaseTaskMsgNum",t);var i=n.cacheTasks.find((function(e){return e.dialog_id===t}));i&&i.msg_num++},getTasks:function(e,t){var n=e.state,i=e.dispatch;return new Promise((function(e,r){if(0===n.userId)return n.cacheTasks=[],void r({msg:"Parameter error"});t.project_id&&n.projectLoad++,i("call",{url:"project/task/lists",data:t}).then((function(a){t.project_id&&n.projectLoad--;var o=a.data;if(i("saveTask",o.data),o.next_page_url){var s=Object.assign(t,{page:o.current_page+1});o.current_page%5==0?$A.modalWarning({content:"数据已超过"+o.to+"条,是否继续加载?",onOk:function(){i("getTasks",s).then(e).catch(r)},onCancel:function(){e()}}):i("getTasks",s).then(e).catch(r)}else e()})).catch((function(e){console.warn(e),r(e),t.project_id&&n.projectLoad--}))}))},getTaskOne:function(e,t){e.state;var n=e.dispatch;return new Promise((function(e,i){/^\d+$/.test(t)&&(t={task_id:t}),0!==$A.runNum(t.task_id)?n("call",{url:"project/task/one",data:t}).then((function(t){n("saveTask",t.data),e(t)})).catch((function(e){console.warn(e),i(e)})):i({msg:"Parameter error"})}))},getTaskForDashboard:function(e){var t=e.state,n=e.dispatch,i=e.getters;if(!0!==t.cacheLoading.loadDashboardTasks){t.cacheLoading.loadDashboardTasks=!0;var r=$A.Time(),a=i.dashboardTask,o=a.today,s=a.overdue,l=a.all,u=o.map((function(e){return e.id}));u.push.apply(u,Pt(s.map((function(e){return e.id})))),u.push.apply(u,Pt(l.map((function(e){return e.id}))));var c=3;!function e(){if(c<=0){t.cacheLoading.loadDashboardTasks=!1;var a=i.dashboardTask,o=a.today,s=a.overdue,l=a.all,d=o.filter((function(e){return e._time>=r})).map((function(e){return e.id}));return d.push.apply(d,Pt(s.filter((function(e){return e._time>=r})).map((function(e){return e.id})))),d.push.apply(d,Pt(l.filter((function(e){return e._time>=r})).map((function(e){return e.id})))),void n("forgetTask",u.filter((function(e){return-1==d.indexOf(e)})))}2==--c?n("getTasks",{complete:"no",time:[$A.formatDate("Y-m-d 00:00:00"),$A.formatDate("Y-m-d 23:59:59")]}).then(e).catch(e):1==c?n("getTasks",{complete:"no",time_before:$A.formatDate("Y-m-d H:i:s")}).then(e).catch(e):0==c&&n("getTasks",{complete:"no"}).then(e).catch(e)}()}},getTaskForProject:function(e,t){var n=e.state,i=e.dispatch;return new Promise((function(e,r){var a=$A.Time(),o=n.cacheTasks.filter((function(e){return e.project_id==t})).map((function(e){return e.id})),s=function(){var e=n.cacheTasks.filter((function(e){return e.project_id==t&&e._time>=a})).map((function(e){return e.id}));i("forgetTask",o.filter((function(t){return-1==e.indexOf(t)})))};i("getTasks",{project_id:t}).then((function(){s(),e()})).catch((function(){s(),r()}))}))},getTaskForParent:function(e,t){var n=e.state,i=e.dispatch;return new Promise((function(e,r){var a=$A.Time(),o=n.cacheTasks.filter((function(e){return e.parent_id==t})).map((function(e){return e.id})),s=function(){var e=n.cacheTasks.filter((function(e){return e.parent_id==t&&e._time>=a})).map((function(e){return e.id}));i("forgetTask",o.filter((function(t){return-1==e.indexOf(t)})))};i("getTasks",{parent_id:t,archived:"all"}).then((function(){s(),e()})).catch((function(){s(),r()}))}))},removeTask:function(e,t){e.state;var n=e.dispatch;return new Promise((function(e,i){0!==$A.runNum(t)?(n("taskLoadStart",t),n("call",{url:"project/task/remove",data:{task_id:t}}).then((function(i){n("forgetTask",t),n("taskLoadEnd",t),e(i)})).catch((function(e){console.warn(e),n("getTaskOne",t).catch((function(){})),n("taskLoadEnd",t),i(e)}))):i({msg:"Parameter error"})}))},archivedTask:function(e,t){e.state;var n=e.dispatch;return new Promise((function(e,i){/^\d+$/.test(t)&&(t={task_id:t}),0!==$A.runNum(t.task_id)?(n("taskLoadStart",t.task_id),n("call",{url:"project/task/archived",data:t}).then((function(i){n("saveTask",i.data),n("taskLoadEnd",t.task_id),e(i)})).catch((function(e){console.warn(e),n("getTaskOne",t.task_id).catch((function(){})),n("taskLoadEnd",t.task_id),i(e)}))):i({msg:"Parameter error"})}))},getTaskContent:function(e,t){e.state;var n=e.dispatch;0!==$A.runNum(t)&&n("call",{url:"project/task/content",data:{task_id:t}}).then((function(e){n("saveTaskContent",e.data)})).catch((function(e){console.warn(e)}))},saveTaskContent:function(e,t){var n=e.state,i=e.dispatch;if($A.execMainDispatch("saveTaskContent",t),$A.isArray(t))t.forEach((function(e){i("saveTaskContent",e)}));else if($A.isJson(t)){var r=n.taskContents.findIndex((function(e){return e.task_id==t.task_id}));r>-1?n.taskContents.splice(r,1,Object.assign({},n.taskContents[r],t)):n.taskContents.push(t)}},getTaskFiles:function(e,t){var n=e.state,i=e.dispatch;0!==$A.runNum(t)&&i("call",{url:"project/task/files",data:{task_id:t}}).then((function(e){e.data.forEach((function(e){var t=n.taskFiles.findIndex((function(t){return t.id==e.id}));t>-1?n.taskFiles.splice(t,1,e):n.taskFiles.push(e)})),i("saveTask",{id:t,file_num:e.data.length})})).catch((function(e){console.warn(e)}))},forgetTaskFile:function(e,t){var n=e.state;e.dispatch;($A.isArray(t)?t:[t]).some((function(e){var t=n.taskFiles.findIndex((function(t){return t.id==e}));t>-1&&n.taskFiles.splice(t,1)}))},openTask:function(e,t){var n=e.state,i=e.dispatch,r=t;$A.isJson(t)&&(r=t.parent_id>0?t.parent_id:t.id),n.taskId=r,r>0&&i("getTaskOne",{task_id:r,archived:"all"}).then((function(){i("getTaskContent",r),i("getTaskFiles",r),i("getTaskForParent",r).catch((function(){}))})).catch((function(e){var t=e.msg;$A.modalWarning({content:t,onOk:function(){n.taskId=0}})}))},taskAdd:function(e,t){e.state;var n=e.dispatch;return new Promise((function(e,i){var r=$A.cloneJSON($A.date2string(t));$A.isArray(r.column_id)&&(r.column_id=r.column_id.find((function(e){return e}))),n("call",{url:"project/task/add",data:r,method:"post"}).then((function(t){n("addTaskSuccess",t.data),e(t)})).catch((function(e){console.warn(e),i(e)}))}))},taskAddSub:function(e,t){var n=e.dispatch;return new Promise((function(e,i){n("call",{url:"project/task/addsub",data:t}).then((function(t){n("addTaskSuccess",t.data),e(t)})).catch((function(e){console.warn(e),i(e)}))}))},addTaskSuccess:function(e,t){var n=e.dispatch;void 0!==t.new_column&&(n("saveColumn",t.new_column),delete t.new_column),n("saveTask",t),n("getProjectOne",t.project_id).catch((function(){}))},taskUpdate:function(e,t){e.state;var n=e.dispatch;return new Promise((function(e,i){n("taskBeforeUpdate",t).then((function(t){var r=t.confirm,a=t.post;n("taskLoadStart",a.task_id),n("call",{url:"project/task/update",data:a,method:"post"}).then((function(t){n("taskLoadEnd",a.task_id),n("saveTask",t.data),e(t)})).catch((function(e){console.warn(e),n("taskLoadEnd",a.task_id),n("getTaskOne",a.task_id).catch((function(){})),setTimeout((function(){i(e)}),!0===r?301:0)}))})).catch(i)}))},taskBeforeUpdate:function(e,t){var n=e.state;e.dispatch;return new Promise((function(e,i){var r=$A.cloneJSON($A.date2string(t)),a="温馨提示",o=null;if(void 0!==r.times){!1===t.times[0]&&(o="你确定要取消任务时间吗?");var s=n.cacheTasks.find((function(e){return e.id==r.task_id}));a=s.parent_id>0?"更新子任务":"更新主任务",s&&(s.parent_id>0?r.times[0]&&n.cacheTasks.some((function(e){if(e.id!=s.parent_id)return!1;if(!e.end_at)return o="主任务没有设置时间,设置子任务将同步设置主任务",!0;var t=$A.Date(r.times[0],!0),n=$A.Date(r.times[1],!0),i=$A.Date(e.start_at,!0),a=$A.Date(e.end_at,!0);return ta?(o="新设置的子任务结束时间在主任务时间之外,修改后将同步修改主任务",!0):void 0})):n.cacheTasks.some((function(e){if(e.parent_id!=s.id)return!1;if(!e.end_at)return!1;var t=$A.Date(r.times[0],!0),n=$A.Date(r.times[1],!0),i=$A.Date(s.start_at,!0),a=$A.Date(s.end_at,!0),l=$A.Date(e.start_at,!0),u=$A.Date(e.end_at,!0);return(i!=l||a!=u)&&(r.times[0]?t>l?(o="新设置的开始时间在子任务(".concat(e.name,")时间之内,修改后将同步修改子任务"),!0):n-1?n.taskFlowItems.splice(t,1,e):n.taskFlowItems.push(e),a&&a.flow_item_id==e.id&&a.flow_item_name!=e.name&&n.cacheTasks.filter((function(t){return t.flow_item_id==e.id})).some((function(t){i("saveTask",{id:t.id,flow_item_name:"".concat(e.status,"|").concat(e.name)})}))})),delete o.turns;var s=n.taskFlows.findIndex((function(e){return e.task_id==o.task_id}));s>-1?n.taskFlows.splice(s,1,o):n.taskFlows.push(o),e(r)})).catch((function(e){console.warn(e),r(e)}))}))},getTaskPriority:function(e){var t=e.state,n=e.dispatch;return new Promise((function(e,i){n("call",{url:"system/priority"}).then((function(n){t.taskPriority=n.data,e(n)})).catch((function(e){console.warn(e),i(e)}))}))},getColumnTemplate:function(e){var t=e.state,n=e.dispatch;return new Promise((function(e,i){n("call",{url:"system/column/template"}).then((function(n){t.columnTemplate=n.data,e(n)})).catch((function(e){console.warn(e),i(e)}))}))},saveTaskCompleteTemp:function(e,t){var n=e.state;/^\d+$/.test(t)&&!n.taskCompleteTemps.includes(t)&&n.taskCompleteTemps.push(t)},forgetTaskCompleteTemp:function(e,t){var n=e.state;!0===t?n.taskCompleteTemps=[]:/^\d+$/.test(t)&&(n.taskCompleteTemps=n.taskCompleteTemps.filter((function(e){return e!=t})))},saveDialog:function(e,t){var n=e.state,i=e.dispatch;if($A.execMainDispatch("saveDialog",t),$A.isArray(t))t.forEach((function(e){i("saveDialog",e)}));else if($A.isJson(t)){var r=n.cacheDialogs.findIndex((function(e){return e.id==t.id}));r>-1?n.cacheDialogs.splice(r,1,Object.assign({},n.cacheDialogs[r],t)):n.cacheDialogs.push(t),setTimeout((function(){$A.setStorage("cacheDialogs",n.cacheDialogs)}))}},updateDialogLastMsg:function(e,t){var n=e.state,i=e.dispatch;$A.execMainDispatch("updateDialogLastMsg",t),n.cacheDialogs.find((function(e){return e.id==t.dialog_id}))?i("saveDialog",{id:t.dialog_id,last_msg:t,last_at:$A.formatDate("Y-m-d H:i:s")}):i("getDialogOne",t.dialog_id).catch((function(){}))},getDialogs:function(e){var t=e.state,n=e.dispatch;return new Promise((function(e,i){if(0===t.userId)return t.cacheDialogs=[],void i({msg:"Parameter error"});n("call",{url:"dialog/lists"}).then((function(t){n("saveDialog",t.data.data),e(t)})).catch((function(e){console.warn(e),i(e)}))}))},getDialogOne:function(e,t){e.state;var n=e.dispatch;return new Promise((function(e,i){0!==$A.runNum(t)?n("call",{url:"dialog/one",data:{dialog_id:t}}).then((function(t){n("saveDialog",t.data),e(t)})).catch((function(e){console.warn(e),i(e)})):i({msg:"Parameter error"})}))},openDialogUserid:function(e,t){var n=e.state,i=e.dispatch;return new Promise((function(e,r){t!==n.userId?(n.dialogOpenId=0,i("call",{url:"dialog/open/user",data:{userid:t}}).then((function(t){i("saveDialog",t.data),$A.setStorage("messenger::dialogId",t.data.id),n.dialogOpenId=t.data.id,e(t)})).catch((function(e){console.warn(e),r(e)}))):r({msg:"Parameter error"})}))},forgetDialog:function(e,t){var n=e.state;$A.execMainDispatch("forgetDialog",t);var i=$A.isArray(t)?t:[t];i.some((function(e){var t=n.cacheDialogs.findIndex((function(t){return t.id==e}));t>-1&&n.cacheDialogs.splice(t,1)})),i.includes($A.getStorageInt("messenger::dialogId"))&&$A.setStorage("messenger::dialogId",0),setTimeout((function(){$A.setStorage("cacheDialogs",n.cacheDialogs)}))},saveDialogMsg:function(e,t){var n=e.state,i=e.dispatch;if($A.execMainDispatch("saveDialogMsg",t),$A.isArray(t))t.forEach((function(e){i("saveDialogMsg",e)}));else if($A.isJson(t)){var r=n.dialogMsgs.findIndex((function(e){return e.id==t.id}));r>-1?n.dialogMsgs.splice(r,1,Object.assign({},n.dialogMsgs[r],t)):n.dialogMsgs.push(t)}},forgetDialogMsg:function(e,t){var n=e.state;$A.execMainDispatch("forgetDialogMsg",t),($A.isArray(t)?t:[t]).some((function(e){var t=n.dialogMsgs.findIndex((function(t){return t.id==e}));t>-1&&n.dialogMsgs.splice(t,1)}))},getDialogMsgs:function(e,t){var n=e.state,i=e.dispatch,r=n.cacheDialogs.find((function(e){return e.id==t}));r||(r={id:t},n.cacheDialogs.push(r)),r.loading||(r.loading=!0,r.currentPage=1,r.hasMorePages=!1,i("call",{url:"dialog/msg/lists",data:{dialog_id:t,page:r.currentPage}}).then((function(e){r.loading=!1,r.currentPage=e.data.current_page,r.hasMorePages=!!e.data.next_page_url,i("saveDialog",r);var a=e.data.data.map((function(e){return e.id}));n.dialogMsgs=n.dialogMsgs.filter((function(e){return e.dialog_id!=t||a.includes(e.id)})),i("saveDialog",e.data.dialog),i("saveDialogMsg",e.data.data)})).catch((function(e){console.warn(e),r.loading=!1})))},getDialogMoreMsgs:function(e,t){var n=e.state,i=e.dispatch;return new Promise((function(e,r){var a=n.cacheDialogs.find((function(e){return e.id==t}));a?a.hasMorePages?a.loading?r({msg:"Loading"}):(a.loading=!0,a.currentPage++,i("call",{url:"dialog/msg/lists",data:{dialog_id:t,page:a.currentPage}}).then((function(t){a.loading=!1,a.currentPage=t.data.current_page,a.hasMorePages=!!t.data.next_page_url,i("saveDialogMsg",t.data.data),e(t)})).catch((function(e){console.warn(e),a.loading=!1,r(e)}))):r({msg:"No more page"}):r({msg:"Parameter error"})}))},dialogMsgRead:function(e,t){var n=e.state,i=e.dispatch;if(t.userid!=n.userId&&!0!==t.is_read){t.is_read=!0;var r=n.cacheDialogs.find((function(e){return e.id==t.dialog_id}));r&&r.unread>0&&(r.unread--,i("saveDialog",r)),n.wsReadWaitList.push(t.id),clearTimeout(n.wsReadTimeout),n.wsReadTimeout=setTimeout((function(){i("websocketSend",{type:"readMsg",data:{id:$A.cloneJSON(n.wsReadWaitList)}}),n.wsReadWaitList=[]}),50)}},websocketConnection:function(e){var t=e.state,n=e.dispatch;e.commit;if(clearTimeout(t.wsTimeout),0!==t.userId){var i=$A.apiUrl("../ws");i=(i=i.replace("https://","wss://")).replace("http://","ws://"),i+="?action=web&token="+t.userToken,t.ws=new WebSocket(i),t.ws.onopen=function(e){t.wsOpenNum++},t.ws.onclose=function(e){t.ws=null,clearTimeout(t.wsTimeout),t.wsTimeout=setTimeout((function(){n("websocketConnection")}),3e3)},t.ws.onerror=function(e){t.ws=null,clearTimeout(t.wsTimeout),t.wsTimeout=setTimeout((function(){n("websocketConnection")}),3e3)},t.ws.onmessage=function(e){var i=$A.formatWebsocketMessageDetail($A.jsonParse(e.data)),r=i.type,a=i.msgId;switch(r){case"open":$A.setStorage("userWsFd",i.data.fd);break;case"receipt":"function"==typeof t.wsCall[a]&&t.wsCall[a](i.body,!0),delete t.wsCall[a];break;case"line":n("saveUserOnlineStatus",i.data);break;default:switch(a&&n("websocketSend",{type:"receipt",msgId:a}),t.wsMsg=i,Object.values(t.wsListener).forEach((function(e){if("function"==typeof e)try{e(i)}catch(e){}})),r){case"dialog":!function(e){var i=e.mode,r=e.data,a=r.dialog_id;switch(i){case"delete":n("forgetDialogMsg",r.id);var o=t.cacheDialogs.find((function(e){return e.id==r.dialog_id}));o&&(o.last_at=r.last_msg&&r.last_msg.created_at,o.last_msg=r.last_msg,r.update_read?n("call",{url:"dialog/msg/unread",dialog_id:r.dialog_id}).then((function(e){o.unread=e.data.unread,n("saveDialog",o)})).catch((function(){})):n("saveDialog",o));break;case"add":case"chat":if(!t.dialogMsgs.find((function(e){return e.id==r.id}))){if(n("increaseTaskMsgNum",a),"chat"===i)return;if(r.userid!==t.userId){var s=t.cacheDialogs.find((function(e){return e.id==r.dialog_id}));s&&void 0===t.cacheUnreads[r.id]&&(t.cacheUnreads[r.id]=!0,s.unread++,n("saveDialog",s))}d.Store.set("dialogMsgPush",r)}n("saveDialogMsg",r),n("updateDialogLastMsg",r);break;case"readed":t.dialogMsgs.find((function(e){return e.id==r.id}))&&n("saveDialogMsg",r)}}(i);break;case"project":!function(e){var t=e.action,i=e.data;switch(t){case"add":case"update":n("saveProject",i);break;case"detail":n("getProjectOne",i.id).catch((function(){})),n("getTaskForProject",i.id).catch((function(){}));break;case"archived":case"delete":n("forgetProject",i.id);break;case"sort":n("getTaskForProject",i.id).catch((function(){}))}}(i);break;case"projectColumn":!function(e){var t=e.action,i=e.data;switch(t){case"add":case"update":n("saveColumn",i);break;case"delete":n("forgetColumn",i.id)}}(i);break;case"projectTask":!function(e){var t=e.action,i=e.data;switch(t){case"add":n("addTaskSuccess",i);break;case"update":n("saveTask",i);break;case"dialog":n("saveTask",i),n("getDialogOne",i.dialog_id).catch((function(){}));break;case"upload":n("getTaskFiles",i.task_id);break;case"filedelete":n("forgetTaskFile",i.id);break;case"delete":n("forgetTask",i.id)}}(i);break;case"file":!function(e){var t=e.action,i=e.data;switch(t){case"add":case"update":n("saveFile",i);break;case"delete":n("forgetFile",i.id)}}(i)}}}}else t.ws&&(t.ws.close(),t.ws=null)},websocketSend:function(e,t){var n=e.state;if($A.isJson(t)){var i=t.type,r=t.data,a=t.callback,o=void 0;if(n.ws){"function"==typeof a&&(o=$A.randomString(16),n.wsCall[o]=a);try{n.ws.send(JSON.stringify({type:i,msgId:o,data:r}))}catch(e){"function"==typeof a&&a(null,!1)}}else"function"==typeof a&&a(null,!1)}else"function"==typeof a&&a(null,!1)},websocketPath:function(e,t){var n=e.state,i=e.dispatch;clearTimeout(n.wsPathTimeout),n.wsPathValue=t,n.wsPathTimeout=setTimeout((function(){n.wsPathValue==t&&i("websocketSend",{type:"path",data:{path:t}})}),1e3)},websocketMsgListener:function(e,t){var n=e.state,i=t.name,r=t.callback;"function"==typeof r?n.wsListener[i]=r:n.wsListener[i]&&delete n.wsListener[i]},websocketClose:function(e){var t=e.state;t.ws&&t.ws.close()}};i.default.use(r.ZP);const Lt=new r.ZP.Store({state:Tt,getters:$t,mutations:{},actions:Nt});function Ft(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function Rt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Bt={name:"PageTitle",props:{title:{type:[String,Number],default:""}},data:function(){return{pagePath:""}},activated:function(){this.updateTitle()},computed:function(e){for(var t=1;tMath.floor(e.offsetWidth),this.showTooltip&&this.existSlot){var i=this.$slots.default.map((function(e){return e.text?e.text:e.elm.innerText?e.elm.innerText:""}));this.tooltipContent=i.join("")}t=null},onClick:function(e){this.$emit("on-click",e)}}};const qt=(0,o.Z)(Ht,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ETooltip",{attrs:{content:e.tipText,placement:e.placement,effect:e.tooltipTheme,delay:e.delay,disabled:!e.showTooltip||e.disabled,"max-width":e.tooltipMaxWidth,transfer:""}},[n("span",{ref:"content",staticClass:"common-auto-tip",on:{mouseenter:e.handleTooltipIn,click:e.onClick}},[e.existSlot?[e._t("default")]:[e._v(e._s(e.content))]],2)])}),[],!1,null,null,null).exports;const Ut={name:"TagInput",props:{value:{default:""},cut:{default:","},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},placeholder:{default:""},max:{default:0}},data:function(){var e=[];return this.value.split(",").forEach((function(t){t&&e.push(t)})),{minWidth:80,tis:"",tisTimeout:null,showPlaceholder:!0,content:"",disSource:e,isFocus:!1}},mounted:function(){this.wayMinWidth()},watch:{placeholder:function(){this.wayMinWidth()},value:function(e){var t=[];$A.count(e)>0&&e.split(",").forEach((function(e){e&&t.push(e)})),this.disSource=t},disSource:function(e){var t=this,n="";e.forEach((function(e){""!=n&&(n+=t.cut),n+=e})),this.$emit("input",n),this.$emit("on-change")}},computed:{placeholderText:function(){return this.disSource.length>0?"":this.placeholder}},methods:{focus:function(e){var t=this.$refs.myTextarea;t.focus(e);var n=(e||{}).cursor;if(n){var i=t.value.length;switch(n){case"start":t.setSelectionRange(0,0);break;case"end":t.setSelectionRange(i,i);break;default:t.setSelectionRange(0,i)}}},wayMinWidth:function(){var e=this;this.showPlaceholder=!0,this.$nextTick((function(){e.$refs.myPlaceholder&&(e.minWidth=Math.max(e.minWidth,e.$refs.myPlaceholder.offsetWidth)),setTimeout((function(){try{e.minWidth=Math.max(e.minWidth,e.$refs.myPlaceholder.offsetWidth),e.showPlaceholder=!1}catch(e){}$A(e.$refs.myPlaceholder).is(":visible")||e.wayMinWidth()}),500)}))},pasteText:function(e){e.preventDefault();var t=(e.clipboardData||window.clipboardData).getData("text");this.addTag(!1,t)},downEnter:function(e){e.preventDefault()},onFocus:function(e){this.isFocus=!0,this.$emit("on-focus",e)},onBlur:function(e){this.isFocus=!1,this.addTag(!1,this.content),this.$emit("on-blur",e)},onKeyup:function(e){var t=this;this.addTag(e,this.content),this.$emit("on-keyup",e),13===e.keyCode&&this.$nextTick((function(){t.$emit("on-enter",e)}))},addTag:function(e,t){var n=this;if(!1===e||13===e.keyCode)return""!=t.trim()&&-1===this.disSource.indexOf(t.trim())&&this.disSource.push(t.trim()),void(this.content="");if(this.max>0&&this.disSource.length>=this.max)return this.content="",this.tis="最多只能添加"+this.max+"个",clearInterval(this.tisTimeout),void(this.tisTimeout=setTimeout((function(){n.tis=""}),2e3));var i=t.trim(),r=i.length-this.cut.length;""!=i&&i.substring(r)===this.cut&&(""!=(i=i.substring(0,r)).trim()&&-1===this.disSource.indexOf(i.trim())&&this.disSource.push(i.trim()),this.content="")},delTag:function(e){if(!1===e){if(""!==this.content)return;e=this.disSource.length-1}this.disSource.splice(e,1),this.focus()}}};const Kt=(0,o.Z)(Ut,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"common-tag-input",class:{focus:e.isFocus},on:{paste:function(t){return e.pasteText(t)},click:e.focus}},[e._l(e.disSource,(function(t,i){return n("div",{staticClass:"tags-item"},[n("span",{staticClass:"tags-content",on:{click:function(e){e.stopPropagation()}}},[e._v(e._s(t))]),n("span",{staticClass:"tags-del",on:{click:function(t){return t.stopPropagation(),e.delTag(i)}}},[e._v("×")])])})),e._v(" "),n("textarea",{directives:[{name:"model",rawName:"v-model",value:e.content,expression:"content"}],ref:"myTextarea",staticClass:"tags-input",style:{minWidth:e.minWidth+"px"},attrs:{placeholder:e.tis||e.placeholderText,disabled:e.disabled,readonly:e.readonly},domProps:{value:e.content},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.downEnter(t)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?null:e.delTag(!1)}],keyup:e.onKeyup,focus:e.onFocus,blur:e.onBlur,input:function(t){t.target.composing||(e.content=t.target.value)}}}),e._v(" "),e.showPlaceholder||""!==e.tis?n("span",{ref:"myPlaceholder",staticClass:"tags-placeholder"},[e._v(e._s(e.tis||e.placeholderText))]):e._e()],2)}),[],!1,null,null,null).exports;var Gt=n(3869),Yt=n.n(Gt);i.default.use(Yt());const Zt={name:"TableAction",props:{column:{type:Object,default:function(){return{}}},autoWidth:{type:Boolean,default:!0},minWidth:{type:Number,default:80},align:{type:String,default:""},menu:{type:Array,default:function(){return[]}}},data:function(){return{width:0,height:0}},mounted:function(){this.onUpdate()},activated:function(){this.onUpdate()},beforeUpdate:function(){this.onUpdate()},computed:{tdStyle:function(){var e={};switch(this.align.toLowerCase()){case"left":e.justifyContent="flex-start";break;case"center":e.justifyContent="center";break;case"right":e.justifyContent="flex-end"}return e}},methods:{isAliIcon:function(e){return $A.leftExists(e,"&#")},handleIn:function(){this.$refs.action.offsetWidth!=this.width&&this.onUpdate()},onUpdate:function(){this.onResize({width:this.$refs.action.offsetWidth,height:this.$refs.action.offsetHeight})},onResize:function(e){var t=this,n=e.width,i=e.height;if(this.autoWidth){$A(".ivu-table-column-"+this.column.__id).each((function(e,t){var r=$A(t).find(".td-action-container");r.length>0&&(n=Math.max(n,r[0].offsetWidth),i=Math.max(i,r[0].offsetHeight))})),this.width=n,this.height=i;var r=Math.max(this.minWidth,this.width+26);this.column.minWidth&&(r=Math.max(this.column.minWidth,r)),this.column.maxWidth&&(r=Math.min(this.column.maxWidth,r)),r!=this.column.width&&this.$nextTick((function(){t.$set(t.column,"width",r)}))}},onClick:function(e){this.$emit("action",e)}}};const Xt=(0,o.Z)(Zt,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"td-action",style:e.tdStyle,attrs:{"data-width":e.width,"data-height":e.height}},[n("div",{directives:[{name:"resize",rawName:"v-resize",value:e.onResize,expression:"onResize"}],ref:"action",staticClass:"td-action-container",class:{"td-action-menu":e.menu.length>0},on:{mouseenter:e.handleIn}},[e._t("default"),e._v(" "),e._l(e.menu,(function(t,i){return n("ETooltip",{key:i,attrs:{placement:"top",disabled:!t.title,content:t.title,enterable:!1,"open-delay":600}},[t.children&&t.children.length>0?n("EDropdown",{staticClass:"menu-dropdown",attrs:{size:"medium",trigger:"click"},on:{command:e.onClick}},[e.isAliIcon(t.icon)?n("i",{staticClass:"aliicon menu-icon",style:t.style||{},domProps:{innerHTML:e._s(t.icon)}}):n("Icon",{staticClass:"menu-icon",style:t.style||{},attrs:{type:t.icon}}),e._v(" "),n("EDropdownMenu",{attrs:{slot:"dropdown"},slot:"dropdown"},e._l(t.children,(function(t,i){return n("EDropdownItem",{key:i,style:t.style||{},attrs:{command:t.action,divided:!!t.divided}},[n("div",[e._v(e._s(t.title))])])})),1)],1):e.isAliIcon(t.icon)?n("i",{staticClass:"aliicon menu-icon",style:t.style||{},domProps:{innerHTML:e._s(t.icon)},on:{click:function(n){return e.onClick(t.action)}}}):n("Icon",{staticClass:"menu-icon",style:t.style||{},attrs:{type:t.icon},on:{click:function(n){return e.onClick(t.action)}}})],1)}))],2)])}),[],!1,null,null,null).exports;const Jt={name:"QuickEdit",directives:{clickoutside:{bind:function(e,t,n){function i(n){if(e.contains(n.target))return!1;t.expression&&t.value(n)}e.__vueClickOutside__=i,document.addEventListener("click",i)},update:function(){},unbind:function(e,t){document.removeEventListener("click",e.__vueClickOutside__),delete e.__vueClickOutside__}}},props:{value:{},autoEdit:{},isTag:{type:Boolean,default:!1},alwaysIcon:{type:Boolean,default:!1},clickOutSide:{type:Boolean,default:!0}},data:function(){return{isLoad:!1,isEdit:!1,content:""}},mounted:function(){!0===this.autoEdit&&this.onEdit()},watch:{autoEdit:function(e){!0===e&&setTimeout(this.onEdit,0)}},methods:{onEditChange:function(e){this.isEdit=e,this.$emit("on-edit-change",e)},onEdit:function(){var e=this;this.content=this.value,this.onEditChange(!0),this.$nextTick((function(){e.$refs.input.focus({cursor:"all"})}))},onKeyup:function(e){13===e.keyCode?this.onEnter():27===e.keyCode&&(this.isEdit=!1,this.isLoad=!1)},onEnter:function(){var e=this;this.content!=this.value?this.isLoad||(this.isLoad=!0,this.$emit("input",this.content),this.$emit("on-update",this.content,(function(){e.onEditChange(!1),e.isLoad=!1}))):this.onEditChange(!1)},onClickOut:function(){this.clickOutSide&&this.onEnter()},onBlur:function(){!this.clickOutSide&&this.isEdit&&this.onEnter()}}};const Qt=(0,o.Z)(Jt,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"quick-edit",class:[e.alwaysIcon?"quick-always":""]},[e.isEdit?n("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.onClickOut,expression:"onClickOut"}],staticClass:"quick-input"},[e.isTag?n("TagInput",{ref:"input",attrs:{disabled:e.isLoad},on:{"on-keyup":e.onKeyup,"on-blur":e.onBlur},model:{value:e.content,callback:function(t){e.content=t},expression:"content"}}):n("Input",{ref:"input",attrs:{disabled:e.isLoad},on:{"on-keyup":e.onKeyup,"on-blur":e.onBlur},model:{value:e.content,callback:function(t){e.content=t},expression:"content"}}),e._v(" "),e.isLoad?n("div",{staticClass:"quick-loading"},[n("Loading")],1):e._e()],1):[n("div",{staticClass:"quick-text"},[e._t("default")],2),e._v(" "),n("Icon",{staticClass:"quick-icon",attrs:{type:"ios-create-outline"},on:{click:function(t){return t.stopPropagation(),e.onEdit.apply(null,arguments)}}})]],2)}),[],!1,null,null,null).exports;function en(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function tn(e){for(var t=1;t0&&(e.border=t+"px solid "+(n||"#ffffff")),e},spotStyle:function(){var e=this.borderWitdh,t=this.size;return"default"===t&&(t=32),e>0&&(t-=e),32==t?{}:{transform:"scale("+Math.min(1.25,t/32)+")"}},nameStyle:function(){return this.showIcon?{}:{paddingLeft:0}},avatarSize:function(){var e=this.borderWitdh,t=this.size;return"default"===t&&(t=32),e>0?t-2*e:t},showImg:function(){var e=this.user.userimg;return!!e&&!$A.rightExists(e,"/avatar.png")},isDefault:function(){var e=this.user.userimg;return $A.strExists(e,"/avatar/default_")},nickname:function(){var e=this.user.nickname;if(!e)return"D";var t=e.substring(0,2);return/^[\u4e00-\u9fa5]+$/.test(t)&&(t=t.substring(0,1)),t||"D"}}),watch:{userid:function(){this.getData()},userInfo:function(e){e.userid==this.userid&&(this.user=e)},userOnline:function(e){this.user&&void 0!==e[this.user.userid]&&this.$set(this.user,"online",e[this.user.userid])}},methods:{getData:function(){this.userid&&(this.userid!=this.userInfo.userid?this.$store.dispatch("getUserBasic",{userid:this.userid}):this.user=this.userInfo)},onError:function(){return!1},openDialog:function(){this.goForward({path:"/manage/messenger"}),this.$store.dispatch("openDialogUserid",this.userid).catch((function(){}))}}};const an=(0,o.Z)(rn,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.user?n("ETooltip",{staticClass:"common-avatar",attrs:{"open-delay":e.openDelay,disabled:e.tooltipDisabled,placement:e.tooltipPlacement}},[n("div",{staticClass:"common-avatar-transfer",attrs:{slot:"content"},slot:"content"},[e._t("default"),e._v(" "),n("p",[e._v(e._s(e.$L("昵称"))+": "+e._s(e.user.nickname))]),e._v(" "),n("p",[e._v(e._s(e.$L("职位/职称"))+": "+e._s(e.user.profession||"-"))]),e._v(" "),e.userId!=e.userid&&e.showIconMenu?n("div",{staticClass:"avatar-icons"},[n("Icon",{attrs:{type:"ios-chatbubbles"},on:{click:e.openDialog}})],1):e._e()],2),e._v(" "),n("div",{staticClass:"avatar-wrapper"},[e.showIcon?n("div",{class:["avatar-box",e.userId===e.userid||e.user.online?"online":""],style:e.boxStyle},[n("em",{style:e.spotStyle}),e._v(" "),e.showImg?n("EAvatar",{class:{"avatar-default":e.isDefault},attrs:{src:e.user.userimg,size:e.avatarSize},on:{error:e.onError}},[n("span",{style:e.spotStyle},[e._v(e._s(e.nickname))])]):n("EAvatar",{staticClass:"avatar-text",attrs:{size:e.avatarSize}},[n("span",{style:e.spotStyle},[e._v(e._s(e.nickname))])])],1):e._e(),e._v(" "),e.showName?n("div",{staticClass:"avatar-name",style:e.nameStyle},[e._v(e._s(e.user.nickname))]):e._e()])]):e._e()}),[],!1,null,null,null).exports;var on=n(64720);function sn(e){return sn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},sn(e)}var ln=window&&window.process&&window.process.type;i.default.use(r.ZP),i.default.use(bt(),{modal:{checkEscClose:!0}}),i.default.use(vt),i.default.use(St),i.default.component("PageTitle",Vt),i.default.component("Loading",Wt),i.default.component("AutoTip",qt),i.default.component("TagInput",Kt),i.default.component("TableAction",Xt),i.default.component("QuickEdit",Qt),i.default.component("UserAvatar",an),i.default.component("EAvatar",on.Avatar),i.default.component("ETooltip",on.Tooltip),i.default.component("EPopover",on.Popover),i.default.component("EDropdown",on.Dropdown),i.default.component("EDropdownMenu",on.DropdownMenu),i.default.component("EDropdownItem",on.DropdownItem);var un=vt.prototype.push;vt.prototype.push=function(e){return un.call(this,e).catch((function(e){return e}))};var cn=new vt({mode:ln?"hash":"history",routes:C});bt().LoadingBar.config({color:"#3fcc25",failedColor:"#ff0000"}),cn.beforeEach((function(e,t,n){bt().LoadingBar.start(),n()})),cn.afterEach((function(){bt().LoadingBar.finish()})),i.default.prototype.goForward=function(e,t){"string"==typeof e&&(e={name:e}),!0===t?dn.$router.replace(e).then((function(){})):dn.$router.push(e).then((function(){}))},i.default.prototype.goBack=function(e){var t=$A.jsonParse(window.sessionStorage.__history__||"{}");$A.runNum(t["::count"])>2?dn.$router.go("number"==typeof e?e:-1):dn.$router.replace("object"===sn(e)?e:{path:"/"}).then((function(){}))},i.default.prototype.$A=$A,i.default.prototype.$Electron=null,i.default.prototype.$Platform="web",i.default.prototype.$isMainElectron=!1,i.default.prototype.$isSubElectron=!1,ln&&(i.default.prototype.$Electron=electron,i.default.prototype.$Platform=/macintosh|mac os x/i.test(navigator.userAgent)?"mac":"win",i.default.prototype.$isMainElectron=/\s+MainTaskWindow\//.test(window.navigator.userAgent),i.default.prototype.$isSubElectron=/\s+SubTaskWindow\//.test(window.navigator.userAgent)),i.default.config.productionTip=!1;var dn=new i.default({el:"#app",router:cn,store:Lt,template:"",components:{App:k}});$A.goForward=dn.goForward,$A.goBack=dn.goBack,$A.getLanguage=dn.getLanguage,$A.Message=dn.$Message,$A.Notice=dn.$Notice,$A.Modal=dn.$Modal,$A.store=dn.$store,$A.L=dn.$L,$A.Electron=dn.$Electron,$A.Platform=dn.$Platform,$A.isMainElectron=dn.$isMainElectron,$A.isSubElectron=dn.$isSubElectron,$A.execMainDispatch=function(e,t){$A.isSubElectron&&$A.Electron.sendMessage("sendForwardMain",{channel:"dispatch",data:{action:e,data:t}})}},4142:e=>{e.exports=function(e){var t={begin:"`[\\s\\S]"};return{case_insensitive:!0,aliases:["ahk"],keywords:{keyword:"Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group",literal:"true false NOT AND OR",built_in:"ComSpec Clipboard ClipboardAll ErrorLevel"},contains:[t,e.inherit(e.QUOTE_STRING_MODE,{contains:[t]}),e.COMMENT(";","$",{relevance:0}),e.C_BLOCK_COMMENT_MODE,{className:"number",begin:e.NUMBER_RE,relevance:0},{className:"variable",begin:"%[a-zA-Z0-9#_$@]+%"},{className:"built_in",begin:"^\\s*\\w+\\s*(,|%)"},{className:"title",variants:[{begin:'^[^\\n";]+::(?!=)'},{begin:'^[^\\n";]+:(?!=)',relevance:0}]},{className:"meta",begin:"^\\s*#\\w+",end:"$",relevance:0},{className:"built_in",begin:"A_[a-zA-Z0-9]+"},{begin:",\\s*,"}]}}},52423:e=>{e.exports=function(e){var t={variants:[e.COMMENT(";","$",{relevance:0}),e.COMMENT("#cs","#ce"),e.COMMENT("#comments-start","#comments-end")]},n={begin:"\\$[A-z0-9_]+"},i={className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},r={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"ByRef Case Const ContinueCase ContinueLoop Default Dim Do Else ElseIf EndFunc EndIf EndSelect EndSwitch EndWith Enum Exit ExitLoop For Func Global If In Local Next ReDim Return Select Static Step Switch Then To Until Volatile WEnd While With",built_in:"Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait",literal:"True False And Null Not Or"},contains:[t,n,i,r,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"comments include include-once NoTrayIcon OnAutoItStartRegister pragma compile RequireAdmin"},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",keywords:{"meta-keyword":"include"},end:"$",contains:[i,{className:"meta-string",variants:[{begin:"<",end:">"},{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]}]},i,t]},{className:"symbol",begin:"@[A-z0-9_]+"},{className:"function",beginKeywords:"Func",end:"$",illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:[n,i,r]}]}]}}},40349:e=>{e.exports=function(e){var t={begin:/(?:[A-Z\_\.\-]+|--[a-zA-Z0-9_-]+)\s*:/,returnBegin:!0,end:";",endsWithParent:!0,contains:[{className:"attribute",begin:/\S/,end:":",excludeEnd:!0,starts:{endsWithParent:!0,excludeEnd:!0,contains:[{begin:/[\w-]+\(/,returnBegin:!0,contains:[{className:"built_in",begin:/[\w-]+/},{begin:/\(/,end:/\)/,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}]},e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"#[0-9A-Fa-f]+"},{className:"meta",begin:"!important"}]}}]};return{case_insensitive:!0,illegal:/[=\/|'\$]/,contains:[e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/},{className:"selector-class",begin:/\.[A-Za-z0-9_-]+/},{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"@(font-face|page)",lexemes:"[a-z-]+",keywords:"font-face page"},{begin:"@",end:"[{;]",illegal:/:/,contains:[{className:"keyword",begin:/\w+/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},{begin:"{",end:"}",illegal:/\S/,contains:[e.C_BLOCK_COMMENT_MODE,t]}]}}},8650:e=>{e.exports=function(e){var t={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],keywords:t,illegal:"{e.exports=function(e){var t="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,{className:"meta",begin:"@[A-Za-z]+"}]}}},5489:e=>{e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},a={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,r],subLanguage:"xml"}},o={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,r],subLanguage:"css"}},s={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,r]};r.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,o,s,i,e.REGEXP_MODE];var l=r.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,o,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:l}]}]},{className:"",begin:/\s/,end:/\s*/,skip:!0},{begin://,subLanguage:"xml",contains:[{begin:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},{begin:/<[A-Za-z0-9\\._:-]+/,end:/(\/[A-Za-z0-9\\._:-]+|[A-Za-z0-9\\._:-]+\/)>/,skip:!0,contains:[{begin:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:l}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor get set",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},17410:e=>{e.exports=function(e){var t="([\\w-]+|@{[\\w-]+})",n=[],i=[],r=function(e){return{className:"string",begin:"~?"+e+".*?"+e}},a=function(e,t,n){return{className:e,begin:t,relevance:n}},o={begin:"\\(",end:"\\)",contains:i,relevance:0};i.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r("'"),r('"'),e.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},a("number","#[0-9A-Fa-f]+\\b"),o,a("variable","@@?[\\w-]+",10),a("variable","@{[\\w-]+}"),a("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},{className:"meta",begin:"!important"});var s=i.concat({begin:"{",end:"}",contains:n}),l={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(i)},u={begin:t+"\\s*:",returnBegin:!0,end:"[;}]",relevance:0,contains:[{className:"attribute",begin:t,end:":",excludeEnd:!0,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:i}}]},c={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",returnEnd:!0,contains:i,relevance:0}},d={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:s}},h={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:t,end:"{"}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l,a("keyword","all\\b"),a("variable","@{[\\w-]+}"),a("selector-tag",t+"%?",0),a("selector-id","#"+t),a("selector-class","\\."+t,0),a("selector-tag","&",0),{className:"selector-attr",begin:"\\[",end:"\\]"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"\\(",end:"\\)",contains:s},{begin:"!important"}]};return n.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,c,d,u,h),{case_insensitive:!0,illegal:"[=>'/<($\"]",contains:n}}},67020:e=>{e.exports=function(e){return{aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$"},{begin:"^.+?\\n[=-]{2,}$"}]},{begin:"<",end:">",subLanguage:"xml",relevance:0},{className:"bullet",begin:"^\\s*([*+-]|(\\d+\\.))\\s+"},{className:"strong",begin:"[*_]{2}.+?[*_]{2}"},{className:"emphasis",variants:[{begin:"\\*.+?\\*"},{begin:"_.+?_",relevance:0}]},{className:"quote",begin:"^>\\s+",end:"$"},{className:"code",variants:[{begin:"^```w*s*$",end:"^```s*$"},{begin:"`.+?`"},{begin:"^( {4}|\t)",end:"$",relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},{begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}},51988:e=>{e.exports=function(e){var t={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},n={className:"meta",begin:/<\?(php)?|\?>/},i={className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},r={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php","php3","php4","php5","php6","php7"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[n]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},n,{className:"keyword",begin:/\$this\b/},t,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,r]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},i,r]}}},15350:e=>{e.exports=function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10",built_in:"Ellipsis NotImplemented",literal:"False None True"},n={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:t,illegal:/#/},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,n],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,n],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,n,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,n,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},a={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},o={className:"params",begin:/\(/,end:/\)/,contains:["self",n,a,r]};return i.contains=[r,a,n],{aliases:["py","gyp","ipython"],keywords:t,illegal:/(<\/|->|\?)|=>/,contains:[n,a,r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,o,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}},86507:e=>{e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise"},i={className:"meta",begin:"@"+t},r={begin:"\\(",end:/\)/,keywords:n,contains:["self",e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.NUMBER_MODE]},a={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,r]},o={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},s={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},l={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,s],subLanguage:"xml"}},u={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,s],subLanguage:"css"}},c={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,s]};return s.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,l,u,c,o,e.REGEXP_MODE],{aliases:["ts"],keywords:n,contains:[{className:"meta",begin:/^\s*['"]use strict['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,l,u,c,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,o,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+e.IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.IDENT_RE},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}]}],relevance:0},{className:"function",begin:"function",end:/[\{;]/,excludeEnd:!0,keywords:n,contains:["self",e.inherit(e.TITLE_MODE,{begin:t}),a],illegal:/%/,relevance:0},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0,contains:["self",a]},{begin:/module\./,keywords:{built_in:"module"},relevance:0},{beginKeywords:"module",end:/\{/,excludeEnd:!0},{beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:"interface extends"},{begin:/\$[(.]/},{begin:"\\."+e.IDENT_RE,relevance:0},i,r]}}},283:e=>{e.exports=function(e){var t={endsWithParent:!0,illegal:/`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf"],case_insensitive:!0,contains:[{className:"meta",begin:"",relevance:10,contains:[{begin:"\\[",end:"\\]"}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{begin:/<\?(php)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]},{className:"tag",begin:"|$)",end:">",keywords:{name:"style"},contains:[t],starts:{end:"",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:"|$)",end:">",keywords:{name:"script"},contains:[t],starts:{end:"<\/script>",returnEnd:!0,subLanguage:["actionscript","javascript","handlebars","xml","vbscript"]}},{className:"tag",begin:"",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},t]}]}}},43705:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});const i={add:function(e,t){var n="toc".concat(t).concat(++this.index),i={anchor:n,level:t,text:e},r=this.tocItems;return i.level<=5&&r.push(i),n},reset:function(){this.tocItems=[],this.index=0},tocItems:[],index:0}},37352:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Ce});var i={},r=[],a=Object.keys,o={},s={},l=/^(no-?highlight|plain|text)$/i,u=/\blang(?:uage)?-([\w-]+)\b/i,c=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,d="",h={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function f(e){return e.replace(/&/g,"&").replace(//g,">")}function p(e){return e.nodeName.toLowerCase()}function m(e,t){var n=e&&e.exec(t);return n&&0===n.index}function v(e){return l.test(e)}function g(e){var t,n={},i=Array.prototype.slice.call(arguments,1);for(t in e)n[t]=e[t];return i.forEach((function(e){for(t in e)n[t]=e[t]})),n}function b(e){var t=[];return function e(n,i){for(var r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?i+=r.nodeValue.length:1===r.nodeType&&(t.push({event:"start",offset:i,node:r}),i=e(r,i),p(r).match(/br|hr|img|input/)||t.push({event:"stop",offset:i,node:r}));return i}(e,0),t}function y(e){function t(e){return e&&e.source||e}function n(n,i){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(i?"g":""))}!function i(r,o){if(!r.compiled){if(r.compiled=!0,r.keywords=r.keywords||r.beginKeywords,r.keywords){var s={},l=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach((function(e){var n=e.split("|");s[n[0]]=[t,n[1]?Number(n[1]):1]}))};"string"==typeof r.keywords?l("keyword",r.keywords):a(r.keywords).forEach((function(e){l(e,r.keywords[e])})),r.keywords=s}r.lexemesRe=n(r.lexemes||/\w+/,!0),o&&(r.beginKeywords&&(r.begin="\\b("+r.beginKeywords.split(" ").join("|")+")\\b"),r.begin||(r.begin=/\B|\b/),r.beginRe=n(r.begin),r.endSameAsBegin&&(r.end=r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(r.endRe=n(r.end)),r.terminator_end=t(r.end)||"",r.endsWithParent&&o.terminator_end&&(r.terminator_end+=(r.end?"|":"")+o.terminator_end)),r.illegal&&(r.illegalRe=n(r.illegal)),null==r.relevance&&(r.relevance=1),r.contains||(r.contains=[]),r.contains=Array.prototype.concat.apply([],r.contains.map((function(e){return function(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map((function(t){return g(e,{variants:null},t)}))),e.cached_variants||e.endsWithParent&&[g(e)]||[e]}("self"===e?r:e)}))),r.contains.forEach((function(e){i(e,r)})),r.starts&&i(r.starts,o);var u=r.contains.map((function(e){return e.beginKeywords?"\\.?(?:"+e.begin+")\\.?":e.begin})).concat([r.terminator_end,r.illegal]).map(t).filter(Boolean);r.terminators=u.length?n(function(e,n){for(var i=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,a="",o=0;o0&&(a+=n);l.length>0;){var u=i.exec(l);if(null==u){a+=l;break}a+=l.substring(0,u.index),l=l.substring(u.index+u[0].length),"\\"==u[0][0]&&u[1]?a+="\\"+String(Number(u[1])+s):(a+=u[0],"("==u[0]&&r++)}}return a}(u,"|"),!0):{exec:function(){return null}}}}(e)}function _(e,t,n,i){function r(e){return new RegExp(e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}function a(e,t){if(m(e.endRe,t)){for(;e.endsParent&&e.parent;)e=e.parent;return e}if(e.endsWithParent)return a(e.parent,t)}function s(e,t){var n=v.case_insensitive?t[0].toLowerCase():t[0];return e.keywords.hasOwnProperty(n)&&e.keywords[n]}function l(e,t,n,i){var r='')+t+(n?"":d):t}function u(){k+=null!=b.subLanguage?function(){var e="string"==typeof b.subLanguage;if(e&&!o[b.subLanguage])return f(C);var t=e?_(b.subLanguage,C,!0,x[b.subLanguage]):w(C,b.subLanguage.length?b.subLanguage:void 0);return b.relevance>0&&(O+=t.relevance),e&&(x[b.subLanguage]=t.top),l(t.language,t.value,!1,!0)}():function(){var e,t,n,i;if(!b.keywords)return f(C);for(i="",t=0,b.lexemesRe.lastIndex=0,n=b.lexemesRe.exec(C);n;)i+=f(C.substring(t,n.index)),(e=s(b,n))?(O+=e[1],i+=l(e[0],f(n[0]))):i+=f(n[0]),t=b.lexemesRe.lastIndex,n=b.lexemesRe.exec(C);return i+f(C.substr(t))}(),C=""}function c(e){k+=e.className?l(e.className,"",!0):"",b=Object.create(e,{parent:{value:b}})}function p(e,t){if(C+=e,null==t)return u(),0;var i=function(e,t){var n,i;for(n=0,i=t.contains.length;n")+'"');return C+=t,t.length||1}var v=S(e);if(!v)throw new Error('Unknown language: "'+e+'"');y(v);var g,b=i||v,x={},k="";for(g=b;g!==v;g=g.parent)g.className&&(k=l(g.className,"",!0)+k);var C="",O=0;try{for(var T,D,E=0;b.terminators.lastIndex=E,T=b.terminators.exec(t);)D=p(t.substring(E,T.index),T[0]),E=T.index+D;for(p(t.substr(E)),g=b;g.parent;g=g.parent)g.className&&(k+=d);return{relevance:O,value:k,language:e,top:b}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:f(t)};throw e}}function w(e,t){t=t||h.languages||a(o);var n={relevance:0,value:f(e)},i=n;return t.filter(S).filter(O).forEach((function(t){var r=_(t,e,!1);r.language=t,r.relevance>i.relevance&&(i=r),r.relevance>n.relevance&&(i=n,n=r)})),i.language&&(n.second_best=i),n}function x(e){return h.tabReplace||h.useBR?e.replace(c,(function(e,t){return h.useBR&&"\n"===e?"
":h.tabReplace?t.replace(/\t/g,h.tabReplace):""})):e}function k(e){var t,n,i,a,o,l=function(e){var t,n,i,r,a=e.className+" ";if(a+=e.parentNode?e.parentNode.className:"",n=u.exec(a))return S(n[1])?n[1]:"no-highlight";for(t=0,i=(a=a.split(/\s+/)).length;t/g,"\n"):t=e,o=t.textContent,i=l?_(l,o,!0):w(o),(n=b(t)).length&&((a=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=i.value,i.value=function(e,t,n){var i=0,a="",o=[];function s(){return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function u(e){a+=""}function c(e){("start"===e.event?l:u)(e.node)}for(;e.length||t.length;){var d=s();if(a+=f(n.substring(i,d[0].offset)),i=d[0].offset,d===e){o.reverse().forEach(u);do{c(d.splice(0,1)[0]),d=s()}while(d===e&&d.length&&d[0].offset===i);o.reverse().forEach(l)}else"start"===d[0].event?o.push(d[0].node):o.pop(),c(d.splice(0,1)[0])}return a+f(n.substr(i))}(n,b(a),o)),i.value=x(i.value),e.innerHTML=i.value,e.className=function(e,t,n){var i=t?s[t]:n,r=[e.trim()];return e.match(/\bhljs\b/)||r.push("hljs"),-1===e.indexOf(i)&&r.push(i),r.join(" ").trim()}(e.className,l,i.language),e.result={language:i.language,re:i.relevance},i.second_best&&(e.second_best={language:i.second_best.language,re:i.second_best.relevance}))}function C(){if(!C.called){C.called=!0;var e=document.querySelectorAll("pre code");r.forEach.call(e,k)}}function S(e){return e=(e||"").toLowerCase(),o[e]||o[s[e]]}function O(e){var t=S(e);return t&&!t.disableAutodetect}i.highlight=_,i.highlightAuto=w,i.fixMarkup=x,i.highlightBlock=k,i.configure=function(e){h=g(h,e)},i.initHighlighting=C,i.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",C,!1),addEventListener("load",C,!1)},i.registerLanguage=function(e,t){var n=o[e]=t(i);n.aliases&&n.aliases.forEach((function(t){s[t]=e}))},i.listLanguages=function(){return a(o)},i.getLanguage=S,i.autoDetection=O,i.inherit=g,i.IDENT_RE="[a-zA-Z]\\w*",i.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",i.NUMBER_RE="\\b\\d+(\\.\\d+)?",i.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",i.BINARY_NUMBER_RE="\\b(0b[01]+)",i.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",i.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},i.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[i.BACKSLASH_ESCAPE]},i.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[i.BACKSLASH_ESCAPE]},i.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},i.COMMENT=function(e,t,n){var r=i.inherit({className:"comment",begin:e,end:t,contains:[]},n||{});return r.contains.push(i.PHRASAL_WORDS_MODE),r.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),r},i.C_LINE_COMMENT_MODE=i.COMMENT("//","$"),i.C_BLOCK_COMMENT_MODE=i.COMMENT("/\\*","\\*/"),i.HASH_COMMENT_MODE=i.COMMENT("#","$"),i.NUMBER_MODE={className:"number",begin:i.NUMBER_RE,relevance:0},i.C_NUMBER_MODE={className:"number",begin:i.C_NUMBER_RE,relevance:0},i.BINARY_NUMBER_MODE={className:"number",begin:i.BINARY_NUMBER_RE,relevance:0},i.CSS_NUMBER_MODE={className:"number",begin:i.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},i.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[i.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[i.BACKSLASH_ESCAPE]}]},i.TITLE_MODE={className:"title",begin:i.IDENT_RE,relevance:0},i.UNDERSCORE_TITLE_MODE={className:"title",begin:i.UNDERSCORE_IDENT_RE,relevance:0},i.METHOD_GUARD={begin:"\\.\\s*"+i.UNDERSCORE_IDENT_RE,relevance:0};const T=i;var D=n(5489),E=n.n(D),$=n(53049),M=n.n($),P=n(40349),I=n.n(P),j=n(17410),A=n.n(j),N=n(8650),L=n.n(N),F=n(67020),R=n.n(F),B=n(51988),V=n.n(B),z=n(15350),W=n.n(z),H=n(86507),q=n.n(H),U=n(283),K=n.n(U),G=n(4142),Y=n.n(G),Z=n(52423),X=n.n(Z),J={javascript:E(),java:M(),css:I(),less:A(),markdown:R(),go:L(),php:V(),python:W(),typescript:q(),xml:K(),autohotkey:Y(),auto:X()};Object.keys(J).forEach((function(e){T.registerLanguage(e,J[e])}));const Q=T;var ee=n(43705);void 0===window._goTocAction&&(window._goTocAction=function(e,t,n){var i=$A(e).parents(".markdown-preview");if(i){var r=i.find("h"+t+'[toc-id="'+n+'"]');r&&i.animate({scrollTop:r.offset().top-i.offset().top+i.scrollTop()})}});var te={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:/^ {0,3}(`{3,}|~{3,})([^`~\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6}) +([^\n]*?)(?: +#+)? *(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:me,table:me,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,text:/^[^\n]+/};function ne(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||we.defaults,this.rules=te.normal,this.options.pedantic?this.rules=te.pedantic:this.options.gfm&&(this.rules=te.gfm)}te._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,te._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,te.def=de(te.def).replace("label",te._label).replace("title",te._title).getRegex(),te.bullet=/(?:[*+-]|\d{1,9}\.)/,te.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,te.item=de(te.item,"gm").replace(/bull/g,te.bullet).getRegex(),te.list=de(te.list).replace(/bull/g,te.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+te.def.source+")").getRegex(),te._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",te._comment=//,te.html=de(te.html,"i").replace("comment",te._comment).replace("tag",te._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),te.paragraph=de(te._paragraph).replace("hr",te.hr).replace("heading"," {0,3}#{1,6} +").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}|~{3,})[^`\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",te._tag).getRegex(),te.blockquote=de(te.blockquote).replace("paragraph",te.paragraph).getRegex(),te.normal=ve({},te),te.gfm=ve({},te.normal,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),te.pedantic=ve({},te.normal,{html:de("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",te._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,fences:me,paragraph:de(te.normal._paragraph).replace("hr",te.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",te.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()}),ne.rules=te,ne.lex=function(e,t){return new ne(t).lex(e)},ne.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},ne.prototype.token=function(e,t){var n,i,r,a,o,s,l,u,c,d,h,f,p,m,v,g;for(e=e.replace(/^ +$/gm,"");e;)if((r=this.rules.newline.exec(e))&&(e=e.substring(r[0].length),r[0].length>1&&this.tokens.push({type:"space"})),r=this.rules.code.exec(e)){var b=this.tokens[this.tokens.length-1];e=e.substring(r[0].length),b&&"paragraph"===b.type?b.text+="\n"+r[0].trimRight():(r=r[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",codeBlockStyle:"indented",text:this.options.pedantic?r:be(r,"\n")}))}else if(r=this.rules.fences.exec(e))e=e.substring(r[0].length),this.tokens.push({type:"code",lang:r[2]?r[2].trim():r[2],text:r[3]||""});else if(r=this.rules.heading.exec(e))e=e.substring(r[0].length),this.tokens.push({type:"heading",depth:r[1].length,text:r[2]});else if((r=this.rules.nptable.exec(e))&&(s={type:"table",header:ge(r[1].replace(/^ *| *\| *$/g,"")),align:r[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:r[3]?r[3].replace(/\n$/,"").split("\n"):[]}).header.length===s.align.length){for(e=e.substring(r[0].length),h=0;h ?/gm,""),this.token(r,t),this.tokens.push({type:"blockquote_end"});else if(r=this.rules.list.exec(e)){for(e=e.substring(r[0].length),l={type:"list_start",ordered:m=(a=r[2]).length>1,start:m?+a:"",loose:!1},this.tokens.push(l),u=[],n=!1,p=(r=r[0].match(this.rules.item)).length,h=0;h1?1===o.length:o.length>1||this.options.smartLists&&o!==a)&&(e=r.slice(h+1).join("\n")+e,h=p-1)),i=n||/\n\n(?!\s*$)/.test(s),h!==p-1&&(n="\n"===s.charAt(s.length-1),i||(i=n)),i&&(l.loose=!0),g=void 0,(v=/^\[[ xX]\] /.test(s))&&(g=" "!==s[1],s=s.replace(/^\[[ xX]\] +/,"")),c={type:"list_item_start",task:v,checked:g,loose:i},u.push(c),this.tokens.push(c),this.token(s,!1),this.tokens.push({type:"list_item_end"});if(l.loose)for(p=u.length,h=0;h?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:me,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*<\[])\*(?!\*)|^_([^\s<][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_<][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s<"][\s\S]*?[^\s\*])\*(?!\*|[^\spunctuation])|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:me,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\?@\\[^_{|}~",ie.em=de(ie.em).replace(/punctuation/g,ie._punctuation).getRegex(),ie._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,ie._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,ie._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,ie.autolink=de(ie.autolink).replace("scheme",ie._scheme).replace("email",ie._email).getRegex(),ie._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,ie.tag=de(ie.tag).replace("comment",te._comment).replace("attribute",ie._attribute).getRegex(),ie._label=/(?:\[[^\[\]]*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,ie._href=/<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*/,ie._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,ie.link=de(ie.link).replace("label",ie._label).replace("href",ie._href).replace("title",ie._title).getRegex(),ie.reflink=de(ie.reflink).replace("label",ie._label).getRegex(),ie.normal=ve({},ie),ie.pedantic=ve({},ie.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:de(/^!?\[(label)\]\((.*?)\)/).replace("label",ie._label).getRegex(),reflink:de(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",ie._label).getRegex()}),ie.gfm=ve({},ie.normal,{escape:de(ie.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\/i.test(a[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(a[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(a[0])&&(this.inRawBlock=!1),e=e.substring(a[0].length),s+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(a[0]):ue(a[0]):a[0];else if(a=this.rules.link.exec(e)){var l=ye(a[2],"()");if(l>-1){var u=4+a[1].length+l;a[2]=a[2].substring(0,l),a[0]=a[0].substring(0,u).trim(),a[3]=""}e=e.substring(a[0].length),this.inLink=!0,i=a[2],this.options.pedantic?(t=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(i))?(i=t[1],r=t[3]):r="":r=a[3]?a[3].slice(1,-1):"",i=i.trim().replace(/^<([\s\S]*)>$/,"$1"),s+=this.outputLink(a,{href:re.escapes(i),title:re.escapes(r)}),this.inLink=!1}else if((a=this.rules.reflink.exec(e))||(a=this.rules.nolink.exec(e))){if(e=e.substring(a[0].length),t=(a[2]||a[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){s+=a[0].charAt(0),e=a[0].substring(1)+e;continue}this.inLink=!0,s+=this.outputLink(a,t),this.inLink=!1}else if(a=this.rules.strong.exec(e))e=e.substring(a[0].length),s+=this.renderer.strong(this.output(a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.em.exec(e))e=e.substring(a[0].length),s+=this.renderer.em(this.output(a[6]||a[5]||a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.code.exec(e))e=e.substring(a[0].length),s+=this.renderer.codespan(ue(a[2].trim(),!0));else if(a=this.rules.br.exec(e))e=e.substring(a[0].length),s+=this.renderer.br();else if(a=this.rules.del.exec(e))e=e.substring(a[0].length),s+=this.renderer.del(this.output(a[1]));else if(a=this.rules.autolink.exec(e))e=e.substring(a[0].length),i="@"===a[2]?"mailto:"+(n=ue(this.mangle(a[1]))):n=ue(a[1]),s+=this.renderer.link(i,null,n);else if(this.inLink||!(a=this.rules.url.exec(e))){if(a=this.rules.text.exec(e))e=e.substring(a[0].length),this.inRawBlock?s+=this.renderer.text(this.options.sanitize?this.options.sanitizer?this.options.sanitizer(a[0]):ue(a[0]):a[0]):s+=this.renderer.text(ue(this.smartypants(a[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else{if("@"===a[2])i="mailto:"+(n=ue(a[0]));else{do{o=a[0],a[0]=this.rules._backpedal.exec(a[0])[0]}while(o!==a[0]);n=ue(a[0]),i="www."===a[1]?"http://"+n:n}e=e.substring(a[0].length),s+=this.renderer.link(i,null,n)}return s},re.escapes=function(e){return e?e.replace(re.rules._escapes,"$1"):e},re.prototype.outputLink=function(e,t){var n=t.href,i=t.title?ue(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,i,this.output(e[1])):this.renderer.image(n,i,ue(e[1]))},re.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},re.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",i=e.length,r=0;r.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},ae.prototype.code=function(e,t,n){var i=(t||"").match(/\S*/)[0];if(this.options.highlight){var r=this.options.highlight(e,i);null!=r&&r!==e&&(n=!0,e=r)}return i?'
'+(n?e:ue(e,!0))+"
\n":"
"+(n?e:ue(e,!0))+"
"},ae.prototype.blockquote=function(e){return"
\n"+e+"
\n"},ae.prototype.html=function(e){return e},ae.prototype.heading=function(e,t,n,i){var r=ee.Z.add(e,t);return this.options.headerIds?"'+e+"\n":"'+e+"\n"},ae.prototype.hr=function(){return this.options.xhtml?"
\n":"
\n"},ae.prototype.list=function(e,t,n){var i=t?"ol":"ul";return"<"+i+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},ae.prototype.listitem=function(e){var t="";return/\/.test(e)&&(t="list-item-checkbox",/checked/.test(e)&&(t+=" list-item-checkbox-checked")),'
  • ').concat(e,"
  • \n")},ae.prototype.checkbox=function(e){return" "},ae.prototype.paragraph=function(e){return"

    "+e+"

    \n"},ae.prototype.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},ae.prototype.tablerow=function(e){return"\n"+e+"\n"},ae.prototype.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"},ae.prototype.strong=function(e){return""+e+""},ae.prototype.em=function(e){return""+e+""},ae.prototype.codespan=function(e){return""+e+""},ae.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},ae.prototype.del=function(e){return""+e+""},ae.prototype.link=function(e,t,n){if(null===(e=he(this.options.sanitize,this.options.baseUrl,e)))return n;var i='"},ae.prototype.image=function(e,t,n){if(null===(e=he(this.options.sanitize,this.options.baseUrl,e)))return n;var i=''+n+'":">"},ae.prototype.text=function(e){return e},oe.prototype.strong=oe.prototype.em=oe.prototype.codespan=oe.prototype.del=oe.prototype.text=function(e){return e},oe.prototype.link=oe.prototype.image=function(e,t,n){return""+n},oe.prototype.br=function(){return""},se.parse=function(e,t){return new se(t).parse(e)},se.prototype.parse=function(e){this.inline=new re(e.links,this.options),this.inlineText=new re(e.links,ve({},this.options,{renderer:new oe})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},se.prototype.next=function(){return this.token=this.tokens.pop(),this.token},se.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},se.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},se.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,ce(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,i,r="",a="";for(n="",e=0;e?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){var n=t;do{this.seen[n]++,t=n+"-"+this.seen[n]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t},ue.escapeTest=/[&<>"']/,ue.escapeReplace=/[&<>"']/g,ue.replacements={"&":"&","<":"<",">":">",'"':""","'":"'"},ue.escapeTestNoEncode=/[<>"']|&(?!#?\w+;)/,ue.escapeReplaceNoEncode=/[<>"']|&(?!#?\w+;)/g;var fe={},pe=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function me(){}function ve(e){for(var t,n,i=1;i=0&&"\\"===n[r];)i=!i;return i?"|":" |"})).split(/ \|/),i=0;if(n.length>t)n.splice(t);else for(;n.lengthAn error occurred:

    "+ue(e.message+"",!0)+"
    ";throw e}}me.exec=me,we.options=we.setOptions=function(e){return ve(we.defaults,e),we},we.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new ae,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,xhtml:!1}},we.defaults=we.getDefaults(),we.Parser=se,we.parser=se.parse,we.Renderer=ae,we.TextRenderer=oe,we.Lexer=ne,we.lexer=ne.lex,we.InlineLexer=re,we.inlineLexer=re.output,we.Slugger=le,we.parse=we;const xe=we;Q.initHighlightingOnLoad();var ke=new xe.Renderer;const Ce=xe.setOptions({renderer:ke,gfm:!0,tables:!0,breaks:!1,pedantic:!1,sanitize:!1,smartLists:!0,highlight:function(e){return Q.highlightAuto(e).value}})},90091:(e,t,n)=>{function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}!function(e,t,n){e.systemInfo=e.systemInfo||{},t.extend({isArray:function(e){return"object"==i(e)&&"[object array]"==Object.prototype.toString.call(e).toLowerCase()&&"number"==typeof e.length},isJson:function(e){return"object"==i(e)&&"[object object]"==Object.prototype.toString.call(e).toLowerCase()&&void 0===e.length},inArray:function(e,t){return!!this.isArray(t)&&t.includes(e)},randNum:function(e,t){var n=t-e,i=Math.random();return e+Math.round(i*n)},last:function(e){var t=!1;return"object"===i(e)&&e.length>0&&(t=e[e.length-1]),t},strExists:function(e,t){var i=arguments.length>2&&arguments[2]!==n&&arguments[2];return e+="",t+="",!0!==i&&(e=e.toLowerCase(),t=t.toLowerCase()),-1!==e.indexOf(t)},leftExists:function(e,t){var i=arguments.length>2&&arguments[2]!==n&&arguments[2];return e+="",t+="",!0!==i&&(e=e.toLowerCase(),t=t.toLowerCase()),e.substring(0,t.length)===t},leftDelete:function(e,t){var i=arguments.length>2&&arguments[2]!==n&&arguments[2];return e+="",t+="",this.leftExists(e,t,i)&&(e=e.substring(t.length)),e||""},rightExists:function(e,t){var i=arguments.length>2&&arguments[2]!==n&&arguments[2];return e+="",t+="",!0!==i&&(e=e.toLowerCase(),t=t.toLowerCase()),e.substring(e.length-t.length)===t},getMiddle:function(e){var t=arguments.length>1&&arguments[1]!==n?arguments[1]:null,i=arguments.length>2&&arguments[2]!==n?arguments[2]:null;return e=e.toString(),this.isHave(t)&&this.strExists(e,t)&&(e=e.substring(e.indexOf(t)+t.length)),this.isHave(i)&&this.strExists(e,i)&&(e=e.substring(0,e.indexOf(i))),e},subString:function(e,t,n){return e+="",this.isHave(n)||(n=e.length),e.substring(t,n)},randomString:function(e){e=e||32;for(var t="ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678oOLl9gqVvUuI1",n=t.length,i="",r=0;r1&&arguments[1]!==n?arguments[1]:null,i=Number(e);if(i+""=="NaN"&&(i=0),t&&/^[0-9]*[1-9][0-9]*$/.test(t)){var r=(i=i.toFixed(t)).indexOf(".");if(r<0){i+=".";for(var a=0;a1&&arguments[1]!==n&&arguments[1];return"string"==typeof e&&this.strExists(e,"-")&&(e=e.replace(/-/g,"/")),!0===t?Math.round(new Date(e).getTime()/1e3):new Date(e)})),zeroFill:function(e,t,n){if((e+="").length>=t)return e;for(var i="",r=0;r86400){var i=Math.floor(n/86400),r=Math.ceil((n-86400*i)/3600);return r>0?i+"天"+r+"小时":i+"天"}return n>3600?Math.ceil(n/3600)+"小时":n>60?Math.ceil(n/60)+"分钟":n>10?n+"秒":"刚刚"},isMobile:function(e){return/^1([3456789])\d{9}$/.test(e)},isEmail:function(e){return/^[a-z0-9][a-z\.0-9-_]+@[a-z0-9_-]+(?:\.[a-z]{0,3}\.[a-z]{0,2}|\.[a-z]{0,3}|\.[a-z]{0,2})$/i.test(e)},getDistance:function(e,t,n,i){var r,a,o,s,l,u=3.14159265359,c=6.28318530712,d=.01745329252,h=6370693.5;return r=t*d,a=i*d,(l=e*d-n*d)>u?l=c-l:l<-u&&(l=c+l),o=h*Math.cos(r)*l,s=h*(r-a),Math.sqrt(o*o+s*s).toFixed(0)},setTile:function(e){document.title=e;var t=navigator.userAgent.toLowerCase();if(/iphone|ipad|ipod/.test(t)){var n=document.createElement("iframe");n.style.display="none",n.setAttribute("src","/favicon.ico");n.addEventListener("load",(function e(){setTimeout((function(){n.removeEventListener("load",e),document.body.removeChild(n)}),0)})),document.body.appendChild(n)}},cloneJSON:function(e){return"object"!==i(e)||null===e?e:$A.jsonParse($A.jsonStringify(e))},jsonParse:function(e){var t=arguments.length>1&&arguments[1]!==n?arguments[1]:n;if(null===e)return t||{};if("object"===i(e))return e;try{return JSON.parse(e.replace(/\n/g,"\\n").replace(/\r/g,"\\r"))}catch(e){return t||{}}},jsonStringify:function(e){var t=arguments.length>1&&arguments[1]!==n?arguments[1]:n;if("object"!==i(e))return e;try{return JSON.stringify(e)}catch(e){return t||""}},resize:function(e,t){var n=$A(e);if(0!==n.length)var i=parseInt(n.outerHeight()),r=parseInt(n.outerWidth()),a=setInterval((function(){0===n.length&&clearInterval(a);var e=parseInt(n.outerHeight()),o=parseInt(n.outerWidth());i===e&&r===o||(i=e,r=o,console.log(r,i),"function"==typeof t&&t())}),250)},isIos:function(){var t=void 0!==e&&e.navigator.userAgent.toLowerCase();return t&&/iphone|ipad|ipod|ios/.test(t)},isAndroid:function(){var t=void 0!==e&&e.navigator.userAgent.toLowerCase();return t&&t.indexOf("android")>0},isWeixin:function(){return(void 0!==e&&e.navigator.userAgent.toLowerCase()).match(/MicroMessenger/i)+""=="micromessenger"},isChrome:function(){return(void 0!==e&&e.navigator.userAgent.toLowerCase()).match(/Chrome/i)+""=="chrome"},isDesktop:function(){return!(void 0!==e&&e.navigator.userAgent).match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)},getObject:function(e,t){var n=e;return 0===this.count(e)||0===this.count(t)?"":(t.replace(/,/g,"|").replace(/\./g,"|").split("|").some((function(e){n=void 0===n[e]?"":n[e]})),n)},count:function(e){try{if(void 0===e)return 0;if("number"==typeof e&&(e+=""),"number"==typeof e.length)return e.length;var t,n=0;for(t in e)n++;return n}catch(e){return 0}},objImplode:function(e){var t=this;if(null===e)return"";var n="";return $A.each(e,(function(e,r){null!==r&&("object"===i(r)&&t.count(r)>0?n+=t.objImplode(r):n+=String(r))})),n.replace(/\s/g,"").replace(/undefined/g,"")},urlParameter:function(e){var t=this.urlParameterAll();return void 0===e?t:t[e]},urlParameterAll:function(){var t=e.location.search||"",n=[];this.strExists(t,"?")&&(n=this.getMiddle(t,"?").split("&"));for(var i={},r=0;r=2){for(var i=encodeURIComponent(t)+"=",r=n[1].split(/[&;]/g),a=r.length;a-- >0;)-1!==r[a].lastIndexOf(i,0)&&r.splice(a,1);return n[0]+(r.length>0?"?"+r.join("&"):"")}return e},urlAddParams:function(e,t){if($A.isJson(t))for(var n in e&&(e=this.removeURLParameter(e,Object.keys(t))),e+="",e+=-1===e.indexOf("?")?"?":"",t)t.hasOwnProperty(n)&&(e+="&"+n+"="+t[n]);return e.replace("?&","?")},stringConnect:function(){for(var e=null,t="",n=arguments.length,i=new Array(n),r=0;r0&&(e=e[0]);var n="object"===i(e.$el)?$A(e.$el):$A(e);if(0!==n.length){var r=n[0];if("INPUT"!=r.tagName&&"TEXTAREA"!=r.tagName&&(n=0===n.find("input").length?n.find("textarea"):n.find("input")),0!==n.length&&("INPUT"==(r=n[0]).tagName||"TEXTAREA"==r.tagName)){var a=n.val(),o=r,s=o.selectionStart,l=o.selectionEnd;n.val("".concat(a.substring(0,s)).concat(t).concat(a.substring(l,a.length))),r.dispatchEvent(new Event("input")),setTimeout((function(){if(r.setSelectionRange){var e=a.substring(0,s).length+t.length;r.focus(),r.setSelectionRange(e,e)}}),10)}}}},iOSKeyboardFixer:function(){this.isIos()&&(document.body.scrollTop=document.body.scrollTop+1,document.body.scrollTop=document.body.scrollTop-1)},loadScript:function(t,n){var i=this;if(t=$A.originUrl(t),this.rightExists(t,".css"))this.loadCss(t,n);else if(!0!==this.__loadScript[t]){var r=document.createElement("script");r.type="text/javascript",r.readyState?r.onreadystatechange=function(){"loaded"!==r.readyState&&"complete"!==r.readyState||(r.onreadystatechange=null,i.__loadScript[t]=!0,"function"==typeof n&&n(null))}:(r.onload=function(){i.__loadScript[t]=!0,"function"==typeof n&&n(null)},r.onerror=function(e){"function"==typeof n&&n(e)}),this.rightExists(t,".js")?r.src=t+"?hash="+e.systemInfo.version:r.src=t,document.body.appendChild(r)}else"function"==typeof n&&n(null)},loadScriptS:function(e,t){var n=this,i=0;this.loadScript(e[0],(function r(){++i&"]/g,(function(e){return{"<":"<",">":">","&":"&",'"':"""}[e]})):""},getDomain:function(e){var t=(e+"").match(/http(s)?:\/\/([^\/]+)/i);return null!=t&&t.length>0?t[2]:""},scrollToView:function(t,n){if(t)if(void 0===n.scrollMode||"function"!=typeof e.scrollIntoView)try{t.scrollIntoView(n)}catch(i){"function"==typeof e.scrollIntoView&&e.scrollIntoView(t,n)}else e.scrollIntoView(t,n)}}),t.extend({setStorage:function(e,t){return this.storage(e,t)},getStorage:function(e){var t=arguments.length>1&&arguments[1]!==n?arguments[1]:null,i=this.storage(e);return i||t},getStorageString:function(e){var t=arguments.length>1&&arguments[1]!==n?arguments[1]:"",i=this.storage(e);return"string"==typeof i||"number"==typeof i?i:t},getStorageInt:function(e){var t=arguments.length>1&&arguments[1]!==n?arguments[1]:0,i=this.storage(e);return"number"==typeof i?i:t},getStorageBoolean:function(e){var t=arguments.length>1&&arguments[1]!==n&&arguments[1],i=this.storage(e);return"boolean"==typeof i?i:t},getStorageArray:function(e){var t=arguments.length>1&&arguments[1]!==n?arguments[1]:[],i=this.storage(e);return this.isArray(i)?i:t},getStorageJson:function(e){var t=arguments.length>1&&arguments[1]!==n?arguments[1]:{},i=this.storage(e);return this.isJson(i)?i:t},storage:function(e,t){if(e){var n="__state__";if("cache"===e.substring(0,5)&&(n="__state:"+e+"__"),void 0===t)return this.loadFromlLocal(e,"",n);this.savaToLocal(e,t,n)}},savaToLocal:function(t,n,i){try{void 0===i&&(i="__seller__");var r=e.localStorage[i];(r=r?JSON.parse(r):{})[t]=n,e.localStorage[i]=JSON.stringify(r)}catch(e){}},loadFromlLocal:function(t,n,i){try{void 0===i&&(i="__seller__");var r=e.localStorage[i];return r&&((r=JSON.parse(r))&&void 0!==r[t])?r[t]:n}catch(e){return n}}}),t.extend({serializeObject:function(e,n){if("string"==typeof e)return e;var r,a=[];function o(e){if(n.length>0){for(var t="",i=0;i0&&a.push(u.join("&"))}else null===e[l]?a.push(o(l)+"="):"object"===i(e[l])?((r=n.slice()).push(l),""!==(u=t.serializeObject(e[l],r))&&a.push(u)):void 0!==e[l]&&""!==e[l]?a.push(o(l)+"="+s(e[l])):""===e[l]&&a.push(o(l))}return a.join("&")},globalAjaxOptions:{},ajaxSetup:function(e){e.type&&(e.method=e.type),t.each(e,(function(e,n){t.globalAjaxOptions[e]=n}))},_jsonpRequests:0,ihttp:function(i){var r={method:"GET",data:!1,async:!0,cache:!0,user:"",password:"",headers:{},xhrFields:{},statusCode:{},processData:!0,dataType:"text",contentType:"application/x-www-form-urlencoded",timeout:0},a=["beforeSend","error","complete","success","statusCode"];function o(e,n,r){var a=arguments;e&&t(document).trigger(e,n),r&&(r in t.globalAjaxOptions&&t.globalAjaxOptions[r](a[3],a[4],a[5],a[6]),i[r]&&i[r](a[3],a[4],a[5],a[6]))}i.type&&(i.method=i.type),t.each(t.globalAjaxOptions,(function(e,t){a.indexOf(e)<0&&(r[e]=t)})),t.each(r,(function(e,t){e in i||(i[e]=t)})),i.url||(i.url=e.location.toString());var s,l=i.url.indexOf("?")>=0?"&":"?",u=i.method.toUpperCase();"GET"!==u&&"HEAD"!==u&&"OPTIONS"!==u&&"DELETE"!==u||!i.data||(s="string"==typeof i.data?i.data.indexOf("?")>=0?i.data.split("?")[1]:i.data:t.serializeObject(i.data)).length&&(i.url+=l+s,"?"===l&&(l="&"));if("json"===i.dataType&&i.url.indexOf("callback=")>=0){var c,d="f7jsonp_"+Date.now()+t._jsonpRequests++,h=i.url.split("callback="),f=h[0]+"callback="+d;if(h[1].indexOf("&")>=0){var p=h[1].split("&").filter((function(e){return e.indexOf("=")>0})).join("&");p.length>0&&(f+="&"+p)}var m=document.createElement("script");return m.type="text/javascript",m.onerror=function(){clearTimeout(c),o(n,n,"error",null,"scripterror"),o("ajaxComplete ajax:complete",{scripterror:!0},"complete",null,"scripterror")},m.src=f,e[d]=function(t){clearTimeout(c),o(n,n,"success",t),m.parentNode.removeChild(m),m=null,delete e[d]},document.querySelector("head").appendChild(m),void(i.timeout>0&&(c=setTimeout((function(){m.parentNode.removeChild(m),m=null,o(n,n,"error",null,"timeout")}),i.timeout)))}"GET"!==u&&"HEAD"!==u&&"OPTIONS"!==u&&"DELETE"!==u||!1===i.cache&&(i.url+=l+"_nocache="+Date.now());var v=new XMLHttpRequest;v.requestUrl=i.url,v.requestParameters=i,v.open(u,i.url,i.async,i.user,i.password);var g,b=null;if(("POST"===u||"PUT"===u||"PATCH"===u)&&i.data)if(i.processData)if([ArrayBuffer,Blob,Document,FormData].indexOf(i.data.constructor)>=0)b=i.data;else{var y="---------------------------"+Date.now().toString(16);"multipart/form-data"===i.contentType?v.setRequestHeader("Content-Type","multipart/form-data; boundary="+y):v.setRequestHeader("Content-Type",i.contentType),b="";var _=t.serializeObject(i.data);if("multipart/form-data"===i.contentType){y="---------------------------"+Date.now().toString(16),_=_.split("&");for(var w=[],x=0;x<_.length;x++)w.push('Content-Disposition: form-data; name="'+_[x].split("=")[0]+'"\r\n\r\n'+_[x].split("=")[1]+"\r\n");b="--"+y+"\r\n"+w.join("--"+y+"\r\n")+"--"+y+"--\r\n"}else b=_}else b=i.data;return i.headers&&t.each(i.headers,(function(e,t){v.setRequestHeader(e,t)})),void 0===i.crossDomain&&(i.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(i.url)&&RegExp.$2!==e.location.host),i.crossDomain||v.setRequestHeader("X-Requested-With","XMLHttpRequest"),i.xhrFields&&t.each(i.xhrFields,(function(e,t){v[e]=t})),v.onload=function(e){var n;if(g&&clearTimeout(g),v.status>=200&&v.status<300||0===v.status)if("json"===i.dataType)try{n=JSON.parse(v.responseText),o("ajaxSuccess ajax:success",{xhr:v},"success",n,v.status,v)}catch(e){console.error(e),o("ajaxError ajax:error",{xhr:v,parseerror:!0},"error",v,"parseerror")}else n="text"===v.responseType||""===v.responseType?v.responseText:v.response,o("ajaxSuccess ajax:success",{xhr:v},"success",n,v.status,v);else o("ajaxError ajax:error",{xhr:v},"error",v,v.status);i.statusCode&&(t.globalAjaxOptions.statusCode&&t.globalAjaxOptions.statusCode[v.status]&&t.globalAjaxOptions.statusCode[v.status](v),i.statusCode[v.status]&&i.statusCode[v.status](v)),o("ajaxComplete ajax:complete",{xhr:v},"complete",v,v.status)},v.onerror=function(e){g&&clearTimeout(g),o("ajaxError ajax:error",{xhr:v},"error",v,v.status),o("ajaxComplete ajax:complete",{xhr:v,error:!0},"complete",v,"error")},o("ajaxStart ajax:start",{xhr:v},"start",v),o(n,n,"beforeSend",v),i.timeout>0&&(v.onabort=function(){g&&clearTimeout(g)},g=setTimeout((function(){v.abort(),o("ajaxError ajax:error",{xhr:v,timeout:!0},"error",v,"timeout"),o("ajaxComplete ajax:complete",{xhr:v,timeout:!0},"complete",v,"timeout")}),i.timeout)),v.send(b),v}}),t.extend({ajaxc:function(e){return!!e&&(void 0!==e.url&&(void 0===e.data&&(e.data={}),void 0===e.cache&&(e.cache=!1),void 0===e.method&&(e.method="GET"),void 0===e.timeout&&(e.timeout=3e4),void 0===e.dataType&&(e.dataType="json"),void 0===e.before&&(e.before=function(){}),void 0===e.complete&&(e.complete=function(){}),void 0===e.after&&(e.after=function(){}),void 0===e.success&&(e.success=function(){}),void 0===e.error&&(e.error=function(){}),void 0===e.header&&(e.header={}),e.before(),void $A.ihttp({url:e.url,data:e.data,cache:e.cache,headers:e.header,method:e.method.toUpperCase(),contentType:"OPTIONS",crossDomain:!0,dataType:e.dataType,timeout:e.timeout,success:function(t,n,i){e.complete(),e.success(t,n,i),e.after(!0)},error:function(t,n){e.complete(),e.error(t,n),e.after(!1)}})))}}),e.$A=t}(window,window.$=window.jQuery=n(19755))},92693:()=>{!function(e){var t=e.$A;t.extend({apiUrl:function(t){if("//"===t.substring(0,2)||"http://"===t.substring(0,7)||"https://"===t.substring(0,8)||"ftp://"===t.substring(0,6)||"/"===t.substring(0,1))return t;for(t="string"==typeof e.systemInfo.apiUrl?e.systemInfo.apiUrl+t:e.location.origin+"/api/"+t;-1!==t.indexOf("/../");)t=t.replace(/\/(((?!\/).)*)\/\.\.\//,"/");return t},originUrl:function(t){if("//"===t.substring(0,2)||"http://"===t.substring(0,7)||"https://"===t.substring(0,8)||"ftp://"===t.substring(0,6)||"/"===t.substring(0,1))return t;for(t="string"==typeof e.systemInfo.origin?e.systemInfo.origin+t:e.location.origin+"/"+t;-1!==t.indexOf("/../");)t=t.replace(/\/(((?!\/).)*)\/\.\.\//,"/");return t},projectParameterTemplate:function(e){return{project_id:e,card:!0,cardInit:!1,chat:!1,showMy:!0,showHelp:!0,showUndone:!0,showCompleted:!1,completedTask:!1}},formatWebsocketMessageDetail:function(e){if($A.isJson(e))for(var t in e)e.hasOwnProperty(t)&&(e[t]=$A.formatWebsocketMessageDetail(e[t]));else $A.isArray(e)?e.forEach((function(t,n){e[n]=$A.formatWebsocketMessageDetail(t)})):"string"==typeof e&&(e=e.replace(/\{\{RemoteURL\}\}/g,this.apiUrl("../")));return e},formatTime:function(e){var t=$A.Date(e,!0);return($A.formatDate("Ymd")===$A.formatDate("Ymd",t)?$A.formatDate("H:i",t):$A.formatDate("Y")===$A.formatDate("Y",t)?$A.formatDate("m-d",t):$A.formatDate("Y-m-d",t))||""},formatBit:function(e){return(e=+e)>9?e:"0"+e},formatSeconds:function(e){var t,n=Math.floor(e/86400),i=Math.floor(e%86400/3600),r=Math.floor(e%86400%3600/60),a=Math.floor(e%86400%3600%60);return n>0?t=i>0?n+"d,"+this.formatBit(i)+"h":r>0?n+"d,"+this.formatBit(r)+"min":a>0?n+"d,"+this.formatBit(a)+"s":n+"d":i>0?t=this.formatBit(i)+":"+this.formatBit(r)+":"+this.formatBit(a):r>0?t=this.formatBit(r)+":"+this.formatBit(a):a>0&&(t=this.formatBit(a)+"s"),t},countDownFormat:function(e,t){var n=Math.round(this.Date(e).getTime()/1e3)-t;return n<604800&&n>0?this.formatSeconds(n):n<0?"-"+this.formatSeconds(-1*n):0==n?"0s":this.formatTime(e)},getData:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=new Date,i=n.getDay(),r=n.getDate(),a=n.getMonth(),o=n.getYear();o+=o<2e3?1900:0;var s=new Date;s.setDate(1),s.setMonth(s.getMonth()-1);var l=s.getMonth(),u=function(){var e=0;return a<3&&(e=0),28&&(e=9),e},c=function(e){var t=new Date(o,e,1);return(new Date(o,e+1,1)-t)/864e5},d=n.getTime();switch(e){case"今天":d=n;break;case"昨天":d=n-864e5;break;case"前天":d=n-1728e5;break;case"本周":d=new Date(o,a,r-i);break;case"本周结束":d=new Date(o,a,r+(6-i));break;case"上周":d=new Date(o,a,r-i-7);break;case"上周结束":d=new Date(o,a,r-i-1);break;case"本周2":d=new Date(o,a,r-i+1);break;case"本周结束2":d=new Date(o,a,r+(6-i)+1);break;case"上周2":d=new Date(o,a,r-i-7+1);break;case"上周结束2":d=new Date(o,a,r-i-1+1);break;case"本月":d=new Date(o,a,1);break;case"本月结束":d=new Date(o,a,c(a));break;case"上个月":d=new Date(o,l,1);break;case"上个月结束":d=new Date(o,l,c(l));break;case"本季度":d=new Date(o,u(),1);break;case"本季度结束":var h=u()+2;d=new Date(o,h,c(h))}return!0===t?d:$A.formatDate("Y-m-d",parseInt(d/1e3))},timeOptionShortcuts:function(){var e=function(e){return $A.Date($A.formatDate("Y-m-d 23:59:29",Math.round(e/1e3)))};return[{text:$A.L("今天"),value:function(){return[new Date,e((new Date).getTime())]}},{text:$A.L("明天"),value:function(){var t=new Date;return t.setDate(t.getDate()+1),[new Date,e(t.getTime())]}},{text:$A.L("本周"),value:function(){return[$A.getData("今天",!0),e($A.getData("本周结束2",!0))]}},{text:$A.L("本月"),value:function(){return[$A.getData("今天",!0),e($A.getData("本月结束",!0))]}},{text:$A.L("3天"),value:function(){var t=new Date;return t.setDate(t.getDate()+2),[new Date,e(t.getTime())]}},{text:$A.L("5天"),value:function(){var t=new Date;return t.setDate(t.getDate()+4),[new Date,e(t.getTime())]}},{text:$A.L("7天"),value:function(){var t=new Date;return t.setDate(t.getDate()+6),[new Date,e(t.getTime())]}}]},dialogTags:function(e){var t=[];return"group"==e.type&&["project","task"].includes(e.group_type)&&$A.isJson(e.group_info)&&("task"==e.group_type&&e.group_info.complete_at&&t.push({color:"success",text:"已完成"}),e.group_info.deleted_at?t.push({color:"red",text:"已删除"}):e.group_info.archived_at&&t.push({color:"default",text:"已归档"})),t},dialogCompleted:function(e){return this.dialogTags(e).find((function(e){return"success"==e.color}))},downFile:function(t){t&&($A.Electron?$A.Electron.request({action:"openExternal",url:t},(function(){}),(function(){})):e.open(t))}}),t.extend({spinnerShow:function(){if($A.spinnerLoadNum++,$A.spinnerLoadNum>0){var e=document.getElementById("common-spinner");e&&(e.style.display="block")}},spinnerHide:function(){if($A.spinnerLoadNum--,$A.spinnerLoadNum<=0){var e=document.getElementById("common-spinner");e&&(e.style.display="none")}},spinnerLoadNum:0,modalConfig:function(e){return void 0===e?e={content:"Undefined"}:"string"==typeof e&&(e={content:e}),e.title=$A.L(e.title||(void 0===e.render?"温馨提示":"")),e.content=$A.L(e.content||""),e.okText=$A.L(e.okText||"确定"),e.cancelText=$A.L(e.cancelText||"取消"),e},modalInput:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(t>0)setTimeout((function(){$A.modalInput(e)}),t);else{"string"==typeof e&&(e={title:e});var n="modalInput_"+$A.randomString(6),i=function(){"function"==typeof e.onOk?!0===e.onOk(e.value,(function(){$A.Modal.remove()}))&&$A.Modal.remove():$A.Modal.remove()},r=function(){"function"==typeof e.onCancel&&e.onCancel()};$A.Modal.confirm({render:function(t){return t("div",[t("div",{style:{fontSize:"16px",fontWeight:"500",marginBottom:"20px"}},$A.L(e.title)),t("Input",{props:{value:e.value,placeholder:$A.L(e.placeholder),elementId:n},on:{input:function(t){e.value=t},"on-enter":function(e){$A(e.target).parents(".ivu-modal-body").find(".ivu-btn-primary").click()}}})])},onOk:i,onCancel:r,loading:!0,okText:$A.L(e.okText||"确定"),cancelText:$A.L(e.cancelText||"取消")}),setTimeout((function(){document.getElementById(n)&&document.getElementById(n).focus()}))}},modalConfirm:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;!1!==e&&(t>0?setTimeout((function(){$A.modalConfirm(e)}),t):$A.Modal.confirm($A.modalConfig(e)))},modalSuccess:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;!1!==e&&(t>0?setTimeout((function(){$A.modalSuccess(e)}),t):$A.Modal.success($A.modalConfig(e)))},modalInfo:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;!1!==e&&(t>0?setTimeout((function(){$A.modalInfo(e)}),t):$A.Modal.info($A.modalConfig(e)))},modalWarning:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;!1!==e&&(t>0?setTimeout((function(){$A.modalWarning(e)}),t):$A.Modal.warning($A.modalConfig(e)))},modalError:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;!1!==e&&(t>0?setTimeout((function(){$A.modalError(e)}),t):$A.Modal.error($A.modalConfig(e)))},modalAlert:function(e){!1!==e&&alert($A.L(e))},messageSuccess:function(e){$A.Message.success($A.L(e))},messageWarning:function(e){$A.Message.warning($A.L(e))},messageError:function(e){$A.Message.error($A.L(e))},noticeConfig:function(e){return void 0===e?e={desc:"Undefined"}:"string"==typeof e&&(e={desc:e}),e.title=$A.L(e.title||(void 0===e.render?"温馨提示":"")),e.desc=$A.L(e.desc||""),e},noticeSuccess:function(e){$A.Notice.success($A.noticeConfig(e))},noticeWarning:function(e){$A.Notice.warning($A.noticeConfig(e))},noticeError:function(e){"string"==typeof e&&(e={desc:e,duration:6}),$A.Notice.error($A.noticeConfig(e))}}),t.extend({dark:{utils:{filter:"-webkit-filter: url(#dark-mode-filter) !important; filter: url(#dark-mode-filter) !important;",reverseFilter:"-webkit-filter: url(#dark-mode-reverse-filter) !important; filter: url(#dark-mode-reverse-filter) !important;",noneFilter:"-webkit-filter: none !important; filter: none !important;",addExtraStyle:function(){try{return""}catch(e){return""}},addStyle:function(e,t,n){t=t||"style";var i=document;if(!i.getElementById(e)){var r=i.createElement(t);r.rel="stylesheet",r.id=e,"style"===t?r.innerHTML=n:r.href=n,document.head.appendChild(r)}},getClassList:function(e){return e.classList||[]},addClass:function(e,t){return this.getClassList(e).add(t),this},removeClass:function(e,t){return this.getClassList(e).remove(t),this},hasClass:function(e,t){return this.getClassList(e).contains(t)},hasElementById:function(e){return document.getElementById(e)},removeElementById:function(e){var t=document.getElementById(e);t&&t.parentNode.removeChild(t)}},createDarkFilter:function(){if(!this.utils.hasElementById("dark-mode-svg")){var e=document.createElementNS("http://www.w3.org/1999/xhtml","div");e.innerHTML='';for(var t=document.createDocumentFragment();e.firstChild;)t.appendChild(e.firstChild);document.head.appendChild(t)}},createDarkStyle:function(){this.utils.addStyle("dark-mode-style","style","\n @media screen {\n html {\n ".concat(this.utils.filter,'\n }\n\n /* Default Reverse rule */\n img,\n video,\n iframe,\n canvas,\n :not(object):not(body) > embed,\n object,\n svg image,\n [style*="background:url"],\n [style*="background-image:url"],\n [style*="background: url"],\n [style*="background-image: url"],\n [background],\n twitterwidget,\n .sr-reader,\n .no-dark-mode,\n .no-dark-mode-before:before,\n .sr-backdrop {\n ').concat(this.utils.reverseFilter,'\n }\n\n [style*="background:url"] *,\n [style*="background-image:url"] *,\n [style*="background: url"] *,\n [style*="background-image: url"] *,\n input,\n [background] *,\n twitterwidget .NaturalImage-image {\n ').concat(this.utils.noneFilter,"\n }\n\n /* Text contrast */\n html {\n text-shadow: 0 0 0 !important;\n }\n\n /* Full screen */\n .no-filter,\n :-webkit-full-screen,\n :-webkit-full-screen *,\n :-moz-full-screen,\n :-moz-full-screen *,\n :fullscreen,\n :fullscreen * {\n ").concat(this.utils.noneFilter,"\n }\n\n /* Page background */\n html {\n background: #fff !important;\n }\n ").concat(this.utils.addExtraStyle(),"\n }\n\n @media print {\n .no-print {\n display: none !important;\n }\n }"))},enableDarkMode:function(){$A.isChrome()&&(this.isDarkEnabled()||(this.createDarkFilter(),this.createDarkStyle(),this.utils.addClass(document.body,"dark-mode-reverse")))},disableDarkMode:function(){this.isDarkEnabled()&&(this.utils.removeElementById("dark-mode-svg"),this.utils.removeElementById("dark-mode-style"),this.utils.removeClass(document.body,"dark-mode-reverse"))},autoDarkMode:function(){e.matchMedia&&e.matchMedia("(prefers-color-scheme: dark)").matches?this.enableDarkMode():this.disableDarkMode()},isDarkEnabled:function(){return this.utils.hasClass(document.body,"dark-mode-reverse")}}}),e.$A=t}(window)},31108:(e,t)=>{t.Z=[]},52945:(e,t,n)=>{e.exports={default:n(56981),__esModule:!0}},93516:(e,t,n)=>{e.exports={default:n(80025),__esModule:!0}},64275:(e,t,n)=>{e.exports={default:n(52392),__esModule:!0}},88239:(e,t,n)=>{"use strict";var i,r=n(52945),a=(i=r)&&i.__esModule?i:{default:i};t.Z=a.default||function(e){for(var t=1;t{"use strict";var i=o(n(64275)),r=o(n(93516)),a="function"==typeof r.default&&"symbol"==typeof i.default?function(e){return typeof e}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":typeof e};function o(e){return e&&e.__esModule?e:{default:e}}t.Z="function"==typeof r.default&&"symbol"===a(i.default)?function(e){return void 0===e?"undefined":a(e)}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":void 0===e?"undefined":a(e)}},56981:(e,t,n)=>{n(72699),e.exports=n(34579).Object.assign},80025:(e,t,n)=>{n(46840),n(94058),n(8174),n(36461),e.exports=n(34579).Symbol},52392:(e,t,n)=>{n(91867),n(73871),e.exports=n(25103).f("iterator")},85663:e=>{e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},79003:e=>{e.exports=function(){}},12159:(e,t,n)=>{var i=n(36727);e.exports=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e}},57428:(e,t,n)=>{var i=n(7932),r=n(78728),a=n(16531);e.exports=function(e){return function(t,n,o){var s,l=i(t),u=r(l.length),c=a(o,u);if(e&&n!=n){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===n)return e||c||0;return!e&&-1}}},32894:e=>{var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},34579:e=>{var t=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=t)},19216:(e,t,n)=>{var i=n(85663);e.exports=function(e,t,n){if(i(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,r){return e.call(t,n,i,r)}}return function(){return e.apply(t,arguments)}}},8333:e=>{e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},89666:(e,t,n)=>{e.exports=!n(7929)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},97467:(e,t,n)=>{var i=n(36727),r=n(33938).document,a=i(r)&&i(r.createElement);e.exports=function(e){return a?r.createElement(e):{}}},73338:e=>{e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},70337:(e,t,n)=>{var i=n(46162),r=n(48195),a=n(86274);e.exports=function(e){var t=i(e),n=r.f;if(n)for(var o,s=n(e),l=a.f,u=0;s.length>u;)l.call(e,o=s[u++])&&t.push(o);return t}},83856:(e,t,n)=>{var i=n(33938),r=n(34579),a=n(19216),o=n(41818),s=n(27069),l=function(e,t,n){var u,c,d,h=e&l.F,f=e&l.G,p=e&l.S,m=e&l.P,v=e&l.B,g=e&l.W,b=f?r:r[t]||(r[t]={}),y=b.prototype,_=f?i:p?i[t]:(i[t]||{}).prototype;for(u in f&&(n=t),n)(c=!h&&_&&void 0!==_[u])&&s(b,u)||(d=c?_[u]:n[u],b[u]=f&&"function"!=typeof _[u]?n[u]:v&&c?a(d,i):g&&_[u]==d?function(e){var t=function(t,n,i){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,i)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(d):m&&"function"==typeof d?a(Function.call,d):d,m&&((b.virtual||(b.virtual={}))[u]=d,e&l.R&&y&&!y[u]&&o(y,u,d)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},7929:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},33938:e=>{var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},27069:e=>{var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},41818:(e,t,n)=>{var i=n(4743),r=n(83101);e.exports=n(89666)?function(e,t,n){return i.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},54881:(e,t,n)=>{var i=n(33938).document;e.exports=i&&i.documentElement},33758:(e,t,n)=>{e.exports=!n(89666)&&!n(7929)((function(){return 7!=Object.defineProperty(n(97467)("div"),"a",{get:function(){return 7}}).a}))},50799:(e,t,n)=>{var i=n(32894);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==i(e)?e.split(""):Object(e)}},71421:(e,t,n)=>{var i=n(32894);e.exports=Array.isArray||function(e){return"Array"==i(e)}},36727:e=>{e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},33945:(e,t,n)=>{"use strict";var i=n(98989),r=n(83101),a=n(25378),o={};n(41818)(o,n(22939)("iterator"),(function(){return this})),e.exports=function(e,t,n){e.prototype=i(o,{next:r(1,n)}),a(e,t+" Iterator")}},45700:(e,t,n)=>{"use strict";var i=n(16227),r=n(83856),a=n(57470),o=n(41818),s=n(15449),l=n(33945),u=n(25378),c=n(95089),d=n(22939)("iterator"),h=!([].keys&&"next"in[].keys()),f="keys",p="values",m=function(){return this};e.exports=function(e,t,n,v,g,b,y){l(n,t,v);var _,w,x,k=function(e){if(!h&&e in T)return T[e];switch(e){case f:case p:return function(){return new n(this,e)}}return function(){return new n(this,e)}},C=t+" Iterator",S=g==p,O=!1,T=e.prototype,D=T[d]||T["@@iterator"]||g&&T[g],E=D||k(g),$=g?S?k("entries"):E:void 0,M="Array"==t&&T.entries||D;if(M&&(x=c(M.call(new e)))!==Object.prototype&&x.next&&(u(x,C,!0),i||"function"==typeof x[d]||o(x,d,m)),S&&D&&D.name!==p&&(O=!0,E=function(){return D.call(this)}),i&&!y||!h&&!O&&T[d]||o(T,d,E),s[t]=E,s[C]=m,g)if(_={values:S?E:k(p),keys:b?E:k(f),entries:$},y)for(w in _)w in T||a(T,w,_[w]);else r(r.P+r.F*(h||O),t,_);return _}},85084:e=>{e.exports=function(e,t){return{value:t,done:!!e}}},15449:e=>{e.exports={}},16227:e=>{e.exports=!0},77177:(e,t,n)=>{var i=n(65730)("meta"),r=n(36727),a=n(27069),o=n(4743).f,s=0,l=Object.isExtensible||function(){return!0},u=!n(7929)((function(){return l(Object.preventExtensions({}))})),c=function(e){o(e,i,{value:{i:"O"+ ++s,w:{}}})},d=e.exports={KEY:i,NEED:!1,fastKey:function(e,t){if(!r(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!a(e,i)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[i].i},getWeak:function(e,t){if(!a(e,i)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[i].w},onFreeze:function(e){return u&&d.NEED&&l(e)&&!a(e,i)&&c(e),e}}},88082:(e,t,n)=>{"use strict";var i=n(89666),r=n(46162),a=n(48195),o=n(86274),s=n(66530),l=n(50799),u=Object.assign;e.exports=!u||n(7929)((function(){var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach((function(e){t[e]=e})),7!=u({},e)[n]||Object.keys(u({},t)).join("")!=i}))?function(e,t){for(var n=s(e),u=arguments.length,c=1,d=a.f,h=o.f;u>c;)for(var f,p=l(arguments[c++]),m=d?r(p).concat(d(p)):r(p),v=m.length,g=0;v>g;)f=m[g++],i&&!h.call(p,f)||(n[f]=p[f]);return n}:u},98989:(e,t,n)=>{var i=n(12159),r=n(57856),a=n(73338),o=n(58989)("IE_PROTO"),s=function(){},l=function(){var e,t=n(97467)("iframe"),i=a.length;for(t.style.display="none",n(54881).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write(" diff --git a/resources/assets/js/pages/login.vue b/resources/assets/js/pages/login.vue index 13e1bb67b..f336c26fe 100644 --- a/resources/assets/js/pages/login.vue +++ b/resources/assets/js/pages/login.vue @@ -322,7 +322,11 @@ export default { }); }).catch(({data, msg}) => { this.loadIng--; - $A.modalError(msg); + if (data.code === 1000) { + $A.modalSuccess(msg); + } else { + $A.modalError(msg); + } if (data.code === 'need') { this.reCode(); this.codeNeed = true; diff --git a/resources/assets/js/pages/manage.vue b/resources/assets/js/pages/manage.vue index 6e8436018..f61f9d7f4 100644 --- a/resources/assets/js/pages/manage.vue +++ b/resources/assets/js/pages/manage.vue @@ -42,6 +42,30 @@ {{$L('导出任务统计')}} + + + +
    + {{$L(item.name)}} + +
    +
    + + {{ item.name }} + + + + {{ $L('暂无打开记录') }} + + +
    {{item.name}}
    +
    {{item.task_my_num - item.task_my_complete}}
    @@ -248,6 +273,12 @@ style="width:100%" :placeholder="$L('请选择时间')"/> + + + {{$L('任务时间')}} + {{$L('创建时间')}} + +
    @@ -363,6 +394,7 @@ export default { exportData: { userid: [], time: [], + type:'taskTime', }, dialogMsgSubscribe: null, @@ -450,7 +482,8 @@ export default { 'wsMsg', - 'clientNewVersion' + 'clientNewVersion', + 'cacheTaskBrowse' ]), ...mapGetters(['taskData', 'dashboardTask']), @@ -489,6 +522,8 @@ export default { {path: 'team', name: '团队管理', divided: true}, + {path: 'taskBrowse', name: '最近打开的任务', divided: true}, + {path: 'theme', name: '主题皮肤', divided: true}, {path: 'language', name: this.currentLanguage, divided: true}, @@ -506,6 +541,8 @@ export default { {path: 'workReport', name: '工作报告', divided: true}, {path: 'archivedProject', name: '已归档的项目'}, + {path: 'taskBrowse', name: '最近打开的任务', divided: true}, + {path: 'theme', name: '主题皮肤', divided: true}, {path: 'language', name: this.currentLanguage, divided: true}, @@ -550,7 +587,16 @@ export default { 'overlay-y': true, 'overlay-none': this.topOperateVisible === true, } - } + }, + + taskBrowseLists() { + const {cacheTaskBrowse} = this; + return $A.cloneJSON(cacheTaskBrowse).sort((a, b) => { + if (a.view_time || b.view_time) { + return b.view_time - a.view_time; + } + }); + }, }, watch: { @@ -569,6 +615,55 @@ export default { } }, + msgAllUnread() { + if (this.$Electron) { + this.$Electron.ipcRenderer.send('setDockBadge', this.msgAllUnread + this.dashboardTotal); + } + }, + + dashboardTotal() { + if (this.$Electron) { + this.$Electron.ipcRenderer.send('setDockBadge', this.msgAllUnread + this.dashboardTotal); + } + }, + + dialogMsgPush(data) { + if (this.natificationHidden && this.natificationReady) { + const {id, dialog_id, type, msg} = data; + let body = ''; + switch (type) { + case 'text': + body = msg.text; + break; + case 'file': + body = '[' + this.$L(msg.type == 'img' ? '图片信息' : '文件信息') + ']' + break; + default: + return; + } + this._notificationId = id; + this.notificationClass.replaceOptions({ + icon: $A.originUrl('images/logo.png'), + body: body, + data: data, + tag: "dialog", + requireInteraction: true + }); + let dialog = this.dialogs.find((item) => item.id == dialog_id); + if (dialog) { + this.notificationClass.replaceTitle(dialog.name); + this.notificationClass.userAgreed(); + } else { + this.$store.dispatch("getDialogOne", dialog_id).then(({data}) => { + if (this._notificationId === id) { + this.notificationClass.replaceTitle(data.name); + this.notificationClass.userAgreed(); + } + }) + } + } + }, + projectKeyValue(val) { if (val == '') { return; @@ -723,7 +818,6 @@ export default { return { "active": this.curPath == '/manage/' + path, "open-menu": openMenu === true, - "top": item.top_at, "operate": item.id == this.topOperateItem.id && this.topOperateVisible }; }, @@ -982,6 +1076,10 @@ export default { } document.addEventListener(visibilityChangeEvent, visibilityChangeListener); }, + + openTask(task) { + this.$store.dispatch("openTask", task) + }, } } diff --git a/resources/assets/js/pages/manage/calendar.vue b/resources/assets/js/pages/manage/calendar.vue index df0242557..f0a25a309 100644 --- a/resources/assets/js/pages/manage/calendar.vue +++ b/resources/assets/js/pages/manage/calendar.vue @@ -361,7 +361,7 @@ export default { content: '你确定要删除任务【' + data.name + '】吗?', loading: true, onOk: () => { - this.$store.dispatch("removeTask", data.id).then(({msg}) => { + this.$store.dispatch("removeTask", {task_id: data.id}).then(({msg}) => { $A.messageSuccess(msg); this.$Modal.remove(); }).catch(({msg}) => { diff --git a/resources/assets/js/pages/manage/components/Calendar.vue b/resources/assets/js/pages/manage/components/Calendar.vue index 76e1f9746..730f9ccf1 100644 --- a/resources/assets/js/pages/manage/components/Calendar.vue +++ b/resources/assets/js/pages/manage/components/Calendar.vue @@ -1,5 +1,5 @@ + + diff --git a/resources/assets/js/pages/manage/components/TaskDeleted.vue b/resources/assets/js/pages/manage/components/TaskDeleted.vue new file mode 100644 index 000000000..3205e1735 --- /dev/null +++ b/resources/assets/js/pages/manage/components/TaskDeleted.vue @@ -0,0 +1,286 @@ + + + diff --git a/resources/assets/js/pages/manage/components/TaskDetail.vue b/resources/assets/js/pages/manage/components/TaskDetail.vue index a39db307c..bfbb2c920 100644 --- a/resources/assets/js/pages/manage/components/TaskDetail.vue +++ b/resources/assets/js/pages/manage/components/TaskDetail.vue @@ -74,6 +74,7 @@
    {{$L('已归档')}}
    +
    + {{$L('已删除')}} +
    - +