diff --git a/admin/apps/game/domain/comm_resource.go b/admin/apps/game/domain/comm_resource.go
index 6e0571c..f2f6ad9 100644
--- a/admin/apps/game/domain/comm_resource.go
+++ b/admin/apps/game/domain/comm_resource.go
@@ -23,6 +23,8 @@ import (
type CommonResourceService struct {
projectRepo repo.IProjectRepo
+ serverRepo repo.IServerRepo
+ noticeRepo repo.INoticeRepo
}
func initCommonResourcesRepo(db *gorm.DB) {
@@ -33,6 +35,8 @@ func initCommonResourcesRepo(db *gorm.DB) {
serverRepo.GlobalBtns = []*api.ResourceBtnInfo{
{Key: consts.BtnKeyGlobal_Server_DownAll, Name: "一键停服", BtnColorType: "info"},
{Key: consts.BtnKeyGlobal_Server_UpAll, Name: "一键起服", BtnColorType: "warning"},
+ {Key: consts.BtnKeyGlobal_Server_ExportCdn, Name: "一键导出cdn", BtnColorType: "danger"},
+ {Key: consts.BtnKeyGlobal_Server_ExportCdn, Name: "预览导出cdn", BtnColorType: "default"},
}
serverRepo.RowBtns = []*api.ResourceBtnInfo{
{Key: consts.BtnKeyRow_Server_Down, Name: "停服", BtnColorType: "info"},
@@ -54,7 +58,16 @@ func initCommonResourcesRepo(db *gorm.DB) {
r(consts.ResourcesName_CDKey, "礼包码", repo.NewCommonResourceRepo(db, &model.CDKey{}), ShowMethod_Get|ShowMethod_Post|ShowMethod_Put|ShowMethod_Delete)
r(consts.ResourcesName_ItemBag, "道具礼包", repo.NewCommonResourceRepo(db, &model.ItemBag{}), ShowMethod_Get|ShowMethod_Post|ShowMethod_Put|ShowMethod_Delete)
- r(consts.ResourcesName_Notice, "公告(暂无)", repo.NewCommonResourceRepo(db, &model.Notice{}), ShowMethod_Get|ShowMethod_Post|ShowMethod_Put|ShowMethod_Delete)
+ {
+ noticeRepo := r(consts.ResourcesName_Notice, "公告", repo.NewCommonResourceRepo(db, &model.Notice{}), ShowMethod_Get|ShowMethod_Post|ShowMethod_Put|ShowMethod_Delete)
+ noticeRepo.GlobalBtns = []*api.ResourceBtnInfo{
+ {Key: consts.BtnKeyGlobal_Server_DownAll, Name: "一键禁用所有", BtnColorType: "info"},
+ }
+ noticeRepo.RowBtns = []*api.ResourceBtnInfo{
+ {Key: consts.BtnKeyRow_Server_Down, Name: "禁用", BtnColorType: "info"},
+ {Key: consts.BtnKeyRow_Server_Up, Name: "启用", BtnColorType: "warning"},
+ }
+ }
r(consts.ResourcesName_DevicePush, "设备推送(暂无)", repo.NewCommonResourceRepo(db, &model.DevicePush{}), ShowMethod_Get)
}
@@ -62,6 +75,8 @@ func NewCommonResourceService(db *gorm.DB) *CommonResourceService {
initCommonResourcesRepo(db)
svc := &CommonResourceService{
projectRepo: repo.NewProjectRepo(db),
+ serverRepo: repo.NewServerRepo(db),
+ noticeRepo: repo.NewNoticeRepo(db),
}
svc.startEventSubscriber()
svc.startLoadAllDelayInvokeDbData()
@@ -289,10 +304,33 @@ func (svc *CommonResourceService) RowsSelection(projectId int, resourceName stri
if resourceName != consts.ResourcesName_Project && !find {
return projectEt, nil, errcode.New(errcode.ServerError, "not found project %v db data", projectId)
}
- if hook, ok := projects.GetProjectResourceHook(projectEt, resourceName).(projects.IPostResourceOpRowsHook); ok {
- rsp, err := hook.RowsSelection(projectEt, resourceName, params.BtnKey, params.Rows)
- return projectEt, rsp, err
+
+ if params.BtnKey == consts.BtnKeyGlobal_Server_ExportCdn {
+ // 导出cdn,聚合公告信息一起导
+ serverList, err := svc.serverRepo.List(projectId)
+ if err != nil {
+ return projectEt, nil, err
+ }
+ noticeList, err := svc.noticeRepo.List(projectId)
+ if err != nil {
+ return projectEt, nil, err
+ }
+ content, err := genCdnServerListContent(serverList, noticeList)
+ if err != nil {
+ return projectEt, nil, err
+ }
+ return projectEt, &dto2.CommonRowsSelectionRsp{
+ Msg: content,
+ NeedRefresh: false,
+ FileName: projectEt.GetProjectPo().Name + "-区服公告信息.txt",
+ }, nil
+ } else {
+ if hook, ok := projects.GetProjectResourceHook(projectEt, resourceName).(projects.IPostResourceOpRowsHook); ok {
+ rsp, err := hook.RowsSelection(projectEt, resourceName, params.BtnKey, params.Rows)
+ return projectEt, rsp, err
+ }
}
+
return projectEt, nil, nil
}
diff --git a/admin/apps/game/domain/projects/smdl/server.go b/admin/apps/game/domain/projects/smdl/server.go
index 2b0c400..ca1b1d6 100644
--- a/admin/apps/game/domain/projects/smdl/server.go
+++ b/admin/apps/game/domain/projects/smdl/server.go
@@ -50,6 +50,7 @@ func (hook *ServerHook) List(projectInfo *entity.Project, resource string, param
row["IsServerDown"] = "否"
}
} else {
+ row["IsServerDown"] = "否"
row["RunningStatus"] = "未知"
row["Ccu"] = 0
row["TotalRoleCount"] = 0
diff --git a/admin/apps/game/domain/repo/notice.go b/admin/apps/game/domain/repo/notice.go
new file mode 100644
index 0000000..870cbd9
--- /dev/null
+++ b/admin/apps/game/domain/repo/notice.go
@@ -0,0 +1,36 @@
+package repo
+
+import (
+ "admin/apps/game/domain/entity"
+ "admin/apps/game/model"
+ "admin/internal/errcode"
+ "gorm.io/gorm"
+)
+
+var NoticeRepoInstance INoticeRepo
+
+type INoticeRepo interface {
+ List(projectId int) ([]*entity.CommonResource, error)
+}
+
+func NewNoticeRepo(db *gorm.DB) INoticeRepo {
+ return ¬iceRepoImpl{db: db}
+}
+
+type noticeRepoImpl struct {
+ db *gorm.DB
+}
+
+func (impl *noticeRepoImpl) List(projectId int) ([]*entity.CommonResource, error) {
+ list := make([]*model.Notice, 0)
+ err := impl.db.Where("project_id = ?", projectId).Find(&list).Error
+ if err != nil {
+ return nil, errcode.New(errcode.DBError, "list server error:%v", err)
+ }
+
+ list1 := make([]*entity.CommonResource, 0, len(list))
+ for _, v := range list {
+ list1 = append(list1, (&entity.CommonResource{}).FromPo(v))
+ }
+ return list1, nil
+}
diff --git a/admin/apps/game/domain/server.go b/admin/apps/game/domain/server.go
new file mode 100644
index 0000000..c5d9c75
--- /dev/null
+++ b/admin/apps/game/domain/server.go
@@ -0,0 +1,131 @@
+package domain
+
+import (
+ "admin/apps/game/domain/entity"
+ "admin/apps/game/model"
+ "admin/internal/errcode"
+ "bytes"
+ "strings"
+ "text/template"
+ "time"
+)
+
+type CdnServerInfo struct {
+ Properties [8]struct {
+ Key string
+ Value string
+ }
+}
+type CdnNoticeInfo struct {
+ Sn int
+ UpdataMod string
+ Title string
+ Content string
+}
+type CdnServerNoticeInfo struct {
+ ServerList []*CdnServerInfo
+ NoticeVersion string
+ NoticeList []*CdnNoticeInfo
+}
+
+func genCdnServerListContent(serverList, noticeList []*entity.CommonResource) (string, error) {
+ info := &CdnServerNoticeInfo{}
+ for _, server := range serverList {
+ serverDbInfo := server.Po.(*model.Server)
+ serverInfo := &CdnServerInfo{}
+ serverInfo.Properties[0].Key = "id"
+ serverInfo.Properties[0].Value = serverDbInfo.ServerConfID
+
+ addr := strings.Split(serverDbInfo.ClientConnAddr, ":")
+
+ serverInfo.Properties[1].Key = "ip"
+ serverInfo.Properties[1].Value = ""
+ if len(addr) == 2 {
+ serverInfo.Properties[1].Value = addr[0]
+ }
+
+ serverInfo.Properties[2].Key = "name"
+ serverInfo.Properties[2].Value = serverDbInfo.Desc
+
+ serverInfo.Properties[3].Key = "port"
+ serverInfo.Properties[3].Value = ""
+ if len(addr) == 2 {
+ serverInfo.Properties[3].Value = addr[1]
+ }
+
+ serverInfo.Properties[4].Key = "recommend"
+ serverInfo.Properties[4].Value = "0"
+
+ serverInfo.Properties[5].Key = "status"
+ serverInfo.Properties[5].Value = "0"
+
+ serverInfo.Properties[6].Key = "area"
+ serverInfo.Properties[6].Value = "1区"
+
+ serverInfo.Properties[7].Key = "type"
+ serverInfo.Properties[7].Value = "1"
+ info.ServerList = append(info.ServerList, serverInfo)
+ }
+
+ info.NoticeVersion = time.Now().Format("200601021504")
+ for i, notice := range noticeList {
+ noticeDbInfo := notice.Po.(*model.Notice)
+ noticeInfo := &CdnNoticeInfo{}
+ noticeInfo.Sn = i + 1
+ noticeInfo.UpdataMod = noticeDbInfo.Mod
+ noticeInfo.Title = noticeDbInfo.Title
+ noticeInfo.Content = noticeDbInfo.Content
+ info.NoticeList = append(info.NoticeList, noticeInfo)
+ }
+
+ bytesBuffer := bytes.NewBufferString("")
+ tpl, err := template.New("").Parse(cdnServerListContentTemplate)
+ if err != nil {
+ return "", errcode.New(errcode.ServerError, "new render template error:%v", err)
+ }
+
+ err = tpl.Execute(bytesBuffer, info)
+ if err != nil {
+ return "", errcode.New(errcode.ServerError, "execute render template error:%v", err)
+ }
+ return bytesBuffer.String(), nil
+}
+
+var cdnServerListContentTemplate = `
+local Data = {}
+
+Data.versionCode = "2.2.2"
+Data.typenName = "iOS服务器"
+
+--测试服务器
+Data.apptest = {}
+Data.zhuboAcount ={}
+
+--正式服务器
+Data.appOnline = {}
+
+{{ range .ServerList }}
+table.insert(Data.appOnline,{
+ {{- range .Properties }}
+ {{ .Key }} = "{{ .Value }}",
+ {{- end }}
+})
+{{- end }}
+
+Data.notice = {}
+Data.notice.version = "{{ .NoticeVersion }}"
+Data.notice.info = {
+{{- range .NoticeList }}
+{sn={{.Sn}},updataMod="{{.UpdataMod}}",title="{{.Title}}",updataTxt="{{.Content}}"},
+{{- end }}
+}
+
+Data.loginResult = {
+ Code1 = 99989,
+ Content1 = "服务器正在维护中",
+ Code2 = 99988,
+ Content2 = "服务器正在维护中",
+}
+
+return Data
+`
diff --git a/admin/apps/game/model/notice.go b/admin/apps/game/model/notice.go
index 6c2a6ae..e2cd4cc 100644
--- a/admin/apps/game/model/notice.go
+++ b/admin/apps/game/model/notice.go
@@ -11,12 +11,15 @@ func init() {
}
type Notice struct {
- ID int `gorm:"primarykey" readonly:"true"`
- ProjectId int `gorm:"index:idx_project_id"`
- ServerIDs []int `gorm:"type:json;serializer:json" name:"公告生效服务器" desc:"为空表示所有服" choices:"GetChoiceServers"`
- Content string `name:"公告内容" required:"true"`
- StartAt time.Time `name:"开始时间" required:"true"`
- EndAt time.Time `name:"结束时间" required:"true"`
+ ID int `gorm:"primarykey" readonly:"true"`
+ ProjectId int `gorm:"index:idx_project_id"`
+ //ServerIDs []string `gorm:"type:json;serializer:json" name:"公告生效服务器" desc:"为空表示所有服" choices:"GetChoiceServers"`
+ Mod string `name:"公告分栏标题" desc:"显示到公告弹窗左边的分栏标题" required:"true"` // 左边分栏标题
+ Title string `name:"公告标题" desc:"显示到公告内容区里的标题" required:"true"` // 公告内容上面的标题
+ Content string `name:"公告内容" desc:"仅支持
d?Z(e,o,r,!0,!1,p):A(t,l,a,o,r,s,i,u,p)},W=(e,t,l,a,o,r,s,i,u)=>{let c=0;const d=t.length;let p=e.length-1,f=d-1;for(;c<=p&&c<=f;){const n=e[c],a=t[c]=u?Ga(t[c]):Ya(t[c]);if(!Ha(n,a))break;g(n,a,l,null,o,r,s,i,u),c++}for(;c<=p&&c<=f;){const n=e[p],a=t[f]=u?Ga(t[f]):Ya(t[f]);if(!Ha(n,a))break;g(n,a,l,null,o,r,s,i,u),p--,f--}if(c>p){if(c<=f){const e=f+1,n=e ((e,t,n)=>{const{items:l,lastVisitedIndex:a}=t;return(a>0?l[a].offset:0)>=n?iI(e,t,0,a,n):uI(e,t,Math.max(0,a),n)})(e,n,t),getStopIndexForStartIndex:(e,t,n,l)=>{const{height:a,total:o,layout:r,width:s}=e,i=eI(r)?s:a,u=sI(e,t,l),c=n+i;let d=u.offset+u.size,p=t;for(;p {const l=fD(e,t,n,"column");return[l.size,l.offset]},getRowPosition:(e,t,n)=>{const l=fD(e,t,n,"row");return[l.size,l.offset]},getColumnOffset:(e,t,n,l,a,o)=>bD(e,t,n,l,a,"column",o),getRowOffset:(e,t,n,l,a,o)=>bD(e,t,n,l,a,"row",o),getColumnStartIndexForOffset:(e,t,n)=>hD(e,n,t,"column"),getColumnStopIndexForStartIndex:(e,t,n,l)=>{const a=fD(e,t,l,"column"),o=n+e.width;let r=a.offset+a.size,s=t;for(;s=t||n<0||d&&e-u>=o}function h(){var e=nd();if(v(e))return m(e);s=setTimeout(h,function(e){var n=t-(e-i);return d?ad(n,o-(e-u)):n}(e))}function m(e){return s=void 0,p&&l?f(e):(l=a=void 0,r)}function g(){var e=nd(),n=v(e);if(l=arguments,a=this,i=e,n){if(void 0===s)return function(e){return u=e,s=setTimeout(h,t),c?f(e):r}(i);if(d)return clearTimeout(s),s=setTimeout(h,t),f(i)}return void 0===s&&(s=setTimeout(h,t)),r}return t=Ds(t)||0,Rs(n)&&(c=!!n.leading,o=(d="maxWait"in n)?ld(Ds(n.maxWait)||0,t):o,p="trailing"in n?!!n.trailing:p),g.cancel=function(){void 0!==s&&clearTimeout(s),u=0,l=i=a=s=void 0},g.flush=function(){return void 0===s?r:m(nd())},g}function rd(e,t,n){(void 0!==n&&!bi(e[t],n)||void 0===n&&!(t in e))&&yi(e,t,n)}function sd(e){return _s(e)&&Ei(e)}function id(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}function ud(e,t,n,l,a,o,r){var s=id(e,n),i=id(t,n),u=r.get(i);if(u)rd(e,n,u);else{var c,d=o?o(s,i,n+"",e,t,r):void 0,p=void 0===d;if(p){var f=Os(i),v=!f&&$i(i),h=!f&&!v&&qi(i);d=i,f||v||h?Os(s)?d=s:sd(s)?d=oi(s):v?(p=!1,d=Pu(i,!0)):h?(p=!1,d=gc(i,!0)):d=[]:Ru(i)||Li(i)?(d=s,Li(s)?d=Ci(c=s,tu(c)):Rs(s)&&!Ps(s)||(d=bc(i))):p=!1}p&&(r.set(i,d),a(d,i,l,o,r),r.delete(i)),rd(e,n,d)}}function cd(e,t,n,l,a){e!==t&&Qc(t,(function(o,r){if(a||(a=new Iu),Rs(o))ud(e,t,r,n,cd,l,a);else{var s=l?l(id(e,r),o,r+"",e,t,a):void 0;void 0===s&&(s=o),rd(e,r,s)}}),tu)}function dd(e,t,n){var l=null==e?0:e.length;if(!l)return-1;var a=l-1;return fi(e,Jc(t),a,!0)}function pd(e,t){var n=-1,l=Ei(e)?Array(e.length):[];return td(e,(function(e,a,o){l[++n]=t(e,a,o)})),l}function fd(e,t){return Mu(function(e,t){return(Os(e)?Es:pd)(e,Jc(t))}(e,t),1)}var vd=1/0;function hd(e){for(var t=-1,n=null==e?0:e.length,l={};++t-1)return new Date(("X"===t?1e3:1)*e);var a=f(t)(e),o=a.year,r=a.month,s=a.day,i=a.hours,u=a.minutes,c=a.seconds,d=a.milliseconds,p=a.zone,v=a.week,h=new Date,m=s||(o||r?1:h.getDate()),g=o||h.getFullYear(),y=0;o&&!r||(y=r>0?r-1:h.getMonth());var b,w=i||0,x=u||0,C=c||0,k=d||0;return p?new Date(Date.UTC(g,y,m,w,x,C,k+60*p.offset*1e3)):n?new Date(Date.UTC(g,y,m,w,x,C,k)):(b=new Date(g,y,m,w,x,C,k),v&&(b=l(b).week(v).toDate()),b)}catch(S){return new Date("")}}(t,s,l,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),c&&t!=this.format(s)&&(this.$d=new Date("")),r={}}else if(s instanceof Array)for(var p=s.length,v=1;v<=p;v+=1){o[1]=s[v-1];var h=n.apply(this,o);if(h.isValid()){this.$d=h.$d,this.$L=h.$L,this.init();break}v===p&&(this.$d=new Date(""))}else a.call(this,e)}}}());const vA=pE(fA);var hA,mA={exports:{}};var gA=hA?mA.exports:(hA=1,mA.exports=function(e,t){var n=t.prototype,l=n.format;n.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return l.bind(this)(e);var a=this.$utils(),o=(e||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case"Q":return Math.ceil((t.$M+1)/3);case"Do":return n.ordinal(t.$D);case"gggg":return t.weekYear();case"GGGG":return t.isoWeekYear();case"wo":return n.ordinal(t.week(),"W");case"w":case"ww":return a.s(t.week(),"w"===e?1:2,"0");case"W":case"WW":return a.s(t.isoWeek(),"W"===e?1:2,"0");case"k":case"kk":return a.s(String(0===t.$H?24:t.$H),"k"===e?1:2,"0");case"X":return Math.floor(t.$d.getTime()/1e3);case"x":return t.$d.getTime();case"z":return"["+t.offsetName()+"]";case"zzz":return"["+t.offsetName("long")+"]";default:return e}}));return l.bind(this)(o)}});const yA=pE(gA);var bA,wA,xA,CA={exports:{}};const kA=pE(bA?CA.exports:(bA=1,CA.exports=(wA="week",xA="year",function(e,t,n){var l=t.prototype;l.week=function(e){if(void 0===e&&(e=null),null!==e)return this.add(7*(e-this.week()),"day");var t=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var l=n(this).startOf(xA).add(1,xA).date(t),a=n(this).endOf(wA);if(l.isBefore(a))return 1}var o=n(this).startOf(xA).date(t).startOf(wA).subtract(1,"millisecond"),r=this.diff(o,wA,!0);return r<0?n(this).startOf("week").week():Math.ceil(r)},l.weeks=function(e){return void 0===e&&(e=null),this.week(e)}})));var SA,_A={exports:{}};var MA=(SA||(SA=1,_A.exports=function(e,t){t.prototype.weekYear=function(){var e=this.month(),t=this.week(),n=this.year();return 1===t&&11===e?n+1:0===e&&t>=52?n-1:n}}),_A.exports);const EA=pE(MA);var OA,TA={exports:{}};var AA=(OA||(OA=1,TA.exports=function(e,t,n){t.prototype.dayOfYear=function(e){var t=Math.round((n(this).startOf("day")-n(this).startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"day")}}),TA.exports);const VA=pE(AA);var BA,zA={exports:{}};var LA=(BA||(BA=1,zA.exports=function(e,t){t.prototype.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)}}),zA.exports);const RA=pE(LA);var NA,IA={exports:{}};const $A=pE(NA?IA.exports:(NA=1,IA.exports=function(e,t){t.prototype.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)}})),HA=["hours","minutes","seconds"],DA="HH:mm:ss",FA="YYYY-MM-DD",PA={date:FA,dates:FA,week:"gggg[w]ww",year:"YYYY",years:"YYYY",month:"YYYY-MM",months:"YYYY-MM",datetime:`${FA} ${DA}`,monthrange:"YYYY-MM",yearrange:"YYYY",daterange:FA,datetimerange:`${FA} ${DA}`},jA=qp({disabledHours:{type:Function},disabledMinutes:{type:Function},disabledSeconds:{type:Function}}),KA=qp({visible:Boolean,actualVisible:{type:Boolean,default:void 0},format:{type:String,default:""}}),WA=qp({id:{type:[Array,String]},name:{type:[Array,String]},popperClass:{type:String,default:""},format:String,valueFormat:String,dateFormat:String,timeFormat:String,type:{type:String,default:""},clearable:{type:Boolean,default:!0},clearIcon:{type:[String,Object],default:Bh},editable:{type:Boolean,default:!0},prefixIcon:{type:[String,Object],default:""},size:Yp,readonly:Boolean,disabled:Boolean,placeholder:{type:String,default:""},popperOptions:{type:Object,default:()=>({})},modelValue:{type:[Date,Array,String,Number],default:""},rangeSeparator:{type:String,default:"-"},startPlaceholder:String,endPlaceholder:String,defaultValue:{type:[Date,Array]},defaultTime:{type:[Date,Array]},isRange:Boolean,...jA,disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:Boolean,tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},unlinkPanels:Boolean,placement:{type:String,values:AS,default:"bottom"},fallbackPlacements:{type:Array,default:["bottom","top","right","left"]},...Qp,...ek(["ariaLabel"]),showNow:{type:Boolean,default:!0}}),qA=qp({id:{type:Array},name:{type:Array},modelValue:{type:[Array,String]},startPlaceholder:String,endPlaceholder:String});var UA=hf(Hn({...Hn({name:"PickerRangeTrigger",inheritAttrs:!1}),props:qA,emits:["mouseenter","mouseleave","click","touchstart","focus","blur","startInput","endInput","startChange","endChange"],setup(e,{expose:t,emit:n}){const l=ok(),a=fs("date"),o=fs("range"),r=St(),s=St(),{wrapperRef:i,isFocused:u}=gk(r),c=e=>{n("click",e)},d=e=>{n("mouseenter",e)},p=e=>{n("mouseleave",e)},f=e=>{n("mouseenter",e)},v=e=>{n("startInput",e)},h=e=>{n("endInput",e)},m=e=>{n("startChange",e)},g=e=>{n("endChange",e)};return t({focus:()=>{var e;null==(e=r.value)||e.focus()},blur:()=>{var e,t;null==(e=r.value)||e.blur(),null==(t=s.value)||t.blur()}}),(e,t)=>(Ba(),Na("div",{ref_key:"wrapperRef",ref:i,class:j([Ot(a).is("active",Ot(u)),e.$attrs.class]),style:$(e.$attrs.style),onClick:c,onMouseenter:d,onMouseleave:p,onTouchstartPassive:f},[hl(e.$slots,"prefix"),Pa("input",Za(Ot(l),{id:e.id&&e.id[0],ref_key:"inputRef",ref:r,name:e.name&&e.name[0],placeholder:e.startPlaceholder,value:e.modelValue&&e.modelValue[0],class:Ot(o).b("input"),onInput:v,onChange:m}),null,16,["id","name","placeholder","value"]),hl(e.$slots,"range-separator"),Pa("input",Za(Ot(l),{id:e.id&&e.id[1],ref_key:"endInputRef",ref:s,name:e.name&&e.name[1],placeholder:e.endPlaceholder,value:e.modelValue&&e.modelValue[1],class:Ot(o).b("input"),onInput:h,onChange:g}),null,16,["id","name","placeholder","value"]),hl(e.$slots,"suffix")],38))}}),[["__file","picker-range-trigger.vue"]]);const YA=Hn({...Hn({name:"Picker"}),props:WA,emits:[cf,df,"focus","blur","clear","calendar-change","panel-change","visible-change","keydown"],setup(e,{expose:t,emit:n}){const a=e,o=Cl(),{lang:r}=jp(),s=fs("date"),i=fs("input"),u=fs("range"),{form:c,formItem:p}=pk(),f=Pl("ElPopperOptions",{}),{valueOnClear:v}=ef(a,null),h=St(),m=St(),g=St(!1),y=St(!1),b=St(null);let w=!1;const{isFocused:x,handleFocus:C,handleBlur:k}=gk(m,{beforeFocus:()=>a.readonly||L.value,afterFocus(){g.value=!0},beforeBlur(e){var t;return!w&&(null==(t=h.value)?void 0:t.isFocusInsideContent(e))},afterBlur(){ae(),g.value=!1,w=!1,a.validateEvent&&(null==p||p.validate("blur").catch((e=>{})))}}),S=mo((()=>[s.b("editor"),s.bm("editor",a.type),i.e("wrapper"),s.is("disabled",L.value),s.is("active",g.value),u.b("editor"),ee?u.bm("editor",ee.value):"",o.class])),_=mo((()=>[i.e("icon"),u.e("close-icon"),W.value?"":u.e("close-icon--hidden")]));fa(g,(e=>{e?Qt((()=>{e&&(b.value=a.modelValue)})):(le.value=null,Qt((()=>{M(a.modelValue)})))}));const M=(e,t)=>{!t&&CE(e,b.value)||(n(df,e),t&&(b.value=e),a.validateEvent&&(null==p||p.validate("change").catch((e=>{}))))},E=e=>{if(!CE(a.modelValue,e)){let t;d(e)?t=e.map((e=>SE(e,a.valueFormat,r.value))):e&&(t=SE(e,a.valueFormat,r.value)),n(cf,e?t:e,r.value)}},O=mo((()=>m.value?Array.from(m.value.$el.querySelectorAll("input")):[])),T=(e,t,n)=>{const l=O.value;l.length&&(n&&"min"!==n?"max"===n&&(l[1].setSelectionRange(e,t),l[1].focus()):(l[0].setSelectionRange(e,t),l[0].focus()))},A=(e="",t=!1)=>{let n;g.value=t,n=d(e)?e.map((e=>e.toDate())):e?e.toDate():e,le.value=null,E(n)},V=()=>{y.value=!0},B=()=>{n("visible-change",!0)},z=()=>{y.value=!1,g.value=!1,n("visible-change",!1)},L=mo((()=>a.disabled||(null==c?void 0:c.disabled))),R=mo((()=>{let e;if(U.value?ve.value.getDefaultValue&&(e=ve.value.getDefaultValue()):e=d(a.modelValue)?a.modelValue.map((e=>kE(e,a.valueFormat,r.value))):kE(a.modelValue,a.valueFormat,r.value),ve.value.getRangeAvailableTime){const t=ve.value.getRangeAvailableTime(e);gd(t,e)||(e=t,U.value||E(ME(e)))}return d(e)&&e.some((e=>!e))&&(e=[]),e})),N=mo((()=>{if(!ve.value.panelReady)return"";const e=re(R.value);return d(le.value)?[le.value[0]||e&&e[0]||"",le.value[1]||e&&e[1]||""]:null!==le.value?le.value:!H.value&&U.value||!g.value&&U.value?"":e?D.value||F.value||P.value?e.join(", "):e:""})),I=mo((()=>a.type.includes("time"))),H=mo((()=>a.type.startsWith("time"))),D=mo((()=>"dates"===a.type)),F=mo((()=>"months"===a.type)),P=mo((()=>"years"===a.type)),K=mo((()=>a.prefixIcon||(I.value?$h:Pv))),W=St(!1),q=e=>{a.readonly||L.value||(W.value&&(e.stopPropagation(),ve.value.handleClear?ve.value.handleClear():E(v.value),M(v.value,!0),W.value=!1,z()),n("clear"))},U=mo((()=>{const{modelValue:e}=a;return!e||d(e)&&!e.filter(Boolean).length})),Y=async e=>{var t;a.readonly||L.value||("INPUT"!==(null==(t=e.target)?void 0:t.tagName)||x.value)&&(g.value=!0)},G=()=>{a.readonly||L.value||!U.value&&a.clearable&&(W.value=!0)},Z=()=>{W.value=!1},J=e=>{var t;a.readonly||L.value||("INPUT"!==(null==(t=e.touches[0].target)?void 0:t.tagName)||x.value)&&(g.value=!0)},Q=mo((()=>a.type.includes("range"))),ee=hk(),te=mo((()=>{var e,t;return null==(t=null==(e=Ot(h))?void 0:e.popperRef)?void 0:t.contentRef})),ne=dp(m,(e=>{const t=Ot(te),n=rp(m);t&&(e.target===t||e.composedPath().includes(t))||e.target===n||n&&e.composedPath().includes(n)||(g.value=!1)}));el((()=>{null==ne||ne()}));const le=St(null),ae=()=>{if(le.value){const e=oe(N.value);e&&se(e)&&(E(ME(e)),le.value=null)}""===le.value&&(E(v.value),M(v.value,!0),le.value=null)},oe=e=>e?ve.value.parseUserInput(e):null,re=e=>e?ve.value.formatToString(e):null,se=e=>ve.value.isValidValue(e),ie=async e=>{if(a.readonly||L.value)return;const{code:t}=e;if((e=>{n("keydown",e)})(e),t!==vS.esc)if(t===vS.down&&(ve.value.handleFocusPicker&&(e.preventDefault(),e.stopPropagation()),!1===g.value&&(g.value=!0,await Qt()),ve.value.handleFocusPicker))ve.value.handleFocusPicker();else{if(t!==vS.tab)return t===vS.enter||t===vS.numpadEnter?((null===le.value||""===le.value||se(oe(N.value)))&&(ae(),g.value=!1),void e.stopPropagation()):void(le.value?e.stopPropagation():ve.value.handleKeydownInput&&ve.value.handleKeydownInput(e));w=!0}else!0===g.value&&(g.value=!1,e.preventDefault(),e.stopPropagation())},ue=e=>{le.value=e,g.value||(g.value=!0)},ce=e=>{const t=e.target;le.value?le.value=[t.value,le.value[1]]:le.value=[t.value,null]},de=e=>{const t=e.target;le.value?le.value=[le.value[0],t.value]:le.value=[null,t.value]},pe=()=>{var e;const t=le.value,n=oe(t&&t[0]),l=Ot(R);if(n&&n.isValid()){le.value=[re(n),(null==(e=N.value)?void 0:e[1])||null];const t=[n,l&&(l[1]||null)];se(t)&&(E(ME(t)),le.value=null)}},fe=()=>{var e;const t=Ot(le),n=oe(t&&t[1]),l=Ot(R);if(n&&n.isValid()){le.value=[(null==(e=Ot(N))?void 0:e[0])||null,re(n)];const t=[l&&l[0],n];se(t)&&(E(ME(t)),le.value=null)}},ve=St({}),he=e=>{ve.value[e[0]]=e[1],ve.value.panelReady=!0},me=e=>{n("calendar-change",e)},ge=(e,t,l)=>{n("panel-change",e,t,l)};return Fl("EP_PICKER_BASE",{props:a}),t({focus:()=>{var e;null==(e=m.value)||e.focus()},blur:()=>{var e;null==(e=m.value)||e.blur()},handleOpen:()=>{g.value=!0},handleClose:()=>{g.value=!1},onPick:A}),(e,t)=>(Ba(),Ia(Ot(fM),Za({ref_key:"refPopper",ref:h,visible:g.value,effect:"light",pure:"",trigger:"click"},e.$attrs,{role:"dialog",teleported:"",transition:`${Ot(s).namespace.value}-zoom-in-top`,"popper-class":[`${Ot(s).namespace.value}-picker__popper`,e.popperClass],"popper-options":Ot(f),"fallback-placements":e.fallbackPlacements,"gpu-acceleration":!1,placement:e.placement,"stop-popper-mouse-event":!1,"hide-after":0,persistent:"",onBeforeShow:V,onShow:B,onHide:z}),{default:cn((()=>[Ot(Q)?(Ba(),Ia(UA,{key:1,id:e.id,ref_key:"inputRef",ref:m,"model-value":Ot(N),name:e.name,disabled:Ot(L),readonly:!e.editable||e.readonly,"start-placeholder":e.startPlaceholder,"end-placeholder":e.endPlaceholder,class:j(Ot(S)),style:$(e.$attrs.style),"aria-label":e.ariaLabel,tabindex:e.tabindex,autocomplete:"off",role:"combobox",onClick:Y,onFocus:Ot(C),onBlur:Ot(k),onStartInput:ce,onStartChange:pe,onEndInput:de,onEndChange:fe,onMousedown:Y,onMouseenter:G,onMouseleave:Z,onTouchstartPassive:J,onKeydown:ie},{prefix:cn((()=>[Ot(K)?(Ba(),Ia(Ot($f),{key:0,class:j([Ot(i).e("icon"),Ot(u).e("icon")])},{default:cn((()=>[(Ba(),Ia(ul(Ot(K))))])),_:1},8,["class"])):Ua("v-if",!0)])),"range-separator":cn((()=>[hl(e.$slots,"range-separator",{},(()=>[Pa("span",{class:j(Ot(u).b("separator"))},X(e.rangeSeparator),3)]))])),suffix:cn((()=>[e.clearIcon?(Ba(),Ia(Ot($f),{key:0,class:j(Ot(_)),onMousedown:Rr(Ot(l),["prevent"]),onClick:q},{default:cn((()=>[(Ba(),Ia(ul(e.clearIcon)))])),_:1},8,["class","onMousedown"])):Ua("v-if",!0)])),_:3},8,["id","model-value","name","disabled","readonly","start-placeholder","end-placeholder","class","style","aria-label","tabindex","onFocus","onBlur"])):(Ba(),Ia(Ot(bk),{key:0,id:e.id,ref_key:"inputRef",ref:m,"container-role":"combobox","model-value":Ot(N),name:e.name,size:Ot(ee),disabled:Ot(L),placeholder:e.placeholder,class:j([Ot(s).b("editor"),Ot(s).bm("editor",e.type),e.$attrs.class]),style:$(e.$attrs.style),readonly:!e.editable||e.readonly||Ot(D)||Ot(F)||Ot(P)||"week"===e.type,"aria-label":e.ariaLabel,tabindex:e.tabindex,"validate-event":!1,onInput:ue,onFocus:Ot(C),onBlur:Ot(k),onKeydown:ie,onChange:ae,onMousedown:Y,onMouseenter:G,onMouseleave:Z,onTouchstartPassive:J,onClick:Rr((()=>{}),["stop"])},{prefix:cn((()=>[Ot(K)?(Ba(),Ia(Ot($f),{key:0,class:j(Ot(i).e("icon")),onMousedown:Rr(Y,["prevent"]),onTouchstartPassive:J},{default:cn((()=>[(Ba(),Ia(ul(Ot(K))))])),_:1},8,["class","onMousedown"])):Ua("v-if",!0)])),suffix:cn((()=>[W.value&&e.clearIcon?(Ba(),Ia(Ot($f),{key:0,class:j(`${Ot(i).e("icon")} clear-icon`),onMousedown:Rr(Ot(l),["prevent"]),onClick:q},{default:cn((()=>[(Ba(),Ia(ul(e.clearIcon)))])),_:1},8,["class","onMousedown"])):Ua("v-if",!0)])),_:1},8,["id","model-value","name","size","disabled","placeholder","class","style","readonly","aria-label","tabindex","onFocus","onBlur","onClick"]))])),content:cn((()=>[hl(e.$slots,"default",{visible:g.value,actualVisible:y.value,parsedValue:Ot(R),format:e.format,dateFormat:e.dateFormat,timeFormat:e.timeFormat,unlinkPanels:e.unlinkPanels,type:e.type,defaultValue:e.defaultValue,showNow:e.showNow,onPick:A,onSelectRange:T,onSetPickerOption:he,onCalendarChange:me,onPanelChange:ge,onMousedown:Rr((()=>{}),["stop"])})])),_:3},16,["visible","transition","popper-class","popper-options","fallback-placements","placement"]))}});var GA=hf(YA,[["__file","picker.vue"]]);const XA=qp({...KA,datetimeRole:String,parsedValue:{type:Object}}),ZA=({getAvailableHours:e,getAvailableMinutes:t,getAvailableSeconds:n})=>{const l={};return{timePickerOptions:l,getAvailableTime:(l,a,o,r)=>{const s={hour:e,minute:t,second:n};let i=l;return["hour","minute","second"].forEach((e=>{if(s[e]){let t;const n=s[e];switch(e){case"minute":t=n(i.hour(),a,r);break;case"second":t=n(i.hour(),i.minute(),a,r);break;default:t=n(a,r)}if((null==t?void 0:t.length)&&!t.includes(i[e]())){const n=o?0:t.length-1;i=i[e](t[n])}}})),i},onSetOption:([e,t])=>{l[e]=t}}},JA=e=>e.map(((e,t)=>e||t)).filter((e=>!0!==e)),QA=(e,t,n)=>({getHoursList:(t,n)=>_E(24,e&&(()=>null==e?void 0:e(t,n))),getMinutesList:(e,n,l)=>_E(60,t&&(()=>null==t?void 0:t(e,n,l))),getSecondsList:(e,t,l,a)=>_E(60,n&&(()=>null==n?void 0:n(e,t,l,a)))}),eV=(e,t,n)=>{const{getHoursList:l,getMinutesList:a,getSecondsList:o}=QA(e,t,n);return{getAvailableHours:(e,t)=>JA(l(e,t)),getAvailableMinutes:(e,t,n)=>JA(a(e,t,n)),getAvailableSeconds:(e,t,n,l)=>JA(o(e,t,n,l))}},tV=e=>{const t=St(e.parsedValue);return fa((()=>e.visible),(n=>{n||(t.value=e.parsedValue)})),t},nV=qp({role:{type:String,required:!0},spinnerDate:{type:Object,required:!0},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:String,default:""},...jA}),lV=100,aV=600,oV={beforeMount(e,t){const n=t.value,{interval:l=lV,delay:a=aV}=h(n)?{}:n;let o,r;const s=()=>h(n)?n():n.handler(),i=()=>{r&&(clearTimeout(r),r=void 0),o&&(clearInterval(o),o=void 0)};e.addEventListener("mousedown",(e=>{0===e.button&&(i(),s(),document.addEventListener("mouseup",(()=>i()),{once:!0}),r=setTimeout((()=>{o=setInterval((()=>{s()}),l)}),a))}))}};var rV=hf(Hn({__name:"basic-time-spinner",props:nV,emits:[df,"select-range","set-option"],setup(e,{emit:t}){const n=e,l=Pl("EP_PICKER_BASE"),{isRange:a,format:o}=l.props,r=fs("time"),{getHoursList:s,getMinutesList:i,getSecondsList:u}=QA(n.disabledHours,n.disabledMinutes,n.disabledSeconds);let c=!1;const d=St(),p={hours:St(),minutes:St(),seconds:St()},f=mo((()=>n.showSeconds?HA:HA.slice(0,2))),v=mo((()=>{const{spinnerDate:e}=n;return{hours:e.hour(),minutes:e.minute(),seconds:e.second()}})),h=mo((()=>{const{hours:e,minutes:t}=Ot(v),{role:l,spinnerDate:o}=n,r=a?void 0:o;return{hours:s(l,r),minutes:i(e,l,r),seconds:u(e,t,l,r)}})),m=mo((()=>{const{hours:e,minutes:t,seconds:n}=Ot(v);return{hours:gE(e,23),minutes:gE(t,59),seconds:gE(n,59)}})),g=od((e=>{c=!1,w(e)}),200),y=e=>{if(!!!n.amPmMode)return"";let t=e<12?" am":" pm";return"A"===n.amPmMode&&(t=t.toUpperCase()),t},b=e=>{let n=[0,0];if(!o||o===DA)switch(e){case"hours":n=[0,2];break;case"minutes":n=[3,5];break;case"seconds":n=[6,8]}const[l,a]=n;t("select-range",l,a),d.value=e},w=e=>{k(e,Ot(v)[e])},x=()=>{w("hours"),w("minutes"),w("seconds")},C=e=>e.querySelector(`.${r.namespace.value}-scrollbar__wrap`),k=(e,t)=>{if(n.arrowControl)return;const l=Ot(p[e]);l&&l.$el&&(C(l.$el).scrollTop=Math.max(0,t*S(e)))},S=e=>{const t=Ot(p[e]),n=null==t?void 0:t.$el.querySelector("li");return n&&Number.parseFloat(Cf(n,"height"))||0},_=()=>{E(1)},M=()=>{E(-1)},E=e=>{d.value||b("hours");const t=d.value,n=Ot(v)[t],l="hours"===d.value?24:60,a=O(t,n,e,l);T(t,a),k(t,a),Qt((()=>b(t)))},O=(e,t,n,l)=>{let a=(t+n+l)%l;const o=Ot(h)[e];for(;o[a]&&a!==t;)a=(a+n+l)%l;return a},T=(e,l)=>{if(Ot(h)[e][l])return;const{hours:a,minutes:o,seconds:r}=Ot(v);let s;switch(e){case"hours":s=n.spinnerDate.hour(l).minute(o).second(r);break;case"minutes":s=n.spinnerDate.hour(a).minute(l).second(r);break;case"seconds":s=n.spinnerDate.hour(a).minute(o).second(l)}t(df,s)},A=e=>Ot(p[e]).$el.offsetHeight,V=()=>{const e=e=>{const t=Ot(p[e]);t&&t.$el&&(C(t.$el).onscroll=()=>{(e=>{const t=Ot(p[e]);if(!t)return;c=!0,g(e);const n=Math.min(Math.round((C(t.$el).scrollTop-(.5*A(e)-10)/S(e)+3)/S(e)),"hours"===e?23:59);T(e,n)})(e)})};e("hours"),e("minutes"),e("seconds")};Zn((()=>{Qt((()=>{!n.arrowControl&&V(),x(),"start"===n.role&&b("hours")}))}));return t("set-option",[`${n.role}_scrollDown`,E]),t("set-option",[`${n.role}_emitSelectRange`,b]),fa((()=>n.spinnerDate),(()=>{c||x()})),(e,t)=>(Ba(),Na("div",{class:j([Ot(r).b("spinner"),{"has-seconds":e.showSeconds}])},[e.arrowControl?Ua("v-if",!0):(Ba(!0),Na(Ma,{key:0},fl(Ot(f),(t=>(Ba(),Ia(Ot(Ok),{key:t,ref_for:!0,ref:e=>((e,t)=>{p[t].value=null!=e?e:void 0})(e,t),class:j(Ot(r).be("spinner","wrapper")),"wrap-style":"max-height: inherit;","view-class":Ot(r).be("spinner","list"),noresize:"",tag:"ul",onMouseenter:e=>b(t),onMousemove:e=>w(t)},{default:cn((()=>[(Ba(!0),Na(Ma,null,fl(Ot(h)[t],((n,l)=>(Ba(),Na("li",{key:l,class:j([Ot(r).be("spinner","item"),Ot(r).is("active",l===Ot(v)[t]),Ot(r).is("disabled",n)]),onClick:e=>((e,{value:t,disabled:n})=>{n||(T(e,t),b(e),k(e,t))})(t,{value:l,disabled:n})},["hours"===t?(Ba(),Na(Ma,{key:0},[qa(X(("0"+(e.amPmMode?l%12||12:l)).slice(-2))+X(y(l)),1)],64)):(Ba(),Na(Ma,{key:1},[qa(X(("0"+l).slice(-2)),1)],64))],10,["onClick"])))),128))])),_:2},1032,["class","view-class","onMouseenter","onMousemove"])))),128)),e.arrowControl?(Ba(!0),Na(Ma,{key:1},fl(Ot(f),(t=>(Ba(),Na("div",{key:t,class:j([Ot(r).be("spinner","wrapper"),Ot(r).is("arrow")]),onMouseenter:e=>b(t)},[dn((Ba(),Ia(Ot($f),{class:j(["arrow-up",Ot(r).be("spinner","arrow")])},{default:cn((()=>[ja(Ot(iv))])),_:1},8,["class"])),[[Ot(oV),M]]),dn((Ba(),Ia(Ot($f),{class:j(["arrow-down",Ot(r).be("spinner","arrow")])},{default:cn((()=>[ja(Ot(Xf))])),_:1},8,["class"])),[[Ot(oV),_]]),Pa("ul",{class:j(Ot(r).be("spinner","list"))},[(Ba(!0),Na(Ma,null,fl(Ot(m)[t],((n,l)=>(Ba(),Na("li",{key:l,class:j([Ot(r).be("spinner","item"),Ot(r).is("active",n===Ot(v)[t]),Ot(r).is("disabled",Ot(h)[t][n])])},[Ot(Ld)(n)?(Ba(),Na(Ma,{key:0},["hours"===t?(Ba(),Na(Ma,{key:0},[qa(X(("0"+(e.amPmMode?n%12||12:n)).slice(-2))+X(y(n)),1)],64)):(Ba(),Na(Ma,{key:1},[qa(X(("0"+n).slice(-2)),1)],64))],64)):Ua("v-if",!0)],2)))),128))],2)],42,["onMouseenter"])))),128)):Ua("v-if",!0)],2))}}),[["__file","basic-time-spinner.vue"]]);const sV=Hn({__name:"panel-time-pick",props:XA,emits:["pick","select-range","set-picker-option"],setup(e,{emit:t}){const n=e,l=Pl("EP_PICKER_BASE"),{arrowControl:a,disabledHours:o,disabledMinutes:r,disabledSeconds:s,defaultValue:i}=l.props,{getAvailableHours:u,getAvailableMinutes:c,getAvailableSeconds:d}=eV(o,r,s),p=fs("time"),{t:f,lang:v}=jp(),h=St([0,2]),m=tV(n),g=mo((()=>Bd(n.actualVisible)?`${p.namespace.value}-zoom-in-top`:"")),y=mo((()=>n.format.includes("ss"))),b=mo((()=>n.format.includes("A")?"A":n.format.includes("a")?"a":"")),w=()=>{t("pick",m.value,!1)},x=e=>{if(!n.visible)return;const l=M(e).millisecond(0);t("pick",l,!0)},C=(e,n)=>{t("select-range",e,n),h.value=[e,n]},{timePickerOptions:k,onSetOption:S,getAvailableTime:_}=ZA({getAvailableHours:u,getAvailableMinutes:c,getAvailableSeconds:d}),M=e=>_(e,n.datetimeRole||"",!0);return t("set-picker-option",["isValidValue",e=>{const t=mE(e).locale(v.value),n=M(t);return t.isSame(n)}]),t("set-picker-option",["formatToString",e=>e?e.format(n.format):null]),t("set-picker-option",["parseUserInput",e=>e?mE(e,n.format).locale(v.value):null]),t("set-picker-option",["handleKeydownInput",e=>{const t=e.code,{left:n,right:l,up:a,down:o}=vS;if([n,l].includes(t)){return(e=>{const t=[0,3].concat(y.value?[6]:[]),n=["hours","minutes"].concat(y.value?["seconds"]:[]),l=(t.indexOf(h.value[0])+e+t.length)%t.length;k.start_emitSelectRange(n[l])})(t===n?-1:1),void e.preventDefault()}if([a,o].includes(t)){const n=t===a?-1:1;return k.start_scrollDown(n),void e.preventDefault()}}]),t("set-picker-option",["getRangeAvailableTime",M]),t("set-picker-option",["getDefaultValue",()=>mE(i).locale(v.value)]),(e,l)=>(Ba(),Ia(Bo,{name:Ot(g)},{default:cn((()=>[e.actualVisible||e.visible?(Ba(),Na("div",{key:0,class:j(Ot(p).b("panel"))},[Pa("div",{class:j([Ot(p).be("panel","content"),{"has-seconds":Ot(y)}])},[ja(rV,{ref:"spinner",role:e.datetimeRole||"start","arrow-control":Ot(a),"show-seconds":Ot(y),"am-pm-mode":Ot(b),"spinner-date":e.parsedValue,"disabled-hours":Ot(o),"disabled-minutes":Ot(r),"disabled-seconds":Ot(s),onChange:x,onSetOption:Ot(S),onSelectRange:C},null,8,["role","arrow-control","show-seconds","am-pm-mode","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onSetOption"])],2),Pa("div",{class:j(Ot(p).be("panel","footer"))},[Pa("button",{type:"button",class:j([Ot(p).be("panel","btn"),"cancel"]),onClick:w},X(Ot(f)("el.datepicker.cancel")),3),Pa("button",{type:"button",class:j([Ot(p).be("panel","btn"),"confirm"]),onClick:e=>((e=!1,l=!1)=>{l||t("pick",n.parsedValue,e)})()},X(Ot(f)("el.datepicker.confirm")),11,["onClick"])],2)],2)):Ua("v-if",!0)])),_:1},8,["name"]))}});var iV=hf(sV,[["__file","panel-time-pick.vue"]]);const uV=Hn({__name:"panel-time-range",props:qp({...KA,parsedValue:{type:Array}}),emits:["pick","select-range","set-picker-option"],setup(e,{emit:t}){const n=e,l=(e,t)=>{const n=[];for(let l=e;l<=t;l++)n.push(l);return n},{t:a,lang:o}=jp(),r=fs("time"),s=fs("picker"),i=Pl("EP_PICKER_BASE"),{arrowControl:u,disabledHours:c,disabledMinutes:p,disabledSeconds:f,defaultValue:v}=i.props,h=mo((()=>[r.be("range-picker","body"),r.be("panel","content"),r.is("arrow",u),w.value?"has-seconds":""])),m=mo((()=>[r.be("range-picker","body"),r.be("panel","content"),r.is("arrow",u),w.value?"has-seconds":""])),g=mo((()=>n.parsedValue[0])),y=mo((()=>n.parsedValue[1])),b=tV(n),w=mo((()=>n.format.includes("ss"))),x=mo((()=>n.format.includes("A")?"A":n.format.includes("a")?"a":"")),C=e=>{S(e.millisecond(0),y.value)},k=e=>{S(g.value,e.millisecond(0))},S=(e,l)=>{n.visible&&t("pick",[e,l],!0)},_=mo((()=>g.value>y.value)),M=St([0,2]),E=(e,n)=>{t("select-range",e,n,"min"),M.value=[e,n]},O=mo((()=>w.value?11:8)),T=(e,n)=>{t("select-range",e,n,"max");const l=Ot(O);M.value=[e+l,n+l]},A=(e,t)=>{const n=c?c(e):[],a="start"===e,o=(t||(a?y.value:g.value)).hour(),r=a?l(o+1,23):l(0,o-1);return Vd(n,r)},V=(e,t,n)=>{const a=p?p(e,t):[],o="start"===t,r=n||(o?y.value:g.value);if(e!==r.hour())return a;const s=r.minute(),i=o?l(s+1,59):l(0,s-1);return Vd(a,i)},B=(e,t,n,a)=>{const o=f?f(e,t,n):[],r="start"===n,s=a||(r?y.value:g.value),i=s.hour(),u=s.minute();if(e!==i||t!==u)return o;const c=s.second(),d=r?l(c+1,59):l(0,c-1);return Vd(o,d)},z=([e,t])=>[$(e,"start",!0,t),$(t,"end",!1,e)],{getAvailableHours:L,getAvailableMinutes:R,getAvailableSeconds:N}=eV(A,V,B),{timePickerOptions:I,getAvailableTime:$,onSetOption:H}=ZA({getAvailableHours:L,getAvailableMinutes:R,getAvailableSeconds:N});return t("set-picker-option",["formatToString",e=>e?d(e)?e.map((e=>e.format(n.format))):e.format(n.format):null]),t("set-picker-option",["parseUserInput",e=>e?d(e)?e.map((e=>mE(e,n.format).locale(o.value))):mE(e,n.format).locale(o.value):null]),t("set-picker-option",["isValidValue",e=>{const t=e.map((e=>mE(e).locale(o.value))),n=z(t);return t[0].isSame(n[0])&&t[1].isSame(n[1])}]),t("set-picker-option",["handleKeydownInput",e=>{const t=e.code,{left:n,right:l,up:a,down:o}=vS;if([n,l].includes(t)){return(e=>{const t=w.value?[0,3,6,11,14,17]:[0,3,8,11],n=["hours","minutes"].concat(w.value?["seconds"]:[]),l=(t.indexOf(M.value[0])+e+t.length)%t.length,a=t.length/2;l{if(d(v))return v.map((e=>mE(e).locale(o.value)));const e=mE(v).locale(o.value);return[e,e.add(60,"m")]}]),t("set-picker-option",["getRangeAvailableTime",z]),(e,n)=>e.actualVisible?(Ba(),Na("div",{key:0,class:j([Ot(r).b("range-picker"),Ot(s).b("panel")])},[Pa("div",{class:j(Ot(r).be("range-picker","content"))},[Pa("div",{class:j(Ot(r).be("range-picker","cell"))},[Pa("div",{class:j(Ot(r).be("range-picker","header"))},X(Ot(a)("el.datepicker.startTime")),3),Pa("div",{class:j(Ot(h))},[ja(rV,{ref:"minSpinner",role:"start","show-seconds":Ot(w),"am-pm-mode":Ot(x),"arrow-control":Ot(u),"spinner-date":Ot(g),"disabled-hours":A,"disabled-minutes":V,"disabled-seconds":B,onChange:C,onSetOption:Ot(H),onSelectRange:E},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2),Pa("div",{class:j(Ot(r).be("range-picker","cell"))},[Pa("div",{class:j(Ot(r).be("range-picker","header"))},X(Ot(a)("el.datepicker.endTime")),3),Pa("div",{class:j(Ot(m))},[ja(rV,{ref:"maxSpinner",role:"end","show-seconds":Ot(w),"am-pm-mode":Ot(x),"arrow-control":Ot(u),"spinner-date":Ot(y),"disabled-hours":A,"disabled-minutes":V,"disabled-seconds":B,onChange:k,onSetOption:Ot(H),onSelectRange:T},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2)],2),Pa("div",{class:j(Ot(r).be("panel","footer"))},[Pa("button",{type:"button",class:j([Ot(r).be("panel","btn"),"cancel"]),onClick:e=>{t("pick",b.value,!1)}},X(Ot(a)("el.datepicker.cancel")),11,["onClick"]),Pa("button",{type:"button",class:j([Ot(r).be("panel","btn"),"confirm"]),disabled:Ot(_),onClick:e=>((e=!1)=>{t("pick",[g.value,y.value],e)})()},X(Ot(a)("el.datepicker.confirm")),11,["disabled","onClick"])],2)],2)):Ua("v-if",!0)}});var cV=hf(uV,[["__file","panel-time-range.vue"]]);mE.extend(vA);const dV=zf(Hn({name:"ElTimePicker",install:null,props:{...WA,isRange:{type:Boolean,default:!1}},emits:[cf],setup(e,t){const n=St(),[l,a]=e.isRange?["timerange",cV]:["time",iV],o=e=>t.emit(cf,e);return Fl("ElPopperOptions",e.popperOptions),t.expose({focus:()=>{var e;null==(e=n.value)||e.focus()},blur:()=>{var e;null==(e=n.value)||e.blur()},handleOpen:()=>{var e;null==(e=n.value)||e.handleOpen()},handleClose:()=>{var e;null==(e=n.value)||e.handleClose()}}),()=>{var t;const r=null!=(t=e.format)?t:DA;return ja(GA,Za(e,{ref:n,type:l,format:r,"onUpdate:modelValue":o}),{default:e=>ja(a,e,null)})}}})),pV=Symbol(),fV=qp({...WA,type:{type:String,default:"date"}}),vV=["date","dates","year","years","month","months","week","range"],hV=qp({disabledDate:{type:Function},date:{type:Object,required:!0},minDate:{type:Object},maxDate:{type:Object},parsedValue:{type:[Object,Array]},rangeState:{type:Object,default:()=>({endDate:null,selecting:!1})}}),mV=qp({type:{type:String,required:!0,values:["year","years","month","months","date","dates","week","datetime","datetimerange","daterange","monthrange","yearrange"]},dateFormat:String,timeFormat:String,showNow:{type:Boolean,default:!0}}),gV=qp({unlinkPanels:Boolean,parsedValue:{type:Array}}),yV=e=>({type:String,values:vV,default:e}),bV=qp({...mV,parsedValue:{type:[Object,Array]},visible:{type:Boolean},format:{type:String,default:""}}),wV=e=>{if(!d(e))return!1;const[t,n]=e;return mE.isDayjs(t)&&mE.isDayjs(n)&&mE(t).isValid()&&mE(n).isValid()&&t.isSameOrBefore(n)},xV=(e,{lang:t,unit:n,unlinkPanels:l})=>{let a;if(d(e)){let[a,o]=e.map((e=>mE(e).locale(t)));return l||(o=a.add(1,n)),[a,o]}return a=e?mE(e):mE(),a=a.locale(t),[a,a.add(1,n)]},CV=(e,t,n)=>{const l=mE().locale(n).startOf("month").month(t).year(e),a=l.daysInMonth();return yE(a).map((e=>l.add(e,"day").toDate()))},kV=(e,t,n,l)=>{const a=mE().year(e).month(t).startOf("month"),o=CV(e,t,n).find((e=>!(null==l?void 0:l(e))));return o?mE(o).locale(n):a.locale(n)},SV=(e,t,n)=>{const l=e.year();if(!(null==n?void 0:n(e.toDate())))return e.locale(t);const a=e.month();if(!CV(l,a,t).every(n))return kV(l,a,t,n);for(let o=0;o<12;o++)if(!CV(l,o,t).every(n))return kV(l,o,t,n);return e},_V=(e,t,n)=>{if(d(e))return e.map((e=>_V(e,t,n)));if("string"==typeof e){const t=mE(e);if(!t.isValid())return t}return mE(e,t).locale(n)},MV=qp({...hV,cellClassName:{type:Function},showWeekNumber:Boolean,selectionMode:yV("date")}),EV=(e="")=>["normal","today"].includes(e),OV=(e,t)=>{const{lang:n}=jp(),l=St(),a=St(),o=St(),r=St(),s=St([[],[],[],[],[],[]]);let i=!1;const u=e.date.$locale().weekStart||7,c=e.date.locale("en").localeData().weekdaysShort().map((e=>e.toLowerCase())),p=mo((()=>u>3?7-u:-u)),f=mo((()=>{const t=e.date.startOf("month");return t.subtract(t.day()||7,"day")})),v=mo((()=>c.concat(c).slice(u,u+7))),h=mo((()=>Eu(Ot(w)).some((e=>e.isCurrent)))),m=mo((()=>{const t=e.date.startOf("month");return{startOfMonthDay:t.day()||7,dateCountOfMonth:t.daysInMonth(),dateCountOfLastMonth:t.subtract(1,"month").daysInMonth()}})),g=mo((()=>"dates"===e.selectionMode?YO(e.parsedValue):[])),y=(t,{columnIndex:n,rowIndex:l},a)=>{const{disabledDate:o,cellClassName:r}=e,s=Ot(g),i=((e,{count:t,rowIndex:n,columnIndex:l})=>{const{startOfMonthDay:a,dateCountOfMonth:o,dateCountOfLastMonth:r}=Ot(m),s=Ot(p);if(!(n>=0&&n<=1))return t<=o?e.text=t:(e.text=t-o,e.type="next-month"),!0;{const o=a+s<0?7+a+s:a+s;if(l+7*n>=o)return e.text=t,!0;e.text=r-(o-l%7)+1+7*n,e.type="prev-month"}return!1})(t,{count:a,rowIndex:l,columnIndex:n}),u=t.dayjs.toDate();return t.selected=s.find((e=>e.isSame(t.dayjs,"day"))),t.isSelected=!!t.selected,t.isCurrent=C(t),t.disabled=null==o?void 0:o(u),t.customClass=null==r?void 0:r(u),i},b=t=>{if("week"===e.selectionMode){const[n,l]=e.showWeekNumber?[1,7]:[0,6],a=M(t[n+1]);t[n].inRange=a,t[n].start=a,t[l].inRange=a,t[l].end=a}},w=mo((()=>{const{minDate:t,maxDate:l,rangeState:a,showWeekNumber:o}=e,r=Ot(p),i=Ot(s),u="day";let c=1;if(o)for(let e=0;e<6;e++)i[e][0]||(i[e][0]={type:"week",text:Ot(f).add(7*e+1,u).week()});return((e,t,{columnIndexOffset:n,startDate:l,nextEndDate:a,now:o,unit:r,relativeDateGetter:s,setCellMetadata:i,setRowMetadata:u})=>{for(let c=0;c{o(),_j(this)}),{checked:!1!==e});o()}const a=this.parent;a&&0!==a.level&&(n||_j(a))}getChildren(e=!1){if(0===this.level)return this.data;const t=this.data;if(!t)return null;const n=this.store.props;let l="children";return n&&(l=n.children||"children"),void 0===t[l]&&(t[l]=null),e&&!t[l]&&(t[l]=[]),t[l]}updateChildren(){const e=this.getChildren()||[],t=this.childNodes.map((e=>e.data)),n={},l=[];e.forEach(((e,a)=>{const o=e[wj];!!o&&t.findIndex((e=>e[wj]===o))>=0?n[o]={index:a,data:e}:l.push({index:a,data:e})})),this.store.lazy||t.forEach((e=>{n[e[wj]]||this.removeChildByData(e)})),l.forEach((({index:e,data:t})=>{this.insertChild({data:t},e)})),this.updateLeafState()}loadData(e,t={}){if(!0!==this.store.lazy||!this.store.load||this.loaded||this.loading&&!Object.keys(t).length)e&&e.call(this);else{this.loading=!0;const n=n=>{this.childNodes=[],this.doCreateChildren(n,t),this.loaded=!0,this.loading=!1,this.updateLeafState(),e&&e.call(this,n)},l=()=>{this.loading=!1};this.store.load(this,n,l)}}eachNode(e){const t=[this];for(;t.length;){const n=t.shift();t.unshift(...n.childNodes),e(n)}}reInitChecked(){this.store.checkStrictly||_j(this)}};class Tj{constructor(e){this.currentNode=null,this.currentNodeKey=null;for(const t in e)c(e,t)&&(this[t]=e[t]);this.nodesMap={}}initialize(){if(this.root=new Oj({data:this.data,store:this}),this.root.initialize(),this.lazy&&this.load){(0,this.load)(this.root,(e=>{this.root.doCreateChildren(e),this._initDefaultCheckedNodes()}))}else this._initDefaultCheckedNodes()}filter(e){const t=this.filterNodeMethod,n=this.lazy,l=async function(a){const o=a.root?a.root.childNodes:a.childNodes;for(const[n,r]of o.entries())r.visible=t.call(r,e,r.data,r),n%80==0&&n>0&&await Qt(),l(r);if(!a.visible&&o.length){let e=!0;e=!o.some((e=>e.visible)),a.root?a.root.visible=!1===e:a.visible=!1===e}e&&a.visible&&!a.isLeaf&&(n&&!a.loaded||a.expand())};l(this)}setData(e){e!==this.root.data?(this.nodesMap={},this.root.setData(e),this._initDefaultCheckedNodes(),this.setCurrentNodeKey(this.currentNodeKey)):this.root.updateChildren()}getNode(e){if(e instanceof Oj)return e;const t=y(e)?Cj(this.key,e):e;return this.nodesMap[t]||null}insertBefore(e,t){const n=this.getNode(t);n.parent.insertBefore({data:e},n)}insertAfter(e,t){const n=this.getNode(t);n.parent.insertAfter({data:e},n)}remove(e){const t=this.getNode(e);t&&t.parent&&(t===this.currentNode&&(this.currentNode=null),t.parent.removeChild(t))}append(e,t){const n=Id(t)?this.root:this.getNode(t);n&&n.insertChild({data:e})}_initDefaultCheckedNodes(){const e=this.defaultCheckedKeys||[],t=this.nodesMap;e.forEach((e=>{const n=t[e];n&&n.setChecked(!0,!this.checkStrictly)}))}_initDefaultCheckedNode(e){(this.defaultCheckedKeys||[]).includes(e.key)&&e.setChecked(!0,!this.checkStrictly)}setDefaultCheckedKey(e){e!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=e,this._initDefaultCheckedNodes())}registerNode(e){const t=this.key;if(e&&e.data)if(t){void 0!==e.key&&(this.nodesMap[e.key]=e)}else this.nodesMap[e.id]=e}deregisterNode(e){this.key&&e&&e.data&&(e.childNodes.forEach((e=>{this.deregisterNode(e)})),delete this.nodesMap[e.key])}getCheckedNodes(e=!1,t=!1){const n=[],l=function(a){(a.root?a.root.childNodes:a.childNodes).forEach((a=>{(a.checked||t&&a.indeterminate)&&(!e||e&&a.isLeaf)&&n.push(a.data),l(a)}))};return l(this),n}getCheckedKeys(e=!1){return this.getCheckedNodes(e).map((e=>(e||{})[this.key]))}getHalfCheckedNodes(){const e=[],t=function(n){(n.root?n.root.childNodes:n.childNodes).forEach((n=>{n.indeterminate&&e.push(n.data),t(n)}))};return t(this),e}getHalfCheckedKeys(){return this.getHalfCheckedNodes().map((e=>(e||{})[this.key]))}_getAllNodes(){const e=[],t=this.nodesMap;for(const n in t)c(t,n)&&e.push(t[n]);return e}updateChildren(e,t){const n=this.nodesMap[e];if(!n)return;const l=n.childNodes;for(let a=l.length-1;a>=0;a--){const e=l[a];this.remove(e.data)}for(let a=0,o=t.length;a