+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CNAME b/CNAME
new file mode 100644
index 0000000..d4ac751
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+dev-hex-user.hexschool.io
diff --git a/assets/Board-Dm2LvSR5.js b/assets/Board-Dm2LvSR5.js
new file mode 100644
index 0000000..efed889
--- /dev/null
+++ b/assets/Board-Dm2LvSR5.js
@@ -0,0 +1 @@
+import{_ as K,u as ae,r as n,o as G,z as se,c as r,x as oe,g as le,e as t,d as m,t as b,k as ie,l as ne,i as j,B as O,w as C,U as de,F as L,M as ce,J as Q,K as X,S as re,a as ue,X as fe,O as pe,b as me,f as I,h as H,D as ve,Y as F,W as _e,Z as he,C as ge}from"./index-oEzATel6.js";import{_ as ke}from"./Modal-BlhncX8m.js";import{_ as ye}from"./TaskDescriptionModal-g9Af6nRf.js";import{g as be}from"./date-nwmI78ea.js";const xe=o=>(Q("data-v-6c6109e1"),o=o(),X(),o),we={class:"mb-6"},$e={key:0,class:"text-primary fs-4 fw-bold mb-0"},Se={key:1,class:"text-primary fs-4 fw-bold mb-0"},Te={key:2,class:"mb-0"},Be=xe(()=>t("span",{class:"align-middle material-symbols-outlined text-success"},"arrow_forward",-1)),Re={class:"row mt-5 g-0"},Ce={class:"col-md-10"},Me={class:"row g-0"},De={class:"form-check form-check-inline"},Pe=["name","id","value","disabled"],Ie=["for"],Le={key:0,class:"text-danger m-0"},Ve={class:"align-items-end col-md-2 d-flex justify-content-end"},ze=["disabled"],Ne={__name:"CertificationModal",props:{data:{type:Array,default:()=>[]},user:{type:Object,default:()=>({})}},emits:["download"],setup(o,{expose:v,emit:h}){const s=ae(),e=o,x=h,S=n(null),$=n(null);G(()=>{$.value=new ce(S.value.myBsModal,{keyboard:!1})});const i=()=>{$.value.show()},u=()=>{$.value.hide()};v({showModal:i,hideModal:u});const g=n([]),k=se(()=>e.data.some(f=>!f.enable)),w=f=>{u(),s.push(f)};return(f,y)=>(r(),oe(ke,{ref_key:"myModal",ref:S,title:"目前證書套用名稱為:",size:"lg",hasFooter:!1},{body:le(()=>[t("div",we,[e.user.first_name?(r(),m("p",$e,b(e.user.last_name)+" "+b(e.user.first_name),1)):(r(),m("p",Se,b(e.user.nickname),1)),e.user.first_name?j("",!0):(r(),m("p",Te,[t("a",{href:"#",onClick:y[0]||(y[0]=ie(c=>w("/user"),["prevent"])),class:"link-secondary d-flex align-items-center text-decoration-none"},[ne(" 前往修改真實姓名 "),Be])]))]),t("div",Re,[t("div",Ce,[t("div",Me,[(r(!0),m(L,null,O(e.data,c=>(r(),m("div",{class:"col-md-12",key:c.id},[t("div",De,[C(t("input",{class:"form-check-input",name:c.id,"onUpdate:modelValue":y[1]||(y[1]=V=>g.value=V),type:"checkbox",id:c.id,value:c.id,disabled:!c.enable},null,8,Pe),[[de,g.value]]),t("label",{class:"form-check-label",for:c.id},b(c.name)+".png",9,Ie)])]))),128)),k.value?(r(),m("p",Le,"*未達完課率的證書不得下載")):j("",!0)])]),t("div",Ve,[t("button",{type:"button",class:"btn btn-dark flex-shrink-0",onClick:y[2]||(y[2]=c=>x("download",g.value)),disabled:!g.value.length},"下載證書",8,ze)])])]),_:1},512))}},Ue=K(Ne,[["__scopeId","data-v-6c6109e1"]]),J=o=>new Promise((v,h)=>{const s=new Image;s.crossOrigin="anonymous",s.src=o,s.onload=()=>v(s),s.onerror=h}),Ee=o=>new FontFace("Noto Sans TC",`url(${o})`).load(),Fe=async(o,v)=>{const h=f=>{const y=f.backingStorePixelRatio||f.webkitBackingStorePixelRatio||f.mozBackingStorePixelRatio||f.msBackingStorePixelRatio||f.oBackingStorePixelRatio||f.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/y},s=v,e=s.getContext("2d"),x=h(e);window.innerWidth<1200?(s.style.width="100%",s.style.height="100%"):(s.style.width=`${s.width*1.2}px`,s.style.height=`${s.height*1.2}px`),s.width*=x,s.height*=x,e.scale(x,x);const[S,$,M]=await Promise.all([J(o.template),J("./images/hexschool_logo.svg"),Ee("./font/NotoSansTC-Regular.otf")]);e.fillStyle="white",e.fillRect(0,0,s.width,s.height),e.drawImage(S,0,0,843,596);const i=124,u=M.family,g="rgba(0, 37, 36, 1)",k="rgba(0, 0, 0, 1)",w=205;e.textAlign="left",e.font=`24px ${u}`,e.fillStyle=g,e.fillText(`${o.course_name}`,i,w),e.textAlign="left",e.font=`24px ${u}`,e.fillStyle=g,e.fillText(`${o.title}`,i,w+32),e.beginPath(),e.moveTo(i,w+32+24),e.lineTo(i+350,w+32+24),e.strokeStyle=g,e.lineWidth=2,e.stroke(),e.font=`31px ${u}`,e.fillStyle="black",e.fillText(`${o.student}`,i,318),e.font=`16px ${u}`,e.fillStyle=k,e.fillText(`${o.content}`,i,360),e.font=`16px ${u}`,e.fillStyle=k,e.fillText("特頒此證 以茲證明",i,384),e.drawImage($,i-6,424,114,40),e.font=`14px ${u}`,e.fillStyle=k,e.fillText(`授課老師 ${o.teacher}`,i,473),e.font=`14px ${u}`,e.fillStyle=k,e.fillText(`${o.issue_date.split("T")[0]}`,i+529,473)},T=o=>(Q("data-v-a22fd124"),o=o(),X(),o),Ge={class:"board-main"},je={class:"border rounded-1 py-6 px-7"},Oe=T(()=>t("h4",null,"您當前的任務繳交進度",-1)),We={class:"progress",style:{height:"8px"}},Ae=["disabled"],He={class:"mt-9"},Je=T(()=>t("h4",{"data-testid":"board-title"},"任務最新狀態",-1)),Ke={class:"d-flex flex-wrap align-items-center justify-content-between"},Qe={class:"mb-0","data-testid":"task-board-total"},Xe={class:"d-flex flex-wrap"},Ye={class:"p-2"},Ze={class:"form-check form-check-inline"},qe=T(()=>t("label",{class:"form-check-label",for:"inlineRadio1"},"全部",-1)),et={class:"form-check form-check-inline"},tt=T(()=>t("label",{class:"form-check-label",for:"inlineRadio2"},"審核中",-1)),at={class:"form-check form-check-inline"},st=T(()=>t("label",{class:"form-check-label",for:"inlineRadio3"},"已審核",-1)),ot={class:"d-flex ms-1 align-items-center"},lt=T(()=>t("option",{value:"all"},"全部",-1)),it=["value"],nt=he('
最後提交時間
暱稱
任務名稱
任務狀態
',1),dt={class:"position-relative"},ct={class:"position-absolute w-100 calc-special-height"},rt={class:"col-lg-3 col-12 font-weight-bold ps-lg-2"},ut={class:"col-lg-2 col-12"},ft={class:"col-lg-5 col-12"},pt={class:"col-lg-2 col-6"},mt={key:0,class:"d-inline-block bg-dark text-white rounded-pill px-4 py-1",style:{"font-size":"14px"}},vt={key:1,class:"d-inline-block bg-light rounded-pill px-4 py-1",style:{"font-size":"14px"}},_t={__name:"Board",setup(o){const v=re(),h=ue(),s=fe(),{apiGetTrainingTasksBoard:e,apiGetTrainingTasks:x,apiGetTrainingTaskProgress:S,apiGetTrainingCertificates:$,apiGetTrainingCertificate:M}=ge,i=n(""),u=n(null),g=()=>{u.value.showModal()},k=n(!1),w=n(null),f=n([]),y=async d=>{(async()=>{k.value=!0;for(let l=0;l{_.toBlob(ee=>{const te=URL.createObjectURL(ee),R=document.createElement("a");R.href=te,R.download=`${a.name}.png`,document.body.appendChild(R),R.click(),document.body.removeChild(R)},"image/png")}),document.body.removeChild(_)}k.value=!1})()},c=n([]),V=async d=>{const{certificates:l}=await $(d);c.value=l},Y=n({name:"",chapters:[]}),D=n(!1),W=n(0),B=n([]),p=n({status:"all",taskId:"all"}),z=n({current:1,next:!1}),N=n(null),U=async(d=1)=>{D.value=!0;let l=`?page=${d}`;p.value.status!=="all"&&(l+=`&status=${p.value.status}`),p.value.taskId!=="all"&&(l+=`&task_id=${p.value.taskId}`);const{total_submit_task_count:_,submit_tasks:a,pagination:P}=await e(i.value,l);W.value=_,d===1?(B.value=a,N.value.scrollTop=0):B.value=[...B.value,...a],z.value=P,D.value=!1};G(()=>{const d=N.value;d.addEventListener("scroll",l=>{B.value.length>0&&l.target.clientHeight+l.target.scrollTop>d.scrollHeight-1&&(!D.value||z.value.next)&&U(z.value.current+1)})}),pe(p,()=>{U()},{deep:!0});const E=n({}),Z=async()=>{const{user_task_progress:d}=await S(i.value);E.value=d},A=n([]),q=async()=>{const{tasks:d}=await x(i.value);A.value=d};return G(()=>{i.value=h.params.id,s.trainingData.id!==h.params.id?s.getTrainingDetail(h.params.id):Y.value=s.trainingData,U(),Z(),q(),V(h.params.id)}),(d,l)=>{const _=me("Loading");return r(),m(L,null,[I(_,{"is-full-page":!0,active:k.value,"z-index":1060},null,8,["active"]),t("div",Ge,[I(ye,{ref_key:"taskDetailModalRef",ref:w,replyData:f.value},null,8,["replyData"]),I(Ue,{ref_key:"certificationModalRef",ref:u,user:H(v).profile,data:c.value,onDownload:y},null,8,["user","data"]),t("div",je,[Oe,t("div",We,[t("div",{class:"progress-bar",role:"progressbar",style:ve({width:`${E.value.completed_task_count/E.value.total_task_count*100}%`}),"aria-valuenow":"25","aria-valuemin":"0","aria-valuemax":"100"},null,4)]),t("button",{class:"btn btn-primary rounded-1 mt-2",onClick:g,disabled:!c.value.length},b(c.value.length?"申請證書":"證書尚未開放下載"),9,Ae)]),t("div",He,[Je,t("div",Ke,[t("p",Qe,"繳交數量: "+b(W.value),1),t("div",Xe,[t("div",Ye,[t("div",Ze,[C(t("input",{class:"form-check-input",type:"radio",name:"boardStatus","onUpdate:modelValue":l[0]||(l[0]=a=>p.value.status=a),id:"inlineRadio1",value:"all"},null,512),[[F,p.value.status]]),qe]),t("div",et,[C(t("input",{class:"form-check-input",type:"radio",name:"boardStatus","onUpdate:modelValue":l[1]||(l[1]=a=>p.value.status=a),id:"inlineRadio2",value:"process"},null,512),[[F,p.value.status]]),tt]),t("div",at,[C(t("input",{class:"form-check-input",type:"radio",name:"boardStatus","onUpdate:modelValue":l[2]||(l[2]=a=>p.value.status=a),id:"inlineRadio3",value:"completed"},null,512),[[F,p.value.status]]),st])]),t("div",ot,[C(t("select",{class:"form-select rounded-1",style:{"min-width":"200px","max-width":"300px"},"aria-label":"Default select example","onUpdate:modelValue":l[3]||(l[3]=a=>p.value.taskId=a)},[lt,(r(!0),m(L,null,O(A.value,a=>(r(),m("option",{value:a.id,key:a.id},b(a.name),9,it))),128))],512),[[_e,p.value.taskId]])])])]),nt,t("div",dt,[t("div",ct,[I(_,{"is-full-page":!1,active:D.value,"z-index":1060},null,8,["active"])]),t("div",{class:"task-board",ref_key:"taskBoardRef",ref:N},[(r(!0),m(L,null,O(B.value,a=>(r(),m("div",{key:a.id,class:"d-flex flex-wrap bg-white py-2 align-items-center border-bottom"},[t("div",rt,b(H(be)(a.updated_at)),1),t("div",ut,b(a.nickname),1),t("div",ft,b(a.task_name),1),t("div",pt,[a.status==="process"?(r(),m("span",mt,"審核中")):a.status==="completed"?(r(),m("span",vt,"已審核")):j("",!0)])]))),128))],512)])])])],64)}}},xt=K(_t,[["__scopeId","data-v-a22fd124"]]);export{xt as default};
diff --git a/assets/Board-Tm_Ohl0D.css b/assets/Board-Tm_Ohl0D.css
new file mode 100644
index 0000000..7cdd8cc
--- /dev/null
+++ b/assets/Board-Tm_Ohl0D.css
@@ -0,0 +1 @@
+[data-v-6c6109e1] .modal-title{font-weight:100}.board-main[data-v-a22fd124]{height:100%;overflow-y:auto;padding-top:30px;padding-bottom:30px;width:92%;margin:auto}.calc-special-height[data-v-a22fd124]{min-height:200px;height:calc(100vh - 446px - 4rem)}.task-board[data-v-a22fd124]{max-height:calc(100vh - 446px - 4rem);min-height:200px;overflow-y:auto;overflow-x:hidden;padding-right:0;position:relative}.task-board[data-v-a22fd124]::-webkit-scrollbar{width:5px}.task-board[data-v-a22fd124]::-webkit-scrollbar-track{background:#f1f1f1}.task-board[data-v-a22fd124]::-webkit-scrollbar-thumb{background:var(--bs-light_green)}.task-board[data-v-a22fd124]::-webkit-scrollbar-thumb:hover{background:var(--bs-gentle_green)}
diff --git a/assets/CheckWelcome-zzApRdPK.js b/assets/CheckWelcome-zzApRdPK.js
new file mode 100644
index 0000000..28cd221
--- /dev/null
+++ b/assets/CheckWelcome-zzApRdPK.js
@@ -0,0 +1 @@
+import{a as r,u,r as t,o as l,c as _,d as p,C as d}from"./index-oEzATel6.js";const h={class:"container my-5"},f={__name:"CheckWelcome",setup(m){const{apiGetTrainingCheck:c}=d,o=r(),a=u(),e=t(""),n=t(!1),i=async()=>{const{is_check_in:s}=await c(e.value);n.value=s,n.value?a.push(`/training/${e.value}/board`):a.push(`/training/${e.value}/welcome`)};return l(()=>{const{id:s}=o.params;e.value=s,i()}),(s,k)=>(_(),p("div",h))}};export{f as default};
diff --git a/assets/Dashboard-6YzFCfpj.js b/assets/Dashboard-6YzFCfpj.js
new file mode 100644
index 0000000..d53e45f
--- /dev/null
+++ b/assets/Dashboard-6YzFCfpj.js
@@ -0,0 +1 @@
+import{a as I}from"./tasks-apEZWA-x.js";import{_ as M,r as _,o as B,b as L,c as o,d as n,f as c,e as s,F as p,B as k,g as m,i as N,s as C,R,n as V,D as j,t as f,l as u,J as F,K as G}from"./index-oEzATel6.js";const l=h=>(F("data-v-fa758887"),h=h(),G(),h),A={class:"container mt-5"},E={class:"list-unstyled row"},J={class:"position-relative mb-4"},K={class:"z-1"},q=l(()=>s("h1",{class:"h2 mb-1"},"當前直播課程",-1)),H={class:"h2 mb-2"},O=l(()=>s("span",{class:"material-symbols-outlined align-middle"},"arrow_forward",-1)),P={class:"mb-5"},Q={class:"d-flex align-items-center justify-content-between"},U=l(()=>s("h2",{class:"text-primary fs-4 fw-bold"},"我的任務列表",-1)),W=l(()=>s("span",{class:"material-symbols-outlined align-middle"},"arrow_forward",-1)),X={class:"position-relative",style:{"min-height":"200px"}},Y={class:"list-unstyled row"},Z={class:"card"},ss=["src","alt"],ts={class:"card-body h-100"},es={class:"card-title fw-bold my-0"},as={class:"text-gentle_green mb-1 mt-1"},os=l(()=>s("span",{class:"material-symbols-outlined align-middle"},"arrow_forward",-1)),ns={class:"mb-5"},ls={class:"d-flex align-items-center justify-content-between"},is=l(()=>s("h2",{class:"text-primary fs-4 fw-bold"}," 已註冊的直播班課程",-1)),cs=l(()=>s("span",{class:"material-symbols-outlined align-middle"},"arrow_forward",-1)),ds={key:0,class:"list-unstyled row"},rs={class:"card border border-1 border-light h-100 py-6 px-4 training-card"},_s={class:"card-body d-flex flex-column"},ms={class:"card-title fw-bold mb-1"},us=l(()=>s("span",{class:"material-symbols-outlined align-middle"},"trending_flat",-1)),hs={key:1,class:"text-center bg-light py-3"},gs=l(()=>s("p",{class:"mb-0"},"目前沒有進行中的直播班課程",-1)),ps=[gs],fs={__name:"Dashboard",setup(h){const{apiGetMyTask:T,apiGetTraining:$}=I,v=_(!1),x=_([]),D=async(d=1,r=6)=>{var e,i,t,g;v.value=!0;try{const{tasks:a}=await T(d,r);x.value=a}catch(a){C.toastMessage("danger","info",`${(i=(e=a==null?void 0:a.response)==null?void 0:e.data)==null?void 0:i.statusCode}:${(g=(t=a==null?void 0:a.response)==null?void 0:t.data)==null?void 0:g.message}`)}v.value=!1},b=_(!1),y=_([]),w=_([]),S=async()=>{var d,r,e,i;b.value=!0;try{const{training_classes:t}=await $();y.value=t.filter(g=>{const a=new Date(g.end_at).getTime(),z=new Date().getTime();return a>z}),w.value=t.slice(0,3)}catch(t){C.toastMessage("danger","info",`${(r=(d=t==null?void 0:t.response)==null?void 0:d.data)==null?void 0:r.statusCode}:${(i=(e=t==null?void 0:t.response)==null?void 0:e.data)==null?void 0:i.message}`)}b.value=!1};return B(()=>{D(),S()}),(d,r)=>{const e=L("RouterLink"),i=L("Loading");return o(),n(p,null,[c(R),s("div",A,[s("ul",E,[(o(!0),n(p,null,k(y.value,t=>(o(),n("li",{key:t.id,class:V(y.value.length>1?"col-md-6":"col-12")},[s("div",J,[s("div",{class:"bg-linear-gradient d-flex align-items-end p-6",style:j([{height:"360px"},{backgroundImage:`url(${t.cover_url})`,backgroundRepeat:"no-repeat",backgroundSize:"cover"}])},[s("div",K,[q,s("h2",H,f(t.name),1),c(e,{to:`/training/${t.id}`,class:"goto stretched-link"},{default:m(()=>[u(" 進入直播班 "),O]),_:2},1032,["to"])])],4)])],2))),128))]),s("div",P,[s("div",Q,[U,c(e,{to:"/tasks/my",class:"text-decoration-none link-primary fs-6 fw-normal"},{default:m(()=>[u(" 查看所有任務 "),W]),_:1})]),s("div",X,[c(i,{"is-full-page":!1,active:v.value,"z-index":1049},null,8,["active"]),s("ul",Y,[(o(!0),n(p,null,k(x.value,t=>(o(),n("li",{key:t.id,class:"col-md-4 mb-6"},[s("div",Z,[s("img",{src:t.image_url,class:"card-img-top rounded mb-3",alt:t.name},null,8,ss),s("div",ts,[s("h5",es,f(t.name),1),s("p",as,f(t.task_group_name),1),c(e,{to:`/tasks/${t.id}`,class:"goto stretched-link"},{default:m(()=>[u(" 查看任務 "),os]),_:2},1032,["to"])])])]))),128))])])]),s("div",ns,[s("div",ls,[is,c(e,{to:"/training",class:"text-decoration-none link-primary fs-6 fw-normal"},{default:m(()=>[u(" 查看所有直播班 "),cs]),_:1})]),w.value.length>0?(o(),n("ul",ds,[(o(!0),n(p,null,k(w.value,t=>(o(),n("li",{key:t.id,class:"col-md-4 mb-6"},[s("div",rs,[s("div",_s,[s("h5",ms,f(t.name),1),c(e,{to:`/training/${t.id}`,class:"training-goto stretched-link mb-1"},{default:m(()=>[u(" 進入直播班 ")]),_:2},1032,["to"]),us])])]))),128))])):b.value?N("",!0):(o(),n("div",hs,ps))])])],64)}}},ys=M(fs,[["__scopeId","data-v-fa758887"]]);export{ys as default};
diff --git a/assets/Dashboard-VM4AarrI.css b/assets/Dashboard-VM4AarrI.css
new file mode 100644
index 0000000..854e415
--- /dev/null
+++ b/assets/Dashboard-VM4AarrI.css
@@ -0,0 +1 @@
+.banner[data-v-fa758887]{position:relative;min-height:360px}.banner[data-v-fa758887]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#fff0,#fff)}.goto[data-v-fa758887]{text-decoration:none;border-bottom:1px solid transparent;display:inline-flex;align-items:center}.goto .material-symbols-outlined[data-v-fa758887]{display:none}.goto[data-v-fa758887]:hover{border-bottom:1px solid var(--bs-primary)}.goto:hover .material-symbols-outlined[data-v-fa758887]{display:inline-block}.bg-linear-gradient[data-v-fa758887]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#fff0,#fff)}.training-card[data-v-fa758887]{box-shadow:4px 4px 8px #0000000d}.training-card[data-v-fa758887]:hover{background-color:var(--bs-light)}.training-goto[data-v-fa758887]{text-decoration:none}
diff --git a/assets/Github-5tcMptXa.js b/assets/Github-5tcMptXa.js
new file mode 100644
index 0000000..6c5208c
--- /dev/null
+++ b/assets/Github-5tcMptXa.js
@@ -0,0 +1 @@
+import{a as s,u as a,o as i,b as r,c as u,x as _,y as l}from"./index-oEzATel6.js";const p={__name:"Github",setup(d){const n=s(),c=a();return i(()=>{const e=n.query.access_token,t=l();if(e){document.cookie=`h_MqhC49RxFRI6pR3Z_token=${e};${t}`;const o=localStorage.getItem("h_redirect");o?(window.location.href=o,localStorage.removeItem("h_redirect")):c.push("login")}}),(e,t)=>{const o=r("Loading");return u(),_(o,{active:e.isLoading,"z-index":1060},null,8,["active"])}}};export{p as default};
diff --git a/assets/KaTeX_AMS-Regular-0YIAJWTb.ttf b/assets/KaTeX_AMS-Regular-0YIAJWTb.ttf
new file mode 100644
index 0000000..c6f9a5e
Binary files /dev/null and b/assets/KaTeX_AMS-Regular-0YIAJWTb.ttf differ
diff --git a/assets/KaTeX_AMS-Regular-UIXRTGNW.woff2 b/assets/KaTeX_AMS-Regular-UIXRTGNW.woff2
new file mode 100644
index 0000000..0acaaff
Binary files /dev/null and b/assets/KaTeX_AMS-Regular-UIXRTGNW.woff2 differ
diff --git a/assets/KaTeX_AMS-Regular-zJvWDgGp.woff b/assets/KaTeX_AMS-Regular-zJvWDgGp.woff
new file mode 100644
index 0000000..b804d7b
Binary files /dev/null and b/assets/KaTeX_AMS-Regular-zJvWDgGp.woff differ
diff --git a/assets/KaTeX_Caligraphic-Bold-6vyEfazt.woff2 b/assets/KaTeX_Caligraphic-Bold-6vyEfazt.woff2
new file mode 100644
index 0000000..f390922
Binary files /dev/null and b/assets/KaTeX_Caligraphic-Bold-6vyEfazt.woff2 differ
diff --git a/assets/KaTeX_Caligraphic-Bold-AE18XbF9.ttf b/assets/KaTeX_Caligraphic-Bold-AE18XbF9.ttf
new file mode 100644
index 0000000..9ff4a5e
Binary files /dev/null and b/assets/KaTeX_Caligraphic-Bold-AE18XbF9.ttf differ
diff --git a/assets/KaTeX_Caligraphic-Bold-RIlxi71x.woff b/assets/KaTeX_Caligraphic-Bold-RIlxi71x.woff
new file mode 100644
index 0000000..9759710
Binary files /dev/null and b/assets/KaTeX_Caligraphic-Bold-RIlxi71x.woff differ
diff --git a/assets/KaTeX_Caligraphic-Regular-4uo0fsfh.woff2 b/assets/KaTeX_Caligraphic-Regular-4uo0fsfh.woff2
new file mode 100644
index 0000000..75344a1
Binary files /dev/null and b/assets/KaTeX_Caligraphic-Regular-4uo0fsfh.woff2 differ
diff --git a/assets/KaTeX_Caligraphic-Regular-MF_e1AYw.ttf b/assets/KaTeX_Caligraphic-Regular-MF_e1AYw.ttf
new file mode 100644
index 0000000..f522294
Binary files /dev/null and b/assets/KaTeX_Caligraphic-Regular-MF_e1AYw.ttf differ
diff --git a/assets/KaTeX_Caligraphic-Regular-k0QPq0y-.woff b/assets/KaTeX_Caligraphic-Regular-k0QPq0y-.woff
new file mode 100644
index 0000000..9bdd534
Binary files /dev/null and b/assets/KaTeX_Caligraphic-Regular-k0QPq0y-.woff differ
diff --git a/assets/KaTeX_Fraktur-Bold-XZxETTVq.ttf b/assets/KaTeX_Fraktur-Bold-XZxETTVq.ttf
new file mode 100644
index 0000000..4e98259
Binary files /dev/null and b/assets/KaTeX_Fraktur-Bold-XZxETTVq.ttf differ
diff --git a/assets/KaTeX_Fraktur-Bold-bAz-dThZ.woff b/assets/KaTeX_Fraktur-Bold-bAz-dThZ.woff
new file mode 100644
index 0000000..e7730f6
Binary files /dev/null and b/assets/KaTeX_Fraktur-Bold-bAz-dThZ.woff differ
diff --git a/assets/KaTeX_Fraktur-Bold-i-oP291Y.woff2 b/assets/KaTeX_Fraktur-Bold-i-oP291Y.woff2
new file mode 100644
index 0000000..395f28b
Binary files /dev/null and b/assets/KaTeX_Fraktur-Bold-i-oP291Y.woff2 differ
diff --git a/assets/KaTeX_Fraktur-Regular-8XXOHEfX.woff b/assets/KaTeX_Fraktur-Regular-8XXOHEfX.woff
new file mode 100644
index 0000000..acab069
Binary files /dev/null and b/assets/KaTeX_Fraktur-Regular-8XXOHEfX.woff differ
diff --git a/assets/KaTeX_Fraktur-Regular-gf8Lq3rE.ttf b/assets/KaTeX_Fraktur-Regular-gf8Lq3rE.ttf
new file mode 100644
index 0000000..b8461b2
Binary files /dev/null and b/assets/KaTeX_Fraktur-Regular-gf8Lq3rE.ttf differ
diff --git a/assets/KaTeX_Fraktur-Regular-k2IhepQP.woff2 b/assets/KaTeX_Fraktur-Regular-k2IhepQP.woff2
new file mode 100644
index 0000000..735f694
Binary files /dev/null and b/assets/KaTeX_Fraktur-Regular-k2IhepQP.woff2 differ
diff --git a/assets/KaTeX_Main-Bold-CZtwCMuf.woff b/assets/KaTeX_Main-Bold-CZtwCMuf.woff
new file mode 100644
index 0000000..f38136a
Binary files /dev/null and b/assets/KaTeX_Main-Bold-CZtwCMuf.woff differ
diff --git a/assets/KaTeX_Main-Bold-MGqDlVzd.ttf b/assets/KaTeX_Main-Bold-MGqDlVzd.ttf
new file mode 100644
index 0000000..4060e62
Binary files /dev/null and b/assets/KaTeX_Main-Bold-MGqDlVzd.ttf differ
diff --git a/assets/KaTeX_Main-Bold-sffOiHVw.woff2 b/assets/KaTeX_Main-Bold-sffOiHVw.woff2
new file mode 100644
index 0000000..ab2ad21
Binary files /dev/null and b/assets/KaTeX_Main-Bold-sffOiHVw.woff2 differ
diff --git a/assets/KaTeX_Main-BoldItalic-88TzJhul.ttf b/assets/KaTeX_Main-BoldItalic-88TzJhul.ttf
new file mode 100644
index 0000000..dc00797
Binary files /dev/null and b/assets/KaTeX_Main-BoldItalic-88TzJhul.ttf differ
diff --git a/assets/KaTeX_Main-BoldItalic-8QydwDku.woff2 b/assets/KaTeX_Main-BoldItalic-8QydwDku.woff2
new file mode 100644
index 0000000..5931794
Binary files /dev/null and b/assets/KaTeX_Main-BoldItalic-8QydwDku.woff2 differ
diff --git a/assets/KaTeX_Main-BoldItalic-EqUi0SPe.woff b/assets/KaTeX_Main-BoldItalic-EqUi0SPe.woff
new file mode 100644
index 0000000..67807b0
Binary files /dev/null and b/assets/KaTeX_Main-BoldItalic-EqUi0SPe.woff differ
diff --git a/assets/KaTeX_Main-Italic-DVgO3ulm.woff2 b/assets/KaTeX_Main-Italic-DVgO3ulm.woff2
new file mode 100644
index 0000000..b50920e
Binary files /dev/null and b/assets/KaTeX_Main-Italic-DVgO3ulm.woff2 differ
diff --git a/assets/KaTeX_Main-Italic-N1npxqDf.ttf b/assets/KaTeX_Main-Italic-N1npxqDf.ttf
new file mode 100644
index 0000000..0e9b0f3
Binary files /dev/null and b/assets/KaTeX_Main-Italic-N1npxqDf.ttf differ
diff --git a/assets/KaTeX_Main-Italic-TCzgZvdR.woff b/assets/KaTeX_Main-Italic-TCzgZvdR.woff
new file mode 100644
index 0000000..6f43b59
Binary files /dev/null and b/assets/KaTeX_Main-Italic-TCzgZvdR.woff differ
diff --git a/assets/KaTeX_Main-Regular-6_eCWgYQ.woff b/assets/KaTeX_Main-Regular-6_eCWgYQ.woff
new file mode 100644
index 0000000..21f5812
Binary files /dev/null and b/assets/KaTeX_Main-Regular-6_eCWgYQ.woff differ
diff --git a/assets/KaTeX_Main-Regular-MqWbzbVV.ttf b/assets/KaTeX_Main-Regular-MqWbzbVV.ttf
new file mode 100644
index 0000000..dd45e1e
Binary files /dev/null and b/assets/KaTeX_Main-Regular-MqWbzbVV.ttf differ
diff --git a/assets/KaTeX_Main-Regular-dtjb4qKe.woff2 b/assets/KaTeX_Main-Regular-dtjb4qKe.woff2
new file mode 100644
index 0000000..eb24a7b
Binary files /dev/null and b/assets/KaTeX_Main-Regular-dtjb4qKe.woff2 differ
diff --git a/assets/KaTeX_Math-BoldItalic-ImPtsMme.woff b/assets/KaTeX_Math-BoldItalic-ImPtsMme.woff
new file mode 100644
index 0000000..0ae390d
Binary files /dev/null and b/assets/KaTeX_Math-BoldItalic-ImPtsMme.woff differ
diff --git a/assets/KaTeX_Math-BoldItalic-d10o37uD.ttf b/assets/KaTeX_Math-BoldItalic-d10o37uD.ttf
new file mode 100644
index 0000000..728ce7a
Binary files /dev/null and b/assets/KaTeX_Math-BoldItalic-d10o37uD.ttf differ
diff --git a/assets/KaTeX_Math-BoldItalic-mZ7zbAmZ.woff2 b/assets/KaTeX_Math-BoldItalic-mZ7zbAmZ.woff2
new file mode 100644
index 0000000..2965702
Binary files /dev/null and b/assets/KaTeX_Math-BoldItalic-mZ7zbAmZ.woff2 differ
diff --git a/assets/KaTeX_Math-Italic-H5Tq_9FA.ttf b/assets/KaTeX_Math-Italic-H5Tq_9FA.ttf
new file mode 100644
index 0000000..70d559b
Binary files /dev/null and b/assets/KaTeX_Math-Italic-H5Tq_9FA.ttf differ
diff --git a/assets/KaTeX_Math-Italic-LedwBEzP.woff2 b/assets/KaTeX_Math-Italic-LedwBEzP.woff2
new file mode 100644
index 0000000..215c143
Binary files /dev/null and b/assets/KaTeX_Math-Italic-LedwBEzP.woff2 differ
diff --git a/assets/KaTeX_Math-Italic-wNP_z16f.woff b/assets/KaTeX_Math-Italic-wNP_z16f.woff
new file mode 100644
index 0000000..eb5159d
Binary files /dev/null and b/assets/KaTeX_Math-Italic-wNP_z16f.woff differ
diff --git a/assets/KaTeX_SansSerif-Bold-2yISjogg.woff b/assets/KaTeX_SansSerif-Bold-2yISjogg.woff
new file mode 100644
index 0000000..8d47c02
Binary files /dev/null and b/assets/KaTeX_SansSerif-Bold-2yISjogg.woff differ
diff --git a/assets/KaTeX_SansSerif-Bold-9bFEtBg9.woff2 b/assets/KaTeX_SansSerif-Bold-9bFEtBg9.woff2
new file mode 100644
index 0000000..cfaa3bd
Binary files /dev/null and b/assets/KaTeX_SansSerif-Bold-9bFEtBg9.woff2 differ
diff --git a/assets/KaTeX_SansSerif-Bold-hTHqZ76u.ttf b/assets/KaTeX_SansSerif-Bold-hTHqZ76u.ttf
new file mode 100644
index 0000000..2f65a8a
Binary files /dev/null and b/assets/KaTeX_SansSerif-Bold-hTHqZ76u.ttf differ
diff --git a/assets/KaTeX_SansSerif-Italic-Azdo-3Wm.woff b/assets/KaTeX_SansSerif-Italic-Azdo-3Wm.woff
new file mode 100644
index 0000000..7e02df9
Binary files /dev/null and b/assets/KaTeX_SansSerif-Italic-Azdo-3Wm.woff differ
diff --git a/assets/KaTeX_SansSerif-Italic-GGIydc0p.ttf b/assets/KaTeX_SansSerif-Italic-GGIydc0p.ttf
new file mode 100644
index 0000000..d5850df
Binary files /dev/null and b/assets/KaTeX_SansSerif-Italic-GGIydc0p.ttf differ
diff --git a/assets/KaTeX_SansSerif-Italic-tx9FahgZ.woff2 b/assets/KaTeX_SansSerif-Italic-tx9FahgZ.woff2
new file mode 100644
index 0000000..349c06d
Binary files /dev/null and b/assets/KaTeX_SansSerif-Italic-tx9FahgZ.woff2 differ
diff --git a/assets/KaTeX_SansSerif-Regular-TaO4USHJ.ttf b/assets/KaTeX_SansSerif-Regular-TaO4USHJ.ttf
new file mode 100644
index 0000000..537279f
Binary files /dev/null and b/assets/KaTeX_SansSerif-Regular-TaO4USHJ.ttf differ
diff --git a/assets/KaTeX_SansSerif-Regular-kun6lKiW.woff b/assets/KaTeX_SansSerif-Regular-kun6lKiW.woff
new file mode 100644
index 0000000..31b8482
Binary files /dev/null and b/assets/KaTeX_SansSerif-Regular-kun6lKiW.woff differ
diff --git a/assets/KaTeX_SansSerif-Regular-wwQp5Se8.woff2 b/assets/KaTeX_SansSerif-Regular-wwQp5Se8.woff2
new file mode 100644
index 0000000..a90eea8
Binary files /dev/null and b/assets/KaTeX_SansSerif-Regular-wwQp5Se8.woff2 differ
diff --git a/assets/KaTeX_Script-Regular--ckFYqpa.woff b/assets/KaTeX_Script-Regular--ckFYqpa.woff
new file mode 100644
index 0000000..0e7da82
Binary files /dev/null and b/assets/KaTeX_Script-Regular--ckFYqpa.woff differ
diff --git a/assets/KaTeX_Script-Regular-98CFnxev.woff2 b/assets/KaTeX_Script-Regular-98CFnxev.woff2
new file mode 100644
index 0000000..b3048fc
Binary files /dev/null and b/assets/KaTeX_Script-Regular-98CFnxev.woff2 differ
diff --git a/assets/KaTeX_Script-Regular-uSZBlqPg.ttf b/assets/KaTeX_Script-Regular-uSZBlqPg.ttf
new file mode 100644
index 0000000..fd679bf
Binary files /dev/null and b/assets/KaTeX_Script-Regular-uSZBlqPg.ttf differ
diff --git a/assets/KaTeX_Size1-Regular-27J7nvyK.ttf b/assets/KaTeX_Size1-Regular-27J7nvyK.ttf
new file mode 100644
index 0000000..871fd7d
Binary files /dev/null and b/assets/KaTeX_Size1-Regular-27J7nvyK.ttf differ
diff --git a/assets/KaTeX_Size1-Regular-Jgg_JgPA.woff2 b/assets/KaTeX_Size1-Regular-Jgg_JgPA.woff2
new file mode 100644
index 0000000..c5a8462
Binary files /dev/null and b/assets/KaTeX_Size1-Regular-Jgg_JgPA.woff2 differ
diff --git a/assets/KaTeX_Size1-Regular-tfebZ-uE.woff b/assets/KaTeX_Size1-Regular-tfebZ-uE.woff
new file mode 100644
index 0000000..7f292d9
Binary files /dev/null and b/assets/KaTeX_Size1-Regular-tfebZ-uE.woff differ
diff --git a/assets/KaTeX_Size2-Regular-8uHcfdJu.woff2 b/assets/KaTeX_Size2-Regular-8uHcfdJu.woff2
new file mode 100644
index 0000000..e1bccfe
Binary files /dev/null and b/assets/KaTeX_Size2-Regular-8uHcfdJu.woff2 differ
diff --git a/assets/KaTeX_Size2-Regular-KA9bXP1N.woff b/assets/KaTeX_Size2-Regular-KA9bXP1N.woff
new file mode 100644
index 0000000..d241d9b
Binary files /dev/null and b/assets/KaTeX_Size2-Regular-KA9bXP1N.woff differ
diff --git a/assets/KaTeX_Size2-Regular-e4ClFoQr.ttf b/assets/KaTeX_Size2-Regular-e4ClFoQr.ttf
new file mode 100644
index 0000000..7a212ca
Binary files /dev/null and b/assets/KaTeX_Size2-Regular-e4ClFoQr.ttf differ
diff --git a/assets/KaTeX_Size3-Regular-4KV7NJM_.ttf b/assets/KaTeX_Size3-Regular-4KV7NJM_.ttf
new file mode 100644
index 0000000..00bff34
Binary files /dev/null and b/assets/KaTeX_Size3-Regular-4KV7NJM_.ttf differ
diff --git a/assets/KaTeX_Size3-Regular-k6uTKqBB.woff b/assets/KaTeX_Size3-Regular-k6uTKqBB.woff
new file mode 100644
index 0000000..e6e9b65
Binary files /dev/null and b/assets/KaTeX_Size3-Regular-k6uTKqBB.woff differ
diff --git a/assets/KaTeX_Size4-Regular-1hQb9ONy.ttf b/assets/KaTeX_Size4-Regular-1hQb9ONy.ttf
new file mode 100644
index 0000000..74f0892
Binary files /dev/null and b/assets/KaTeX_Size4-Regular-1hQb9ONy.ttf differ
diff --git a/assets/KaTeX_Size4-Regular-5eZcWcVX.woff2 b/assets/KaTeX_Size4-Regular-5eZcWcVX.woff2
new file mode 100644
index 0000000..680c130
Binary files /dev/null and b/assets/KaTeX_Size4-Regular-5eZcWcVX.woff2 differ
diff --git a/assets/KaTeX_Size4-Regular-RfuIJGSk.woff b/assets/KaTeX_Size4-Regular-RfuIJGSk.woff
new file mode 100644
index 0000000..e1ec545
Binary files /dev/null and b/assets/KaTeX_Size4-Regular-RfuIJGSk.woff differ
diff --git a/assets/KaTeX_Typewriter-Regular-9yG-_x36.ttf b/assets/KaTeX_Typewriter-Regular-9yG-_x36.ttf
new file mode 100644
index 0000000..c83252c
Binary files /dev/null and b/assets/KaTeX_Typewriter-Regular-9yG-_x36.ttf differ
diff --git a/assets/KaTeX_Typewriter-Regular-juq-IZ9c.woff2 b/assets/KaTeX_Typewriter-Regular-juq-IZ9c.woff2
new file mode 100644
index 0000000..771f1af
Binary files /dev/null and b/assets/KaTeX_Typewriter-Regular-juq-IZ9c.woff2 differ
diff --git a/assets/KaTeX_Typewriter-Regular-tMUvZjwd.woff b/assets/KaTeX_Typewriter-Regular-tMUvZjwd.woff
new file mode 100644
index 0000000..2432419
Binary files /dev/null and b/assets/KaTeX_Typewriter-Regular-tMUvZjwd.woff differ
diff --git a/assets/Login-UUbw-Dsl.js b/assets/Login-UUbw-Dsl.js
new file mode 100644
index 0000000..d388bd0
--- /dev/null
+++ b/assets/Login-UUbw-Dsl.js
@@ -0,0 +1 @@
+import{u as N,a as $,r as f,o as P,b as u,c as C,d as M,w as j,v as z,e,f as i,g as T,h as b,i as B,F as U,j as D,n as I,k as g,t as G,l as n,m as Z,p as A,q as L,s as X}from"./index-oEzATel6.js";import{_ as H,a as J}from"./PolicyModal-86Z1G9y9.js";import"./Modal-BlhncX8m.js";const K=e("div",{class:"mb-4 d-flex align-items-baseline"},[e("h1",{class:"h2 me-auto"}," 登入 ")],-1),O={class:"mb-3"},Q=e("label",{for:"account",class:"form-label"},"帳號(Email)",-1),W={class:"mb-3"},Y={class:"d-flex justify-content-between align-items-center"},ee=e("label",{for:"password",class:"form-label"},"密碼",-1),te={href:"#",class:"text-decoration-none"},se={class:"d-grid gap-2 mb-4"},ae=["disabled"],oe={class:"text-end text-dark"},ie=e("div",{class:"position-relative"},[e("hr"),n(),e("span",{class:"position-absolute top-50 start-50 bg-white text-dark translate-middle px-3"},"或")],-1),ne=e("img",{class:"img-fluid me-1",width:"30",src:J,alt:"teachable-logo"},null,-1),le={class:"text-dark fw-normal"},re={key:0},ce={class:"position-relative d-flex flex-column algin-items-center",style:{height:"100vh"}},de=e("p",{class:"text-center position-absolute",style:{left:"50%",top:"200px",transform:"translateX(-50%)"}},"確認使用者身份中 ...",-1),he={__name:"Login",setup(ue){const{apiPostLogin:q,apiGetLoginTeachable:w}=Z,{apiGetNotifyMessageConstants:V}=A,p=N(),y=$(),F=L(async t=>{await q(t),localStorage.setItem("d_RTfznkkwslIopaqd_account",encodeURIComponent(t.account)),X.toastMessage("success","","登入成功"),p.push("/login/verify")}),r=f(!0);P(async()=>{const{h_redirect:t,h_path:s,redirectType:a,route:o,bind:c}=y.query;if(r.value=!0,D("h_MqhC49RxFRI6pR3Z_token"))try{if((await V()).message==="成功"){if(c==="true"){const l={};l.redirectType=a,l.route=o;const v=new URLSearchParams(l).toString(),d=await w(v);window.location.href=d.redirect_url;return}p.push("/dashboard")}}catch{r.value=!1,window.localStorage.removeItem("h_use_this_user_token_time_limit"),window.localStorage.removeItem("h_MqhC49RxFRI6pR3Z_token_origin"),p.push("/login")}r.value=!1,a&&o&&(localStorage.setItem("t_redirectType",a),localStorage.setItem("t_redirectRoute",o),p.replace({query:{}})),t&&localStorage.setItem("h_redirect",`${t}#${s||"/"}`)});const k=L(async()=>{const{redirectType:t,route:s}=y.query,a={redirectType:"user"};t==="teachable"&&(a.redirectType=t,a.route=s);const o=new URLSearchParams(a).toString(),c=await w(o);window.location.href=c.redirect_url}),x=f(""),m=f(null),R=t=>{x.value=t,t==="user"?m.value.modalTitle="使用者條款":m.value.modalTitle="隱私權政策",m.value.showModal()},_=f(!1),E=()=>{_.value=!_.value};return(t,s)=>{const a=u("VField"),o=u("ErrorMessage"),c=u("router-link"),S=u("VForm"),h=u("Loading");return C(),M(U,null,[j(e("div",null,[i(S,{ref:"form",onSubmit:b(F)},{default:T(({errors:l,meta:v})=>[K,e("div",O,[Q,i(a,{id:"account",name:"account",label:"帳號(Email)",type:"email",class:I(["form-control",{"is-invalid":l.account}]),rules:"required|email"},null,8,["class"]),i(o,{name:"account",class:"invalid-feedback"})]),e("div",W,[e("div",Y,[ee,e("a",te,[e("span",{title:"顯示密碼",class:"bg-transparent material-symbols-outlined d-block fs-5",onClick:g(E,["prevent"])},G(_.value?"visibility_off":"visibility"),1)])]),i(a,{id:"password",name:"password",label:"密碼",type:_.value?"text":"password",class:I(["form-control",{"is-invalid":l.password}]),rules:"required",autocomplete:"current-password"},null,8,["type","class"]),i(o,{name:"password",class:"invalid-feedback"})]),e("div",se,[e("button",{type:"submit",class:"btn btn-primary",disabled:!v.valid}," 登入 ",8,ae),e("p",oe,[n(" 忘記密碼了嗎?"),i(c,{to:"/password/reset",class:"text-primary fw-bold"},{default:T(()=>[n("重設密碼")]),_:1})]),ie,e("button",{type:"button",class:"btn btn-outline-primary d-flex align-items-center justify-content-center",onClick:s[0]||(s[0]=(...d)=>b(k)&&b(k)(...d))},[ne,n(" 以 Teachable 登入或註冊 ")])]),e("h6",le,[n(" 若登入即表示你已經閱讀並接受我們的"),e("a",{href:"#",class:"text-dark",onClick:s[1]||(s[1]=g(d=>R("user"),["prevent"]))},"使用者條款"),n("和"),e("a",{href:"#",class:"text-dark",onClick:s[2]||(s[2]=g(d=>R("private"),["prevent"]))},"隱私權政策"),n("。 ")])]),_:1},8,["onSubmit"])],512),[[z,!r.value]]),r.value?(C(),M("div",re,[e("div",ce,[de,i(h,{"is-full-page":!1,active:!0,"z-index":1060,style:{height:"300px"}})])])):B("",!0),i(H,{ref_key:"policyModalRef",ref:m,status:x.value},null,8,["status"])],64)}}};export{he as default};
diff --git a/assets/LoginVerify-2EvJISZb.css b/assets/LoginVerify-2EvJISZb.css
new file mode 100644
index 0000000..5f52f75
--- /dev/null
+++ b/assets/LoginVerify-2EvJISZb.css
@@ -0,0 +1 @@
+.rounded-circle[data-v-332b6c64]{width:56px;height:56px;display:flex;align-items:center;justify-content:center;text-align:center;text-decoration:none}
diff --git a/assets/LoginVerify-BVjTbTr2.js b/assets/LoginVerify-BVjTbTr2.js
new file mode 100644
index 0000000..c61b533
--- /dev/null
+++ b/assets/LoginVerify-BVjTbTr2.js
@@ -0,0 +1 @@
+import{_ as v,a as y}from"./fb-R3zjQfrO.js";import{_ as k,u as x,A as I,o as S,b as d,c as w,x as V,g as R,h as T,e,f as _,n as M,q as C,s as F,J as L,K as q,m as E,y as $}from"./index-oEzATel6.js";const r=i=>(L("data-v-332b6c64"),i=i(),q(),i),N=r(()=>e("h1",{class:"h2 mb-3"}," 登入成功 ",-1)),z=r(()=>e("p",{class:"mb-4 text-dark"}," 請至方才註冊的 Email 信箱收取驗證信, 可點擊驗證連結登入,或在下方輸入驗證碼 ",-1)),A={class:"mb-4"},B=r(()=>e("label",{for:"validation",class:"form-label"},"驗證碼",-1)),U=["disabled"],D=r(()=>e("p",{class:"text-center text-dark"},[e("small",null,"還沒有收到驗證碼嗎?聯絡小幫手")],-1)),P=r(()=>e("div",{class:"d-flex justify-content-center"},[e("a",{href:"https://line.me/R/ti/p/%40guv7422g",target:"_blank",title:"LINE 客服",class:"rounded-circle bg-light text-dark me-4"},[e("img",{class:"img-fluid",width:"30",src:v,alt:"line-logo"})]),e("a",{href:"https://m.me/hexschool",target:"_blank",title:"Facebook 客服",class:"rounded-circle bg-light text-dark"},[e("img",{class:"img-fluid",width:"30",src:y,alt:"fb-logo"})])],-1)),j={__name:"LoginVerify",setup(i){const{apiPutLoginVerify:u,apiGetLoginTeachable:p}=E,m=x(),a=I({verify_code:""});S(()=>{const t=localStorage.getItem("d_RTfznkkwslIopaqd_account");t?a.account=decodeURIComponent(t):m.push("/login")});const g=({name:t,value:o,expires:s})=>{document.cookie=`${t}=${o};${$()};${s?`expires=${s}`:""}`},f=async()=>{localStorage.removeItem("d_RTfznkkwslIopaqd_account");const t=localStorage.getItem("h_redirect"),o=localStorage.getItem("t_redirectType"),s=localStorage.getItem("t_redirectRoute");if(t)localStorage.removeItem("h_redirect"),window.location.assign(t);else if(o&&s){const c={redirectType:"user"};o==="teachable"&&(c.redirectType=o,c.route=s),localStorage.removeItem("t_redirectType"),localStorage.removeItem("t_redirectRoute");const n=new URLSearchParams(c).toString(),l=await p(n);window.location.href=l.redirect_url}else m.push("/user")},h=C(async()=>{const{access_token:t,expiration:o}=await u(a);g({name:"h_MqhC49RxFRI6pR3Z_token",value:t,expires:new Date(o*1e3)}),F.toastMessage("success","","驗證成功"),f()});return(t,o)=>{const s=d("VField"),c=d("ErrorMessage"),n=d("VForm");return w(),V(n,{ref:"form",onSubmit:T(h)},{default:R(({errors:l})=>[N,z,e("div",A,[B,e("div",null,[_(s,{id:"validation",modelValue:a.verify_code,"onUpdate:modelValue":o[0]||(o[0]=b=>a.verify_code=b),modelModifiers:{trim:!0},name:"verify_code",label:"驗證碼",type:"text",class:M(["form-control",{"is-invalid":l.verify_code}]),rules:"required|digits:6","aria-label":"驗證碼","aria-describedby":"button-addon2"},null,8,["modelValue","class"]),_(c,{name:"verify_code",class:"invalid-feedback"})])]),e("button",{type:"submit",class:"btn btn-primary w-100 mb-3",disabled:!a.verify_code}," 驗證帳號 ",8,U),D,P]),_:1},8,["onSubmit"])}}},Z=k(j,[["__scopeId","data-v-332b6c64"]]);export{Z as default};
diff --git a/assets/Modal-BlhncX8m.js b/assets/Modal-BlhncX8m.js
new file mode 100644
index 0000000..ab03856
--- /dev/null
+++ b/assets/Modal-BlhncX8m.js
@@ -0,0 +1 @@
+import{r as n,c as l,d as s,e,D as o,t as c,E as r,i as m,n as y}from"./index-oEzATel6.js";const b={class:"modal-content"},u={id:"exampleModalLabel",class:"modal-title"},h=e("button",{type:"button",class:"btn-close","data-bs-dismiss":"modal","aria-label":"Close"},null,-1),f={key:0,class:"modal-footer"},S=e("button",{type:"button",class:"btn btn-dark","data-bs-dismiss":"modal"}," 完成 ",-1),_=[S],B={__name:"Modal",props:{title:{type:String,default:""},hasFooter:{type:Boolean,default:!0},size:{type:String,default:""},headerStyle:{type:Object,default:()=>({})},bodyStyle:{type:Object,default:()=>({})}},setup(t,{expose:d}){const a=n();return d({myBsModal:a}),(i,p)=>(l(),s("div",{ref_key:"myBsModal",ref:a,class:"modal fade",tabindex:"-1","aria-labelledby":"exampleModalLabel","aria-hidden":"true"},[e("div",{class:y(["modal-dialog modal-dialog-scrollable",{["modal-"+t.size]:t.size}])},[e("div",b,[e("div",{class:"modal-header",style:o(t.headerStyle)},[e("h5",u,c(t.title),1),h],4),e("div",{class:"modal-body",style:o(t.bodyStyle)},[r(i.$slots,"body")],4),t.hasFooter?(l(),s("div",f,_)):m("",!0)])],2)],512))}};export{B as _};
diff --git a/assets/MyTask-hCSFHgvm.js b/assets/MyTask-hCSFHgvm.js
new file mode 100644
index 0000000..a787189
--- /dev/null
+++ b/assets/MyTask-hCSFHgvm.js
@@ -0,0 +1 @@
+import{_ as q,r as p,o as D,N as Q,O as W,b as j,c as v,d as g,e as s,f,t as k,F as X,B as Y,n as S,k as E,x as Z,h as z,i as F,s as y,D as ss,g as es,J as ts,K as as}from"./index-oEzATel6.js";import{t as os,_ as ns,a as ls}from"./Search-U_AcBwya.js";import{a as cs}from"./tasks-apEZWA-x.js";import{g as is}from"./date-nwmI78ea.js";import{T as ds}from"./TaskListItem-HM8-GfPM.js";const _=b=>(ts("data-v-de0f86b4"),b=b(),as(),b),us={class:"container mt-5 mt-md-9"},rs={class:"row"},ps={class:"col-md-4"},vs={class:"col-md-8"},_s=_(()=>s("h4",null,"統計數據",-1)),ms={class:"mb-9"},hs={class:"list-unstyled d-flex"},gs={class:"data-box border rounded-1 d-flex align-items-center justify-content-center me-2"},fs={class:"text-center"},ks=_(()=>s("p",{class:"mb-1"},"完成任務數",-1)),ys={class:"fs-2 mb-0 fw-bold mb-0"},bs={class:"data-box border rounded-1 d-flex align-items-center justify-content-center me-2"},xs={class:"text-center"},ws=_(()=>s("p",{class:"mb-1"},"任務總積分",-1)),Cs={class:"fs-2 mb-0 fw-bold mb-0"},Ts=_(()=>s("h4",null,"任務最新狀態",-1)),Ls={class:"table-responsive tableFixHead"},$s={key:0,class:"table"},Ms=_(()=>s("thead",null,[s("tr",{class:"text-nowrap"},[s("th",{scope:"col",class:"fw-normal bg-white"},"任務名稱"),s("th",{scope:"col",class:"fw-normal bg-white"},"任務狀態"),s("th",{scope:"col",class:"fw-normal bg-white"},"更新時間"),s("th",{scope:"col",class:"fw-normal bg-white"},"查看任務")])],-1)),Bs={class:"table-light"},Ds={scope:"row"},Ss=_(()=>s("span",{style:{"font-size":"18px"},class:"material-symbols-outlined align-middle"},"open_in_new",-1)),Es={key:1,class:"text-center"},zs={class:"mt-9"},Gs=_(()=>s("div",{class:"d-flex flex-wrap justify-content-between"},[s("h4",null,"我的任務列表")],-1)),Hs={class:"my-task-nav nav nav-tabs"},Is={class:"nav-item"},js={class:"nav-item"},Fs={class:"nav-item"},Ns={class:"position-relative",style:{"min-height":"300px"}},Ps={class:"pt-4"},As={key:1,class:"list-unstyled pt-4"},Vs={key:2,class:"d-flex justify-content-center mt-8"},Js=_(()=>s("p",{class:"badge bg-light fs-6 fw-normal rounded-pill py-1 px-3 text-dark lh-base"}," 尚無任務 ",-1)),Ks=[Js],Os={__name:"MyTask",setup(b){const{apiGetMyTask:N,apiGetMyTaskBoard:P,apiGetCompletedTask:G,apiGetExpiredTask:A}=cs,m=os(),c=p([]),r=p({current:1,count:10,next:11}),w=p(0),C=p(0),T=p(!1),L=p([]),V=async()=>{var t,o,n,l;T.value=!0;try{const{tasks:a}=await P();L.value=a}catch(a){y.toastMessage("danger","info",`${(o=(t=a==null?void 0:a.response)==null?void 0:t.data)==null?void 0:o.statusCode}:${(l=(n=a==null?void 0:a.response)==null?void 0:n.data)==null?void 0:l.message}`)}T.value=!1};D(()=>{V(),m.groups&&m.groups.length===0&&m.tags&&m.tags.length===0&&m.getGroupsAndTags()});const J=t=>{switch(t){case"等待再次提交":return{backgroundColor:"#3D5950"};case"等待助教回覆":return{backgroundColor:"#798B86"};case"助教已回覆":return{backgroundColor:"#00251A"};case"已審核完成":return{backgroundColor:"#3D5950"};default:return{backgroundColor:"#3D5950"}}},u=p("my"),$=t=>{u.value=t},i=p(!1),H=p(null),x=async(t=1,o=10)=>{var n,l,a,d;i.value=!0;try{const{tasks:e,pagination:h}=await N(t,o,H.value);t>1?c.value=[...c.value,...e]:c.value=e,r.value=h}catch(e){y.toastMessage("danger","info",`${(l=(n=e==null?void 0:e.response)==null?void 0:n.data)==null?void 0:l.statusCode}:${(d=(a=e==null?void 0:e.response)==null?void 0:a.data)==null?void 0:d.message}`)}i.value=!1},K=async(t=1,o=10)=>{var n,l,a,d;i.value=!0;try{const{task_completed_count:e,task_rewarded_point:h}=await G(t,o);w.value=e,C.value=h}catch(e){y.toastMessage("danger","info",`${(l=(n=e==null?void 0:e.response)==null?void 0:n.data)==null?void 0:l.statusCode}:${(d=(a=e==null?void 0:e.response)==null?void 0:a.data)==null?void 0:d.message}`)}i.value=!1},M=async(t=1,o=10)=>{var n,l,a,d;i.value=!0;try{const{tasks:e,pagination:h,task_completed_count:R,task_rewarded_point:U}=await G(t,o);w.value=R,C.value=U,t>1?c.value=[...c.value,...e]:c.value=e,r.value=h}catch(e){y.toastMessage("danger","info",`${(l=(n=e==null?void 0:e.response)==null?void 0:n.data)==null?void 0:l.statusCode}:${(d=(a=e==null?void 0:e.response)==null?void 0:a.data)==null?void 0:d.message}`)}i.value=!1},B=async(t=1,o=10)=>{var n,l,a,d;i.value=!0;try{const{tasks:e,pagination:h}=await A(t,o);t>1?c.value=[...c.value,...e]:c.value=e,r.value=h}catch(e){y.toastMessage("danger","info",`${(l=(n=e==null?void 0:e.response)==null?void 0:n.data)==null?void 0:l.statusCode}:${(d=(a=e==null?void 0:e.response)==null?void 0:a.data)==null?void 0:d.message}`)}i.value=!1},O=t=>{H.value=t,x(1,10)},I=()=>{const t=document.documentElement;if(t.clientHeight+t.scrollTop>=t.scrollHeight&&t.clientHeight+t.scrollTop{window.addEventListener("scroll",I)}),Q(()=>{window.removeEventListener("scroll",I)}),D(()=>{u.value==="my"?(x(),K()):u.value==="completed"?M():B()}),W(u,t=>{c.value=[],t==="my"?x():t==="completed"?M():B()}),(t,o)=>{const n=j("Loading"),l=j("router-link");return v(),g("div",us,[s("div",rs,[s("div",ps,[f(ls)]),s("div",vs,[_s,s("div",ms,[s("ul",hs,[s("li",gs,[s("div",fs,[ks,s("p",ys,k(w.value),1)])]),s("li",bs,[s("div",xs,[ws,s("p",Cs,k(C.value),1)])])])]),Ts,s("div",null,[f(n,{"is-full-page":!1,active:T.value,"z-index":1060},null,8,["active"]),s("div",Ls,[L.value.length>0?(v(),g("table",$s,[Ms,s("tbody",Bs,[(v(!0),g(X,null,Y(L.value,a=>(v(),g("tr",{class:"text-nowrap position-relative",key:a.id},[s("td",Ds,k(a.name),1),s("td",null,[s("span",{class:"badge rounded-pill py-1 px-3 fw-normal lh-base",style:ss([{"font-size":"14px"},J(a.status)])},k(a.status),5)]),s("td",null,k(z(is)(a.updated_at)),1),s("td",null,[f(l,{to:`/tasks/${a.id}`,class:"stretched-link"},{default:es(()=>[Ss]),_:2},1032,["to"])])]))),128))])])):(v(),g("p",Es,"目前沒有新的任務狀態"))])]),s("div",zs,[Gs,s("ul",Hs,[s("li",Is,[s("a",{class:S(["nav-link",u.value==="my"&&"active"]),href:"#",onClick:o[0]||(o[0]=E(a=>$("my"),["prevent"]))},"我的任務",2)]),s("li",js,[s("a",{class:S(["nav-link",u.value==="completed"&&"active"]),href:"#",onClick:o[1]||(o[1]=E(a=>$("completed"),["prevent"]))},"已完成的任務",2)]),s("li",Fs,[s("a",{class:S(["nav-link",u.value==="expired"&&"active"]),href:"#",onClick:o[2]||(o[2]=E(a=>$("expired"),["prevent"]))},"已過期的任務",2)])]),s("div",Ns,[f(n,{"is-full-page":!1,active:i.value,"z-index":1060},null,8,["active"]),s("div",Ps,[u.value==="my"?(v(),Z(ns,{key:0,tags:z(m).tags,groups:z(m).groups,onSearch:O},null,8,["tags","groups"])):F("",!0),c.value.length>0?(v(),g("ul",As,[f(ds,{type:"task","task-list":c.value},null,8,["task-list"])])):i.value?F("",!0):(v(),g("div",Vs,Ks))])])])])])])}}},Xs=q(Os,[["__scopeId","data-v-de0f86b4"]]);export{Xs as default};
diff --git a/assets/MyTask-keK_CtKq.css b/assets/MyTask-keK_CtKq.css
new file mode 100644
index 0000000..61c54ac
--- /dev/null
+++ b/assets/MyTask-keK_CtKq.css
@@ -0,0 +1 @@
+#training-content.open .taskList__top[data-v-de0f86b4]{max-width:96px}.tableFixHead[data-v-de0f86b4]{overflow:auto;max-height:340px}.tableFixHead[data-v-de0f86b4]::-webkit-scrollbar{width:3px;height:3px}.tableFixHead[data-v-de0f86b4]::-webkit-scrollbar-track{background:#f1f1f1}.tableFixHead[data-v-de0f86b4]::-webkit-scrollbar-thumb{background:#888}.tableFixHead[data-v-de0f86b4]::-webkit-scrollbar-thumb:hover{background:#555}.tableFixHead thead th[data-v-de0f86b4]{position:sticky;top:0;z-index:1}.taskTag[data-v-de0f86b4]{top:8px;right:-4px}.taskTag p[data-v-de0f86b4]{padding-right:48px}.data-box[data-v-de0f86b4]{width:156px;height:148px}.my-task-nav .nav-link.active[data-v-de0f86b4]{background-color:transparent;color:#000;border-color:var(--bs-gray-300);border-bottom:1px solid white}
diff --git a/assets/MyTraining-JjWPB7sO.js b/assets/MyTraining-JjWPB7sO.js
new file mode 100644
index 0000000..d6e1ee4
--- /dev/null
+++ b/assets/MyTraining-JjWPB7sO.js
@@ -0,0 +1 @@
+import{P as _}from"./vue-pagination-2.min-qBdw8uTW.js";import{r as g,o as p,b as m,c as n,d as o,F as h,B as b,f as l,h as f,i as v,e,q as y,t as k,g as w,l as x,C as M}from"./index-oEzATel6.js";const V={class:"container mt-5"},T=e("h2",{class:"text-primary fs-4 fw-bold mb-3"},"我的直播班列表",-1),D={key:0,class:"list-unstyled row"},L={class:"card"},N=["src","alt"],B={class:"card-body h-100"},C={class:"card-title fw-bold mb-3"},P=e("span",{class:"material-symbols-outlined align-middle"},"arrow_forward",-1),z={key:1,class:"text-center bg-light py-3"},F=e("p",{class:"mb-0"},"目前沒有註冊直播班課程",-1),I=[F],O={key:2,class:"d-flex justify-content-center mb-4"},j={__name:"MyTraining",setup(Q){const{apiGetTraining:d}=M,t=g({trainingClasses:[],pagination:{count:10,current_page:1,total:24,total_page:3}}),c=y(async(s=1)=>{const{training_classes:i,pagination:r}=await d(s);t.value.trainingClasses=i,t.value.pagination=r}),u=s=>{c(s),window.scroll({top:0,behavior:"smooth"})};return p(c),(s,i)=>{const r=m("RouterLink");return n(),o("div",V,[T,t.value.pagination.total>0?(n(),o("ul",D,[(n(!0),o(h,null,b(t.value.trainingClasses,a=>(n(),o("li",{key:a.id,class:"col-md-4 mb-6","data-test-id":"training-card"},[e("div",L,[e("img",{src:a.cover_url?a.cover_url:"https://images.hexschool.io/common/MzI3MDI0MzU1ODc3ODQ3MDQwMA==_2023-12-21T08:26:33Z.png",class:"card-img-top rounded mb-3",alt:a.title},null,8,N),e("div",B,[e("h5",C,k(a.name),1),l(r,{class:"stretched-link",to:`/training/${a.id}`},{default:w(()=>[x(" 進入直播班 "),P]),_:2},1032,["to"])])])]))),128))])):(n(),o("div",z,I)),t.value.pagination.total>0?(n(),o("div",O,[l(f(_),{modelValue:t.value.pagination.current_page,"onUpdate:modelValue":i[0]||(i[0]=a=>t.value.pagination.current_page=a),records:t.value.pagination.total,"per-page":10,options:{chunk:6,chunksNavigation:"scroll",hideCount:!0,theme:"bootstrap4"},onPaginate:u},null,8,["modelValue","records"])])):v("",!0)])}}};export{j as default};
diff --git a/assets/OldRegisterVerify-RSB1egXb.css b/assets/OldRegisterVerify-RSB1egXb.css
new file mode 100644
index 0000000..a14f211
--- /dev/null
+++ b/assets/OldRegisterVerify-RSB1egXb.css
@@ -0,0 +1 @@
+.rounded-circle[data-v-fdbabd6a]{width:56px;height:56px;display:flex;align-items:center;justify-content:center;text-align:center;text-decoration:none}
diff --git a/assets/OldRegisterVerify-_-mqETil.js b/assets/OldRegisterVerify-_-mqETil.js
new file mode 100644
index 0000000..c1fcec2
--- /dev/null
+++ b/assets/OldRegisterVerify-_-mqETil.js
@@ -0,0 +1 @@
+import{_ as p,a as g}from"./fb-R3zjQfrO.js";import{_ as v,u as h,A as y,b as r,c as V,x,g as k,h as I,e,f as i,n as m,q as S,J as w,K as E,m as R}from"./index-oEzATel6.js";const a=s=>(w("data-v-fdbabd6a"),s=s(),E(),s),F=a(()=>e("h1",{class:"h2 mb-3"}," 原有帳號註冊驗證 ",-1)),q=a(()=>e("p",{class:"mb-4 text-dark"}," 請填寫註冊的 Email 信箱並收取驗證信,在下方輸入驗證碼 ",-1)),M={class:"mb-4"},B=a(()=>e("label",{for:"validation",class:"form-label"},"Email",-1)),C={class:"input-group"},N={class:"mb-4"},z=a(()=>e("label",{for:"validation",class:"form-label"},"驗證碼",-1)),A={class:"input-group"},O=["disabled"],U=a(()=>e("p",{class:"text-center text-dark"},[e("small",null,"還沒有收到驗證碼嗎?聯絡小幫手")],-1)),j=a(()=>e("div",{class:"d-flex justify-content-center"},[e("a",{href:"https://line.me/R/ti/p/%40guv7422g",target:"_blank",title:"LINE 客服",class:"rounded-circle bg-light text-dark me-4"},[e("img",{class:"img-fluid",width:"30",src:p,alt:"line-logo"})]),e("a",{href:"https://m.me/hexschool",target:"_blank",title:"Facebook 客服",class:"rounded-circle bg-light text-dark"},[e("img",{class:"img-fluid",width:"30",src:g,alt:"fb-logo"})])],-1)),J={__name:"OldRegisterVerify",setup(s){const{apiPutRegisterVerify:_}=R,u=h(),t=y({account:"",verify_code:""}),f=S(async()=>{await _(t),localStorage.removeItem("d_RTfznkkwslIopaqd_account"),sessionStorage.setItem("registerStatus","true"),u.push("/")});return(K,o)=>{const d=r("VField"),c=r("ErrorMessage"),b=r("VForm");return V(),x(b,{ref:"form",onSubmit:I(f)},{default:k(({errors:n})=>[F,q,e("div",M,[B,e("div",C,[i(d,{id:"validation",modelValue:t.account,"onUpdate:modelValue":o[0]||(o[0]=l=>t.account=l),modelModifiers:{trim:!0},name:"account",type:"text",label:"Email",class:m(["form-control",{"is-invalid":n.account}]),rules:"required|email","aria-label":"Email","aria-describedby":"button-addon2"},null,8,["modelValue","class"]),i(c,{name:"account",class:"invalid-feedback"})])]),e("div",N,[z,e("div",A,[i(d,{id:"validation",modelValue:t.verify_code,"onUpdate:modelValue":o[1]||(o[1]=l=>t.verify_code=l),modelModifiers:{trim:!0},name:"verify_code",type:"text",label:"驗證碼",class:m(["form-control",{"is-invalid":n.verify_code}]),rules:"required|digits:6","aria-label":"驗證碼","aria-describedby":"button-addon2"},null,8,["modelValue","class"]),i(c,{name:"verify_code",class:"invalid-feedback"})])]),e("button",{type:"submit",class:"btn btn-primary w-100 mb-3",disabled:!t.verify_code}," 驗證帳號 ",8,O),U,j]),_:1},8,["onSubmit"])}}},T=v(J,[["__scopeId","data-v-fdbabd6a"]]);export{T as default};
diff --git a/assets/PolicyModal-86Z1G9y9.js b/assets/PolicyModal-86Z1G9y9.js
new file mode 100644
index 0000000..06cda60
--- /dev/null
+++ b/assets/PolicyModal-86Z1G9y9.js
@@ -0,0 +1 @@
+import{_ as A}from"./Modal-BlhncX8m.js";import{r as o,o as r,c as M,x as c,L as x,g as s,e as l,l as n,M as m}from"./index-oEzATel6.js";const I="data:image/png;base64,UklGRpIHAABXRUJQVlA4TIUHAAAvj8FjEE+gqI0UaHRwgwie+HeFDYFAEsv+jitq24gJhhsE5u/4w6uZtm3Mn1P7lcW4LICp3k/rnCcMOJBfhcZR0LaNFPOHvXsZRMQERBVsjKZlWvIHFVpU0c62t21k4SQSuHTYAiYVEAvYoAImcDuAO6CnAlrTgGRvvZIYAc3VeZ6I/k8AXdt269YVPjHJvdiEOlaR1bGz3KG0O7T548QCNs6jiej/BIDgf57nff99+O2cc3w4HD/6zz+wul/nDv2rfOwv6yled+g/5Y9PWkOvE/qG/HFZOfHc9W2Pn7Re4oS+Nfe0TuKEvj33tEJO6CX5sjZeu172iGsibtAr97QaXtCL82UdxA16/X4N+K4pHlG9BzRJvih300R7zeKmqZ5Irdg1WU9KOTRdjyo5NGFGhRyaMqM6Dk2aURmHps2oikMTZ1TEoakzquHQ5JmUiKHpe1IhhhboSQPTEk8KHFrkKN5DyzwL56iDUbQYWqgnyUxLPQl2aLFnsVyrZRQqUI7zJNNNCz6J9NCSrUCBmpjkMS06iPPQss/CBOpiksW08CDK0tKtIIHaPMlxaPGjGK7loxRWnxdiKYFWhBgMeJLgUApHAQIcMLV3KIljc6EsMrW20eCGxlyJxLaMidCUK5XYknERGnIlE9sxNkIzrnRiKxsfQyOhhFIbByNDEwFGmFo4lNKxgQAn3MBSUm19gxVf3VJasTbjJVQWSizVdTAz1jWY4aqWUmtrMm5CRaHkUj0HO2M9gx1fjSu9WMvGz1AL+GGqYynBtg5jKFQRYMhRDUspNjUYR6GCAEeOyi0l2ZQzlkKxAEuOSi2l2ZQynkKhAE9MZZYSbctsTA1lwBQXcaUaSxxcDSUGV75AKNmUb7Fl821shXxgi7O50o255sWeHmPftDC57GK7Tex3LUIu8MWZXPlymGcyZvIYYyEPGOMsrow5zDE5MzmMs5ADnHEGV84cpi3WTNrG2pA2WPNJoawxpThtDlMmbybFeAspgzdOCOXNUZwzZ+MmcybOmAtxgzkfB+aYYlyZcxizuDMxG3djjHEXYsAdR4Ry52jJ2cOlxZ5Z+sHesGTshaXBnl8Ce7wQyp7DOefPzk3+zNzG3zBn/IW5wZ+fA388E8qfo4l3ACerA3YyO2AmWweGiXUgfC1GB/wEHWAACb3w02P0Nur+MeNb1PNj/LsEjkD8SrtNza9xm/g3ERBkfS5YkNkDA7L1YACxz4UAMnrgvxLoAYNoDxxEF8i7gH1YXbB9mF0wffjRhf+2LgzXurmOjru6ziifXSpxF/XdFRYpfD6MLvivAd2v+HchUJLI/H1OuyDp/76gC/x9bnTBf12xLoTPh60LQx9+dOG/2QXTh9UF2wfvAvYhukDSBRD0gEFGD/xXwnoQQLbPhQFk9sCArB5YEP9cQJDoAYEIOsAAIqMDfmIdCF+LrQPDZHbATFYH7MQ7gJPoAE0E/DHMjoTutfFzlsReszC3JXSlzTA3k/gWtdHGzK2M3pXBOU/iLu5NGZqTJJ7jXnRhWBwJfdfFL1kOXdyVLmHpyMHFbd5U+W9pJrGN+66KXfIkdnFX70WeH+Pf28OlSGIft/lRZhP/1h4tCXK4S7h614Mh0nJ4Ttjc6xFijhxcyuZBjSFmJrFN2Tz8UsLGeBL7pM3m+jHyTTCMCeRwlyH6VS6G6JFDp5SPsxzcTqcQN5P4ppOJW0l0OmFcJOF2KlGcIIk7jTwkWhLdVqGQMpNwe4VMimfRKYQpgSTcXh9KkZFFt9XGQ/KWhbvVZkibabidMjbN8+i2umCaIA33vNWEIaPl4Z63ioQcMxHXbfUwOTwT192ogTkEmTjX3ejAkNVyca57urmOTriOf28p5JnZ6GjyOGOYR8AXQ2bjK+SafJlczhfmErDFkN3YGvIttmy+YIvyyeDKQ8GDq7GEc4UlBEwxFN2YGsospmyZAE9MZcR4ClB48mRLBU1MpcRYClB8smTLBUlM5cQ4ClDh5MjWEGCIqQYxhgJUuRiydQT4Yah042eoxfnBWmSw46Hag52xnmCH6hHjJkDFixtbk4AZD1UfzIx1BTNUlxgvASp3XmxtMljxUP1ixdYX4ISpPjk4GaHBACNMLcjGyAhNBiPUhmx8DNCo84GtiLERoFlnA9sR4yJAw84FtiTGRICmnQlsSzYeBmg8QAO1JgcLIzQf4ICpPTk4GEHAGAx4kkAWAxZkHPUFENJRHkohR3UjiBmjNiY5ZNVmQVKrLICogbqYZJFHXWeQ1qoKIG6gJiZ5ZNV0BolvFQUQOUY9DEI7ykGp5FHNCHLfagkgeIxKmCQTRx2MIPujjjNIf1Qxgvy3GgIoGKMCDyrGyM+TDhLIjhG0dOTGCHo6MmMETR15MYKujqwYQVtHToygryMjRtDYRz6MoHOMbDyB1nHL5USg+JnJCXR/IQs+g/a+5+ARVuCZwQnW4QtX4wusxTivdSJYkb5fxyOszBeuwT2szzjxftwTrNI48V7cE6zWeO7vc/yElfu64x24v8AKjucd/4Y/LgSr+XXu+Dt87C+wuv88z/v++/B7wofD8aP//AOCAwA=",G=l("p",null," 同學您好,使用本網站, 即表示您同意所有服務條款,並願意受到所有條款所約束。 ",-1),h=l("ol",null,[l("li",null,[n(" 同意條款 "),l("p",null," 當您「註冊」或相似字詞,或使用本網站, 即表示您同意遵守具法律效力的協議。本「條款」包含用戶協議及服務條款,且本網站可能會不時修訂內容。 如果不同意本「條款」,也請勿進入或以任何方式使用 本網站 的「網站」。 已註冊的用戶以下稱「 會員」;未註冊的用戶以下稱「訪客」。以上兩種用戶都受到本協議的約束。 ")]),l("li",null,[n(" 服務義務 "),l("p",null," 本網站 提供錄製影片教學之服務提供者, 本公司的產品和服務包括:所有網站上之課程、課程之相關教材以及對於使用者之即時資訊回饋。本公司保留隨時更改相關條款之權利,使用者必須定期造訪本平台以確保了解 本網站 最新之相關使用條款。 "),l("p",null,"同時本公司保有隨時調整、下架產品或服務內容之權利。"),l("ol",null,[l("li",null,[n(" 「服務」適用性 "),l("p",null,"當您造訪「本網站」,且使用「服務」即表示您同意:"),l("p",null," 您將只擁有一個 本網站 帳戶。並使用您的真實姓名最新及完整的資料。 維持並更新使用者之個人資料,確保其為正確、最新及完整。若使用者提供任何錯誤、不實或不完整的資料,本網站 有權暫停或終止使用者帳號,並拒絕使用者使用全部或部分服務。 ")]),l("li",null,[n(" 守法及承諾 "),l("ol",null,[l("li",null,[n(" 遵守以下事項 "),l("p",null," 您承諾絕不為任何非法目的或以任何非法方式使用本服務。並承諾遵守中華民國相關法規及一切使用網際網路之國際慣例。您若係中華民國以外之使用者,並同意遵守所屬國家或地域之法令。 "),l("p",null," 您同意並保證不得利用本服務從事侵害他人權益或違法之行為,包括但不限於: "),l("p",null,[n(" 上載或傳送任何違反公共秩序或善良風俗或其他不法之任何形式的檔案於本服務上。"),l("br"),n(" 侵害他人名譽、隱私權、營業秘密、商標權、著作權、專利權、其他智慧財產權及其他權利。"),l("br"),n(" 違反依法律或契約所應負之保密義務。"),l("br"),n(" 冒用他人名義使用本服務。"),l("br"),n(" 上載、張貼、傳輸或散佈任何含有電腦病毒或任何對電腦軟、硬體產生中斷、破壞或限制功能之程式碼之資料。"),l("br"),n(" 從事不法交易行為或張貼虛假不實、引人犯罪之訊息。"),l("br"),n(" 濫發廣告訊息、垃圾訊息、連鎖信、違法之多層次傳銷訊息等。"),l("br"),n(" 偽造訊息來源或以任何方式干擾傳輸來源之認定。"),l("br"),n(" 干擾或中斷本服務或伺服器或連結本服務之網路,或不遵守連結至本服務之相關需求、程序、政策或規則等,包括但不限於:使用任何設備、軟體或刻意規避 本網站 之排除自動搜尋之標頭。"),l("br"),n(" 追蹤他人或其他干擾他人或為前述目前蒐集或儲存他人之個人資訊。"),l("br"),n(" 其他 本網站 有正當理由認為不適當之行為。 ")])])])]),l("li",null,[n(" 所有權及智慧財產權 "),l("ol",null,[l("li",null,[n(" 產權歸屬 "),l("p",null," 本網站 網站內所有內容,包括但不限於文字、軟體、聲音、圖片、影片、圖表、網站架構、網站畫面的安排、網頁設計、各項教育課程內容均由 本網站 或其他權利人依法擁有其智慧財產權,包括但不限於著作權、商標權、專利權等等。 "),l("p",null," 非經 本網站 或其他權利人書面同意,不得擅自使用、修改、複製、傳播、變更、散佈、發行或發表相關內容。如有違反,本網站 有權利在發現上述情況下,終⽌帳號服務,並針對其⾏為所造成之損害與侵權,提出法律訴訟並要求賠償。 "),l("p",null," 且任何資料一經使用者上載、傳送、輸入 或進入 本網站時,即表示使用者同意: "),l("p",null,[n(" 由 本網站 及其關係企業儲存或管理該資料,並由 本網站 及其關係企業之搜尋工具進行索引及抓取,並公開刊登、使用於 本網站 及其關係企業的相關系統網路上,包括但不限於 本網站 所聯盟或合作的第三人網站上;"),l("br"),n(" 授權 本網站 及其關係企業可以基於公益或為宣傳、推廣或經營 本網站 及本服務之目的,進行使用、修改、重製、公開播送、改作、散布、發行、公開發表、公開傳輸、公開上映、翻譯該等資料,並得在此範圍內將前述權利轉授權他人。"),l("br"),n(" 使用者並保證 本網站 及其關係企業使用、修改、重製、公開播送、改作、散布、發行、公開發表、公開傳輸、公開上映、翻譯、轉授權該等資料,不致侵害任何第三人之智慧財產權,否則應對 本網站 及其關係企業負損害賠償責任。 ")])])])])])]),l("li",null,[n(" 廣告聲明 "),l("p",null," 使用者在本服務中瀏覽到的所有廣告內容、文字與圖片之說明、展示樣品或其他銷售資訊,均由各該廣告商、產品與服務的供應商所設計與提出。 "),l("p",null," 使用者在本服務中瀏覽到的所有廣告內容、文字與圖片之說明、展示樣品或其他銷售資訊,均由各該廣告商、產品與服務的供應商所設計與提出。 "),l("ol",null,[l("li",null,[n(" 爭端調解 "),l("p",null," 在少數情況下,我們需要採取法律途徑解決爭端,使用中華民國法律解決爭端,雙方同意將於高雄地方法院,使用中華民國法律解決爭端。 ")]),l("li",null,[n(" 內容相關的投訴 "),l("p",null," 我們尊重他人之智慧財產權。會員可透過電子信箱來對 本網站 發表的數位內容提出申訴。 ")])])])],-1),Q={__name:"PolicyModal",props:{status:{type:String,default:"user"}},setup(a,{expose:t}){const p=a,e=o(""),i=o(null),u=o(null);return r(()=>{u.value=new m(i.value.myBsModal,{keyboard:!1})}),t({showModal:()=>{u.value.show()},hideModal:()=>{u.value.hide()},modalTitle:e}),(j,C)=>(M(),c(A,{ref_key:"myModal",ref:i,title:e.value,hasFooter:!1},x({_:2},[p.status==="user"?{name:"body",fn:s(()=>[G,h]),key:"0"}:{name:"body",fn:s(()=>[l("p",null," 六角學院-程式勇者村網站(以下簡稱本網站),為了讓您能夠安心使用本網站的各項服務與資訊,特此向您說明本網站的隱私權保護政策,以保障您的權益,請您詳閱下列內容: "),l("h5",null,"一、隱私權保護政策的適用範圍"),l("p",null," 隱私權保護政策內容,包括本網站如何處理在您使用網站服務時收集到的個人識別資料。隱私權保護政策不適用於本網站以外的相關連結網站,也不適用於非本網站所委託或參與管理的人員。 "),l("h5",null,"二、個人資料的蒐集、處理及利用方式"),l("ul",null,[l("li",null," 當您造訪本網站或使用本網站所提供之功能服務時,我們將視該服務功能性質,請您提供必要的個人資料,並在該特定目的範圍內處理及利用您的個人資料;非經您書面同意,本網站不會將個人資料用於其他用途。 "),l("li",null," 本網站在您使用服務信箱、問卷調查等互動性功能時,會保留您所提供的姓名、電子郵件地址、聯絡方式及使用時間等。 "),l("li",null," 於一般瀏覽時,伺服器會自行記錄相關行徑,包括您使用連線設備的IP位址、使用時間、使用的瀏覽器、瀏覽及點選資料記錄等,做為我們增進網站服務的參考依據,此記錄為內部應用,決不對外公佈。 "),l("li",null," 為提供精確的服務,我們會將收集的問卷調查內容進行統計與分析,分析結果之統計數據或說明文字呈現,除供內部研究外,我們會視需要公佈統計數據及說明文字,但不涉及特定個人之資料。 ")]),l("h5",null,"三、資料之保護"),l("ul",null,[l("li",null," 只由經過授權的人員才能接觸您的個人資料,如因業務需要有必要委託其他單位提供服務時,本網站亦會嚴格要求其遵守保密義務,並且採取必要檢查程序以確定其將確實遵守。 ")]),l("h5",null,"四、網站對外的相關連結"),l("p",null," 本網站的網頁提供其他網站的網路連結,您也可經由本網站所提供的連結,點選進入其他網站。但該連結網站不適用本網站的隱私權保護政策,您必須參考該連結網站中的隱私權保護政策。 "),l("h5",null,"五、與第三人共用個人資料之政策"),l("p",null," 本網站絕不會提供、交換、出租或出售任何您的個人資料給其他個人、團體、私人企業或公務機關,但有法律依據或合約義務者,不在此限。 "),l("p",null,"前項但書之情形包括不限於:"),l("ul",null,[l("li",null,"經由您書面同意。"),l("li",null,"法律明文規定。"),l("li",null,"為免除您生命、身體、自由或財產上之危險。"),l("li",null," 與公務機關或學術研究機構合作,基於公共利益為統計或學術研究而有必要,且資料經過提供者處理或蒐集著依其揭露方式無從識別特定之當事人。 "),l("li",null," 當您在網站的行為,違反服務條款或可能損害或妨礙網站與其他使用者權益或導致任何人遭受損害時,經網站管理單位研析揭露您的個人資料是為了辨識、聯絡或採取法律行動所必要者。 "),l("li",null,"有利於您的權益。"),l("li",null," 本網站委託廠商協助蒐集、處理或利用您的個人資料時,將對委外廠商或個人善盡監督管理之責。 ")]),l("h5",null,"六、Cookie之使用"),l("p",null," 為了提供您最佳的服務,本網站會在您的電腦中放置並取用我們的Cookie,若您不願接受Cookie的寫入,您可在您使用的瀏覽器功能項中設定隱私權等級為高,即可拒絕Cookie的寫入,但可能會導至網站某些功能無法正常執行 。 "),l("h5",null,"七、隱私權保護政策之修正"),l("p",null," 本網站隱私權保護政策將因應需求隨時進行修正,修正後的條款將刊登於網站上。 ")]),key:"1"}]),1032,["title"]))}};export{Q as _,I as a};
diff --git a/assets/Register-OBKBNsye.js b/assets/Register-OBKBNsye.js
new file mode 100644
index 0000000..bd7c436
--- /dev/null
+++ b/assets/Register-OBKBNsye.js
@@ -0,0 +1 @@
+import{u as M,a as C,r as u,A as S,o as V,b,c as F,d as P,f as d,g,h as m,F as q,j as k,e as t,l as o,k as h,q as v,s as z,m as B}from"./index-oEzATel6.js";import{_ as G,a as I}from"./PolicyModal-86Z1G9y9.js";import"./Modal-BlhncX8m.js";const L={class:"mb-4 d-flex align-items-baseline"},N=t("h1",{class:"h2 me-auto"},"註冊",-1),$={class:"text-dark"},j=t("img",{class:"img-fluid me-1",width:"30",src:I,alt:"teachable-logo"},null,-1),A={class:"text-dark fw-normal"},K={__name:"Register",setup(U){const{apiPostRegister:w,apiGetLoginTeachable:y}=B,R=M(),T=C(),i=u(""),l=S({account:"",nickname:"",password:""}),x=v(async()=>{await w(l),localStorage.setItem("d_RTfznkkwslIopaqd_account",encodeURIComponent(l.account)),z.toastMessage("success","","註冊成功"),R.push("/register/verify")}),_=u(""),r=u(null),p=s=>{_.value=s,s==="user"?r.value.modalTitle="使用者條款":r.value.modalTitle="隱私權政策",r.value.showModal()},f=v(async()=>{const{redirectType:s,route:e}=T.query,a={redirectType:"user"};s==="teachable"&&(a.redirectType=s,a.route=e);const c=new URLSearchParams(a).toString(),n=await y(c);window.location.href=n.redirect_url});return V(()=>{i.value=k("RPG_RTfznkkws_login_bind_type"),i.value&&i.value==="bind_teachable"&&(l.account=k("RPG_RTfznkkws_login_bind_mail"))}),(s,e)=>{const a=b("router-link"),c=b("VForm");return F(),P(q,null,[d(c,{ref:"form",onSubmit:m(x)},{default:g(()=>[t("div",L,[N,t("p",$,[o(" 已經有帳號了嗎? "),d(a,{to:"/",class:"fw-bold"},{default:g(()=>[o(" 登入 ")]),_:1})])]),t("button",{type:"button",class:"btn btn-outline-primary w-100 d-flex align-items-center justify-content-center mb-5",onClick:e[0]||(e[0]=(...n)=>m(f)&&m(f)(...n))},[j,o(" 使用 Teachable 帳號註冊 ")]),t("h6",A,[o(" 若點擊「註冊」按鈕,即表示你已經閱讀並接受我們的"),t("a",{href:"#",class:"text-dark",onClick:e[1]||(e[1]=h(n=>p("user"),["prevent"]))},"使用者條款"),o("和"),t("a",{href:"#",class:"text-dark",onClick:e[2]||(e[2]=h(n=>p("private"),["prevent"]))},"隱私權政策"),o("。 ")])]),_:1},8,["onSubmit"]),d(G,{ref_key:"policyModalRef",ref:r,status:_.value},null,8,["status"])],64)}}};export{K as default};
diff --git a/assets/RegisterVerify-FYB6rwNZ.css b/assets/RegisterVerify-FYB6rwNZ.css
new file mode 100644
index 0000000..e3f3da2
--- /dev/null
+++ b/assets/RegisterVerify-FYB6rwNZ.css
@@ -0,0 +1 @@
+.rounded-circle[data-v-d2fb9524]{width:56px;height:56px;display:flex;align-items:center;justify-content:center;text-align:center;text-decoration:none}
diff --git a/assets/RegisterVerify-Im32qUn7.js b/assets/RegisterVerify-Im32qUn7.js
new file mode 100644
index 0000000..3f5c257
--- /dev/null
+++ b/assets/RegisterVerify-Im32qUn7.js
@@ -0,0 +1 @@
+import{_ as C,a as q}from"./fb-R3zjQfrO.js";import{_ as z,u as M,A as g,r as E,z as F,o as B,b as r,c as l,x as T,g as N,h as c,e,f as b,n as v,d as y,t as U,q as h,s as A,J as D,K as P,m as j}from"./index-oEzATel6.js";const a=i=>(D("data-v-d2fb9524"),i=i(),P(),i),J=a(()=>e("h1",{class:"h2 mb-3"}," 註冊成功 ",-1)),K=a(()=>e("p",{class:"mb-4 text-dark"}," 請至方才註冊的 Email 信箱收取驗證信, 可點擊驗證連結登入,或在下方輸入驗證碼 ",-1)),L={class:"mb-4"},G=a(()=>e("label",{for:"validation",class:"form-label"},"驗證碼",-1)),H={class:"input-group"},O={key:0,style:{color:"inherit"}},Q={key:1,style:{color:"inherit"}},W=["disabled"],X=a(()=>e("p",{class:"text-center text-dark"},[e("small",null,"還沒有收到驗證碼嗎?聯絡小幫手")],-1)),Y=a(()=>e("div",{class:"d-flex justify-content-center"},[e("a",{href:"https://line.me/R/ti/p/%40guv7422g",target:"_blank",title:"LINE 客服",class:"rounded-circle bg-light text-dark me-4"},[e("img",{class:"img-fluid",width:"30",src:C,alt:"line-logo"})]),e("a",{href:"https://m.me/hexschool",target:"_blank",title:"Facebook 客服",class:"rounded-circle bg-light text-dark"},[e("img",{class:"img-fluid",width:"30",src:q,alt:"fb-logo"})])],-1)),Z={__name:"RegisterVerify",setup(i){const{apiPutRegisterVerify:k,apiPostRegisterVerify:w}=j,d=M(),u=g({}),s=g({verify_code:""}),o=E(0),_=F(()=>o.value===0),m=f=>{o.value=f;const t=window.setInterval(()=>{o.value-=1,o.value===0&&window.clearInterval(t)},1e3)};B(()=>{u.account=decodeURIComponent(localStorage.getItem("d_RTfznkkwslIopaqd_account")),s.account=decodeURIComponent(localStorage.getItem("d_RTfznkkwslIopaqd_account")),localStorage.getItem("d_RTfznkkwslIopaqd_account")?m(60):d.push("/register")});const I=h(async()=>{await k(s),localStorage.removeItem("d_RTfznkkwslIopaqd_account"),sessionStorage.setItem("registerStatus","true"),d.push("/")}),p=h(async()=>{await w(u),A.toastMessage("success","","成功發送驗證信件"),m(60)});return(f,t)=>{const V=r("VField"),x=r("ErrorMessage"),S=r("VForm");return l(),T(S,{ref:"form",onSubmit:c(I)},{default:N(({errors:R})=>[J,K,e("div",L,[G,e("div",H,[b(V,{id:"validation",modelValue:s.verify_code,"onUpdate:modelValue":t[0]||(t[0]=n=>s.verify_code=n),modelModifiers:{trim:!0},name:"verify_code",type:"text",label:"驗證碼",class:v(["form-control",{"is-invalid":R.verify_code}]),rules:"required|digits:6","aria-label":"驗證碼","aria-describedby":"button-addon2"},null,8,["modelValue","class"]),e("button",{id:"button-addon2",class:v(["btn btn-outline-primary fw-normal",{disabled:!_.value}]),type:"button",onClick:t[1]||(t[1]=(...n)=>c(p)&&c(p)(...n))},[_.value?(l(),y("span",O," 重新發送 ")):(l(),y("span",Q,U(o.value)+" 秒後重新發送 ",1))],2),b(x,{name:"verify_code",class:"invalid-feedback"})])]),e("button",{type:"submit",class:"btn btn-primary w-100 mb-3",disabled:!s.verify_code}," 驗證帳號 ",8,W),X,Y]),_:1},8,["onSubmit"])}}},se=z(Z,[["__scopeId","data-v-d2fb9524"]]);export{se as default};
diff --git a/assets/ResetPwd-cfy9-9ge.js b/assets/ResetPwd-cfy9-9ge.js
new file mode 100644
index 0000000..c9382f5
--- /dev/null
+++ b/assets/ResetPwd-cfy9-9ge.js
@@ -0,0 +1 @@
+import{r as x,z as y,A as k,b as o,c as n,x as g,g as r,h as M,e,f as l,n as d,d as u,t as B,l as E,q as F,s as S,m as C}from"./index-oEzATel6.js";const N=e("h1",{class:"h2 mb-3"}," 重設密碼 ",-1),P=e("p",{class:"mb-4 text-dark"}," 請輸入要重設密碼的 Email 帳號,收取重設密碼的驗證信件 ",-1),q={class:"mb-4"},z=e("label",{for:"validation",class:"form-label"},"輸入要重設密碼的帳號",-1),A={class:"input-group"},D={key:0,class:"text-white"},I={key:1,class:"text-white"},R=e("span",{class:"material-symbols-outlined"},"arrow_back",-1),j={__name:"ResetPwd",setup(T){const{apiPostResetPwdVerify:m}=C,t=x(0),_=i=>{t.value=i;const s=window.setInterval(()=>{t.value-=1,t.value===0&&window.clearInterval(s)},1e3)},c=y(()=>t.value===0),a=k({account:""}),p=F(async()=>{await m(a),S.toastMessage("success","","已重新發送,請去信箱內收信"),_(60)});return(i,s)=>{const b=o("VField"),f=o("ErrorMessage"),v=o("router-link"),w=o("VForm");return n(),g(w,{ref:"form",onSubmit:M(p)},{default:r(({errors:h})=>[N,P,e("div",q,[z,e("div",A,[l(b,{id:"validation",modelValue:a.account,"onUpdate:modelValue":s[0]||(s[0]=V=>a.account=V),modelModifiers:{trim:!0},name:"account",label:"帳號",type:"email",class:d(["form-control",{"is-invalid":h.account}]),rules:"required|email","aria-label":"帳號","aria-describedby":"button-addon2"},null,8,["modelValue","class"]),e("button",{id:"button-addon2",class:d(["btn btn-primary fw-normal",{disabled:!a.account||c.value===!1}]),type:"submit"},[c.value?(n(),u("span",D," 發送 ")):(n(),u("span",I,B(t.value)+" 秒後重新發送 ",1))],2),l(f,{name:"account",class:"invalid-feedback"})])]),l(v,{to:"/",class:"text-decoration-none d-flex align-items-start fw-bold"},{default:r(()=>[R,E(" 回登入頁 ")]),_:1})]),_:1},8,["onSubmit"])}}};export{j as default};
diff --git a/assets/ResetPwdSuccess-f_94f5QU.js b/assets/ResetPwdSuccess-f_94f5QU.js
new file mode 100644
index 0000000..db7140d
--- /dev/null
+++ b/assets/ResetPwdSuccess-f_94f5QU.js
@@ -0,0 +1 @@
+import{a as h,u as v,A as V,o as g,b as r,c as y,x as k,g as x,h as M,e as s,f as a,n as u,q as R,s as S,m as q}from"./index-oEzATel6.js";const A=s("h1",{class:"h2 mb-4"}," 重設密碼 ",-1),C={class:"mb-4"},F={class:"mb-3"},P=s("label",{for:"account",class:"form-label"},"帳號(Email)",-1),z=["value"],B={class:"mb-3"},E=s("label",{for:"password",class:"form-label"},"新密碼",-1),U={class:"mb-4"},I=s("label",{for:"confirmation",class:"form-label"},"確認新密碼",-1),N=["disabled"],j={__name:"ResetPwdSuccess",setup(Z){const{apiPostResetPwd:_}=q,p=h(),l=v(),e=V({account:"",password:"",confirm_password:""});let d="";g(()=>{const{token:t,email:o}=p.query;t?(d=t,e.account=decodeURIComponent(o)):l.push("/password/reset")});const w=R(async()=>{await _(d,e),sessionStorage.setItem("resetStatus","true"),S.toastMessage("success","","重設密碼成功"),l.push("/")});return(t,o)=>{const c=r("VField"),i=r("ErrorMessage"),f=r("VForm");return y(),k(f,{ref:"form",onSubmit:M(w)},{default:x(({errors:m,meta:b})=>[A,s("div",C,[s("div",F,[P,s("input",{id:"account",type:"email",class:"form-control",value:e.account,disabled:"",readonly:""},null,8,z)]),s("div",B,[E,a(c,{id:"password",modelValue:e.password,"onUpdate:modelValue":o[0]||(o[0]=n=>e.password=n),modelModifiers:{trim:!0},name:"new_password",label:"新密碼",type:"password",class:u(["form-control",{"is-invalid":m.new_password}]),rules:{required:!0,regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,16}$/}},null,8,["modelValue","class","rules"]),a(i,{name:"new_password",class:"invalid-feedback"})]),s("div",U,[I,a(c,{id:"confirmation",modelValue:e.confirm_password,"onUpdate:modelValue":o[1]||(o[1]=n=>e.confirm_password=n),name:"confirm_new_password",type:"password",label:"確認新密碼",class:u(["form-control",{"is-invalid":m.confirm_new_password}]),rules:"required|confirmed:@new_password"},null,8,["modelValue","class"]),a(i,{name:"confirm_new_password",class:"invalid-feedback"})]),s("button",{type:"submit",class:"btn btn-primary w-100",disabled:!b.valid}," 重設密碼 ",8,N)])]),_:1},8,["onSubmit"])}}};export{j as default};
diff --git a/assets/Search-U_AcBwya.js b/assets/Search-U_AcBwya.js
new file mode 100644
index 0000000..976f42f
--- /dev/null
+++ b/assets/Search-U_AcBwya.js
@@ -0,0 +1 @@
+import{b as y,c as r,d as n,F as g,B as v,f as w,g as x,t as p,e as t,l as b,n as T,V as $,s as S,r as V,z as _,O as f,w as m,W as k,T as B}from"./index-oEzATel6.js";import{a as L}from"./tasks-apEZWA-x.js";const C={class:"list-group mb-3"},D={class:"material-symbols-outlined p-1 pe-2 text-primary"},q={__name:"TaskSidebar",setup(i){const u=[{id:1,name:"我的任務",en:"myTasks",path:"/tasks/my",icon:"import_contacts"},{id:0,name:"全任務列表",en:"allTasksList",path:"/tasks",icon:"folder"}];return(d,c)=>{const e=y("RouterLink");return r(),n("div",C,[(r(),n(g,null,v(u,l=>w(e,{key:l.en,to:l.path,class:T(["list-group-item list-group-item-action border-0 rounded-1 d-flex align-items-center",{active:d.$route.path===l.path}])},{default:x(()=>[t("span",D,p(l.icon),1),b(" "+p(l.name),1)]),_:2},1032,["to","class"])),64))])}}},{apiGetTasksFilter:M}=L,H=$("taskStore",{state:()=>({groups:[],tags:[]}),actions:{async getGroupsAndTags(){var i,u,d,c;try{const{filters:e}=await M();this.groups=e.task_groups,this.tags=e.tags}catch(e){S.toastMessage("danger","",`${(u=(i=e==null?void 0:e.response)==null?void 0:i.data)==null?void 0:u.statusCode}:${(c=(d=e==null?void 0:e.response)==null?void 0:d.data)==null?void 0:c.message}`)}}}}),z={class:"row g-2"},A={class:"col-md-4"},F=t("option",{value:"all"},"全部分類",-1),N=["value"],U={class:"col-md-4"},G=t("option",{value:"all"},"全部課程",-1),O=["value"],R={class:"col-md-4"},E={class:"d-flex align-items-center"},P=["disabled"],I={__name:"Search",props:{groups:{type:Array,default:()=>[]},tags:{type:Array,default:()=>[]}},emits:["search"],setup(i,{emit:u}){const d=u,c=i,e=V({group:"all",tag:"all",keyword:""}),l=_(()=>e.value.tag==="all"?c.groups:c.groups.filter(s=>s.tags.some(o=>o.id===e.value.tag)));f(()=>e.value.tag,()=>{e.value.group="all",e.value.keyword=""});const h=_(()=>{let s="";return e.value.tag!=="all"&&(s+=`task_tag_id=${e.value.tag}&`),e.value.group!=="all"&&(s+=`filter=task_group_id&value=${e.value.group}`),e.value.keyword!==""&&(s+=`&keyword=${e.value.keyword}`),s===""?null:s});return f(()=>e.value,()=>{d("search",h.value)},{deep:!0}),(s,o)=>(r(),n("div",z,[t("div",A,[m(t("select",{"onUpdate:modelValue":o[0]||(o[0]=a=>e.value.tag=a),class:"form-select","aria-label":"Default select example"},[F,(r(!0),n(g,null,v(i.tags,a=>(r(),n("option",{value:a.id,key:a.id},p(a.name),9,N))),128))],512),[[k,e.value.tag]])]),t("div",U,[m(t("select",{"onUpdate:modelValue":o[1]||(o[1]=a=>e.value.group=a),class:"form-select","aria-label":"Default select example"},[G,(r(!0),n(g,null,v(l.value,a=>(r(),n("option",{value:a.id,key:a.id},p(a.name),9,O))),128))],512),[[k,e.value.group]])]),t("div",R,[t("div",E,[m(t("input",{class:"form-control",type:"text",placeholder:"輸入任務名稱搜尋","onUpdate:modelValue":o[2]||(o[2]=a=>e.value.keyword=a),disabled:e.value.group==="all"},null,8,P),[[B,e.value.keyword,void 0,{lazy:!0}]])])])]))}};export{I as _,q as a,H as t};
diff --git a/assets/SendEmail-cOSPNlxI.js b/assets/SendEmail-cOSPNlxI.js
new file mode 100644
index 0000000..616246c
--- /dev/null
+++ b/assets/SendEmail-cOSPNlxI.js
@@ -0,0 +1 @@
+import{A as d,b as a,c as u,x as _,g as p,h as b,e,f as t,n as f,q as V,m as h,s as g}from"./index-oEzATel6.js";const x=e("h1",{class:"h2 mb-3"}," 補寄驗證信 ",-1),y=e("p",{class:"mb-4 text-dark"}," 請輸入註冊的 Email 信箱收取驗證信 ",-1),E={class:"mb-3"},v=e("label",{for:"account",class:"form-label"},"帳號(Email)",-1),M=["disabled"],w={__name:"SendEmail",setup(k){const s=d({account:""}),n=V(async()=>{await h.apiPostRegisterVerify(s),g.toastMessage("success","","成功發送驗證信件")});return(C,o)=>{const c=a("VField"),l=a("ErrorMessage"),i=a("VForm");return u(),_(i,{onSubmit:b(n)},{default:p(({errors:r})=>[x,y,e("div",E,[v,t(c,{id:"account",modelValue:s.account,"onUpdate:modelValue":o[0]||(o[0]=m=>s.account=m),modelModifiers:{trim:!0},name:"account",label:"帳號(Email)",type:"email",class:f(["form-control",{"is-invalid":r.account}]),rules:"required|email"},null,8,["modelValue","class"]),t(l,{name:"account",class:"invalid-feedback"})]),e("button",{type:"submit",class:"btn btn-primary w-100 mb-3",disabled:!s.account}," 驗證帳號 ",8,M)]),_:1},8,["onSubmit"])}}};export{w as default};
diff --git a/assets/TaskDescriptionModal-OeZgI2fR.css b/assets/TaskDescriptionModal-OeZgI2fR.css
new file mode 100644
index 0000000..4784406
--- /dev/null
+++ b/assets/TaskDescriptionModal-OeZgI2fR.css
@@ -0,0 +1 @@
+img{max-width:100%;height:auto}
diff --git a/assets/TaskDescriptionModal-g9Af6nRf.js b/assets/TaskDescriptionModal-g9Af6nRf.js
new file mode 100644
index 0000000..754e73a
--- /dev/null
+++ b/assets/TaskDescriptionModal-g9Af6nRf.js
@@ -0,0 +1 @@
+import{_ as u}from"./Modal-BlhncX8m.js";import{r as i,o as m,c as t,x as f,g,e as o,d as e,B as p,n as x,F as n,t as c,h as k,M as b}from"./index-oEzATel6.js";import{g as v}from"./date-nwmI78ea.js";const w={class:"d-flex flex-column gap-2"},y={class:"card-body"},M={class:"d-flex"},D={class:"flex-shrink-0"},B=["src"],F={key:1,src:"https://static.104.com.tw/b_profile/cust_picture/0781/130000000190781/logo.png?v=20220705144710",class:"rounded-circle border",alt:"預設頭貼",style:{width:"48px",height:"48px"}},T=["src"],L={key:1,src:"https://static.104.com.tw/b_profile/cust_picture/0781/130000000190781/logo.png?v=20220705144710",class:"rounded-circle border",alt:"預設頭貼",style:{width:"48px",height:"48px"}},S={class:"flex-grow-1 ms-3",style:{width:"calc(100% - 52px)"}},z={key:0,class:"h6 fw-bold mb-0"},A={key:1,class:"h6 fw-bold mb-0"},C={class:"fw-bold mb-4"},E={class:"text-gentle_green me-2"},H=["innerHTML"],K={__name:"TaskDescriptionModal",props:{replyData:{type:Array,default(){return[]}}},setup(r,{expose:_}){const l=i(""),d=i(null),a=i(null);return m(()=>{a.value=new b(d.value.myBsModal,{keyboard:!1})}),_({showModal:()=>{a.value.show()},hideModal:()=>{a.value.hide()},modalTitle:l}),(j,q)=>(t(),f(u,{ref_key:"myModal",ref:d,title:l.value,hasFooter:!1,size:"lg",headerStyle:{background:"#DADEDD",padding:"12px 24px"},bodyStyle:{background:"#F5F5F5",padding:"32px 55px"}},{body:g(()=>[o("div",w,[(t(!0),e(n,null,p(r.replyData,(s,h)=>(t(),e("div",{class:x(["card rounded-3 p-3",[s!=null&&s.assistant_info?"bg-soft_green":"border"]]),key:h},[o("div",y,[o("div",M,[o("div",D,[s.assistant_info?(t(),e(n,{key:0},[s.assistant_info.icon_url?(t(),e("img",{key:0,class:"rounded-circle",style:{width:"48px",height:"48px"},src:s.assistant_info.icon_url,alt:"頭貼"},null,8,B)):(t(),e("img",F))],64)):(t(),e(n,{key:1},[s.avatar?(t(),e("img",{key:0,class:"rounded-circle",style:{width:"48px",height:"48px"},src:s.avatar,alt:"頭貼"},null,8,T)):(t(),e("img",L))],64))]),o("div",S,[s.assistant_info?(t(),e("h5",z,c(s.assistant_info.title),1)):(t(),e("h5",A,c(s.nickname),1)),o("p",C,[o("small",E,c(k(v)(s.updated_at)),1)]),o("div",{innerHTML:s.content},null,8,H)])])])],2))),128))])]),_:1},8,["title"]))}};export{K as _};
diff --git a/assets/TaskDetail-NghHLBDQ.css b/assets/TaskDetail-NghHLBDQ.css
new file mode 100644
index 0000000..4207e64
--- /dev/null
+++ b/assets/TaskDetail-NghHLBDQ.css
@@ -0,0 +1 @@
+.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"•"}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li *{pointer-events:all}.ql-editor ul[data-checked=true]>li:before,.ql-editor ul[data-checked=false]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"☑"}.ql-editor ul[data-checked=false]>li:before{content:"☐"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:"";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px;margin-left:1px;margin-right:1px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover{background-color:#f3f4f6}.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{background-color:#dbeafe;color:#2563eb}.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#2563eb}.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#2563eb}@media (pointer: coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#4b5563}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#4b5563}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#4b5563}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#4b5563;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#4b5563;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#4b5563}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#4b5563;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle;margin-right:1px;margin-left:1px}.ql-snow .ql-picker-label{cursor:pointer;display:flex;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding:5px 8px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#d1d5db;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#d1d5db}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#d1d5db}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:3px}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px;margin:2px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #d1d5db;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#d1d5db}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0px}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #d1d5db;box-shadow:0 0 5px #d1d5db;color:#4b5563;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #d1d5db;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #d1d5db;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0px;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#2563eb}.ql-container.ql-snow{border:1px solid #d1d5db}.image-uploading{position:relative;display:inline-block}.image-uploading img{max-width:98%!important;filter:blur(5px);opacity:.3}.image-uploading:before{content:"";box-sizing:border-box;position:absolute;top:50%;left:50%;width:30px;height:30px;margin-top:-15px;margin-left:-15px;border-radius:50%;border:3px solid #ccc;border-top-color:#1e986c;z-index:1;animation:spinner .6s linear infinite}@keyframes spinner{to{transform:rotate(360deg)}}[data-v-23618638] .ql-editor p{font-size:16px}.tasks-detail[data-v-d8566ca2]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#fff0,#fff)}.tasks-content p[data-v-d8566ca2]{margin-bottom:0rem}[data-v-d8566ca2] .tasks-content img{display:block;max-width:100%}[data-v-d8566ca2] .content pre{border-left:3px solid #2A8356;background-color:#23241f;color:#f8f8f2;overflow:visible;white-space:pre-wrap;padding:5px 10px}[data-v-d8566ca2] .content p{margin-bottom:0}[data-v-d8566ca2] .ql-editor{height:500px}
diff --git a/assets/TaskDetail-wowAlHVx.js b/assets/TaskDetail-wowAlHVx.js
new file mode 100644
index 0000000..85175f2
--- /dev/null
+++ b/assets/TaskDetail-wowAlHVx.js
@@ -0,0 +1,61 @@
+import{a0 as jr,a1 as Dr,a2 as Cr,a3 as Br,$ as xt,r as Ot,o as He,c as st,x as Ue,g as ir,t as _t,e as J,M as Fr,a4 as mr,j as br,Q as _r,H as Ur,a5 as $r,O as Fe,a6 as fr,a7 as Hr,h as Ee,s as Ce,_ as Or,b as cn,f as ne,n as Kt,F as Ft,l as Be,d as ft,i as Et,B as ee,k as hn,J as Er,K as wr,a as zr,X as Kr,z as je,D as tr,q as Vr,a8 as Gr}from"./index-oEzATel6.js";import{_ as Wr}from"./Modal-BlhncX8m.js";import{_ as Zr}from"./TaskDescriptionModal-g9Af6nRf.js";import{a as Yr}from"./tasks-apEZWA-x.js";import{a as cr,g as hr}from"./date-nwmI78ea.js";var Qr={exports:{}};/*!
+ * Bootstrap tab.js v5.3.2 (https://getbootstrap.com/)
+ * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */(function(L,C){(function(y,d){L.exports=d(jr(),Dr(),Cr(),Br())})(xt,function(y,d,f,E){const b="tab",g=".bs.tab",m=`hide${g}`,v=`hidden${g}`,o=`show${g}`,e=`shown${g}`,r=`click${g}`,c=`keydown${g}`,l=`load${g}`,s="ArrowLeft",i="ArrowRight",n="ArrowUp",a="ArrowDown",t="Home",h="End",N="active",k="fade",T="show",P="dropdown",A=".dropdown-toggle",p=".dropdown-menu",O=`:not(${A})`,S='.list-group, .nav, [role="tablist"]',q=".nav-item, .list-group-item",D=`.nav-link${O}, .list-group-item${O}, [role="tab"]${O}`,H='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',G=`${D}, ${H}`,et=`.${N}[data-bs-toggle="tab"], .${N}[data-bs-toggle="pill"], .${N}[data-bs-toggle="list"]`;class $ extends y{constructor(w){super(w),this._parent=this._element.closest(S),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),d.on(this._element,c,R=>this._keydown(R)))}static get NAME(){return b}show(){const w=this._element;if(this._elemIsActive(w))return;const R=this._getActiveElem(),M=R?d.trigger(R,m,{relatedTarget:w}):null;d.trigger(w,o,{relatedTarget:R}).defaultPrevented||M&&M.defaultPrevented||(this._deactivate(R,w),this._activate(w,R))}_activate(w,R){if(!w)return;w.classList.add(N),this._activate(f.getElementFromSelector(w));const M=()=>{if(w.getAttribute("role")!=="tab"){w.classList.add(T);return}w.removeAttribute("tabindex"),w.setAttribute("aria-selected",!0),this._toggleDropDown(w,!0),d.trigger(w,e,{relatedTarget:R})};this._queueCallback(M,w,w.classList.contains(k))}_deactivate(w,R){if(!w)return;w.classList.remove(N),w.blur(),this._deactivate(f.getElementFromSelector(w));const M=()=>{if(w.getAttribute("role")!=="tab"){w.classList.remove(T);return}w.setAttribute("aria-selected",!1),w.setAttribute("tabindex","-1"),this._toggleDropDown(w,!1),d.trigger(w,v,{relatedTarget:R})};this._queueCallback(M,w,w.classList.contains(k))}_keydown(w){if(![s,i,n,a,t,h].includes(w.key))return;w.stopPropagation(),w.preventDefault();const R=this._getChildren().filter(z=>!E.isDisabled(z));let M;if([t,h].includes(w.key))M=R[w.key===t?0:R.length-1];else{const z=[i,a].includes(w.key);M=E.getNextActiveElement(R,w.target,z,!0)}M&&(M.focus({preventScroll:!0}),$.getOrCreateInstance(M).show())}_getChildren(){return f.find(G,this._parent)}_getActiveElem(){return this._getChildren().find(w=>this._elemIsActive(w))||null}_setInitialAttributes(w,R){this._setAttributeIfNotExists(w,"role","tablist");for(const M of R)this._setInitialAttributesOnChild(M)}_setInitialAttributesOnChild(w){w=this._getInnerElement(w);const R=this._elemIsActive(w),M=this._getOuterElement(w);w.setAttribute("aria-selected",R),M!==w&&this._setAttributeIfNotExists(M,"role","presentation"),R||w.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(w,"role","tab"),this._setInitialAttributesOnTargetPanel(w)}_setInitialAttributesOnTargetPanel(w){const R=f.getElementFromSelector(w);R&&(this._setAttributeIfNotExists(R,"role","tabpanel"),w.id&&this._setAttributeIfNotExists(R,"aria-labelledby",`${w.id}`))}_toggleDropDown(w,R){const M=this._getOuterElement(w);if(!M.classList.contains(P))return;const z=(F,I)=>{const U=f.findOne(F,M);U&&U.classList.toggle(I,R)};z(A,N),z(p,T),M.setAttribute("aria-expanded",R)}_setAttributeIfNotExists(w,R,M){w.hasAttribute(R)||w.setAttribute(R,M)}_elemIsActive(w){return w.classList.contains(N)}_getInnerElement(w){return w.matches(G)?w:f.findOne(G,w)}_getOuterElement(w){return w.closest(q)||w}static jQueryInterface(w){return this.each(function(){const R=$.getOrCreateInstance(this);if(typeof w=="string"){if(R[w]===void 0||w.startsWith("_")||w==="constructor")throw new TypeError(`No method named "${w}"`);R[w]()}})}}return d.on(document,r,H,function(j){["A","AREA"].includes(this.tagName)&&j.preventDefault(),!E.isDisabled(this)&&$.getOrCreateInstance(this).show()}),d.on(window,l,()=>{for(const j of f.find(et))$.getOrCreateInstance(j)}),E.defineJQueryPlugin($),$})})(Qr);const Xr={class:"fw-bold mb-1"},Jr={class:"mb-3"},ti=J("p",{class:"text-danger"},"請注意!放棄後移除目前的任務紀錄",-1),ei={class:"text-end"},ni={__name:"TaskAbortModal",props:{taskData:{type:Object,default:()=>({})}},emits:["deleteTask"],setup(L,{expose:C,emit:y}){const d=y,f=Ot(null),E=Ot(null);He(()=>{E.value=new Fr(f.value.myBsModal,{keyboard:!1})});const _=()=>{E.value.show()},g=()=>{E.value.hide()};return C({showModal:_,hideModal:g}),(m,v)=>(st(),Ue(Wr,{ref_key:"myModal",ref:f,title:"是否放棄此任務?",hasFooter:!1},{body:ir(()=>[J("h5",Xr,_t(L.taskData.taskName),1),J("h6",Jr,_t(L.taskData.taskGroupName),1),ti,J("div",ei,[J("button",{type:"button",class:"btn btn-danger me-2",onClick:g},"取消"),J("button",{type:"button",class:"btn btn-primary",onClick:v[0]||(v[0]=o=>d("deleteTask"))},"放棄任務")])]),_:1},512))}},or=mr.create({baseURL:"https://dev-hexsystem-qa.hexschool.io",withCredentials:!0,xsrfHeaderName:"xsrf-token",xsrfCookieName:"xsrf-token",withXSRFToken:!0,headers:{Authorization:`Bearer ${br("h_MqhC49RxFRI6pR3Z_token")}`}}),ri=L=>{const{status:C}=L.response;switch(C){case 400:postMessage.toastMessage("warning","report_problem",L.response.data.message);break;default:postMessage.toastMessage("danger","info",L.response.data.message||"錯誤");break}return Promise.reject(L)};or.interceptors.request.use(L=>{const C={...L},y=br("h_MqhC49RxFRI6pR3Z_token");return y&&(C.headers.Authorization=`Bearer ${y}`),C},L=>Promise.reject(L));or.interceptors.response.use(L=>L.data,L=>ri(L));const ii=L=>or.get(`/v1/questions/upload-image-url/${L}`),oi={apiGetUploadImageUrl:ii};var Ar={exports:{}};/*!
+ * Quill Editor v1.3.7
+ * https://quilljs.com/
+ * Copyright (c) 2014, Jason Chen
+ * Copyright (c) 2013, salesforce.com
+ */(function(L,C){(function(d,f){L.exports=f()})(typeof self<"u"?self:xt,function(){return function(y){var d={};function f(E){if(d[E])return d[E].exports;var b=d[E]={i:E,l:!1,exports:{}};return y[E].call(b.exports,b,b.exports,f),b.l=!0,b.exports}return f.m=y,f.c=d,f.d=function(E,b,_){f.o(E,b)||Object.defineProperty(E,b,{configurable:!1,enumerable:!0,get:_})},f.n=function(E){var b=E&&E.__esModule?function(){return E.default}:function(){return E};return f.d(b,"a",b),b},f.o=function(E,b){return Object.prototype.hasOwnProperty.call(E,b)},f.p="",f(f.s=109)}([function(y,d,f){Object.defineProperty(d,"__esModule",{value:!0});var E=f(17),b=f(18),_=f(19),g=f(45),m=f(46),v=f(47),o=f(48),e=f(49),r=f(12),c=f(32),l=f(33),s=f(31),i=f(1),n={Scope:i.Scope,create:i.create,find:i.find,query:i.query,register:i.register,Container:E.default,Format:b.default,Leaf:_.default,Embed:o.default,Scroll:g.default,Block:v.default,Inline:m.default,Text:e.default,Attributor:{Attribute:r.default,Class:c.default,Style:l.default,Store:s.default}};d.default=n},function(y,d,f){var E=this&&this.__extends||function(){var s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var a in n)n.hasOwnProperty(a)&&(i[a]=n[a])};return function(i,n){s(i,n);function a(){this.constructor=i}i.prototype=n===null?Object.create(n):(a.prototype=n.prototype,new a)}}();Object.defineProperty(d,"__esModule",{value:!0});var b=function(s){E(i,s);function i(n){var a=this;return n="[Parchment] "+n,a=s.call(this,n)||this,a.message=n,a.name=a.constructor.name,a}return i}(Error);d.ParchmentError=b;var _={},g={},m={},v={};d.DATA_KEY="__blot";var o;(function(s){s[s.TYPE=3]="TYPE",s[s.LEVEL=12]="LEVEL",s[s.ATTRIBUTE=13]="ATTRIBUTE",s[s.BLOT=14]="BLOT",s[s.INLINE=7]="INLINE",s[s.BLOCK=11]="BLOCK",s[s.BLOCK_BLOT=10]="BLOCK_BLOT",s[s.INLINE_BLOT=6]="INLINE_BLOT",s[s.BLOCK_ATTRIBUTE=9]="BLOCK_ATTRIBUTE",s[s.INLINE_ATTRIBUTE=5]="INLINE_ATTRIBUTE",s[s.ANY=15]="ANY"})(o=d.Scope||(d.Scope={}));function e(s,i){var n=c(s);if(n==null)throw new b("Unable to create "+s+" blot");var a=n,t=s instanceof Node||s.nodeType===Node.TEXT_NODE?s:a.create(i);return new a(t,i)}d.create=e;function r(s,i){return i===void 0&&(i=!1),s==null?null:s[d.DATA_KEY]!=null?s[d.DATA_KEY].blot:i?r(s.parentNode,i):null}d.find=r;function c(s,i){i===void 0&&(i=o.ANY);var n;if(typeof s=="string")n=v[s]||_[s];else if(s instanceof Text||s.nodeType===Node.TEXT_NODE)n=v.text;else if(typeof s=="number")s&o.LEVEL&o.BLOCK?n=v.block:s&o.LEVEL&o.INLINE&&(n=v.inline);else if(s instanceof HTMLElement){var a=(s.getAttribute("class")||"").split(/\s+/);for(var t in a)if(n=g[a[t]],n)break;n=n||m[s.tagName]}return n==null?null:i&o.LEVEL&n.scope&&i&o.TYPE&n.scope?n:null}d.query=c;function l(){for(var s=[],i=0;i1)return s.map(function(t){return l(t)});var n=s[0];if(typeof n.blotName!="string"&&typeof n.attrName!="string")throw new b("Invalid definition");if(n.blotName==="abstract")throw new b("Cannot register abstract class");if(v[n.blotName||n.attrName]=n,typeof n.keyName=="string")_[n.keyName]=n;else if(n.className!=null&&(g[n.className]=n),n.tagName!=null){Array.isArray(n.tagName)?n.tagName=n.tagName.map(function(t){return t.toUpperCase()}):n.tagName=n.tagName.toUpperCase();var a=Array.isArray(n.tagName)?n.tagName:[n.tagName];a.forEach(function(t){(m[t]==null||n.className==null)&&(m[t]=n)})}return n}d.register=l},function(y,d,f){var E=f(51),b=f(11),_=f(3),g=f(20),m="\0",v=function(o){Array.isArray(o)?this.ops=o:o!=null&&Array.isArray(o.ops)?this.ops=o.ops:this.ops=[]};v.prototype.insert=function(o,e){var r={};return o.length===0?this:(r.insert=o,e!=null&&typeof e=="object"&&Object.keys(e).length>0&&(r.attributes=e),this.push(r))},v.prototype.delete=function(o){return o<=0?this:this.push({delete:o})},v.prototype.retain=function(o,e){if(o<=0)return this;var r={retain:o};return e!=null&&typeof e=="object"&&Object.keys(e).length>0&&(r.attributes=e),this.push(r)},v.prototype.push=function(o){var e=this.ops.length,r=this.ops[e-1];if(o=_(!0,{},o),typeof r=="object"){if(typeof o.delete=="number"&&typeof r.delete=="number")return this.ops[e-1]={delete:r.delete+o.delete},this;if(typeof r.delete=="number"&&o.insert!=null&&(e-=1,r=this.ops[e-1],typeof r!="object"))return this.ops.unshift(o),this;if(b(o.attributes,r.attributes)){if(typeof o.insert=="string"&&typeof r.insert=="string")return this.ops[e-1]={insert:r.insert+o.insert},typeof o.attributes=="object"&&(this.ops[e-1].attributes=o.attributes),this;if(typeof o.retain=="number"&&typeof r.retain=="number")return this.ops[e-1]={retain:r.retain+o.retain},typeof o.attributes=="object"&&(this.ops[e-1].attributes=o.attributes),this}}return e===this.ops.length?this.ops.push(o):this.ops.splice(e,0,o),this},v.prototype.chop=function(){var o=this.ops[this.ops.length-1];return o&&o.retain&&!o.attributes&&this.ops.pop(),this},v.prototype.filter=function(o){return this.ops.filter(o)},v.prototype.forEach=function(o){this.ops.forEach(o)},v.prototype.map=function(o){return this.ops.map(o)},v.prototype.partition=function(o){var e=[],r=[];return this.forEach(function(c){var l=o(c)?e:r;l.push(c)}),[e,r]},v.prototype.reduce=function(o,e){return this.ops.reduce(o,e)},v.prototype.changeLength=function(){return this.reduce(function(o,e){return e.insert?o+g.length(e):e.delete?o-e.delete:o},0)},v.prototype.length=function(){return this.reduce(function(o,e){return o+g.length(e)},0)},v.prototype.slice=function(o,e){o=o||0,typeof e!="number"&&(e=1/0);for(var r=[],c=g.iterator(this.ops),l=0;l0&&r.next(l.retain-s)}for(var i=new v(c);e.hasNext()||r.hasNext();)if(r.peekType()==="insert")i.push(r.next());else if(e.peekType()==="delete")i.push(e.next());else{var n=Math.min(e.peekLength(),r.peekLength()),a=e.next(n),t=r.next(n);if(typeof t.retain=="number"){var h={};typeof a.retain=="number"?h.retain=n:h.insert=a.insert;var N=g.attributes.compose(a.attributes,t.attributes,typeof a.retain=="number");if(N&&(h.attributes=N),i.push(h),!r.hasNext()&&b(i.ops[i.ops.length-1],h)){var k=new v(e.rest());return i.concat(k).chop()}}else typeof t.delete=="number"&&typeof a.retain=="number"&&i.push(t)}return i.chop()},v.prototype.concat=function(o){var e=new v(this.ops.slice());return o.ops.length>0&&(e.push(o.ops[0]),e.ops=e.ops.concat(o.ops.slice(1))),e},v.prototype.diff=function(o,e){if(this.ops===o.ops)return new v;var r=[this,o].map(function(n){return n.map(function(a){if(a.insert!=null)return typeof a.insert=="string"?a.insert:m;var t=n===o?"on":"with";throw new Error("diff() called "+t+" non-document")}).join("")}),c=new v,l=E(r[0],r[1],e),s=g.iterator(this.ops),i=g.iterator(o.ops);return l.forEach(function(n){for(var a=n[1].length;a>0;){var t=0;switch(n[0]){case E.INSERT:t=Math.min(i.peekLength(),a),c.push(i.next(t));break;case E.DELETE:t=Math.min(a,s.peekLength()),s.next(t),c.delete(t);break;case E.EQUAL:t=Math.min(s.peekLength(),i.peekLength(),a);var h=s.next(t),N=i.next(t);b(h.insert,N.insert)?c.retain(t,g.attributes.diff(h.attributes,N.attributes)):c.push(N).delete(t);break}a-=t}}),c.chop()},v.prototype.eachLine=function(o,e){e=e||`
+`;for(var r=g.iterator(this.ops),c=new v,l=0;r.hasNext();){if(r.peekType()!=="insert")return;var s=r.peek(),i=g.length(s)-r.peekLength(),n=typeof s.insert=="string"?s.insert.indexOf(e,i)-i:-1;if(n<0)c.push(r.next());else if(n>0)c.push(r.next(n));else{if(o(c,r.next(1).attributes||{},l)===!1)return;l+=1,c=new v}}c.length()>0&&o(c,{},l)},v.prototype.transform=function(o,e){if(e=!!e,typeof o=="number")return this.transformPosition(o,e);for(var r=g.iterator(this.ops),c=g.iterator(o.ops),l=new v;r.hasNext()||c.hasNext();)if(r.peekType()==="insert"&&(e||c.peekType()!=="insert"))l.retain(g.length(r.next()));else if(c.peekType()==="insert")l.push(c.next());else{var s=Math.min(r.peekLength(),c.peekLength()),i=r.next(s),n=c.next(s);if(i.delete)continue;n.delete?l.push(n):l.retain(s,g.attributes.transform(i.attributes,n.attributes,e))}return l.chop()},v.prototype.transformPosition=function(o,e){e=!!e;for(var r=g.iterator(this.ops),c=0;r.hasNext()&&c<=o;){var l=r.peekLength(),s=r.peekType();if(r.next(),s==="delete"){o-=Math.min(l,o-c);continue}else s==="insert"&&(c"u"||f.call(r,s)},v=function(r,c){b&&c.name==="__proto__"?b(r,c.name,{enumerable:!0,configurable:!0,value:c.newValue,writable:!0}):r[c.name]=c.newValue},o=function(r,c){if(c==="__proto__")if(f.call(r,c)){if(_)return _(r,c).value}else return;return r[c]};y.exports=function e(){var r,c,l,s,i,n,a=arguments[0],t=1,h=arguments.length,N=!1;for(typeof a=="boolean"&&(N=a,a=arguments[1]||{},t=2),(a==null||typeof a!="object"&&typeof a!="function")&&(a={});t0&&(q1&&arguments[1]!==void 0?arguments[1]:!1;if(D&&(q===0||q>=this.length()-k)){var H=this.clone();return q===0?(this.parent.insertBefore(H,this),this):(this.parent.insertBefore(H,this.next),H)}else{var G=b(O.prototype.__proto__||Object.getPrototypeOf(O.prototype),"split",this).call(this,q,D);return this.cache={},G}}}]),O}(e.default.Block);P.blotName="block",P.tagName="P",P.defaultChild="break",P.allowedChildren=[s.default,e.default.Embed,n.default];function A(p){var O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return p==null||(typeof p.formats=="function"&&(O=(0,g.default)(O,p.formats())),p.parent==null||p.parent.blotName=="scroll"||p.parent.statics.scope!==p.statics.scope)?O:A(p.parent,O)}d.bubbleFormats=A,d.BlockEmbed=T,d.default=P},function(y,d,f){Object.defineProperty(d,"__esModule",{value:!0}),d.default=d.overload=d.expandConfig=void 0;var E=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($){return typeof $}:function($){return $&&typeof Symbol=="function"&&$.constructor===Symbol&&$!==Symbol.prototype?"symbol":typeof $},b=function(){function $(j,w){var R=[],M=!0,z=!1,F=void 0;try{for(var I=j[Symbol.iterator](),U;!(M=(U=I.next()).done)&&(R.push(U.value),!(w&&R.length===w));M=!0);}catch(W){z=!0,F=W}finally{try{!M&&I.return&&I.return()}finally{if(z)throw F}}return R}return function(j,w){if(Array.isArray(j))return j;if(Symbol.iterator in Object(j))return $(j,w);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_=function(){function $(j,w){for(var R=0;R2&&arguments[2]!==void 0?arguments[2]:!1;if(typeof w!="string"){var F=w.attrName||w.blotName;typeof F=="string"?this.register("formats/"+F,w,R):Object.keys(w).forEach(function(I){M.register(I,w[I],R)})}else this.imports[w]!=null&&!z&&S.warn("Overwriting "+w+" with",R),this.imports[w]=R,(w.startsWith("blots/")||w.startsWith("formats/"))&&R.blotName!=="abstract"?i.default.register(R):w.startsWith("modules")&&typeof R.register=="function"&&R.register()}}]);function $(j){var w=this,R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(O(this,$),this.options=D(j,R),this.container=this.options.container,this.container==null)return S.error("Invalid Quill container",j);this.options.debug&&$.debug(this.options.debug);var M=this.container.innerHTML.trim();this.container.classList.add("ql-container"),this.container.innerHTML="",this.container.__quill=this,this.root=this.addContainer("ql-editor"),this.root.classList.add("ql-blank"),this.root.setAttribute("data-gramm",!1),this.scrollingContainer=this.options.scrollingContainer||this.root,this.emitter=new r.default,this.scroll=i.default.create(this.root,{emitter:this.emitter,whitelist:this.options.formats}),this.editor=new o.default(this.scroll),this.selection=new a.default(this.scroll,this.emitter),this.theme=new this.options.theme(this,this.options),this.keyboard=this.theme.addModule("keyboard"),this.clipboard=this.theme.addModule("clipboard"),this.history=this.theme.addModule("history"),this.theme.init(),this.emitter.on(r.default.events.EDITOR_CHANGE,function(F){F===r.default.events.TEXT_CHANGE&&w.root.classList.toggle("ql-blank",w.editor.isBlank())}),this.emitter.on(r.default.events.SCROLL_UPDATE,function(F,I){var U=w.selection.lastRange,W=U&&U.length===0?U.index:void 0;H.call(w,function(){return w.editor.update(null,I,W)},F)});var z=this.clipboard.convert(`