diff --git a/src/BootstrapBlazor.Shared/Samples/Table/TablesWrap.razor b/src/BootstrapBlazor.Shared/Samples/Table/TablesWrap.razor index 95a7a47e1eac5f834c4580fbc33d983a7ecf8712..e324cc093f1cac7c813970988ec6fb91beaace91 100644 --- a/src/BootstrapBlazor.Shared/Samples/Table/TablesWrap.razor +++ b/src/BootstrapBlazor.Shared/Samples/Table/TablesWrap.razor @@ -81,7 +81,7 @@ diff --git a/src/BootstrapBlazor/Components/Button/PopConfirmButtonBase.cs b/src/BootstrapBlazor/Components/Button/PopConfirmButtonBase.cs index 9b730bd80f0be01af544e5dd1c7d90ea5e2062a1..e6afff51795d580cb71026b17242fe1d64b74474 100644 --- a/src/BootstrapBlazor/Components/Button/PopConfirmButtonBase.cs +++ b/src/BootstrapBlazor/Components/Button/PopConfirmButtonBase.cs @@ -101,11 +101,6 @@ public abstract class PopConfirmButtonBase : ButtonBase /// protected string? ElementType => IsLink ? null : "button"; - /// - /// - /// - protected string? PlacementString => Placement == Placement.Auto ? null : Placement.ToDescriptionString(); - /// /// OnInitialized 方法 /// diff --git a/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor b/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor index 3f4e145b248e26b2b1f8384dd88673442b95a16f..5eaf61628e5e0bfc7266684cdc1d0d870058a71a 100644 --- a/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor +++ b/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor @@ -80,7 +80,7 @@ } else { - + } @@ -144,20 +144,20 @@
@if (AllowNull) { - + }
@if (MinValue == null && MaxValue == null) { - + } - + } diff --git a/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor.cs b/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor.cs index fd005983411a112bf3595793f271be05658a4a47..e8832b16aa0ac82deba4742e5f570c03070f79d3 100644 --- a/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor.cs +++ b/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor.cs @@ -470,7 +470,7 @@ public sealed partial class DatePickerBody /// 设置组件显示视图方法 /// /// - private Task SwitchView(DatePickerViewMode view) + private async Task SwitchView(DatePickerViewMode view) { ShowTimePicker = false; if (AllowSwitchModes[ViewMode].Contains(view)) @@ -478,7 +478,10 @@ public sealed partial class DatePickerBody CurrentViewMode = view; StateHasChanged(); } - return Task.CompletedTask; + else if (AutoClose) + { + await ClickConfirmButton(); + } } /// @@ -583,7 +586,7 @@ public sealed partial class DatePickerBody ShowTimePicker = false; if (OnClear != null) { - await OnClear.Invoke(); + await OnClear(); } } @@ -599,7 +602,7 @@ public sealed partial class DatePickerBody } if (OnConfirm != null) { - await OnConfirm.Invoke(); + await OnConfirm(); } } diff --git a/src/BootstrapBlazor/Components/DateTimePicker/DateTimePicker.razor b/src/BootstrapBlazor/Components/DateTimePicker/DateTimePicker.razor index 9b6306ae696e7dac62323dd442e513813e42e420..64d35d705d20d947c9bac57a5031d0320f324764 100644 --- a/src/BootstrapBlazor/Components/DateTimePicker/DateTimePicker.razor +++ b/src/BootstrapBlazor/Components/DateTimePicker/DateTimePicker.razor @@ -6,7 +6,7 @@ { } -
+
.AddClass(Placement.ToDescriptionString(), Placement != Placement.Auto) .Build(); + private string? TabIndexString => ValidateForm != null ? "0" : null; + /// /// 获得 Placeholder 显示字符串 /// @@ -222,7 +224,6 @@ public sealed partial class DateTimePicker { await OnDateTimeChanged(Value); } - StateHasChanged(); } /// @@ -230,14 +231,13 @@ public sealed partial class DateTimePicker /// private async Task OnConfirm() { - if (AutoClose) - { - await JSRuntime.InvokeVoidAsync(identifier: "bb.Dropdown.invoke", $"#{Id}", "hide"); - } - if (OnDateTimeChanged != null) { await OnDateTimeChanged(Value); } + if (AutoClose) + { + await JSRuntime.InvokeVoidAsync(identifier: "bb.Dropdown.invoke", $"#{Id}", "hide"); + } } } diff --git a/src/BootstrapBlazor/Components/DateTimeRange/DateTimeRange.razor b/src/BootstrapBlazor/Components/DateTimeRange/DateTimeRange.razor index 919ec763e5c0305576091bc986ddd6345670d6ed..0d7c0b8cdf56e9db6502a9f1a1199a0573af666a 100644 --- a/src/BootstrapBlazor/Components/DateTimeRange/DateTimeRange.razor +++ b/src/BootstrapBlazor/Components/DateTimeRange/DateTimeRange.razor @@ -44,20 +44,20 @@
@if (AllowNull) { - + }
@if (ShowToday) { - + } - +
diff --git a/src/BootstrapBlazor/Components/Validate/ValidateBase.cs b/src/BootstrapBlazor/Components/Validate/ValidateBase.cs index 00a5e742cba17e67a8a6c50ec21a9a2b4de9adb5..4932a713ef1a84662f6a43c2449204c7f9f05378 100644 --- a/src/BootstrapBlazor/Components/Validate/ValidateBase.cs +++ b/src/BootstrapBlazor/Components/Validate/ValidateBase.cs @@ -302,15 +302,20 @@ public abstract class ValidateBase : DisplayBase, IValidateCompo { await base.OnAfterRenderAsync(firstRender); - if (!firstRender && !string.IsNullOrEmpty(ErrorMessage)) + if (!firstRender) { - if (IsValid.HasValue && IsValid.Value) + if (IsValid.HasValue) { - await RemoveValidResult(); - } - else - { - await ShowValidResult(); + var valid = IsValid.Value; + IsValid = null; + if (valid) + { + await RemoveValidResult(); + } + else + { + await ShowValidResult(); + } } } } @@ -449,20 +454,20 @@ public abstract class ValidateBase : DisplayBase, IValidateCompo } /// - /// + /// 增加客户端 Tooltip 方法 /// /// protected virtual async ValueTask ShowValidResult() { var id = RetrieveId(); - if (!string.IsNullOrEmpty(id)) + if (!string.IsNullOrEmpty(id) && !string.IsNullOrEmpty(ErrorMessage)) { await JSRuntime.InvokeVoidAsync(identifier: "bb.Tooltip.init", $"#{id}", ErrorMessage); } } /// - /// + /// 移除客户端 Tooltip 方法 /// /// protected virtual async ValueTask RemoveValidResult() @@ -501,7 +506,10 @@ public abstract class ValidateBase : DisplayBase, IValidateCompo ValidateForm.TryRemoveValidator((FieldIdentifier.Value.FieldName, FieldIdentifier.Value.Model.GetType()), out _); } - await RemoveValidResult(); + if (IsValid.HasValue && !IsValid.Value) + { + await RemoveValidResult(); + } } } diff --git a/src/BootstrapBlazor/Components/ValidateForm/ValidateForm.razor b/src/BootstrapBlazor/Components/ValidateForm/ValidateForm.razor index 627e8b7995ab91c2207e806db8ba9f90a9771ed0..ad9292bc0e96bf5652102a40c1095dbbabf4d1b6 100644 --- a/src/BootstrapBlazor/Components/ValidateForm/ValidateForm.razor +++ b/src/BootstrapBlazor/Components/ValidateForm/ValidateForm.razor @@ -3,7 +3,7 @@ @if (Model != null) { - + @ChildContent diff --git a/src/BootstrapBlazor/wwwroot/bundle/bootstrap.blazor.min.js b/src/BootstrapBlazor/wwwroot/bundle/bootstrap.blazor.min.js index 075726ee9c347ffb2d396c5945939a407424e4e6..f0f13434f259e197e0a3dc923b5ab2acd3608734 100644 --- a/src/BootstrapBlazor/wwwroot/bundle/bootstrap.blazor.min.js +++ b/src/BootstrapBlazor/wwwroot/bundle/bootstrap.blazor.min.js @@ -1 +1 @@ -(function(n,t){typeof define=="function"&&(define.amd||define.cmd)?define(function(){return t(n)}):typeof exports=="object"?module.exports=t(n):n.Browser=t(n)})(typeof self!="undefined"?self:this,function(n){var r=n||{},t=typeof n.navigator!="undefined"?n.navigator:{},i=function(n,i){var r=t.mimeTypes;for(var u in r)if(r[u][n]==i)return!0;return!1};return function(n){var u=n||t.userAgent||{},f=this,e={Trident:u.indexOf("Trident")>-1||u.indexOf("NET CLR")>-1,Presto:u.indexOf("Presto")>-1,WebKit:u.indexOf("AppleWebKit")>-1,Gecko:u.indexOf("Gecko/")>-1,KHTML:u.indexOf("KHTML/")>-1,Safari:u.indexOf("Safari")>-1,Chrome:u.indexOf("Chrome")>-1||u.indexOf("CriOS")>-1,IE:u.indexOf("MSIE")>-1||u.indexOf("Trident")>-1,Edge:u.indexOf("Edge")>-1||u.indexOf("Edg/")>-1,Firefox:u.indexOf("Firefox")>-1||u.indexOf("FxiOS")>-1,"Firefox Focus":u.indexOf("Focus")>-1,Chromium:u.indexOf("Chromium")>-1,Opera:u.indexOf("Opera")>-1||u.indexOf("OPR")>-1,Vivaldi:u.indexOf("Vivaldi")>-1,Yandex:u.indexOf("YaBrowser")>-1,Arora:u.indexOf("Arora")>-1,Lunascape:u.indexOf("Lunascape")>-1,QupZilla:u.indexOf("QupZilla")>-1,"Coc Coc":u.indexOf("coc_coc_browser")>-1,Kindle:u.indexOf("Kindle")>-1||u.indexOf("Silk/")>-1,Iceweasel:u.indexOf("Iceweasel")>-1,Konqueror:u.indexOf("Konqueror")>-1,Iceape:u.indexOf("Iceape")>-1,SeaMonkey:u.indexOf("SeaMonkey")>-1,Epiphany:u.indexOf("Epiphany")>-1,"360":u.indexOf("QihooBrowser")>-1||u.indexOf("QHBrowser")>-1,"360EE":u.indexOf("360EE")>-1,"360SE":u.indexOf("360SE")>-1,UC:u.indexOf("UCBrowser")>-1||u.indexOf(" UBrowser")>-1||u.indexOf("UCWEB")>-1,QQBrowser:u.indexOf("QQBrowser")>-1,QQ:u.indexOf("QQ/")>-1,Baidu:u.indexOf("Baidu")>-1||u.indexOf("BIDUBrowser")>-1||u.indexOf("baidubrowser")>-1||u.indexOf("baiduboxapp")>-1||u.indexOf("BaiduHD")>-1,Maxthon:u.indexOf("Maxthon")>-1,Sogou:u.indexOf("MetaSr")>-1||u.indexOf("Sogou")>-1,Liebao:u.indexOf("LBBROWSER")>-1||u.indexOf("LieBaoFast")>-1,"2345Explorer":u.indexOf("2345Explorer")>-1||u.indexOf("Mb2345Browser")>-1||u.indexOf("2345chrome")>-1,"115Browser":u.indexOf("115Browser")>-1,TheWorld:u.indexOf("TheWorld")>-1,XiaoMi:u.indexOf("MiuiBrowser")>-1,Quark:u.indexOf("Quark")>-1,Qiyu:u.indexOf("Qiyu")>-1,Wechat:u.indexOf("MicroMessenger")>-1,WechatWork:u.indexOf("wxwork/")>-1,Taobao:u.indexOf("AliApp(TB")>-1,Alipay:u.indexOf("AliApp(AP")>-1,Weibo:u.indexOf("Weibo")>-1,Douban:u.indexOf("com.douban.frodo")>-1,Suning:u.indexOf("SNEBUY-APP")>-1,iQiYi:u.indexOf("IqiyiApp")>-1,DingTalk:u.indexOf("DingTalk")>-1,Huawei:u.indexOf("HuaweiBrowser")>-1||u.indexOf("HUAWEI/")>-1||u.indexOf("HONOR")>-1,Vivo:u.indexOf("VivoBrowser")>-1,Windows:u.indexOf("Windows")>-1,Linux:u.indexOf("Linux")>-1||u.indexOf("X11")>-1,"Mac OS":u.indexOf("Macintosh")>-1,Android:u.indexOf("Android")>-1||u.indexOf("Adr")>-1,HarmonyOS:u.indexOf("HarmonyOS")>-1,Ubuntu:u.indexOf("Ubuntu")>-1,FreeBSD:u.indexOf("FreeBSD")>-1,Debian:u.indexOf("Debian")>-1,"Windows Phone":u.indexOf("IEMobile")>-1||u.indexOf("Windows Phone")>-1,BlackBerry:u.indexOf("BlackBerry")>-1||u.indexOf("RIM")>-1,MeeGo:u.indexOf("MeeGo")>-1,Symbian:u.indexOf("Symbian")>-1,iOS:u.indexOf("like Mac OS X")>-1,"Chrome OS":u.indexOf("CrOS")>-1,WebOS:u.indexOf("hpwOS")>-1,Mobile:u.indexOf("Mobi")>-1||u.indexOf("iPh")>-1||u.indexOf("480")>-1,Tablet:u.indexOf("Tablet")>-1||u.indexOf("Pad")>-1||u.indexOf("Nexus 7")>-1},o=!1,s,h,c,l,v,y,a;r.chrome&&(s=u.replace(/^.*Chrome\/([\d]+).*$/,"$1"),r.chrome.adblock2345||r.chrome.common2345?e["2345Explorer"]=!0:i("type","application/360softmgrplugin")||i("type","application/mozilla-npqihooquicklogin")?o=!0:s>36&&r.showModalDialog?o=!0:s>45&&(o=i("type","application/vnd.chromium.remoting-viewer"),!o&&s>=69&&(o=i("type","application/hwepass2001.installepass2001")||i("type","application/asx"))));e.Mobile?e.Mobile=!(u.indexOf("iPad")>-1):o&&(i("type","application/gameplugin")?e["360SE"]=!0:t&&typeof t.connection!="undefined"&&typeof t.connection.saveData=="undefined"?e["360SE"]=!0:e["360EE"]=!0);e.Baidu&&e.Opera?e.Baidu=!1:e.iOS&&(e.Safari=!0);h={engine:["WebKit","Trident","Gecko","Presto","KHTML"],browser:["Safari","Chrome","Edge","IE","Firefox","Firefox Focus","Chromium","Opera","Vivaldi","Yandex","Arora","Lunascape","QupZilla","Coc Coc","Kindle","Iceweasel","Konqueror","Iceape","SeaMonkey","Epiphany","XiaoMi","Vivo","360","360SE","360EE","UC","QQBrowser","QQ","Huawei","Baidu","Maxthon","Sogou","Liebao","2345Explorer","115Browser","TheWorld","Quark","Qiyu","Wechat","WechatWork","Taobao","Alipay","Weibo","Douban","Suning","iQiYi","DingTalk"],os:["Windows","Linux","Mac OS","Android","HarmonyOS","Ubuntu","FreeBSD","Debian","iOS","Windows Phone","BlackBerry","MeeGo","Symbian","Chrome OS","WebOS"],device:["Mobile","Tablet"]};f.device="PC";f.language=function(){var i=t.browserLanguage||t.language,n=i.split("-");return n[1]&&(n[1]=n[1].toUpperCase()),n.join("_")}();for(c in h)for(l=0;l-1&&(n=u.replace(/^.*LieBaoFast\/([\d.]+).*$/,"$1")),t={"57":"6.5","49":"6.0","46":"5.9","42":"5.3","39":"5.2","34":"5.0","29":"4.5","21":"4.0"},i=u.replace(/^.*Chrome\/([\d]+).*$/,"$1"),n||t[i]||""},"2345Explorer":function(){var n=navigator.userAgent.replace(/^.*Chrome\/([\d]+).*$/,"$1");return{"69":"10.0","55":"9.9"}[n]||u.replace(/^.*2345Explorer\/([\d.]+).*$/,"$1").replace(/^.*Mb2345Browser\/([\d.]+).*$/,"$1")},"115Browser":function(){return u.replace(/^.*115Browser\/([\d.]+).*$/,"$1")},TheWorld:function(){return u.replace(/^.*TheWorld ([\d.]+).*$/,"$1")},XiaoMi:function(){return u.replace(/^.*MiuiBrowser\/([\d.]+).*$/,"$1")},Vivo:function(){return u.replace(/^.*VivoBrowser\/([\d.]+).*$/,"$1")},Quark:function(){return u.replace(/^.*Quark\/([\d.]+).*$/,"$1")},Qiyu:function(){return u.replace(/^.*Qiyu\/([\d.]+).*$/,"$1")},Wechat:function(){return u.replace(/^.*MicroMessenger\/([\d.]+).*$/,"$1")},WechatWork:function(){return u.replace(/^.*wxwork\/([\d.]+).*$/,"$1")},Taobao:function(){return u.replace(/^.*AliApp\(TB\/([\d.]+).*$/,"$1")},Alipay:function(){return u.replace(/^.*AliApp\(AP\/([\d.]+).*$/,"$1")},Weibo:function(){return u.replace(/^.*weibo__([\d.]+).*$/,"$1")},Douban:function(){return u.replace(/^.*com.douban.frodo\/([\d.]+).*$/,"$1")},Suning:function(){return u.replace(/^.*SNEBUY-APP([\d.]+).*$/,"$1")},iQiYi:function(){return u.replace(/^.*IqiyiVersion\/([\d.]+).*$/,"$1")},DingTalk:function(){return u.replace(/^.*DingTalk\/([\d.]+).*$/,"$1")},Huawei:function(){return u.replace(/^.*Version\/([\d.]+).*$/,"$1").replace(/^.*HuaweiBrowser\/([\d.]+).*$/,"$1")}};f.version="";a[f.browser]&&(f.version=a[f.browser](),f.version==u&&(f.version=""));f.browser=="Chrome"&&u.match(/\S+Browser/)&&(f.browser=u.match(/\S+Browser/)[0],f.version=u.replace(/^.*Browser\/([\d.]+).*$/,"$1"));f.browser=="Firefox"&&(window.clientInformation||!window.u2f)&&(f.browser+=" Nightly");f.browser=="Edge"?f.engine=f.version>"75"?"Blink":"EdgeHTML":e.Chrome&&f.engine=="WebKit"&&parseInt(a.Chrome())>27?f.engine="Blink":f.browser=="Opera"&&parseInt(f.version)>12?f.engine="Blink":f.browser=="Yandex"&&(f.engine="Blink")}}),function(n){function r(t){return this.each(function(){var u=n(this),r=u.data(i.DATA_KEY),f=typeof t=="object"&&t;r?r.update(f):u.data(i.DATA_KEY,r=new i(this,f))})}var i=function(t,i){this.$element=n(t);this.options=n.extend({},i);this.init()},t;i.VERSION="5.1.0";i.Author="argo@163.com";i.DATA_KEY="lgb.SliderCaptcha";t=i.prototype;t.init=function(){this.initDOM();this.initImg();this.bindEvents()};t.initDOM=function(){var u=this.$element.find("canvas:first")[0].getContext("2d"),t=this.$element.find("canvas:last")[0],f=t.getContext("2d"),e=this.$element.find(".captcha-load"),i=this.$element.find(".captcha-footer"),o=i.find(".captcha-bar-bg"),s=this.$element.find(".captcha-bar"),r=this.$element.find(".captcha-bar-text"),h=this.$element.find(".captcha-refresh"),c=r.attr("data-text");n.extend(this,{canvas:u,block:t,bar:f,$load:e,$footer:i,$barLeft:o,$slider:s,$barText:r,$refresh:h,barText:c})};t.initImg=function(){var i=function(n,t){var i=this.options.sideLength,f=this.options.diameter,e=Math.PI,r=this.options.offsetX,u=this.options.offsetY;n.beginPath();n.moveTo(r,u);n.arc(r+i/2,u-f+2,f,.72*e,2.26*e);n.lineTo(r+i,u);n.arc(r+i+f-2,u+i/2,f,1.21*e,2.78*e);n.lineTo(r+i,u+i);n.lineTo(r,u+i);n.arc(r+f-2,u+i/2,f+.4,2.76*e,1.24*e,!0);n.lineTo(r,u);n.lineWidth=2;n.fillStyle="rgba(255, 255, 255, 0.7)";n.strokeStyle="rgba(255, 255, 255, 0.7)";n.stroke();n[t]();n.globalCompositeOperation="destination-over"},t=new Image,n;t.src=this.options.imageUrl;n=this;t.onload=function(){i.call(n,n.canvas,"fill");i.call(n,n.bar,"clip");n.canvas.drawImage(t,0,0,n.options.width,n.options.height);n.bar.drawImage(t,0,0,n.options.width,n.options.height);var r=n.options.offsetY-n.options.diameter*2-1,u=n.bar.getImageData(n.options.offsetX-3,r,n.options.barWidth,n.options.barWidth);n.block.width=n.options.barWidth;n.bar.putImageData(u,0,r)};t.onerror=function(){n.$load.text($load.attr("data-failed")).addClass("text-danger")}};t.bindEvents=function(){var n=this,t=0,i=0,r=[];this.$slider.drag(function(r){n.$barText.addClass("d-none");t=r.clientX||r.touches[0].clientX;i=r.clientY||r.touches[0].clientY},function(u){var o=u.clientX||u.touches[0].clientX,s=u.clientY||u.touches[0].clientY,f=o-t,h=s-i,e;if(f<0||f+40>n.options.width)return!1;n.$slider.css({left:f-1+"px"});e=(n.options.width-60)/(n.options.width-40)*f;n.block.style.left=e+"px";n.$footer.addClass("is-move");n.$barLeft.css({width:f+4+"px"});r.push(Math.round(h))},function(i){var f=i.clientX||i.changedTouches[0].clientX,u;n.$footer.removeClass("is-move");u=Math.ceil((n.options.width-60)/(n.options.width-40)*(f-t)+3);n.verify(u,r)});this.$refresh.on("click",function(){n.options.barText=n.$barText.attr("data-text")})};t.verify=function(n,t){var r=this.options.remoteObj.obj,u=this.options.remoteObj.method,i=this;r.invokeMethodAsync(u,n,t).then(function(n){n?(i.$footer.addClass("is-valid"),i.options.barText=i.$barText.attr("data-text")):(i.$footer.addClass("is-invalid"),setTimeout(function(){i.$refresh.trigger("click");i.options.barText=i.$barText.attr("data-try")},1e3))})};t.update=function(t){n.extend(this.options,t);this.resetCanvas();this.initImg();this.resetBar()};t.resetCanvas=function(){this.canvas.clearRect(0,0,this.options.width,this.options.height);this.bar.clearRect(0,0,this.options.width,this.options.height);this.block.width=this.options.width;this.block.style.left=0;this.$load.text(this.$load.attr("data-load")).removeClass("text-danger")};t.resetBar=function(){this.$footer.removeClass("is-invalid is-valid");this.$barText.text(this.options.barText).removeClass("d-none");this.$slider.css({left:"0px"});this.$barLeft.css({width:"0px"})};n.fn.sliderCaptcha=r;n.fn.sliderCaptcha.Constructor=i;n.extend({captcha:function(t,i,r,u){u.remoteObj={obj:i,method:r};n(t).sliderCaptcha(u)}})}(jQuery),function(n,t){typeof exports=="object"&&typeof module!="undefined"?module.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis!="undefined"?globalThis:n||self,n.bb=t())}(this,function(){class a{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!');}_getConfig(n){return n=this._mergeConfigObj(n,this._element),n=this._configAfterMerge(n),this._typeCheckConfig(n),n}_configAfterMerge(n){return n}_mergeConfigObj(n,t){const r=i(t)?bootstrap.Manipulator.getDataAttribute(t,"config"):{},u=i(t)?bootstrap.Manipulator.getDataAttributes(t):{};return n=typeof n=="object"?n:{},{...this.constructor.Default,...(typeof r=="object"?r:{}),...u,...n}}_typeCheckConfig(n,t=this.constructor.DefaultType){for(const r of Object.keys(t)){const u=t[r],f=n[r],e=i(f)?"element":d(f);if(!new RegExp(u).test(e))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${r}" provided type "${e}" but expected type "${u}".`);}}}const v="1.0.0";class y extends a{constructor(n,t){(super(),n)&&(this._element=n,this._config=this._getConfig(t),h.set(this._element,this.constructor.DATA_KEY,this))}dispose(){h.remove(this._element,this.constructor.DATA_KEY);for(const n of Object.getOwnPropertyNames(this))this[n]=null}static getInstance(n){return h.get(r(n),this.DATA_KEY)}static getOrCreateInstance(n,t={}){return this.getInstance(n)||new this(n,typeof t=="object"?t:null)}static get VERSION(){return v}static get DATA_KEY(){return`bb.${this.NAME}`}}const p="Tooltip";class f extends y{constructor(n,t){super(n,t);this._getOrCreateInstance();this._setListeners()}_configAfterMerge(n){let t=this._element.classList.contains(n.invalidClass)?n.invalidClass:this._element.getAttribute("data-bs-customclass");return{...{customClass:t||""},...super._configAfterMerge(n)}}_getOrCreateInstance(){this._tooltip=bootstrap.Tooltip.getOrCreateInstance(this._element,this._config)}_setListeners(){this._inserted=()=>{const t=n.getDescribedElement(this._element);t!==null&&t.classList.add(this._config.invalidClass)};bootstrap.EventHandler.on(this._element,"inserted.bs.tooltip",`.${this._config.invalidClass}`,this._inserted)}show(){this._isShown()||this._tooltip.show()}hide(){this._isShown()&&this._tooltip.hide()}dispose(){this._tooltip.tip!==null&&this._tooltip.dispose();super.dispose()}_isShown(){return this._tooltip===null?!1:this._tooltip._isShown()}static _create(n,t){new bb.Tooltip(n,t)}static init(n,t){if(n=r(n),n){const r={title:t},i=this.getInstance(n);if(i!==null&&i._isShown()){i.hide();const t=o(n,15),u=window.setTimeout(()=>{window.clearTimeout(u),i.dispose(),this._create(n,r)},t)}else this._create(n,r);const u=n.closest("form");if(u){const t=u.querySelector(`.${this.Default.invalidClass}`);n===t&&n.focus()}}}static dispose(n){if(n=r(n),n){const t=this.getInstance(n);t&&t.dispose()}}static get Default(){return{invalidClass:"is-invalid"}}static get NAME(){return p}}class e extends f{_getOrCreateInstance(){this._tooltip=bootstrap.Popover.getOrCreateInstance(this._element,this._config)}_setListeners(){this._inserted=()=>{const t=n.getDescribedElement(this._element);t!==null&&t.classList.add("is-invalid")};bootstrap.EventHandler.on(this._element,"inserted.bs.popover",".is-invalid",this._inserted)}static _create(n,t){new bb.Popover(n,t)}static init(n,t,i){if(n=r(n),n){const u={title:t,content:i},r=bb.Popover.getInstance(n);if(r){r.hide();const t=o(n,15),i=window.setTimeout(()=>{window.clearTimeout(i),r.dispose(),e._create(n,u)},t)}else e._create(n,u)}}}class c extends f{constructor(n,t){super(n,t);this._hackPopover()}_getOrCreateInstance(){this._dropdown=bootstrap.Popover.getOrCreateInstance(this._element,this._config)}_isDisabled(){let n=s(this._element)||s(this._element.parentNode);if(!n){const t=this._element.querySelector(".form-control");n=i(t)&&s(t)}return n}_hackPopover(){this._dropdown._isWithContent=()=>!0;let n=this._dropdown._getTipElement,t=n=>{n.classList.add(this._config.class),n.classList.add("shadow")};this._dropdown._getTipElement=()=>{let i=n.call(this._dropdown);return t(i),i}}_isShown(){return this._dropdown===null?!1:this._dropdown._isShown()}hide(){this._isShown()&&this._dropdown.hide()}show(){this._isShown()||this._dropdown.show()}invoke(n){let t=this._dropdown[n];typeof t=="function"&&t.call(this._dropdown);n==="dispose"&&(this._dropdown=null,this.dispose())}dispose(){this._dropdown!==null&&this._dropdown.dispose();super.dispose()}static invoke(n,t){n=r(n);n.classList.contains("dropdown-toggle")||(n=n.querySelector(".dropdown-toggle"));let i=this.getInstance(n);i!==null&&i.invoke(t)}}const w="Dropdown";class l extends c{_configAfterMerge(n){return{...{bodyElement:this._element.parentNode.querySelector(n.dropdown)},...super._configAfterMerge(n)}}_setListeners(){let t=!1;this._show=()=>{const n=this._isDisabled();n||(this._element.setAttribute("aria-expanded","true"),this._element.classList.add("show"));n&&event.preventDefault()};this._inserted=()=>{const i=n.getDescribedElement(this._element);if(i){let n=i.querySelector(".popover-body");n||(n=document.createElement("div"),n.classList.add("popover-body"),i.append(n));n.classList.add("show");const r=this._config.bodyElement;r.classList.contains("d-none")&&(t=!0,r.classList.remove("d-none"));n.append(r)}};this._hide=()=>{const n=this._config.bodyElement;t&&n.classList.add("d-none");this._element.classList.remove("show");this._element.append(n)};bootstrap.EventHandler.on(this._element,"show.bs.popover",this._show);bootstrap.EventHandler.on(this._element,"inserted.bs.popover",this._inserted);bootstrap.EventHandler.on(this._element,"hide.bs.popover",this._hide);if(this._config.dismiss!=null)bootstrap.EventHandler.on(document,"click",this._config.dismiss,this._hide)}static get Default(){return{"class":"popover-dropdown",dropdown:".dropdown-menu"}}static get NAME(){return w}}bootstrap.EventHandler.on(document,"click",".dropdown-toggle",function(n){let t=n.target;t.classList.contains("dropdown-toggle")||(t=t.closest(".dropdown-toggle"));const i=t.getAttribute("data-bs-toggle");if(i==="bb.dropdown"){let n=bootstrap.Popover.getInstance(t);n==null&&(n=new bb.Dropdown(t),n.show())}});bootstrap.EventHandler.on(document,"click",function(t){const i=t.target,r=n.getDescribedElement(i.closest(".dropdown-toggle")),u=`.${l.Default.class}.show`;document.querySelectorAll(u).forEach(function(t){if(t!==r){const i=n.getDescribedOwner(t);if(i){let n=bootstrap.Popover.getInstance(i);n!==null&&n.hide()}}})});const b="Confirm";class u extends c{constructor(n,t){super(n,t);this._id=n.getAttribute("id")}_getPopoverBodyElement(){return document.querySelector(`[data-bs-target="${this._id}"]`)}_setListeners(){this._show=()=>{const n=this._isDisabled();n?event.preventDefault():(this._element.setAttribute("aria-expanded","true"),this._element.classList.add("show"))};this._inserted=()=>{const t=this._getPopoverBodyElement(),i=n.getDescribedElement(this._element);i.append(t)};this._hide=()=>{const t=this._getPopoverBodyElement();if(t){const n=document.querySelector(this._config.confirm_container);n.append(t)}const i=n.getDescribedElement(this._element);i&&i.classList.remove("show");this._element.classList.remove("show");this._element.setAttribute("aria-expanded","false")};bootstrap.EventHandler.on(this._element,"show.bs.popover",this._show);bootstrap.EventHandler.on(this._element,"inserted.bs.popover",this._inserted);bootstrap.EventHandler.on(this._element,"hide.bs.popover",this._hide);if(this._config.dismiss!=null)bootstrap.EventHandler.one(document,"click",this._config.dismiss,this._hide)}dispose(){this._config.dismiss!=null&&bootstrap.EventHandler.off(document,"click",this._config.dismiss,this._hide);super.dispose()}static _create(n){let t=new bb.Confirm(n);t.show()}static init(n){n=r(n);let t=bb.Confirm.getInstance(n);if(t!==null&&t._isShown()){t.hide();const i=o(n,15);let r=window.setTimeout(()=>{window.clearTimeout(r),t.dispose(),u._create(n)},i)}else u._create(n)}static submit(n){n=r(n);const t=n.closest("form");if(t!==null){const n=document.createElement("button");n.setAttribute("type","submit");n.setAttribute("hidden","true");t.append(n);n.click();n.remove()}}static get Default(){return{"class":"popover-confirm",dismiss:"[data-bb-dismiss]",confirm_container:".popover-confirm-container"}}static get NAME(){return b}}bootstrap.EventHandler.on(document,"click",function(t){const i=t.target;if(i.closest(`.${u.Default.class}.show`)===null&&i.closest(`${u.Default.confirm_container}`)===null){const t=n.getDescribedElement(i.closest(".dropdown-toggle")),r=`.${u.Default.class}.show`;document.querySelectorAll(r).forEach(function(i){if(i!==t){const t=n.getDescribedOwner(i);if(t){const n=bootstrap.Popover.getInstance(t);n&&n.hide()}}})}});class n{static vibrate(){if("vibrate"in window.navigator){window.navigator.vibrate([200,100,200]);const n=window.setTimeout(function(){window.clearTimeout(n);window.navigator.vibrate([])},1e3)}}static getDescribedElement(n){if(i(n)){const t=n.getAttribute("aria-describedby");if(t)return document.querySelector(`#${t}`)}return null}static getDescribedOwner(n){if(i(n)){const t=n.getAttribute("id");if(t)return document.querySelector(`[aria-describedby="${t}"]`)}return null}}const k=1e3,o=(n,t=0)=>{if(!n)return 0;let{transitionDuration:i,transitionDelay:r}=window.getComputedStyle(n);const u=Number.parseFloat(i),f=Number.parseFloat(r);return!u&&!f?0:(i=i.split(",")[0],r=r.split(",")[0],(Number.parseFloat(i)+Number.parseFloat(r))*k+t)},s=n=>!n||n.nodeType!==Node.ELEMENT_NODE?!0:n.classList.contains("disabled")?!0:typeof n.disabled!="undefined"?n.disabled:n.hasAttribute("disabled")&&n.getAttribute("disabled")!=="false",d=n=>n===null||n===undefined?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase(),i=n=>!n||typeof n!="object"?!1:(typeof n.jquery!="undefined"&&(n=n[0]),typeof n.nodeType!="undefined"),r=n=>i(n)?n.jquery?n[0]:n:typeof n=="string"&&n.length>0?document.querySelector(n):null,t=new Map,h={set(n,i,r){t.has(n)||t.set(n,new Map);const u=t.get(n);if(!u.has(i)&&u.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(u.keys())[0]}.`);return}u.set(i,r)},get(n,i){return t.has(n)?t.get(n).get(i)||null:null},remove(n,i){if(t.has(n)){const r=t.get(n);r.delete(i);r.size===0&&t.delete(n)}}};return{Tooltip:f,Popover:e,Dropdown:l,Confirm:u,Utility:n}}),function(n){n.isFunction(Date.prototype.format)||(Date.prototype.format=function(n){var i={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours()%12==0?12:this.getHours()%12,"H+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),S:this.getMilliseconds()},t;/(y+)/.test(n)&&(n=n.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length)));/(E+)/.test(n)&&(n=n.replace(RegExp.$1,(RegExp.$1.length>1?RegExp.$1.length>2?"星期":"周":"")+{0:"日",1:"一",2:"二",3:"三",4:"四",5:"五",6:"六"}[this.getDay()]));for(t in i)new RegExp("("+t+")").test(n)&&(n=n.replace(RegExp.$1,RegExp.$1.length===1?i[t]:("00"+i[t]).substr((""+i[t]).length)));return n});n.browser={versions:function(){var n=navigator.userAgent;return{trident:n.indexOf("Trident")>-1,presto:n.indexOf("Presto")>-1,webKit:n.indexOf("AppleWebKit")>-1,gecko:n.indexOf("Gecko")>-1&&n.indexOf("KHTML")===-1,mobile:!!n.match(/AppleWebKit.*Mobile.*/),ios:!!n.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),android:n.indexOf("Android")>-1||n.indexOf("Linux")>-1,iPhone:n.indexOf("iPhone")>-1,iPod:n.indexOf("iPod")>-1,iPad:n.indexOf("iPad")>-1,mac:n.indexOf("Macintosh")>-1,webApp:n.indexOf("Safari")===-1}}(),language:(navigator.browserLanguage||navigator.language).toLowerCase()};Array.prototype.indexOf=function(n){for(var t=0;t-1&&this.splice(t,1)};n.extend({format:function(t,i){return i===undefined||i===null?null:(arguments.length>2&&i.constructor!==Array&&(i=n.makeArray(arguments).slice(1)),i.constructor!==Array&&(i=[i]),n.each(i,function(n,i){t=t.replace(new RegExp("\\{"+n+"\\}","g"),function(){return i})}),t)},getUID:function(n){n||(n="b");do n+=~~(Math.random()*1e6);while(document.getElementById(n));return n},webClient:function(t,i,r){var u={},f=new Browser;u.Browser=f.browser+" "+f.version;u.Os=f.os+" "+f.osVersion;u.Device=f.device;u.Language=f.language;u.Engine=f.engine;u.UserAgent=navigator.userAgent;n.ajax({type:"GET",url:i,success:function(n){t.invokeMethodAsync(r,n.Id,n.Ip,u.Os,u.Browser,u.Device,u.Language,u.Engine,u.UserAgent)},error:function(){console.error("Please add UseBootstrapBlazor middleware");t.invokeMethodAsync(r,"","",u.Os,u.Browser,u.Device,u.Language,u.Engine,u.UserAgent)}})},bb_setIndeterminate:function(n,t){document.getElementById(n).indeterminate=t}});n.fn.extend({drag:function(t,i,r){var u=n(this),o=function(i){i.preventDefault();i.stopPropagation();document.addEventListener("mousemove",f);document.addEventListener("touchmove",f);document.addEventListener("mouseup",e);document.addEventListener("touchend",e);n.isFunction(t)&&t.call(u,i)},f=function(t){t.touches&&t.touches.length>1||n.isFunction(i)&&i.call(u,t)},e=function(t){n.isFunction(r)&&r.call(u,t);window.setTimeout(function(){document.removeEventListener("mousemove",f);document.removeEventListener("touchmove",f);document.removeEventListener("mouseup",e);document.removeEventListener("touchend",e)},100)};u.on("mousedown",o);u.on("touchstart",o)},touchScale:function(t,i){i=n.extend({max:null,min:.195},i);var f=this[0],r={scale:1},u=n(this);f.addEventListener("touchstart",function(n){var i=n.touches,u=i[0],t=i[1];n.preventDefault();r.pageX=u.pageX;r.pageY=u.pageY;r.moveable=!0;t&&(r.pageX2=t.pageX,r.pageY2=t.pageY);r.originScale=r.scale||1});document.addEventListener("touchmove",function(f){if(r.moveable){var s=f.touches,h=s[0],o=s[1];if(o){f.preventDefault();u.hasClass("transition-none")||u.addClass("transition-none");r.pageX2||(r.pageX2=o.pageX);r.pageY2||(r.pageY2=o.pageY);var c=function(n,t){return Math.hypot(t.x-n.x,t.y-n.y)},l=c({x:h.pageX,y:h.pageY},{x:o.pageX,y:o.pageY})/c({x:r.pageX,y:r.pageY},{x:r.pageX2,y:r.pageY2}),e=r.originScale*l;i.max!=null&&e>i.max&&(e=i.max);i.min!=null&&e-1});t.length===0&&(t=document.createElement("script"),t.setAttribute("src",n),document.body.appendChild(t))},r=function(n){var i,t;const r=[...document.getElementsByTagName("script")];for(i=r.filter(function(t){return t.src.indexOf(n)>-1}),t=0;t-1});t.length===0&&(t=document.createElement("link"),t.setAttribute("href",n),t.setAttribute("rel","stylesheet"),document.getElementsByTagName("head")[0].appendChild(t))},f=function(){var t,n;const i=[...document.getElementsByTagName("link")];for(t=i.filter(function(n){return n.href.indexOf(content)>-1}),n=0;n<\/div>');o==="inline"&&u.addClass("form-inline");e.children().each(function(e,o){var s=n(o),c=s.data("toggle")==="row",h=r._getColSpan(s);c?n("
<\/div>").addClass(r._calc(h)).appendTo(u).append(s):(f=s.prop("tagName")==="LABEL",f?(i===null&&(i=n("
<\/div>").addClass(r._calc(h))),i.append(s)):(f=!1,i==null&&(i=n("
<\/div>").addClass(r._calc(h))),i.append(s),t==null?i.appendTo(u):i.appendTo(t),i=null))});t==null&&e.append(u)},_layout_parent_row:function(){var t=this.$element.data("target"),i=n('[data-uid="'+t+'"]'),r=n('
<\/div>').appendTo(i);this._layout_column(r)},_calc:function(n){var t=this.options.itemsPerRow,i;return n>0&&(t=t*n),i="col-12",t!==12&&(i="col-12 col-sm-"+t),i},_getColSpan:function(n){var t=parseInt(n.data("colspan"));return isNaN(t)&&(t=0),t}});n.fn.grid=i;n.fn.grid.Constructor=t}(jQuery),function(n){function r(i){return this.each(function(){var u=n(this),r=u.data(t.DATA_KEY),f=typeof i=="object"&&i;r||u.data(t.DATA_KEY,r=new t(this,f));typeof i=="string"&&/active/.test(i)&&r[i].apply(r)})}var t=function(t,i){this.$element=n(t);this.$header=this.$element.children(".tabs-header");this.$wrap=this.$header.children(".tabs-nav-wrap");this.$scroll=this.$wrap.children(".tabs-nav-scroll");this.$tab=this.$scroll.children(".tabs-nav");this.options=n.extend({},i);this.init()},i;t.VERSION="5.1.0";t.Author="argo@163.com";t.DATA_KEY="lgb.Tab";i=t.prototype;i.init=function(){var t=this;n(window).on("resize",function(){t.resize()});this.active()};i.fixSize=function(){var n=this.$element.height(),t=this.$element.width();this.$element.css({height:n+"px",width:t+"px"})};i.resize=function(){var n,t,i,r,u;this.vertical=this.$element.hasClass("tabs-left")||this.$element.hasClass("tabs-right");this.horizontal=this.$element.hasClass("tabs-top")||this.$element.hasClass("tabs-bottom");n=this.$tab.find(".tabs-item:last");n.length>0&&(this.vertical?(this.$wrap.css({height:this.$element.height()+"px"}),t=this.$tab.height(),i=n.position().top+n.outerHeight(),i0?this.$scroll.scrollTop(t+s):(f=u-t,f<0&&this.$scroll.scrollTop(t+f));r.css({width:"2px",transform:"translateY("+u+"px)"})}else{var e=n.position().left,y=e+n.outerWidth(),i=this.$scroll.scrollLeft(),p=this.$scroll.width(),h=y-i-p;h>0?this.$scroll.scrollLeft(i+h):(o=e-i,o<0&&this.$scroll.scrollLeft(i+o));c=n.width();l=e+parseInt(n.css("paddingLeft"));r.css({width:c+"px",transform:"translateX("+l+"px)"})}};n.fn.lgbTab=r;n.fn.lgbTab.Constructor=t}(jQuery),function(n){n.extend({bb_ajax:function(t,i,r){r=JSON.stringify(r);var u=null;return(n.ajax({url:t,data:r,method:i,contentType:"application/json",dataType:"json","async":!1,success:function(n){u=n},error:function(){return null}}),u==null)?null:JSON.stringify(u)},bb_ajax_goto:function(n){window.location.href=n}})}(jQuery),function(n){n.extend({bb_anchor:function(t){var i=n(t);i.on("click",function(t){var f,u,r,e,o;t.preventDefault();f=n(i.data("target"));u=i.data("container");u||(u=window);r=f.offset().top;e=f.css("marginTop").replace("px","");e&&(r=r-parseInt(e));o=i.data("offset");o&&(r=r-parseInt(o));n(u).scrollTop(r)})}})}(jQuery),function(n){n(function(){n(document).on("click",".anchor-link",function(){var t=n(this),i=t.attr("id"),r,u,f;i&&(r=t.attr("data-title"),u=window.location.origin+window.location.pathname+"#"+i,n.bb_copyText(u),t.tooltip({title:r}),t.tooltip("show"),f=window.setTimeout(function(){window.clearTimeout(f);t.tooltip("dispose")},1e3))})})}(jQuery),function(n){n.extend({bb_autoScrollItem:function(t,i){var s=n(t),r=s.find(".dropdown-menu"),e=parseInt(r.css("max-height").replace("px",""))/2,u=r.children("li:first").outerHeight(),h=u*i,f=Math.floor(e/u),o;r.children().removeClass("active");o=r.children().length;ie?r.scrollTop(u*(i>f?i-f:i)):i<=f&&r.scrollTop(0)},bb_composition:function(t,i,r){var u=!1,f=n(t);f.on("compositionstart",function(){u=!0});f.on("compositionend",function(){u=!1});f.on("input",function(n){u&&(n.stopPropagation(),n.preventDefault(),setTimeout(function(){u||i.invokeMethodAsync(r,f.val())},15))})},bb_setDebounce:function(t,i){var f=n(t),u;let r;u=["ArrowUp","ArrowDown","Escape","Enter"];f.on("keyup",function(n){u.indexOf(n.key)<1&&r?(clearTimeout(r),n.stopPropagation(),r=setTimeout(function(){r=null;n.target.dispatchEvent(n.originalEvent)},i)):r=setTimeout(function(){},i)})}})}(jQuery),function(n){n.extend({bb_auto_redirect:function(t,i,r){var u={},f=1,e=window.setInterval(function(){n(document).off("mousemove").one("mousemove",function(n){(u.screenX!==n.screenX||u.screenY!==n.screenY)&&(u.screenX=n.screenX,u.screenY=n.screenY,f=1)});n(document).off("keydown").one("keydown",function(){f=1})},1e3),o=window.setInterval(function(){f++>i&&(window.clearInterval(o),window.clearInterval(e),t.invokeMethodAsync(r))},1e3)}})}(jQuery),function(n){n.extend({bb_camera:function(t,i,r,u,f,e){var o=n(t),h=function(n,t){n.pause();n.srcObject=null;t.stop()},c,s;if(r==="stop"){c=o.find("video")[0];s=o.data("bb_video_track");s&&h(c,s);return}navigator.mediaDevices.enumerateDevices().then(function(t){var l=t.filter(function(n){return n.kind==="videoinput"}),r,s,a,c;i.invokeMethodAsync("InitDevices",l).then(()=>{u&&l.length>0&&o.find('button[data-method="play"]').trigger("click")});r=o.find("video")[0];s=o.find("canvas")[0];s.width=f;s.height=e;a=s.getContext("2d");o.on("click","button[data-method]",async function(){var l=n(this).attr("data-method"),t,v,u;if(l==="play"){var w=n(this).attr("data-camera"),y=o.find(".dropdown-item.active").attr("data-val"),p={video:{facingMode:w,width:f,height:e},audio:!1};y!==""&&(p.video.deviceId={exact:y});navigator.mediaDevices.getUserMedia(p).then(n=>{r.srcObject=n,r.play(),c=n.getTracks()[0],o.data("bb_video_track",c),i.invokeMethodAsync("Start")}).catch(n=>{console.log(n),i.invokeMethodAsync("GetError",n.message)})}else if(l==="stop")h(r,c),i.invokeMethodAsync("Stop");else if(l==="capture"){for(a.drawImage(r,0,0,f,e),t=s.toDataURL(),v=30720;t.length>v;)u=t.substr(0,v),console.log(u),await i.invokeMethodAsync("Capture",u),t=t.substr(u.length);t.length>0&&await i.invokeMethodAsync("Capture",t);await i.invokeMethodAsync("Capture","__BB__%END%__BB__")}})})}})}(jQuery),function(n){n.extend({bb_card_collapse:function(t){var i=n(t),r=i.attr("data-bs-collapsed")==="true";r&&(i.removeClass("is-open"),i.closest(".card").find(".card-body").css({display:"none"}));i.on("click",function(t){var r,u,i;t.target.nodeName!=="BUTTON"&&(r=n(t.target).closest("button"),r.length===0)&&(u=n(this).toggleClass("is-open"),i=u.closest(".card").find(".card-body"),i.length===1&&(i.is(":hidden")&&i.parent().toggleClass("collapsed"),i.slideToggle("fade",function(){var t=n(this);t.is(":hidden")&&t.parent().toggleClass("collapsed")})))})}})}(jQuery),function(n){n.extend({bb_carousel:function(t){var r=n(t).carousel(),i=null;r.hover(function(){var t,r,u;i!=null&&window.clearTimeout(i);t=n(this);r=t.find("[data-bs-slide]");r.removeClass("d-none");u=window.setTimeout(function(){window.clearTimeout(u);t.addClass("hover")},10)},function(){var t=n(this),r=t.find("[data-bs-slide]");t.removeClass("hover");i=window.setTimeout(function(){window.clearTimeout(i);r.addClass("d-none")},300)})}})}(jQuery),function(){$.extend({bb_cascader_hide:function(n){const t=document.getElementById(n),i=bootstrap.Dropdown.getInstance(t);i.hide()}})}(),function(n){n.extend({bb_copyText:function(n){if(navigator.clipboard)navigator.clipboard.writeText(n);else{if(typeof ele!="string")return!1;var t=document.createElement("input");t.setAttribute("type","text");t.setAttribute("value",n);document.body.appendChild(t);t.select();document.execCommand("copy");document.body.removeChild(t)}}})}(jQuery),function(n){n.extend({bb_collapse:function(t){var i=n(t),r=null;i.hasClass("is-accordion")&&(r="["+t.getAttributeNames().pop()+"]");n.each(i.children(".accordion-item"),function(){var u=n(this),i=u.children(".accordion-collapse"),t=i.attr("id"),f;t||(t=n.getUID(),i.attr("id",t),r!=null&&i.attr("data-bs-parent",r),f=u.find('[data-bs-toggle="collapse"]'),f.attr("data-bs-target","#"+t).attr("aria-controls",t))});i.find(".tree .tree-item > .fa").on("click",function(){var t=n(this).parent();t.find('[data-bs-toggle="collapse"]').trigger("click")});if(i.parent().hasClass("menu"))i.on("click",".nav-link:not(.collapse)",function(){var r=n(this),t;for(i.find(".active").removeClass("active"),r.addClass("active"),t=r.closest(".accordion");t.length>0;)t.children(".accordion-header").find(".nav-link").addClass("active"),t=t.parent().closest(".accordion")})}})}(jQuery),function(n){n.extend({bb_console:function(t){var u=n(t),i=u.find('[data-scroll="auto"]'),r;i.length>0&&(r=i.find(".console-window"),i.scrollTop(r.height()))}})}(jQuery),function(n){n.extend({bb_timePicker:function(t){var i=n(t);return i.find(".time-spinner-item").height()},bb_timecell:function(t,i,r,u){var f=n(t);f.find(".time-spinner-list").on("mousewheel wheel",function(n){var t=n.originalEvent.wheelDeltaY||-n.originalEvent.deltaY;return t>0?i.invokeMethodAsync(r):i.invokeMethodAsync(u),!1})}})}(jQuery),function(n){n.extend({bb_form_load:function(t,i){var r=n(t);i==="show"?r.addClass("show"):r.removeClass("show")}})}(jQuery),function(n){n.extend({bb_iconList:function(t,i,r,u,f){var e=n(t);e.find('[data-bs-spy="scroll"]').scrollspy();e.on("click",".nav-link",function(t){t.preventDefault();t.stopPropagation();var f=n(this).attr("href"),r=n(f),e=window,i=r.offset().top,u=r.css("marginTop").replace("px","");u&&(i=i-parseInt(u));n(e).scrollTop(i)});e.on("click",".icons-body a",function(t){var s;t.preventDefault();t.stopPropagation();var h=n(this),c=n(this).find("i"),o=c.attr("class");i.invokeMethodAsync(r,o);s=e.hasClass("is-dialog");s?i.invokeMethodAsync(u,o):f&&n.bb_copyIcon(h,o)})},bb_iconDialog:function(t){var i=n(t);i.on("click","button",function(){var t=n(this),i=t.prev().text();n.bb_copyIcon(t,i)})},bb_copyIcon:function(t,i){n.bb_copyText(i);t.tooltip({title:"Copied!"});t.tooltip("show");var r=window.setTimeout(function(){window.clearTimeout(r);t.tooltip("dispose")},1e3)},bb_scrollspy:function(){var t=n('.icon-list [data-bs-spy="scroll"]');t.scrollspy("refresh")}})}(jQuery),function(n){n.extend({bb_download_wasm:function(n,t,i){var u=BINDING.conv_string(n),e=BINDING.conv_string(t),o=Blazor.platform.toUint8Array(i),s=new File([o],u,{type:e}),f=URL.createObjectURL(s),r=document.createElement("a");document.body.appendChild(r);r.href=f;r.download=u;r.target="_self";r.click();URL.revokeObjectURL(f)},bb_download:function(t,i,r){var f=n.bb_create_url(t,i,r),u=document.createElement("a");document.body.appendChild(u);u.href=f;u.download=t;u.target="_self";u.click();URL.revokeObjectURL(f)},bb_create_url_wasm:function(n,t,i){var r=BINDING.conv_string(n),u=BINDING.conv_string(t),f=Blazor.platform.toUint8Array(i),e=new File([f],r,{type:u});return URL.createObjectURL(e)},bb_create_url:function(t,i,r){typeof r=="string"&&(r=n.base64DecToArr(r));var u=r,f=new File([u],t,{type:i});return URL.createObjectURL(f)},b64ToUint6:function(n){return n>64&&n<91?n-65:n>96&&n<123?n-71:n>47&&n<58?n+4:n===43?62:n===47?63:0},base64DecToArr:function(t,i){for(var h=t.replace(/[^A-Za-z0-9\+\/]/g,""),u=h.length,c=i?Math.ceil((u*3+1>>2)/i)*i:u*3+1>>2,l=new Uint8Array(c),f,e,o=0,s=0,r=0;r>>(16>>>f&24)&255;o=0}return l}})}(jQuery),function(n){n.extend({bb_drawer:function(t,i){var r=n(t),u;i?(r.addClass("is-open"),n("body").addClass("overflow-hidden")):r.hasClass("is-open")&&(r.removeClass("is-open").addClass("is-close"),u=window.setTimeout(function(){window.clearTimeout(u);r.removeClass("is-close");n("body").removeClass("overflow-hidden")},350))}})}(jQuery),function(n){n.extend({bb_filter:function(t,i,r){n(t).data("bb_filter",{obj:i,method:r})}});n(function(){n(document).on("click",function(t){var i=n(t.target),r=i.closest(".popover-datetime"),u,f,e;r.length==1&&(u=r.attr("id"),f=n('[aria-describedby="'+u+'"]'),f.closest(".datetime-picker").hasClass("is-filter"))||(e=i.closest(".table-filter-item"),e.length==0&&n(".table-filter-item.show").each(function(){var t=n(this).data("bb_filter");t.obj.invokeMethodAsync(t.method)}))});n(document).on("keyup",function(t){var i,r;t.key==="Enter"?(i=n(".table-filter .table-filter-item.show:first"),r=i.data("bb_filter"),r&&(i.removeClass("show"),r.obj.invokeMethodAsync("ConfirmByKey"))):t.key==="Escape"&&(i=n(".table-filter .table-filter-item.show:first"),r=i.data("bb_filter"),r&&(i.removeClass("show"),r.obj.invokeMethodAsync("EscByKey")))})})}(jQuery),function(n){n.extend({bb_toggleFullscreen:function(t,i){var r=t;r&&r!==""||(r=i?document.getElementById(i):document.documentElement);n.bb_IsFullscreen()?(n.bb_ExitFullscreen(),r.classList.remove("fs-open")):(n.bb_Fullscreen(r),r.classList.add("fs-open"))},bb_Fullscreen:function(n){n.requestFullscreen()||n.webkitRequestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen},bb_ExitFullscreen:function(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()},bb_IsFullscreen:function(){return document.fullscreen||document.webkitIsFullScreen||document.webkitFullScreen||document.mozFullScreen||document.msFullScreent}})}(jQuery),function(n){Number.prototype.toRadians=function(){return this*Math.PI/180};n.extend({bb_geo_distance:function(n,t,i,r){var u=(i-n).toRadians(),f=(r-t).toRadians();n=n.toRadians();i=i.toRadians();var e=Math.sin(u/2)*Math.sin(u/2)+Math.cos(n)*Math.cos(i)*Math.sin(f/2)*Math.sin(f/2),o=2*Math.atan2(Math.sqrt(e),Math.sqrt(1-e));return 6371*o},bb_geo_updateLocaltion:function(t,i=0,r=0,u,f){var e=t.coords.latitude,o=t.coords.longitude,a=t.coords.accuracy,s=t.coords.altitude,h=t.coords.altitudeAccuracy,c=t.coords.heading,l=t.coords.speed,v=t.timestamp;return a>=500&&console.warn("Need more accurate values to calculate distance."),u!=null&&f!=null&&(i=n.bb_geo_distance(e,o,u,f),r+=i),u=e,f=o,s==null&&(s=0),h==null&&(h=0),c==null&&(c=0),l==null&&(l=0),{latitude:e,longitude:o,accuracy:a,altitude:s,altitudeAccuracy:h,heading:c,speed:l,timestamp:v,currentDistance:i,totalDistance:r,lastLat:u,lastLong:f}},bb_geo_handleLocationError:function(n){switch(n.code){case 0:console.error("There was an error while retrieving your location: "+n.message);break;case 1:console.error("The user prevented this page from retrieving a location.");break;case 2:console.error("The browser was unable to determine your location: "+n.message);break;case 3:console.error("The browser timed out before retrieving the location.")}},bb_geo_getCurrnetPosition:function(t,i){var r=!1;return navigator.geolocation?(r=!0,navigator.geolocation.getCurrentPosition(r=>{var u=n.bb_geo_updateLocaltion(r);t.invokeMethodAsync(i,u)},n.bb_geo_handleLocationError)):console.warn("HTML5 Geolocation is not supported in your browser"),r},bb_geo_watchPosition:function(t,i){var r=0,u=0,f=0,e,o;return navigator.geolocation?r=navigator.geolocation.watchPosition(r=>{var s=n.bb_geo_updateLocaltion(r,u,f,e,o);u=s.currentDistance;f=s.totalDistance;e=s.lastLat;o=s.lastLong;t.invokeMethodAsync(i,s)},n.bb_geo_handleLocationError,{maximumAge:2e4}):console.warn("HTML5 Geolocation is not supported in your browser"),r},bb_geo_clearWatchLocation:function(n){var t=!1;return navigator.geolocation&&(t=!0,navigator.geolocation.clearWatch(n)),t}})}(jQuery),function(n){n.extend({bb_gotop:function(t,i){var r=n(t),u=r.tooltip();r.on("click",function(t){t.preventDefault();n(i||window).scrollTop(0);u.tooltip("hide")})}})}(jQuery),function(n){n.extend({bb_handwritten:function(n,t,i,r){function u(n){var i,f,e;this.linewidth=1;this.color="#000000";this.background="#fff";for(i in n)this[i]=n[i];this.canvas=document.createElement("canvas");this.el.appendChild(this.canvas);this.cxt=this.canvas.getContext("2d");this.canvas.clientTop=this.el.clientWidth;this.canvas.width=this.el.clientWidth;this.canvas.height=this.el.clientHeight;this.cxt.fillStyle=this.background;this.cxt.fillRect(2,2,this.canvas.width,this.canvas.height);this.cxt.fillStyle=this.background;this.cxt.strokeStyle=this.color;this.cxt.lineWidth=this.linewidth;this.cxt.lineCap="round";var t="ontouchend"in window,s=this,u=!1,o=function(n){u=!0;this.cxt.beginPath();var i=n.target.offsetParent.offsetLeft,r=n.target.offsetParent.offsetTop;t?this.cxt.moveTo(n.changedTouches[0].pageX+2-i,n.changedTouches[0].pageY+2-r):this.cxt.moveTo(n.pageX+2-i,n.pageY+2-r)};t?this.canvas.addEventListener("touchstart",o.bind(this),!1):this.canvas.addEventListener("mousedown",o.bind(this),!1);f=function(n){if(u){var i=n.target.offsetParent.offsetLeft,r=n.target.offsetParent.offsetTop;t?this.cxt.lineTo(n.changedTouches[0].pageX+2-i,n.changedTouches[0].pageY+2-r):this.cxt.lineTo(n.pageX+2-i,n.pageY+2-r);this.cxt.stroke()}};t?this.canvas.addEventListener("touchmove",f.bind(this),!1):this.canvas.addEventListener("mousedown",f.bind(this),!1);e=function(){u=!1;this.cxt.closePath()};t?this.canvas.addEventListener("touchend",e.bind(this),!1):this.canvas.addEventListener("mousedown",e.bind(this),!1);this.clearEl.addEventListener("click",function(){this.cxt.clearRect(2,2,this.canvas.width,this.canvas.height)}.bind(this),!1);this.saveEl.addEventListener("click",function(){var n=this.canvas.toDataURL();return this.obj.invokeMethodAsync(r,n)}.bind(this),!1)}document.body.addEventListener("touchmove",function(n){n.preventDefault()},{passive:!1});new u({el:n.getElementsByClassName("hw-body")[0],clearEl:n.getElementsByClassName("btn-secondary")[0],saveEl:n.getElementsByClassName("btn-primary")[0],obj:t})}})}(jQuery),function(n){n.extend({bb_image_load_async:function(t,i){if(i){var r=n(t),u=r.children("img");u.attr("src",i)}},bb_image_preview:function(t,i){var u=n(t),e=u.children(".bb-viewer-wrapper"),ut=n("body").addClass("is-img-preview"),r=e.find(".bb-viewer-canvas > img"),h=u.find(".bb-viewer-close"),a=u.find(".bb-viewer-prev"),v=u.find(".bb-viewer-next"),y=u.find(".fa-magnifying-glass-plus"),p=u.find(".fa-magnifying-glass-minus"),d=u.find(".btn-full-screen"),y=u.find(".fa-magnifying-glass-plus"),g=u.find(".fa-rotate-left"),nt=u.find(".fa-rotate-right"),d=u.find(".bb-viewer-full-screen"),tt=u.find(".bb-viewer-mask"),f,c;if(e.appendTo("body").addClass("show"),!e.hasClass("init")){e.addClass("init");h.on("click",function(){n("body").removeClass("is-img-preview");l();e.removeClass("show").appendTo(u)});a.on("click",function(){f--;f<0&&(f=i.length-1);c(f)});v.on("click",function(){f++;f>=i.length&&(f=0);c(f)});f=0;c=function(n){l();var t=i[n];e.find(".bb-viewer-canvas > img").attr("src",t)};d.on("click",function(){l();e.toggleClass("active")});y.on("click",function(){o(function(n){return n+.2})});p.on("click",function(){o(function(n){return Math.max(.2,n-.2)})});g.on("click",function(){o(null,function(n){return n-90})});nt.on("click",function(){o(null,function(n){return n+90})});r.on("mousewheel DOMMouseScroll",function(n){n.preventDefault();var t=n.originalEvent.wheelDelta||-n.originalEvent.detail,i=Math.max(-1,Math.min(1,t));i>0?o(function(n){return n+.015}):o(function(n){return Math.max(.195,n-.015)})});var w=0,b=0,s={top:0,left:0};r.drag(function(n){w=n.clientX||n.touches[0].clientX;b=n.clientY||n.touches[0].clientY;s.top=parseInt(r.css("marginTop").replace("px",""));s.left=parseInt(r.css("marginLeft").replace("px",""));this.addClass("is-drag")},function(n){if(this.hasClass("is-drag")){var t=n.clientX||n.changedTouches[0].clientX,i=n.clientY||n.changedTouches[0].clientY;newValX=s.left+Math.ceil(t-w);newValY=s.top+Math.ceil(i-b);this.css({marginLeft:newValX});this.css({marginTop:newValY})}},function(){this.removeClass("is-drag")});tt.on("click",function(){h.trigger("click")});n(document).on("keydown",function(n){console.log(n.key);n.key==="ArrowUp"?y.trigger("click"):n.key==="ArrowDown"?p.trigger("click"):n.key==="ArrowLeft"?a.trigger("click"):n.key==="ArrowRight"?v.trigger("click"):n.key==="Escape"&&h.trigger("click")});var it=function(n){var t=1,i;return n&&(i=n.split(" "),t=parseFloat(i[0].split("(")[1])),t},rt=function(n){var t;return n&&(t=n.split(" "),scale=parseFloat(t[1].split("(")[1])),scale},o=function(n,t){var f=r[0].style.transform,i=it(f),u=rt(f),e,o;n&&(i=n(i));t&&(u=t(u));r.css("transform","scale("+i+") rotate("+u+"deg)");e=k(r[0].style.marginLeft);o=k(r[0].style.marginTop);r.css("marginLeft",e+"px");r.css("marginTop",o+"px")},l=function(){r.addClass("transition-none");r.css("transform","scale(1) rotate(0deg)");r.css("marginLeft","0px");r.css("marginTop","0px");window.setTimeout(function(){r.removeClass("transition-none")},300)},k=function(n){var t=0;return n&&(t=parseFloat(n)),t};r.touchScale(function(n){o(function(){return n})})}}})}(jQuery),function(n){n.extend({bb_input:function(t,i,r,u,f,e){var o=n(t);o.on("keyup",function(n){r&&n.key==="Enter"?i.invokeMethodAsync(u):f&&n.key==="Escape"&&i.invokeMethodAsync(e,o.val())})},bb_input_selectAll_focus:function(t){var i=n(t);i.on("focus",function(){n(this).select()})},bb_input_selectAll_enter:function(t){var i=n(t);i.on("keyup",function(t){t.key==="Enter"&&n(this).select()})},bb_input_selectAll:function(t){n(t).select()}})}(jQuery),function(n){var u=function(t){var i=this;t!==undefined?i.prevValues[t]=n(n(i).find(".ipv4-cell")[t]).val():n(i).find(".ipv4-cell").each(function(t,r){i.prevValues[t]=n(r).val()})},i=function(t){var i=this;t!==undefined?n(n(i).find(".ipv4-cell")[t]).val(i.prevValues[t]):n(i).find(".ipv4-cell").each(function(t,r){n(r).val(i.prevValues)})},t=function(t){var i=this;t===undefined&&t<0&&t>3||n(n(i).find(".ipv4-cell")[t]).focus()},f=function(n){if(typeof n!="string")return!1;var t=n.split(".");return t.length!==4?!1:t.reduce(function(n,t){return n===!1||t.length===0?!1:Number(t)>=0&&Number(t)<=255?!0:!1},!0)},e=function(){var t="";return this.find(".ipv4-cell").each(function(i,r){t+=i==0?n(r).val():"."+n(r).val()}),t},r=function(){var n=this,t,i;if("selectionStart"in n)return n.selectionStart;if(document.selection)return n.focus(),t=document.selection.createRange(),i=document.selection.createRange().text.length,t.moveStart("character",-n.value.length),t.text.length-i;throw new Error("cell is not an input");};n.extend({bb_ipv4_input:function(f){var e=n(f);f.prevValues=[];e.find(".ipv4-cell").focus(function(){n(this).select();e.toggleClass("selected",!0)});e.find(".ipv4-cell").focusout(function(){e.toggleClass("selected",!1)});e.find(".ipv4-cell").each(function(e,o){n(o).keydown(function(i){i.keyCode>=48&&i.keyCode<=57||i.keyCode>=96&&i.keyCode<=105?u.call(f,e):i.keyCode==37||i.keyCode==39?i.keyCode==37&&r.call(o)===0?(t.call(f,e-1),i.preventDefault()):i.keyCode==39&&r.call(o)===n(o).val().length&&(t.call(f,e+1),i.preventDefault()):i.keyCode==9||i.keyCode==8||i.keyCode==46||i.preventDefault()});n(o).keyup(function(r){var u,s,o;(r.keyCode>=48&&r.keyCode<=57||r.keyCode>=96&&r.keyCode<=105)&&(u=n(this).val(),s=Number(u),s>255?i.call(f,e):u.length>1&&u[0]==="0"?i.call(f,e):u.length===3&&t.call(f,e+1));r.key==="Backspace"&&n(this).val()===""&&(n(this).val("0"),o=e-1,o>-1?t.call(f,o):t.call(f,0));r.key==="."&&t.call(f,e+1);r.key==="ArrowRight"&&t.call(f,e+1);r.key==="ArrowLeft"&&t.call(f,e-1)})})}})}(jQuery),function(n){var e=function(t){var i=this;t!==undefined?i.prevValues[t]=n(n(i).find(".ipv4-cell")[t]).val():n(i).find(".ipv4-cell").each(function(t,r){i.prevValues[t]=n(r).val()})},i=function(t){var i=this;t!==undefined?n(n(i).find(".ipv4-cell")[t]).val(i.prevValues[t]):n(i).find(".ipv4-cell").each(function(t,r){n(r).val(i.prevValues)})},t=function(t){var i=this;t===undefined&&t<0&&t>3||n(n(i).find(".ipv4-cell")[t]).focus()},r=function(n){if(typeof n!="string")return!1;var t=n.split(".");return t.length!==4?!1:t.reduce(function(n,t){return n===!1||t.length===0?!1:Number(t)>=0&&Number(t)<=255?!0:!1},!0)},u=function(){var t="";return this.find(".ipv4-cell").each(function(i,r){t+=i==0?n(r).val():"."+n(r).val()}),t},f=function(){var n=this,t,i;if("selectionStart"in n)return n.selectionStart;if(document.selection)return n.focus(),t=document.selection.createRange(),i=document.selection.createRange().text.length,t.moveStart("character",-n.value.length),t.text.length-i;throw new Error("cell is not an input");};n.fn.ipv4_input=function(o,s){var h,c,a,l;if(this.each(function(){if(!n(this).hasClass("ipv4-input")){var r=this;r.prevValues=[];n(r).toggleClass("ipv4-input",!0);n(r).html('