signalk-backup 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +3 -3
- package/plugin/config/image-tag.d.ts +1 -1
- package/plugin/config/image-tag.js +1 -1
- package/plugin/config/schema.d.ts.map +1 -1
- package/plugin/config/schema.js +9 -8
- package/plugin/config/schema.js.map +1 -1
- package/public/assets/{AppPanel-qHY3hgKa.js → AppPanel-Wn1uKmbh.js} +2 -2
- package/public/assets/{AppPanel-qHY3hgKa.js.map → AppPanel-Wn1uKmbh.js.map} +1 -1
- package/public/assets/{_virtual_mf-localSharedImportMap___mfe_internal__signalk_mf_2_backup__mf_owner__1-Du7wMbis.js → _virtual_mf-localSharedImportMap___mfe_internal__signalk_mf_2_backup__mf_owner__1-DQ_NEhmC.js} +1 -1
- package/public/assets/dist-B-wbRLEQ.js +5 -0
- package/public/assets/dist-B-wbRLEQ.js.map +1 -0
- package/public/assets/{hostInit-kjS4q64P.js → hostInit-BnTHXPY_.js} +1 -1
- package/public/assets/{remote-C1XOdlZu.js → remote-CVW8SxYG.js} +2 -2
- package/public/assets/{remote-C1XOdlZu.js.map → remote-CVW8SxYG.js.map} +1 -1
- package/public/assets/{virtualExposes-CRxhb0RJ.js → virtualExposes-DOM6glvs.js} +2 -2
- package/public/assets/{virtualExposes-CRxhb0RJ.js.map → virtualExposes-DOM6glvs.js.map} +1 -1
- package/public/remoteEntry.js +1 -1
- package/public/remoteEntry.js.map +1 -1
- package/public/assets/dist-DWxKLhdH.js +0 -5
- package/public/assets/dist-DWxKLhdH.js.map +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import{n as e,t}from"./rolldown-runtime-CbXtAM7H.js";import{n,r,t as i}from"./_virtual_mf___mfe_internal__signalk_mf_2_backup__mf_owner__1__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-BVtcTS_R.js";import{a,i as o,n as s,o as c,r as l,s as u,t as d}from"./_virtual_mf___mfe_internal__signalk_mf_2_backup__mf_owner__1__loadShare__react__loadShare__.js-h6Wc3FqT.js";import{t as f}from"./_virtual_mf___mfe_internal__signalk_mf_2_backup__mf_owner__1__loadShare__react_mf_2_dom__loadShare__.js-DXBr3ZZh.js";var p=t(((e,t)=>{t.exports=`SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED`})),m=t(((e,t)=>{var n=p();function r(){}function i(){}i.resetWarningCache=r,t.exports=function(){function e(e,t,r,i,a,o){if(o!==n){var s=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name=`Invariant Violation`,s}}e.isRequired=e;function t(){return e}var a={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return a.PropTypes=a,a}})),h=t(((e,t)=>{t.exports=m()()})),g=t(((e,t)=>{(function(){var e={}.hasOwnProperty;function n(){for(var e=``,t=0;t<arguments.length;t++){var n=arguments[t];n&&(e=i(e,r(n)))}return e}function r(t){if(typeof t==`string`||typeof t==`number`)return t;if(typeof t!=`object`)return``;if(Array.isArray(t))return n.apply(null,t);if(t.toString!==Object.prototype.toString&&!t.toString.toString().includes(`[native code]`))return t.toString();var r=``;for(var a in t)e.call(t,a)&&t[a]&&(r=i(r,a));return r}function i(e,t){return t?e?e+` `+t:e+t:e}t!==void 0&&t.exports?(n.default=n,t.exports=n):typeof define==`function`&&typeof define.amd==`object`&&define.amd?define(`classnames`,[],function(){return n}):window.classNames=n})()})),_=e(h());function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function y(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?v(Object(n),!0).forEach(function(t){b(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(e){"@babel/helpers - typeof";return x=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},x(e)}function S(){var e=document.createElement(`div`);e.style.position=`absolute`,e.style.top=`-9999px`,e.style.width=`50px`,e.style.height=`50px`,e.style.overflow=`scroll`,document.body.appendChild(e);var t=e.offsetWidth-e.clientWidth;return document.body.removeChild(e),t}function C(e){document.body.style.paddingRight=e>0?`${e}px`:null}function w(){return document.body.clientWidth<window.innerWidth}function T(){var e=window.getComputedStyle(document.body,null);return parseInt(e&&e.getPropertyValue(`padding-right`)||0,10)}function ee(){var e=S(),t=document.querySelectorAll(`.fixed-top, .fixed-bottom, .is-fixed, .sticky-top`)[0],n=t?parseInt(t.style.paddingRight||0,10):0;w()&&C(n+e)}var E;function D(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:``,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:E;return t?e.split(` `).map(function(e){return t[e]||e}).join(` `):e}function te(e,t){var n={};return Object.keys(e).forEach(function(r){t.indexOf(r)===-1&&(n[r]=e[r])}),n}function ne(e,t){for(var n=Array.isArray(t)?t:[t],r=n.length,i,a={};r>0;)--r,i=n[r],a[i]=e[i];return a}var re={};function ie(e){re[e]||(typeof console<`u`&&console.error(e),re[e]=!0)}function ae(e,t){return function(n,r,i){n[r]!==null&&n[r]!==void 0&&ie(`"${r}" property of "${i}" has been deprecated.
|
|
2
|
-
${t}`);var a=[...arguments].slice(3);return e.apply(void 0,[n,r,i].concat(a))}}var oe=(typeof window>`u`?`undefined`:x(window))===`object`&&window.Element||function(){};function se(e,t,n){if(!(e[t]instanceof oe))return Error("Invalid prop `"+t+"` supplied to `"+n+"`. Expected prop to be an instance of Element. Validation failed.")}var ce=_.default.oneOfType([_.default.string,_.default.func,se,_.default.shape({current:_.default.any})]),O=_.default.oneOfType([_.default.func,_.default.string,_.default.shape({$$typeof:_.default.symbol,render:_.default.func}),_.default.arrayOf(_.default.oneOfType([_.default.func,_.default.string,_.default.shape({$$typeof:_.default.symbol,render:_.default.func})]))]),le={Fade:150,Collapse:350,Modal:300,Carousel:600,Offcanvas:300},ue=[`in`,`mountOnEnter`,`unmountOnExit`,`appear`,`enter`,`exit`,`timeout`,`onEnter`,`onEntering`,`onEntered`,`onExit`,`onExiting`,`onExited`],de={esc:27,space:32,enter:13,tab:9,up:38,down:40,home:36,end:35,n:78,p:80},fe=!!(typeof window<`u`&&window.document&&window.document.createElement);function pe(e){return e&&x(e)===`object`?`current`in e:!1}function me(e){return e==null?e===void 0?`[object Undefined]`:`[object Null]`:Object.prototype.toString.call(e)}function he(e){var t=x(e);return e!=null&&(t===`object`||t===`function`)}function ge(e){var t=x(e),n=NaN;if(t===`number`)return e;if(t===`symbol`||t===`object`&&me(e)===`[object Symbol]`)return n;if(he(e)){var r=typeof e.valueOf==`function`?e.valueOf():e;e=he(r)?`${r}`:r}if(t!==`string`)return e===0?e:+e;e=e.replace(/^\s+|\s+$/g,``);var i=/^0b[01]+$/i.test(e);return i||/^0o[0-7]+$/i.test(e)?parseInt(e.slice(2),i?2:8):/^[-+]0x[0-9a-f]+$/i.test(e)?n:+e}function _e(e){if(!he(e))return!1;var t=me(e);return t===`[object Function]`||t===`[object AsyncFunction]`||t===`[object GeneratorFunction]`||t===`[object Proxy]`}function ve(e){if(pe(e))return e.current;if(_e(e))return e();if(typeof e==`string`&&fe){var t=document.querySelectorAll(e);if(t.length||(t=document.querySelectorAll(`#${e}`)),!t.length)throw Error(`The target '${e}' could not be identified in the dom, tip: check spelling`);return t}return e}function ye(e){return e===null?!1:Array.isArray(e)||fe&&typeof e.length==`number`}function be(e,t){var n=ve(e);return t?ye(n)?n:n===null?[]:[n]:ye(n)?n[0]:n}var xe=[`a[href]`,`area[href]`,`input:not([disabled]):not([type=hidden])`,`select:not([disabled])`,`textarea:not([disabled])`,`button:not([disabled])`,`object`,`embed`,`[tabindex]:not(.modal):not(.offcanvas)`,`audio[controls]`,`video[controls]`,`[contenteditable]:not([contenteditable="false"])`];function Se(e,t){if(!e||!t)return t;var n=y({},t);return Object.keys(e).forEach(function(t){n[t]===void 0&&(n[t]=e[t]),Object.keys(e[t]||{}).length>0&&x(e[t])===`object`&&Se(e[t],n)}),n}var k=e(g()),Ce=[`className`,`cssModule`,`fluid`,`tag`];function we(){return we=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},we.apply(this,arguments)}function Te(e,t){if(e==null)return{};var n=Ee(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Ee(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var De={tag:O,fluid:_.default.oneOfType([_.default.bool,_.default.string]),className:_.default.string,cssModule:_.default.object};function Oe(e){var t=e.className,n=e.cssModule,r=e.fluid,i=e.tag,a=i===void 0?`div`:i,o=Te(e,Ce),s=`container`;r===!0?s=`container-fluid`:r&&(s=`container-${r}`);var c=D((0,k.default)(t,s),n);return u.createElement(a,we({},o,{className:c}))}Oe.propTypes=De;var ke=[`className`,`cssModule`,`noGutters`,`tag`,`widths`];function Ae(){return Ae=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ae.apply(this,arguments)}function je(e,t){if(e==null)return{};var n=Me(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Me(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Ne=[`xs`,`sm`,`md`,`lg`,`xl`,`xxl`],Pe=_.default.oneOfType([_.default.number,_.default.string]),Fe={tag:O,noGutters:ae(_.default.bool,`Please use Bootstrap 5 gutter utility classes. https://getbootstrap.com/docs/5.0/layout/gutters/`),className:_.default.string,cssModule:_.default.object,xs:Pe,sm:Pe,md:Pe,lg:Pe,xl:Pe,xxl:Pe,widths:_.default.array};function A(e){var t=e.className,n=e.cssModule,r=e.noGutters,i=e.tag,a=i===void 0?`div`:i,o=e.widths,s=o===void 0?Ne:o,c=je(e,ke),l=[];s.forEach(function(t,n){var r=e[t];if(delete c[t],r){var i=!n;l.push(i?`row-cols-${r}`:`row-cols-${t}-${r}`)}});var d=D((0,k.default)(t,r?`gx-0`:null,`row`,l),n);return u.createElement(a,Ae({},c,{className:d}))}A.propTypes=Fe;var Ie=[`className`,`cssModule`,`widths`,`tag`];function Le(){return Le=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Le.apply(this,arguments)}function Re(e,t){if(e==null)return{};var n=ze(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function ze(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function Be(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ve=[`xs`,`sm`,`md`,`lg`,`xl`,`xxl`],He=_.default.oneOfType([_.default.number,_.default.string]),Ue=_.default.oneOfType([_.default.bool,_.default.number,_.default.string,_.default.shape({size:_.default.oneOfType([_.default.bool,_.default.number,_.default.string]),order:He,offset:He})]),We={tag:O,xs:Ue,sm:Ue,md:Ue,lg:Ue,xl:Ue,xxl:Ue,className:_.default.string,cssModule:_.default.object,widths:_.default.array},Ge=function(e,t,n){return n===!0||n===``?e?`col`:`col-${t}`:n===`auto`?e?`col-auto`:`col-${t}-auto`:e?`col-${n}`:`col-${t}-${n}`},Ke=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ve,r=e,i=[];return n.forEach(function(e,n){var a=r[e];if(delete r[e],!(!a&&a!==``)){var o=!n;if(he(a)){var s,c=o?`-`:`-${e}-`,l=Ge(o,e,a.size);i.push(D((0,k.default)((s={},Be(s,l,a.size||a.size===``),Be(s,`order${c}${a.order}`,a.order||a.order===0),Be(s,`offset${c}${a.offset}`,a.offset||a.offset===0),s)),t))}else{var u=Ge(o,e,a);i.push(u)}}}),{colClasses:i,modifiedAttributes:r}};function j(e){var t=e.className,n=e.cssModule,r=e.widths,i=r===void 0?Ve:r,a=e.tag,o=a===void 0?`div`:a,s=Ke(Re(e,Ie),n,i),c=s.modifiedAttributes,l=s.colClasses;l.length||l.push(`col`);var d=D((0,k.default)(t,l),n);return u.createElement(o,Le({},c,{className:d}))}j.propTypes=We;var qe=[`className`,`cssModule`,`tabs`,`pills`,`vertical`,`horizontal`,`justified`,`fill`,`navbar`,`card`,`tag`];function Je(){return Je=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Je.apply(this,arguments)}function Ye(e,t){if(e==null)return{};var n=Xe(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Xe(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Ze={card:_.default.bool,className:_.default.string,cssModule:_.default.object,fill:_.default.bool,horizontal:_.default.oneOf([`center`,`end`]),justified:_.default.bool,navbar:_.default.bool,pills:_.default.bool,tabs:_.default.bool,tag:O,vertical:_.default.oneOfType([_.default.bool,_.default.string])},Qe=function(e){return e===!1?!1:e===!0||e===`xs`?`flex-column`:`flex-${e}-column`};function $e(e){var t=e.className,n=e.cssModule,r=e.tabs,i=e.pills,a=e.vertical,o=a!==void 0&&a,s=e.horizontal,c=e.justified,l=e.fill,d=e.navbar,f=e.card,p=e.tag,m=p===void 0?`ul`:p,h=Ye(e,qe),g=D((0,k.default)(t,d?`navbar-nav`:`nav`,s?`justify-content-${s}`:!1,Qe(o),{"nav-tabs":r,"card-header-tabs":f&&r,"nav-pills":i,"card-header-pills":f&&i,"nav-justified":c,"nav-fill":l}),n);return u.createElement(m,Je({},h,{className:g}))}$e.propTypes=Ze;var et=[`className`,`cssModule`,`active`,`tag`];function tt(){return tt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},tt.apply(this,arguments)}function nt(e,t){if(e==null)return{};var n=rt(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function rt(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var it={active:_.default.bool,className:_.default.string,cssModule:_.default.object,tag:O};function at(e){var t=e.className,n=e.cssModule,r=e.active,i=e.tag,a=i===void 0?`li`:i,o=nt(e,et),s=D((0,k.default)(t,`nav-item`,r?`active`:!1),n);return u.createElement(a,tt({},o,{className:s}))}at.propTypes=it;function ot(e){"@babel/helpers - typeof";return ot=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},ot(e)}var st=[`className`,`cssModule`,`active`,`tag`,`innerRef`];function ct(){return ct=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ct.apply(this,arguments)}function lt(e,t){if(e==null)return{};var n=ut(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function ut(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function dt(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function ft(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function pt(e,t,n){return t&&ft(e.prototype,t),n&&ft(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function mt(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&ht(e,t)}function ht(e,t){return ht=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ht(e,t)}function gt(e){var t=yt();return function(){var n=bt(e),r;if(t){var i=bt(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return _t(this,r)}}function _t(e,t){if(t&&(ot(t)===`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return vt(e)}function vt(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function yt(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function bt(e){return bt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},bt(e)}var xt={active:_.default.bool,className:_.default.string,cssModule:_.default.object,disabled:_.default.bool,href:_.default.any,innerRef:_.default.oneOfType([_.default.object,_.default.func,_.default.string]),onClick:_.default.func,tag:O},St=function(e){mt(n,e);var t=gt(n);function n(e){var r;return dt(this,n),r=t.call(this,e),r.onClick=r.onClick.bind(vt(r)),r}return pt(n,[{key:`onClick`,value:function(e){if(this.props.disabled){e.preventDefault();return}this.props.href===`#`&&e.preventDefault(),this.props.onClick&&this.props.onClick(e)}},{key:`render`,value:function(){var e=this.props,t=e.className,n=e.cssModule,r=e.active,i=e.tag,a=i===void 0?`a`:i,o=e.innerRef,s=lt(e,st),c=D((0,k.default)(t,`nav-link`,{disabled:s.disabled,active:r}),n);return u.createElement(a,ct({},s,{ref:o,onClick:this.onClick,className:c}))}}]),n}(u.Component);St.propTypes=xt;var Ct=[`className`,`cssModule`,`variant`,`innerRef`];function wt(){return wt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},wt.apply(this,arguments)}function Tt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Et(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Tt(Object(n),!0).forEach(function(t){Dt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Tt(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Dt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ot(e,t){if(e==null)return{};var n=kt(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function kt(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var At={active:_.default.bool,"aria-label":_.default.string,onClick:_.default.func,variant:_.default.oneOf([`white`]),className:_.default.string,cssModule:_.default.object,innerRef:_.default.oneOfType([_.default.object,_.default.string,_.default.func])};function jt(e){var t=e.className;e.cssModule;var n=e.variant,r=e.innerRef,i=Ot(e,Ct),a=D((0,k.default)(t,`btn-close`,n&&`btn-close-${n}`));return u.createElement(`button`,wt({ref:r,type:`button`,className:a},Et({"aria-label":`close`},i)))}jt.propTypes=At;var Mt=[`active`,`aria-label`,`block`,`className`,`close`,`cssModule`,`color`,`outline`,`size`,`tag`,`innerRef`];function Nt(){return Nt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Nt.apply(this,arguments)}function Pt(e,t){if(e==null)return{};var n=Ft(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Ft(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var It={active:_.default.bool,"aria-label":_.default.string,block:_.default.bool,children:_.default.node,className:_.default.string,cssModule:_.default.object,close:_.default.bool,color:_.default.string,disabled:_.default.bool,innerRef:_.default.oneOfType([_.default.object,_.default.func,_.default.string]),onClick:_.default.func,outline:_.default.bool,size:_.default.string,tag:O};function M(e){var t=s(function(t){if(e.disabled){t.preventDefault();return}if(e.onClick)return e.onClick(t)},[e.onClick,e.disabled]),n=e.active,r=e[`aria-label`],i=e.block,a=e.className,o=e.close,c=e.cssModule,l=e.color,d=l===void 0?`secondary`:l,f=e.outline,p=e.size,m=e.tag,h=m===void 0?`button`:m,g=e.innerRef,_=Pt(e,Mt);if(o)return u.createElement(jt,_);var v=`btn${f?`-outline`:``}-${d}`,y=D((0,k.default)(a,`btn`,v,p?`btn-${p}`:!1,i?`d-block w-100`:!1,{active:n,disabled:e.disabled}),c);return _.href&&h===`button`&&(h=`a`),u.createElement(h,Nt({type:h===`button`&&_.onClick?`button`:void 0},_,{className:y,ref:g,onClick:t,"aria-label":r}))}M.propTypes=It;function Lt(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function Rt(e,t){return Rt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Rt(e,t)}function zt(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Rt(e,t)}var Bt={disabled:!1},Vt=u.createContext(null),Ht=function(e){return e.scrollTop},Ut=`unmounted`,N=`exited`,Wt=`entering`,Gt=`entered`,Kt=`exiting`,P=function(e){zt(t,e);function t(t,n){var r=e.call(this,t,n)||this,i=n,a=i&&!i.isMounting?t.enter:t.appear,o;return r.appearStatus=null,t.in?a?(o=N,r.appearStatus=Wt):o=Gt:o=t.unmountOnExit||t.mountOnEnter?Ut:N,r.state={status:o},r.nextCallback=null,r}t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===`unmounted`?{status:N}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==`entering`&&n!==`entered`&&(t=Wt):(n===`entering`||n===`entered`)&&(t=Kt)}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e=this.props.timeout,t=n=r=e,n,r;return e!=null&&typeof e!=`number`&&(t=e.exit,n=e.enter,r=e.appear===void 0?n:e.appear),{exit:t,enter:n,appear:r}},n.updateStatus=function(e,t){if(e===void 0&&(e=!1),t!==null){if(this.cancelNextCallback(),t===`entering`){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:f.findDOMNode(this);n&&Ht(n)}this.performEnter(e)}else this.performExit()}else this.props.unmountOnExit&&this.state.status===`exited`&&this.setState({status:Ut})},n.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,i=this.props.nodeRef?[r]:[f.findDOMNode(this),r],a=i[0],o=i[1],s=this.getTimeouts(),c=r?s.appear:s.enter;if(!e&&!n||Bt.disabled){this.safeSetState({status:Gt},function(){t.props.onEntered(a)});return}this.props.onEnter(a,o),this.safeSetState({status:Wt},function(){t.props.onEntering(a,o),t.onTransitionEnd(c,function(){t.safeSetState({status:Gt},function(){t.props.onEntered(a,o)})})})},n.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:f.findDOMNode(this);if(!t||Bt.disabled){this.safeSetState({status:N},function(){e.props.onExited(r)});return}this.props.onExit(r),this.safeSetState({status:Kt},function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,function(){e.safeSetState({status:N},function(){e.props.onExited(r)})})})},n.cancelNextCallback=function(){this.nextCallback!==null&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:f.findDOMNode(this),r=e==null&&!this.props.addEndListener;if(!n||r){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var i=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],a=i[0],o=i[1];this.props.addEndListener(a,o)}e!=null&&setTimeout(this.nextCallback,e)},n.render=function(){var e=this.state.status;if(e===`unmounted`)return null;var t=this.props,n=t.children;t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef;var r=Lt(t,[`children`,`in`,`mountOnEnter`,`unmountOnExit`,`appear`,`enter`,`exit`,`timeout`,`addEndListener`,`onEnter`,`onEntering`,`onEntered`,`onExit`,`onExiting`,`onExited`,`nodeRef`]);return u.createElement(Vt.Provider,{value:null},typeof n==`function`?n(e,r):u.cloneElement(u.Children.only(n),r))},t}(u.Component);P.contextType=Vt,P.propTypes={};function F(){}P.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:F,onEntering:F,onEntered:F,onExit:F,onExiting:F,onExited:F},P.UNMOUNTED=Ut,P.EXITED=N,P.ENTERING=Wt,P.ENTERED=Gt,P.EXITING=Kt;var qt=[`tag`,`baseClass`,`baseClassActive`,`className`,`cssModule`,`children`,`innerRef`];function Jt(){return Jt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Jt.apply(this,arguments)}function Yt(e,t){if(e==null)return{};var n=Xt(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Xt(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function Zt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Qt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Zt(Object(n),!0).forEach(function(t){$t(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zt(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function $t(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var en=Qt(Qt({},P.propTypes),{},{children:_.default.oneOfType([_.default.arrayOf(_.default.node),_.default.node]),tag:O,baseClass:_.default.string,baseClassActive:_.default.string,className:_.default.string,cssModule:_.default.object,innerRef:_.default.oneOfType([_.default.object,_.default.string,_.default.func])}),tn=Qt(Qt({},P.defaultProps),{},{timeout:le.Fade,appear:!0,enter:!0,exit:!0,in:!0});function I(e){var t=a(null),n=Se(tn,e),r=n.tag,i=r===void 0?`div`:r,o=n.baseClass,s=o===void 0?`fade`:o,c=n.baseClassActive,l=c===void 0?`show`:c,d=n.className,f=n.cssModule,p=n.children,m=n.innerRef,h=m===void 0?t:m,g=Yt(n,qt),_=ne(Qt({defaultProps:tn},g),ue),v=te(g,ue);return u.createElement(P,Jt({nodeRef:h},_),function(e){var t=D((0,k.default)(d,s,e===`entered`&&l),f);return u.createElement(i,Jt({className:t},v,{ref:h}),p)})}I.propTypes=en;var nn=[`className`,`cssModule`,`color`,`innerRef`,`pill`,`tag`];function rn(){return rn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},rn.apply(this,arguments)}function an(e,t){if(e==null)return{};var n=on(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function on(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var sn={children:_.default.node,className:_.default.string,color:_.default.string,cssModule:_.default.object,innerRef:_.default.oneOfType([_.default.object,_.default.func,_.default.string]),pill:_.default.bool,tag:O};function L(e){var t=e.className,n=e.cssModule,r=e.color,i=r===void 0?`secondary`:r,a=e.innerRef,o=e.pill,s=o!==void 0&&o,c=e.tag,l=c===void 0?`span`:c,d=an(e,nn),f=D((0,k.default)(t,`badge`,`bg-`+i,s?`rounded-pill`:!1),n);return d.href&&l===`span`&&(l=`a`),u.createElement(l,rn({},d,{className:f,ref:a}))}L.propTypes=sn;var cn=[`className`,`cssModule`,`color`,`body`,`inverse`,`outline`,`tag`,`innerRef`];function ln(){return ln=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ln.apply(this,arguments)}function un(e,t){if(e==null)return{};var n=dn(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function dn(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var fn={body:_.default.bool,className:_.default.string,color:_.default.string,cssModule:_.default.object,innerRef:_.default.oneOfType([_.default.object,_.default.string,_.default.func]),inverse:_.default.bool,outline:_.default.bool,tag:O};function R(e){var t=e.className,n=e.cssModule,r=e.color,i=e.body,a=e.inverse,o=e.outline,s=e.tag,c=s===void 0?`div`:s,l=e.innerRef,d=un(e,cn),f=D((0,k.default)(t,`card`,a?`text-white`:!1,i?`card-body`:!1,r?`${o?`border`:`bg`}-${r}`:!1),n);return u.createElement(c,ln({},d,{className:f,ref:l}))}R.propTypes=fn;var pn=[`className`,`cssModule`,`innerRef`,`tag`];function mn(){return mn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},mn.apply(this,arguments)}function hn(e,t){if(e==null)return{};var n=gn(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function gn(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var _n={className:_.default.string,cssModule:_.default.object,innerRef:_.default.oneOfType([_.default.object,_.default.string,_.default.func]),tag:O};function z(e){var t=e.className,n=e.cssModule,r=e.innerRef,i=e.tag,a=i===void 0?`div`:i,o=hn(e,pn),s=D((0,k.default)(t,`card-body`),n);return u.createElement(a,mn({},o,{className:s,ref:r}))}z.propTypes=_n;var vn=[`className`,`cssModule`,`tag`];function yn(){return yn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},yn.apply(this,arguments)}function bn(e,t){if(e==null)return{};var n=xn(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function xn(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Sn={className:_.default.string,cssModule:_.default.object,tag:O};function B(e){var t=e.className,n=e.cssModule,r=e.tag,i=r===void 0?`div`:r,a=bn(e,vn),o=D((0,k.default)(t,`card-header`),n);return u.createElement(i,yn({},a,{className:o}))}B.propTypes=Sn;var Cn=[`children`,`className`,`barClassName`,`cssModule`,`value`,`min`,`max`,`animated`,`striped`,`color`,`bar`,`multi`,`tag`,`style`,`barStyle`,`barAriaValueText`,`barAriaLabelledBy`];function wn(){return wn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},wn.apply(this,arguments)}function Tn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function En(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Tn(Object(n),!0).forEach(function(t){Dn(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Tn(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Dn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function On(e,t){if(e==null)return{};var n=kn(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function kn(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var An={animated:_.default.bool,bar:_.default.bool,barAriaLabelledBy:_.default.string,barAriaValueText:_.default.string,barClassName:_.default.string,barStyle:_.default.object,children:_.default.node,className:_.default.string,cssModule:_.default.object,color:_.default.string,max:_.default.oneOfType([_.default.string,_.default.number]),min:_.default.oneOfType([_.default.string,_.default.number]),multi:_.default.bool,striped:_.default.bool,style:_.default.object,tag:O,value:_.default.oneOfType([_.default.string,_.default.number])};function jn(e){var t=e.children,n=e.className,r=e.barClassName,i=e.cssModule,a=e.value,o=a===void 0?0:a,s=e.min,c=s===void 0?0:s,l=e.max,d=l===void 0?100:l,f=e.animated,p=e.striped,m=e.color,h=e.bar,g=e.multi,_=e.tag,v=_===void 0?`div`:_,y=e.style,b=y===void 0?{}:y,x=e.barStyle,S=x===void 0?{}:x,C=e.barAriaValueText,w=e.barAriaLabelledBy,T=On(e,Cn),ee=ge(o)/ge(d)*100,E=D((0,k.default)(n,`progress`),i),te={className:D((0,k.default)(`progress-bar`,h&&n||r,f?`progress-bar-animated`:null,m?`bg-${m}`:null,p||f?`progress-bar-striped`:null),i),style:En(En(En({},h?b:{}),S),{},{width:`${ee}%`}),role:`progressbar`,"aria-valuenow":o,"aria-valuemin":c,"aria-valuemax":d,"aria-valuetext":C,"aria-labelledby":w,children:t};return h?u.createElement(v,wn({},T,te)):u.createElement(v,wn({},T,{style:b,className:E}),g?t:u.createElement(`div`,te))}jn.propTypes=An;function Mn(e){"@babel/helpers - typeof";return Mn=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Mn(e)}function Nn(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function Pn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Fn(e,t,n){return t&&Pn(e.prototype,t),n&&Pn(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function In(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Ln(e,t)}function Ln(e,t){return Ln=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Ln(e,t)}function Rn(e){var t=Vn();return function(){var n=Hn(e),r;if(t){var i=Hn(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return zn(this,r)}}function zn(e,t){if(t&&(Mn(t)===`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return Bn(e)}function Bn(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function Vn(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Hn(e){return Hn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Hn(e)}var Un={children:_.default.node.isRequired,node:_.default.any},Wn=function(e){In(n,e);var t=Rn(n);function n(){return Nn(this,n),t.apply(this,arguments)}return Fn(n,[{key:`componentWillUnmount`,value:function(){this.defaultNode&&document.body.removeChild(this.defaultNode),this.defaultNode=null}},{key:`render`,value:function(){return fe?(!this.props.node&&!this.defaultNode&&(this.defaultNode=document.createElement(`div`),document.body.appendChild(this.defaultNode)),f.createPortal(this.props.children,this.props.node||this.defaultNode)):null}}]),n}(u.Component);Wn.propTypes=Un;function Gn(e){"@babel/helpers - typeof";return Gn=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Gn(e)}function Kn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function V(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Kn(Object(n),!0).forEach(function(t){Jn(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Kn(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function qn(){return qn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},qn.apply(this,arguments)}function Jn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Yn(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function Xn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Zn(e,t,n){return t&&Xn(e.prototype,t),n&&Xn(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Qn(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&$n(e,t)}function $n(e,t){return $n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},$n(e,t)}function er(e){var t=nr();return function(){var n=rr(e),r;if(t){var i=rr(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return tr(this,r)}}function tr(e,t){if(t&&(Gn(t)===`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return H(e)}function H(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function nr(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function rr(e){return rr=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},rr(e)}function ir(){}var ar=_.default.shape(I.propTypes),or={autoFocus:_.default.bool,backdrop:_.default.oneOfType([_.default.bool,_.default.oneOf([`static`])]),backdropClassName:_.default.string,backdropTransition:ar,centered:_.default.bool,children:_.default.node,contentClassName:_.default.string,className:_.default.string,container:ce,cssModule:_.default.object,external:_.default.node,fade:_.default.bool,fullscreen:_.default.oneOfType([_.default.bool,_.default.oneOf([`sm`,`md`,`lg`,`xl`])]),innerRef:_.default.oneOfType([_.default.object,_.default.string,_.default.func]),isOpen:_.default.bool,keyboard:_.default.bool,labelledBy:_.default.string,modalClassName:_.default.string,modalTransition:ar,onClosed:_.default.func,onEnter:_.default.func,onExit:_.default.func,onOpened:_.default.func,returnFocusAfterClose:_.default.bool,role:_.default.string,scrollable:_.default.bool,size:_.default.string,toggle:_.default.func,trapFocus:_.default.bool,unmountOnClose:_.default.bool,wrapClassName:_.default.string,zIndex:_.default.oneOfType([_.default.number,_.default.string])},sr=Object.keys(or),cr={isOpen:!1,autoFocus:!0,centered:!1,scrollable:!1,role:`dialog`,backdrop:!0,keyboard:!0,zIndex:1050,fade:!0,onOpened:ir,onClosed:ir,modalTransition:{timeout:le.Modal},backdropTransition:{mountOnEnter:!0,timeout:le.Fade},unmountOnClose:!0,returnFocusAfterClose:!0,container:`body`,trapFocus:!1},lr=function(e){Qn(n,e);var t=er(n);function n(e){var r;return Yn(this,n),r=t.call(this,e),r._element=null,r._originalBodyPadding=null,r.getFocusableChildren=r.getFocusableChildren.bind(H(r)),r.handleBackdropClick=r.handleBackdropClick.bind(H(r)),r.handleBackdropMouseDown=r.handleBackdropMouseDown.bind(H(r)),r.handleEscape=r.handleEscape.bind(H(r)),r.handleStaticBackdropAnimation=r.handleStaticBackdropAnimation.bind(H(r)),r.handleTab=r.handleTab.bind(H(r)),r.onOpened=r.onOpened.bind(H(r)),r.onClosed=r.onClosed.bind(H(r)),r.manageFocusAfterClose=r.manageFocusAfterClose.bind(H(r)),r.clearBackdropAnimationTimeout=r.clearBackdropAnimationTimeout.bind(H(r)),r.trapFocus=r.trapFocus.bind(H(r)),r.state={isOpen:!1,showStaticBackdropAnimation:!1},r}return Zn(n,[{key:`componentDidMount`,value:function(){var e=this.props,t=e.isOpen,n=e.autoFocus,r=e.onEnter;t&&(this.init(),this.setState({isOpen:!0}),n&&this.setFocus()),r&&r(),document.addEventListener(`focus`,this.trapFocus,!0),this._isMounted=!0}},{key:`componentDidUpdate`,value:function(e,t){if(this.props.isOpen&&!e.isOpen){this.init(),this.setState({isOpen:!0});return}this.props.autoFocus&&this.state.isOpen&&!t.isOpen&&this.setFocus(),this._element&&e.zIndex!==this.props.zIndex&&(this._element.style.zIndex=this.props.zIndex)}},{key:`componentWillUnmount`,value:function(){this.clearBackdropAnimationTimeout(),this.props.onExit&&this.props.onExit(),this._element&&(this.destroy(),(this.props.isOpen||this.state.isOpen)&&this.close()),document.removeEventListener(`focus`,this.trapFocus,!0),this._isMounted=!1}},{key:`handleBackdropClick`,value:function(e){if(e.target===this._mouseDownElement){e.stopPropagation();var t=this._dialog?this._dialog.parentNode:null;if(t&&e.target===t&&this.props.backdrop===`static`&&this.handleStaticBackdropAnimation(),!this.props.isOpen||this.props.backdrop!==!0)return;t&&e.target===t&&this.props.toggle&&this.props.toggle(e)}}},{key:`handleTab`,value:function(e){if(e.which===9&&!(this.modalIndex<n.openCount-1)){var t=this.getFocusableChildren(),r=t.length;if(r!==0){for(var i=this.getFocusedChild(),a=0,o=0;o<r;o+=1)if(t[o]===i){a=o;break}e.shiftKey&&a===0?(e.preventDefault(),t[r-1].focus()):!e.shiftKey&&a===r-1&&(e.preventDefault(),t[0].focus())}}}},{key:`handleBackdropMouseDown`,value:function(e){this._mouseDownElement=e.target}},{key:`handleEscape`,value:function(e){this.props.isOpen&&e.keyCode===de.esc&&this.props.toggle&&(this.props.keyboard?(e.preventDefault(),e.stopPropagation(),this.props.toggle(e)):this.props.backdrop===`static`&&(e.preventDefault(),e.stopPropagation(),this.handleStaticBackdropAnimation()))}},{key:`handleStaticBackdropAnimation`,value:function(){var e=this;this.clearBackdropAnimationTimeout(),this.setState({showStaticBackdropAnimation:!0}),this._backdropAnimationTimeout=setTimeout(function(){e.setState({showStaticBackdropAnimation:!1})},100)}},{key:`onOpened`,value:function(e,t){this.props.onOpened(),(this.props.modalTransition.onEntered||ir)(e,t)}},{key:`onClosed`,value:function(e){var t=this.props.unmountOnClose;this.props.onClosed(),(this.props.modalTransition.onExited||ir)(e),t&&this.destroy(),this.close(),this._isMounted&&this.setState({isOpen:!1})}},{key:`setFocus`,value:function(){this._dialog&&this._dialog.parentNode&&typeof this._dialog.parentNode.focus==`function`&&this._dialog.parentNode.focus()}},{key:`getFocusableChildren`,value:function(){return this._element.querySelectorAll(xe.join(`, `))}},{key:`getFocusedChild`,value:function(){var e,t=this.getFocusableChildren();try{e=document.activeElement}catch{e=t[0]}return e}},{key:`trapFocus`,value:function(e){if(this.props.trapFocus&&this._element&&!(this._dialog&&this._dialog.parentNode===e.target)&&!(this.modalIndex<n.openCount-1)){for(var t=this.getFocusableChildren(),r=0;r<t.length;r+=1)if(t[r]===e.target)return;t.length>0&&(e.preventDefault(),e.stopPropagation(),t[0].focus())}}},{key:`init`,value:function(){try{this._triggeringElement=document.activeElement}catch{this._triggeringElement=null}this._element||(this._element=document.createElement(`div`),this._element.setAttribute(`tabindex`,`-1`),this._element.style.position=`relative`,this._element.style.zIndex=this.props.zIndex,this._mountContainer=be(this.props.container),this._mountContainer.appendChild(this._element)),this._originalBodyPadding=T(),n.openCount<1&&(n.originalBodyOverflow=window.getComputedStyle(document.body).overflow),ee(),n.openCount===0&&(document.body.className=(0,k.default)(document.body.className,D(`modal-open`,this.props.cssModule)),document.body.style.overflow=`hidden`),this.modalIndex=n.openCount,n.openCount+=1}},{key:`destroy`,value:function(){this._element&&=(this._mountContainer.removeChild(this._element),null),this.manageFocusAfterClose()}},{key:`manageFocusAfterClose`,value:function(){if(this._triggeringElement){var e=this.props.returnFocusAfterClose;this._triggeringElement.focus&&e&&this._triggeringElement.focus(),this._triggeringElement=null}}},{key:`close`,value:function(){if(n.openCount<=1){var e=D(`modal-open`,this.props.cssModule),t=RegExp(`(^| )${e}( |\$)`);document.body.className=document.body.className.replace(t,` `).trim(),document.body.style.overflow=n.originalBodyOverflow}this.manageFocusAfterClose(),n.openCount=Math.max(0,n.openCount-1),C(this._originalBodyPadding)}},{key:`clearBackdropAnimationTimeout`,value:function(){this._backdropAnimationTimeout&&=(clearTimeout(this._backdropAnimationTimeout),void 0)}},{key:`renderModalDialog`,value:function(){var e,t=this,n=te(this.props,sr),r=`modal-dialog`;return u.createElement(`div`,qn({},n,{className:D((0,k.default)(r,this.props.className,(e={},Jn(e,`modal-${this.props.size}`,this.props.size),Jn(e,`${r}-centered`,this.props.centered),Jn(e,`${r}-scrollable`,this.props.scrollable),Jn(e,`modal-fullscreen`,this.props.fullscreen===!0),Jn(e,`modal-fullscreen-${this.props.fullscreen}-down`,typeof this.props.fullscreen==`string`),e)),this.props.cssModule),role:`document`,ref:function(e){t._dialog=e}}),u.createElement(`div`,{className:D((0,k.default)(`modal-content`,this.props.contentClassName),this.props.cssModule)},this.props.children))}},{key:`render`,value:function(){var e=this.props.unmountOnClose;if(this._element&&(this.state.isOpen||!e)){var t=!!this._element&&!this.state.isOpen&&!e;this._element.style.display=t?`none`:`block`;var n=this.props,r=n.wrapClassName,i=n.modalClassName,a=n.backdropClassName,o=n.cssModule,s=n.isOpen,c=n.backdrop,l=n.role,d=n.labelledBy,f=n.external,p=n.innerRef,m={onClick:this.handleBackdropClick,onMouseDown:this.handleBackdropMouseDown,onKeyUp:this.handleEscape,onKeyDown:this.handleTab,style:{display:`block`},"aria-labelledby":d,"aria-modal":!0,role:l,tabIndex:`-1`},h=this.props.fade,g=V(V(V({},I.defaultProps),this.props.modalTransition),{},{baseClass:h?this.props.modalTransition.baseClass:``,timeout:h?this.props.modalTransition.timeout:0}),_=V(V(V({},I.defaultProps),this.props.backdropTransition),{},{baseClass:h?this.props.backdropTransition.baseClass:``,timeout:h?this.props.backdropTransition.timeout:0}),v=c&&(h?u.createElement(I,qn({},_,{in:s&&!!c,cssModule:o,className:D((0,k.default)(`modal-backdrop`,a),o)})):u.createElement(`div`,{className:D((0,k.default)(`modal-backdrop`,`show`,a),o)}));return u.createElement(Wn,{node:this._element},u.createElement(`div`,{className:D(r)},u.createElement(I,qn({},m,g,{in:s,onEntered:this.onOpened,onExited:this.onClosed,cssModule:o,className:D((0,k.default)(`modal`,i,this.state.showStaticBackdropAnimation&&`modal-static`),o),innerRef:p}),f,this.renderModalDialog()),v))}return null}}]),n}(u.Component);lr.propTypes=or,lr.defaultProps=cr,lr.openCount=0,lr.originalBodyOverflow=null;var ur=[`className`,`cssModule`,`children`,`toggle`,`tag`,`wrapTag`,`closeAriaLabel`,`close`];function dr(){return dr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},dr.apply(this,arguments)}function fr(e,t){if(e==null)return{};var n=pr(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function pr(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var mr={children:_.default.node,className:_.default.string,close:_.default.object,closeAriaLabel:_.default.string,cssModule:_.default.object,tag:O,toggle:_.default.func,wrapTag:O};function hr(e){var t,n=e.className,r=e.cssModule,i=e.children,a=e.toggle,o=e.tag,s=o===void 0?`h5`:o,c=e.wrapTag,l=c===void 0?`div`:c,d=e.closeAriaLabel,f=d===void 0?`Close`:d,p=e.close,m=fr(e,ur),h=D((0,k.default)(n,`modal-header`),r);return!p&&a&&(t=u.createElement(`button`,{type:`button`,onClick:a,className:D(`btn-close`,r),"aria-label":f})),u.createElement(l,dr({},m,{className:h}),u.createElement(s,{className:D(`modal-title`,r)},i),p||t)}hr.propTypes=mr;var gr=[`className`,`cssModule`,`tag`];function _r(){return _r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_r.apply(this,arguments)}function vr(e,t){if(e==null)return{};var n=yr(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function yr(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var br={className:_.default.string,cssModule:_.default.object,tag:O};function xr(e){var t=e.className,n=e.cssModule,r=e.tag,i=r===void 0?`div`:r,a=vr(e,gr),o=D((0,k.default)(t,`modal-body`),n);return u.createElement(i,_r({},a,{className:o}))}xr.propTypes=br;var Sr=[`className`,`cssModule`,`tag`];function Cr(){return Cr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Cr.apply(this,arguments)}function wr(e,t){if(e==null)return{};var n=Tr(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Tr(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Er={className:_.default.string,cssModule:_.default.object,tag:O};function Dr(e){var t=e.className,n=e.cssModule,r=e.tag,i=r===void 0?`div`:r,a=wr(e,Sr),o=D((0,k.default)(t,`modal-footer`),n);return u.createElement(i,Cr({},a,{className:o}))}Dr.propTypes=Er;var Or=[`className`,`cssModule`,`size`,`bordered`,`borderless`,`striped`,`dark`,`hover`,`responsive`,`tag`,`responsiveTag`,`innerRef`];function kr(){return kr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},kr.apply(this,arguments)}function Ar(e,t){if(e==null)return{};var n=jr(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function jr(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Mr={bordered:_.default.bool,borderless:_.default.bool,className:_.default.string,cssModule:_.default.object,dark:_.default.bool,hover:_.default.bool,innerRef:_.default.oneOfType([_.default.func,_.default.string,_.default.object]),responsive:_.default.oneOfType([_.default.bool,_.default.string]),responsiveTag:O,size:_.default.string,striped:_.default.bool,tag:O};function Nr(e){var t=e.className,n=e.cssModule,r=e.size,i=e.bordered,a=e.borderless,o=e.striped,s=e.dark,c=e.hover,l=e.responsive,d=e.tag,f=d===void 0?`table`:d,p=e.responsiveTag,m=p===void 0?`div`:p,h=e.innerRef,g=Ar(e,Or),_=D((0,k.default)(t,`table`,r?`table-`+r:!1,i?`table-bordered`:!1,a?`table-borderless`:!1,o?`table-striped`:!1,s?`table-dark`:!1,c?`table-hover`:!1),n),v=u.createElement(f,kr({},g,{ref:h,className:_}));if(l){var y=D(l===!0?`table-responsive`:`table-responsive-${l}`,n);return u.createElement(m,{className:y},v)}return v}Nr.propTypes=Mr;function Pr(e){"@babel/helpers - typeof";return Pr=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Pr(e)}var Fr=[`className`,`cssModule`,`tag`,`innerRef`];function Ir(){return Ir=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ir.apply(this,arguments)}function Lr(e,t){if(e==null)return{};var n=Rr(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Rr(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function zr(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function Br(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Vr(e,t,n){return t&&Br(e.prototype,t),n&&Br(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Hr(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Ur(e,t)}function Ur(e,t){return Ur=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Ur(e,t)}function Wr(e){var t=qr();return function(){var n=Jr(e),r;if(t){var i=Jr(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return Gr(this,r)}}function Gr(e,t){if(t&&(Pr(t)===`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return Kr(e)}function Kr(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function qr(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Jr(e){return Jr=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Jr(e)}var Yr={children:_.default.node,tag:O,innerRef:_.default.oneOfType([_.default.object,_.default.func,_.default.string]),className:_.default.string,cssModule:_.default.object},Xr=function(e){Hr(n,e);var t=Wr(n);function n(e){var r;return zr(this,n),r=t.call(this,e),r.getRef=r.getRef.bind(Kr(r)),r.submit=r.submit.bind(Kr(r)),r}return Vr(n,[{key:`getRef`,value:function(e){this.props.innerRef&&this.props.innerRef(e),this.ref=e}},{key:`submit`,value:function(){this.ref&&this.ref.submit()}},{key:`render`,value:function(){var e=this.props,t=e.className,n=e.cssModule,r=e.tag,i=r===void 0?`form`:r,a=e.innerRef,o=Lr(e,Fr),s=D(t,n);return u.createElement(i,Ir({},o,{ref:a,className:s}))}}]),n}(d);Xr.propTypes=Yr;var Zr=[`className`,`cssModule`,`row`,`disabled`,`check`,`inline`,`floating`,`noMargin`,`tag`,`switch`];function Qr(){return Qr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Qr.apply(this,arguments)}function $r(e,t){if(e==null)return{};var n=ei(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function ei(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var ti={children:_.default.node,row:_.default.bool,check:_.default.bool,switch:_.default.bool,inline:_.default.bool,floating:_.default.bool,noMargin:_.default.bool,disabled:_.default.bool,tag:O,className:_.default.string,cssModule:_.default.object};function U(e){var t=e.className,n=e.cssModule,r=e.row,i=e.disabled,a=e.check,o=e.inline,s=e.floating,c=e.noMargin,l=e.tag,d=l===void 0?`div`:l,f=e.switch,p=$r(e,Zr),m=a||f,h=D((0,k.default)(t,r?`row`:!1,m?`form-check`:!1,f?`form-switch`:!1,m||c?!1:`mb-3`,m&&o?`form-check-inline`:!1,m&&i?`disabled`:!1,s&&`form-floating`),n);return d===`fieldset`&&(p.disabled=i),u.createElement(d,Qr({},p,{className:h}))}U.propTypes=ti;function ni(e){"@babel/helpers - typeof";return ni=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},ni(e)}var ri=[`className`,`cssModule`,`type`,`bsSize`,`valid`,`invalid`,`tag`,`addon`,`plaintext`,`innerRef`];function ii(){return ii=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ii.apply(this,arguments)}function ai(e,t){if(e==null)return{};var n=oi(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function oi(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function si(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function ci(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function li(e,t,n){return t&&ci(e.prototype,t),n&&ci(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function ui(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&di(e,t)}function di(e,t){return di=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},di(e,t)}function fi(e){var t=hi();return function(){var n=gi(e),r;if(t){var i=gi(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return pi(this,r)}}function pi(e,t){if(t&&(ni(t)===`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return mi(e)}function mi(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function hi(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function gi(e){return gi=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},gi(e)}var _i={children:_.default.node,type:_.default.string,size:_.default.oneOfType([_.default.number,_.default.string]),bsSize:_.default.string,valid:_.default.bool,invalid:_.default.bool,tag:O,innerRef:_.default.oneOfType([_.default.object,_.default.func,_.default.string]),plaintext:_.default.bool,addon:_.default.bool,className:_.default.string,cssModule:_.default.object},W=function(e){ui(n,e);var t=fi(n);function n(e){var r;return si(this,n),r=t.call(this,e),r.getRef=r.getRef.bind(mi(r)),r.focus=r.focus.bind(mi(r)),r}return li(n,[{key:`getRef`,value:function(e){this.props.innerRef&&this.props.innerRef(e),this.ref=e}},{key:`focus`,value:function(){this.ref&&this.ref.focus()}},{key:`render`,value:function(){var e=this.props,t=e.className,n=e.cssModule,r=e.type,i=r===void 0?`text`:r,a=e.bsSize,o=e.valid,s=e.invalid,c=e.tag,l=e.addon,d=e.plaintext,f=e.innerRef,p=ai(e,ri),m=[`switch`,`radio`,`checkbox`].indexOf(i)>-1,h=/\D/g,g=i===`textarea`,_=i===`select`,v=i===`range`,y=c||(_||g?i:`input`),b=`form-control`;d?(b=`${b}-plaintext`,y=c||`input`):v?b=`form-range`:_?b=`form-select`:m&&(b=l?null:`form-check-input`),p.size&&h.test(p.size)&&(ie(`Please use the prop "bsSize" instead of the "size" to bootstrap's input sizing.`),a=p.size,delete p.size);var x=D((0,k.default)(t,s&&`is-invalid`,o&&`is-valid`,a?_?`form-select-${a}`:`form-control-${a}`:!1,b),n);return(y===`input`||c&&typeof c==`function`)&&(p.type=i===`switch`?`checkbox`:i),p.children&&!(d||i===`select`||typeof y!=`string`||y===`select`)&&(ie(`Input with a type of "${i}" cannot have children. Please use "value"/"defaultValue" instead.`),delete p.children),u.createElement(y,ii({},p,{ref:f,className:x,"aria-invalid":s}))}}]),n}(u.Component);W.propTypes=_i;var vi=[`className`,`cssModule`,`hidden`,`widths`,`tag`,`check`,`size`,`for`];function yi(){return yi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},yi.apply(this,arguments)}function bi(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function xi(e,t){if(e==null)return{};var n=Si(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Si(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Ci=[`xs`,`sm`,`md`,`lg`,`xl`,`xxl`],wi=_.default.oneOfType([_.default.number,_.default.string]),Ti=_.default.oneOfType([_.default.bool,_.default.string,_.default.number,_.default.shape({size:wi,order:wi,offset:wi})]),Ei={children:_.default.node,hidden:_.default.bool,check:_.default.bool,size:_.default.string,for:_.default.string,tag:O,className:_.default.string,cssModule:_.default.object,xs:Ti,sm:Ti,md:Ti,lg:Ti,xl:Ti,xxl:Ti,widths:_.default.array},Di=function(e,t,n){return n===!0||n===``?e?`col`:`col-${t}`:n===`auto`?e?`col-auto`:`col-${t}-auto`:e?`col-${n}`:`col-${t}-${n}`};function G(e){var t=e.className,n=e.cssModule,r=e.hidden,i=e.widths,a=i===void 0?Ci:i,o=e.tag,s=o===void 0?`label`:o,c=e.check,l=e.size,d=e.for,f=xi(e,vi),p=[];a.forEach(function(t,r){var i=e[t];if(delete f[t],!(!i&&i!==``)){var a=!r,o;if(he(i)){var s,c=a?`-`:`-${t}-`;o=Di(a,t,i.size),p.push(D((0,k.default)((s={},bi(s,o,i.size||i.size===``),bi(s,`order${c}${i.order}`,i.order||i.order===0),bi(s,`offset${c}${i.offset}`,i.offset||i.offset===0),s))),n)}else o=Di(a,t,i),p.push(o)}});var m=l||p.length,h=!(c||m),g=D((0,k.default)(t,r?`visually-hidden`:!1,c?`form-check-label`:!1,l?`col-form-label-${l}`:!1,p,m?`col-form-label`:!1,h?`form-label`:!1),n);return u.createElement(s,yi({htmlFor:d},f,{className:g}))}G.propTypes=Ei;var Oi=[`className`,`closeClassName`,`closeAriaLabel`,`cssModule`,`tag`,`color`,`isOpen`,`toggle`,`children`,`transition`,`fade`,`innerRef`];function ki(){return ki=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ki.apply(this,arguments)}function Ai(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ji(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Ai(Object(n),!0).forEach(function(t){Mi(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ai(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Mi(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ni(e,t){if(e==null)return{};var n=Pi(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Pi(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Fi={children:_.default.node,className:_.default.string,closeClassName:_.default.string,closeAriaLabel:_.default.string,color:_.default.string,cssModule:_.default.object,fade:_.default.bool,innerRef:_.default.oneOfType([_.default.object,_.default.string,_.default.func]),isOpen:_.default.bool,tag:O,toggle:_.default.func,transition:_.default.shape(I.propTypes)};function K(e){var t=e.className,n=e.closeClassName,r=e.closeAriaLabel,i=r===void 0?`Close`:r,a=e.cssModule,o=e.tag,s=o===void 0?`div`:o,c=e.color,l=c===void 0?`success`:c,d=e.isOpen,f=d===void 0||d,p=e.toggle,m=e.children,h=e.transition,g=h===void 0?ji(ji({},I.defaultProps),{},{unmountOnExit:!0}):h,_=e.fade,v=_===void 0||_,y=e.innerRef,b=Ni(e,Oi),x=D((0,k.default)(t,`alert`,`alert-${l}`,{"alert-dismissible":p}),a),S=D((0,k.default)(`btn-close`,n),a),C=ji(ji(ji({},I.defaultProps),g),{},{baseClass:v?g.baseClass:``,timeout:v?g.timeout:0});return u.createElement(I,ki({},b,C,{tag:s,className:x,in:f,role:`alert`,innerRef:y}),p?u.createElement(`button`,{type:`button`,className:S,"aria-label":i,onClick:p}):null,m)}K.propTypes=Fi;var Ii=[`className`,`cssModule`,`type`,`size`,`color`,`children`,`tag`];function Li(){return Li=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Li.apply(this,arguments)}function Ri(e,t){if(e==null)return{};var n=zi(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function zi(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Bi={tag:O,type:_.default.oneOf([`border`,`grow`]),size:_.default.oneOf([`sm`]),color:_.default.oneOf([`primary`,`secondary`,`success`,`danger`,`warning`,`info`,`light`,`dark`]),className:_.default.string,cssModule:_.default.object,children:_.default.string};function q(e){var t=e.className,n=e.cssModule,r=e.type,i=r===void 0?`border`:r,a=e.size,o=e.color,s=e.children,c=s===void 0?`Loading...`:s,l=e.tag,d=l===void 0?`div`:l,f=Ri(e,Ii),p=D((0,k.default)(t,a?`spinner-${i}-${a}`:!1,`spinner-${i}`,o?`text-${o}`:!1),n);return u.createElement(d,Li({role:`status`},f,{className:p}),c&&u.createElement(`span`,{className:D(`visually-hidden`,n)},c))}q.propTypes=Bi;var J=`/plugins/signalk-backup/api`,Vi=class extends Error{conflict;constructor(e,t){super(e),this.conflict=t,this.name=`PartialRestoreConflictError`}},Hi=class extends Error{status;code;constructor(e,t,n){super(e),this.status=t,this.code=n,this.name=`ApiError`}};async function Y(e,t){let n=await fetch(J+e,t),r=await n.json().catch(()=>null);if(typeof r==`object`&&r&&`success`in r){let e=r;if(e.success===!1){let t=e.error?.code;throw new Hi(e.error?.message??`unknown server error`,n.status,t)}if(e.success===!0&&`data`in r)return e.data}if(!n.ok)throw new Hi(`HTTP ${n.status}`,n.status,void 0);return r}async function Ui(e,t){let n=await fetch(J+e,t),r=await n.json().catch(()=>null);if(!n.ok){let e=r?.error;throw new Hi(e??`HTTP ${n.status}`,n.status,void 0)}return r}var X={health:()=>Y(`/health`),listBackups:()=>Y(`/backups`),scheduler:()=>Y(`/backups/scheduler`),repository:()=>Y(`/backups/repository`),createBackup:e=>Y(`/backups`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({description:e})}),deleteBackup:e=>Y(`/backups/${encodeURIComponent(e)}`,{method:`DELETE`}),uploadBackup:(e,t)=>{let n=new FormData;return n.append(`file`,e),t&&n.append(`description`,t),n.append(`restoreImmediately`,`false`),Y(`/backups/upload`,{method:`POST`,body:n})},startRestore:e=>Y(`/backups/${encodeURIComponent(e)}/restore`,{method:`POST`}),restoreStatus:()=>Y(`/backups/restore/status`),resetRestoreState:()=>Y(`/backups/restore/reset`,{method:`POST`}),downloadUrl:e=>`${J}/backups/${encodeURIComponent(e)}/download`,listBackupTree:(e,t)=>Y(`/backups/${encodeURIComponent(e)}/tree?path=${encodeURIComponent(t)}`),downloadSubtreeUrl:(e,t)=>`${J}/backups/${encodeURIComponent(e)}/download-subtree?path=${encodeURIComponent(t)}`,restorePartial:async(e,t)=>{let n=`${J}/backups/${encodeURIComponent(e)}/restore-partial`,r=await fetch(n,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(r.status===409){let e=await r.json().catch(()=>null),t=e?.data?.conflict,n=e?.error?.code;throw n===`TARGET_EXISTS`&&t?new Vi(e.error?.message??`Target already exists`,t):Error(`restore-partial → 409${n?` [${n}]`:``}: ${e?.error?.message??`conflict`}`)}if(!r.ok){let e=await r.text().catch(()=>``);throw Error(`restore-partial → ${r.status}: ${e.slice(0,200)}`)}let i=await r.json();if(i.success===!1)throw Error(`restore-partial: ${i.error?.message??`unknown error`}`);return i.data??{started:!0}},restorePartialStatus:()=>Y(`/backups/restore-partial/status`),resetRestorePartialState:()=>Y(`/backups/restore-partial/reset`,{method:`POST`}),restorePartialHost:async e=>{let t=await fetch(`${J}/restore-partial-host`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(t.status===409){let e=await t.json().catch(()=>null),n=e?.data?.conflict,r=e?.error?.code;throw r===`TARGET_EXISTS`&&n?new Vi(e.error?.message??`Target already exists`,n):Error(`restore-partial-host → 409${r?` [${r}]`:``}: ${e?.error?.message??`conflict`}`)}if(!t.ok){let e=await t.text().catch(()=>``);throw Error(`restore-partial-host → ${t.status}: ${e.slice(0,200)}`)}let n=await t.json();if(n.success===!1)throw Error(`restore-partial-host: ${n.error?.message??`unknown error`}`);return n.data??{started:!0}},restorePartialHostStatus:()=>Y(`/restore-partial-host/status`),resetRestorePartialHostState:()=>Y(`/restore-partial-host/reset`,{method:`POST`}),listStaging:()=>Y(`/db-export/staging`),stagingDownloadUrl:e=>`${J}/db-export/staging/download?file=${encodeURIComponent(e)}`,cloudStatus:async()=>{let e=await Y(`/cloud/status`);return{...e,provider:e.provider??`gdrive`}},gdriveStatus:()=>Y(`/cloud/gdrive/status`),gdriveAuthState:()=>Y(`/cloud/gdrive/auth-state`),gdriveConnect:()=>Y(`/cloud/gdrive/connect`,{method:`POST`}),gdriveCancel:()=>Y(`/cloud/gdrive/cancel`,{method:`POST`}),gdriveAuthCallback:e=>Y(`/cloud/gdrive/auth-callback`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({url:e})}),gdriveDisconnect:()=>Y(`/cloud/gdrive/disconnect`,{method:`POST`}),localStatus:()=>Y(`/cloud/local/status`),localDiscover:()=>Y(`/cloud/local/discover`),localConfigure:(e,t)=>Y(`/cloud/local/configure`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({containerPath:e,hostPath:t})}),localDisconnect:()=>Y(`/cloud/local/disconnect`,{method:`POST`}),smbStatus:()=>Y(`/cloud/smb/status`),smbDiscover:()=>Y(`/cloud/smb/discover`),smbConnect:e=>Y(`/cloud/smb/connect`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),smbDisconnect:()=>Y(`/cloud/smb/disconnect`,{method:`POST`}),dbExportConfig:()=>Y(`/db-export/config`),dbExportConfigSet:e=>Y(`/db-export/config`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),cloudSync:()=>Y(`/cloud/sync`,{method:`POST`}),cloudSyncCancel:()=>Y(`/cloud/sync/cancel`,{method:`POST`}),cloudConfig:e=>Y(`/cloud/config`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),schedulerStart:()=>Y(`/backups/scheduler/start`,{method:`POST`}),schedulerStop:()=>Y(`/backups/scheduler/stop`,{method:`POST`}),retention:()=>Y(`/backups/retention`),setRetention:e=>Y(`/backups/retention`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),exclusions:()=>Y(`/backups/exclusions`),setExclusions:e=>Y(`/backups/exclusions`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({exclusions:e})}),dataDirs:()=>Y(`/backups/data-dirs`),pluginDataDirs:()=>Y(`/backups/plugin-data-dirs`),passwordStatus:()=>Y(`/backups/password`),setPassword:e=>Y(`/backups/password`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({password:e,confirmPassword:e})}),resetPassword:()=>Y(`/backups/password`,{method:`DELETE`}),checkUpdate:()=>Ui(`/update/check`),applyUpdate:e=>Ui(`/update/apply`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e?{tag:e}:{})}),pluginStatus:async()=>{let e=await fetch(`/plugins/signalk-backup/status`);if(!e.ok)throw Error(`/status → ${e.status}`);return e.json()}};function Z(e){if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`,`TB`],n=e/1024,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n.toFixed(1)} ${t[r]}`}function Wi(e,t){if(!e||!t)return e;let n=e=>e.replace(/\/+$/,``)||`/`,r=n(t.containerPath),i=n(t.hostPath);if(n(e)===r)return i;let a=r===`/`?`/`:r+`/`;return e.startsWith(a)?i+`/`+e.slice(a.length):e}function Q(e){if(!e)return`Never`;let t=new Date(e);return isNaN(t.getTime())?e:t.toLocaleString(void 0,{year:`numeric`,month:`short`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`})}function $(e,t={}){let{intervalMs:n}=t,[r,i]=c(null),[o,u]=c(!0),[d,f]=c(null),p=a(e);p.current=e;let m=s(async e=>{try{let t=await p.current();if(e.current)return;i(t),f(null)}catch(t){if(e.current)return;f(t instanceof Error?t.message:String(t))}finally{e.current||u(!1)}},[]),[h,g]=c(0),_=s(()=>{g(e=>e+1)},[]);return l(()=>{let e={current:!1};u(!0),m(e);let t;return n&&n>0&&(t=setInterval(()=>{m(e)},n)),()=>{e.current=!0,t&&clearInterval(t)}},[n,m,h]),{data:r,loading:o,error:d,refresh:_}}function Gi({status:e}){return e?e.ready?n(L,{color:`success`,children:`Ready`}):n(L,{color:`warning`,children:`Not ready`}):n(L,{color:`secondary`,children:`Unknown`})}function Ki({stats:e}){let t=e.totalSize>0?e.originalSize/e.totalSize:0;return r(A,{className:`g-2`,children:[r(j,{xs:6,children:[n(`small`,{className:`text-muted d-block`,children:`On disk`}),n(`div`,{children:Z(e.totalSize)})]}),r(j,{xs:6,children:[n(`small`,{className:`text-muted d-block`,children:`Logical`}),n(`div`,{children:Z(e.originalSize)})]}),n(j,{xs:12,className:`mt-2`,children:n(`small`,{className:`text-muted d-block`,children:t>=1.1?`${t.toFixed(1)}× dedup (${Z(e.dedupSavings)} saved)`:`No significant dedup yet`})})]})}function qi({scheduler:e}){return r(A,{className:`g-2 mt-2`,children:[r(j,{xs:3,children:[n(`small`,{className:`text-muted d-block`,children:`Hourly`}),n(`div`,{children:e.backupCounts.hourly})]}),r(j,{xs:3,children:[n(`small`,{className:`text-muted d-block`,children:`Daily`}),n(`div`,{children:e.backupCounts.daily})]}),r(j,{xs:3,children:[n(`small`,{className:`text-muted d-block`,children:`Weekly`}),n(`div`,{children:e.backupCounts.weekly})]}),r(j,{xs:3,children:[n(`small`,{className:`text-muted d-block`,children:`Manual`}),n(`div`,{children:e.backupCounts.manual})]})]})}function Ji(){let e=$(()=>X.pluginStatus(),{intervalMs:5e3}),t=$(()=>X.scheduler(),{intervalMs:15e3}),a=$(()=>X.listBackups(),{intervalMs:3e4}),o=$(()=>X.repository(),{intervalMs:6e4});return r(i,{children:[r(`div`,{className:`d-flex justify-content-between align-items-center mb-3`,children:[n(`h2`,{className:`mb-0`,children:`Dashboard`}),n(M,{color:`secondary`,outline:!0,size:`sm`,onClick:()=>{e.refresh(),t.refresh(),a.refresh(),o.refresh()},disabled:e.loading||t.loading||a.loading||o.loading,children:`Refresh`})]}),r(A,{children:[n(j,{xs:12,md:6,children:r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Plugin status`})}),n(z,{children:e.loading&&!e.data?n(q,{size:`sm`}):e.error?n(K,{color:`danger`,className:`mb-0`,children:e.error}):r(i,{children:[n(`div`,{className:`mb-2`,children:n(Gi,{status:e.data})}),e.data&&r(`dl`,{className:`row mb-0`,children:[n(`dt`,{className:`col-sm-4`,children:`Image`}),n(`dd`,{className:`col-sm-8 text-truncate`,children:n(`code`,{children:e.data.container.image})}),n(`dt`,{className:`col-sm-4`,children:`Container`}),r(`dd`,{className:`col-sm-8`,children:[e.data.container.state,` `,e.data.container.managed&&n(`small`,{className:`text-muted`,children:`(managed)`})]})]})]})})]})}),n(j,{xs:12,md:6,children:r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Scheduler`})}),n(z,{children:t.loading&&!t.data?n(q,{size:`sm`}):t.error?n(K,{color:`danger`,className:`mb-0`,children:t.error}):t.data?r(i,{children:[n(`div`,{className:`mb-2`,children:n(L,{color:t.data.enabled?`success`:`secondary`,children:t.data.enabled?`Running`:`Stopped`})}),r(A,{className:`g-2`,children:[r(j,{xs:6,children:[n(`small`,{className:`text-muted d-block`,children:`Last backup`}),n(`div`,{children:Q(t.data.lastBackup)})]}),r(j,{xs:6,children:[n(`small`,{className:`text-muted d-block`,children:`Total snapshots`}),n(`div`,{children:t.data.backupCounts.total})]})]}),n(qi,{scheduler:t.data})]}):null})]})}),n(j,{xs:12,md:6,children:r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Local repository`})}),n(z,{children:o.loading&&!o.data?n(q,{size:`sm`}):o.error?n(K,{color:`danger`,className:`mb-0`,children:o.error}):o.data?n(Ki,{stats:o.data}):null})]})})]}),r(R,{children:[n(B,{children:n(`strong`,{children:`Recent backups`})}),n(z,{children:a.loading&&!a.data?n(q,{size:`sm`}):a.error?n(K,{color:`danger`,className:`mb-0`,children:a.error}):a.data&&a.data.backups.length>0?n(`ul`,{className:`list-unstyled mb-0`,children:a.data.backups.slice(0,5).map(e=>r(`li`,{className:`d-flex justify-content-between border-bottom py-2`,children:[r(`span`,{children:[n(L,{color:`light`,className:`text-dark me-2`,children:e.type}),Q(e.createdAt)]}),n(`code`,{className:`text-muted small`,children:e.id.slice(0,12)})]},e.id))}):n(`p`,{className:`text-muted mb-0`,children:`No backups yet.`})})]})]})}function Yi({backup:e,sourceEntry:t,sourcePath:a,pathMapping:o,onClose:s,onSubmitted:l}){let[u,d]=c(`original`),[f,p]=c(``),[m,h]=c(!1),[g,_]=c(null),[v,y]=c(null),b=e=>({sourcePath:a,targetMode:u,...u===`custom`?{customPath:f.trim()}:{},confirmOverwrite:e}),x=async n=>{h(!0),_(null);try{u===`custom`?await X.restorePartialHost({backupId:e.id,sourcePath:a,customPath:f.trim(),isDir:t.isDir,confirmOverwrite:n}):await X.restorePartial(e.id,b(n)),l()}catch(e){e instanceof Vi?y(e.conflict):_(e instanceof Error?e.message:String(e))}finally{h(!1)}},S=m||u===`custom`&&f.trim().length===0;return r(lr,{isOpen:!0,toggle:m?void 0:s,size:`md`,backdrop:`static`,children:[r(hr,{toggle:m?void 0:s,children:[`Restore `,t.isDir?`directory`:`file`]}),r(xr,{children:[r(`div`,{className:`mb-3 small text-muted`,children:[`Source:`,` `,r(`code`,{children:[a,t.isDir?`/`:``]}),` `,`(`,Z(t.size),`)`]}),r(U,{tag:`fieldset`,disabled:m,children:[n(`legend`,{className:`h6`,children:`Restore target`}),n(U,{check:!0,children:r(G,{check:!0,children:[n(W,{type:`radio`,name:`partial-restore-mode`,checked:u===`original`,onChange:()=>{d(`original`),y(null)}}),` `,`Original location (under SignalK config root)`]})}),n(U,{check:!0,children:r(G,{check:!0,children:[n(W,{type:`radio`,name:`partial-restore-mode`,checked:u===`custom`,onChange:()=>{d(`custom`),y(null)}}),` `,`Custom path (anywhere the SignalK user can write)`]})}),u===`custom`&&r(U,{className:`mt-2`,children:[n(G,{for:`partial-restore-custom-path`,children:`Custom path`}),n(W,{id:`partial-restore-custom-path`,value:f,onChange:e=>{p(e.target.value),y(null)},placeholder:`e.g. /tmp/restored or /media/usb/backups/`}),n(`small`,{className:`text-muted`,children:`Relative or absolute. The plugin writes locally under the SignalK process's permissions, so anywhere your user can write works — including /tmp, /media/usb/…, or under your home directory. Add a trailing slash to land inside as a directory.`})]})]}),v&&r(K,{color:`warning`,className:`mt-3 mb-0`,children:[n(`div`,{className:`fw-semibold`,children:`Target already exists`}),n(`div`,{className:`small mb-2`,children:n(`code`,{children:Wi(v.targetPath,o)})}),r(`div`,{className:`small`,children:[r(`div`,{children:[`Existing size: `,v.size==null?`unknown`:Z(v.size)]}),r(`div`,{children:[`Existing mtime: `,v.mtime?Q(v.mtime):`unknown`]}),r(`div`,{children:[`Snapshot entry size: `,Z(t.size)]}),r(`div`,{children:[`Snapshot entry mtime: `,t.mtime]})]}),r(`div`,{className:`mt-2 d-flex gap-2`,children:[n(M,{color:`danger`,size:`sm`,disabled:m,onClick:()=>void x(!0),children:m?n(q,{size:`sm`}):`Overwrite`}),n(M,{color:`secondary`,outline:!0,size:`sm`,disabled:m,onClick:()=>{y(null)},children:`Cancel`})]})]}),g&&n(K,{color:`danger`,className:`mt-3 mb-0`,children:g})]}),r(Dr,{children:[n(M,{color:`secondary`,outline:!0,disabled:m,onClick:s,children:`Cancel`}),n(M,{color:`primary`,disabled:S||v!==null,onClick:()=>void x(!1),children:m?r(i,{children:[n(q,{size:`sm`}),` Starting…`]}):`Restore`})]})]})}function Xi(e,t){return e?`${e}/${t}`:t}function Zi({backup:e,isOpen:t,onClose:o,initialPath:u,restoreLocked:d,pathMapping:f,onRestoreStarted:p}){let m=(u??``).replace(/^\/+|\/+$/g,``),[h,g]=c({}),[_,v]=c(()=>new Set([m])),[y,b]=c(null),x=a(0);l(()=>{t&&(x.current+=1,g({}),v(new Set([m])),b(null))},[t,e.id,m]);let S=s(async t=>{let n=x.current;g(e=>({...e,[t]:{entries:null,error:null,errorCode:null}}));try{let r=await X.listBackupTree(e.id,t);if(n!==x.current)return;g(e=>({...e,[t]:{entries:r.entries,error:null,errorCode:null}}))}catch(e){if(n!==x.current)return;let r=e instanceof Error?e.message:String(e),i=e instanceof Hi?e.code??null:null;g(e=>({...e,[t]:{entries:null,error:r,errorCode:i}}))}},[e.id]);return l(()=>{t&&h[m]===void 0&&S(m)},[t,m,h,S]),r(lr,{isOpen:t,toggle:o,size:`lg`,scrollable:!0,children:[r(hr,{toggle:o,children:[`Browse backup `,n(`code`,{className:`small ms-1`,children:e.id.slice(0,12)})]}),r(xr,{children:[n(`div`,{className:`text-muted small mb-2`,children:m?r(i,{children:[`Scoped to `,r(`code`,{children:[m,`/`]})]}):n(i,{children:`Showing snapshot root`})}),n(Qi,{backupId:e.id,path:m,rootPath:m,depth:0,cache:h,expanded:_,restoreLocked:d===!0,onToggle:e=>{let t=new Set(_);t.has(e)?t.delete(e):(t.add(e),h[e]===void 0&&S(e)),v(t)},onRetry:S,onStartRestore:(e,t)=>{b({...e,fullPath:t})}})]}),n(Dr,{children:n(M,{color:`secondary`,outline:!0,onClick:o,children:`Close`})}),y&&n(Yi,{backup:e,sourceEntry:y,sourcePath:y.fullPath,pathMapping:f,onClose:()=>{b(null)},onSubmitted:()=>{b(null),p?.()}})]})}function Qi({backupId:e,path:t,rootPath:i,depth:a,cache:o,expanded:s,restoreLocked:c,onToggle:l,onRetry:u,onStartRestore:d}){let f=o[t];if(!f||f.entries===null&&!f.error)return r(`div`,{className:`ps-3 py-1`,children:[n(q,{size:`sm`}),` Loading…`]});if(f.error)return f.errorCode===`ENTRY_NOT_FOUND`&&a===0&&t===i&&i!==``?r(`div`,{className:`ps-3 py-3 text-muted small`,children:[n(`div`,{children:`This backup doesn’t contain any files at this path.`}),r(`div`,{className:`mt-1`,children:[`The subtree `,r(`code`,{children:[i,`/`]}),` may not have existed when this snapshot was taken.`]})]}):r(`div`,{className:`ps-3 py-1`,children:[n(K,{color:`danger`,className:`mb-1 py-1 small`,children:f.error}),n(M,{size:`sm`,color:`secondary`,outline:!0,onClick:()=>void u(t),children:`Retry`})]});let p=f.entries??[];if(p.length===0)return n(`div`,{className:`ps-3 py-1 text-muted small`,children:`(empty)`});let m=[...p].sort((e,t)=>e.isDir===t.isDir?e.name.localeCompare(t.name):e.isDir?-1:1);return n(`ul`,{className:`list-unstyled mb-0`,style:{marginLeft:a===0?0:`1rem`},children:m.map(f=>{let p=Xi(t,f.name),m=f.isDir&&s.has(p);return r(`li`,{className:`py-1`,children:[r(`div`,{className:`d-flex align-items-center gap-2 flex-wrap`,children:[f.isDir?n(M,{color:`link`,size:`sm`,className:`p-0 text-decoration-none`,onClick:()=>{l(p)},style:{minWidth:`1.2em`},"aria-expanded":m,"aria-label":m?`Collapse folder`:`Expand folder`,children:m?`▾`:`▸`}):n(`span`,{"aria-hidden":`true`,style:{minWidth:`1.2em`,display:`inline-block`}}),r(`span`,{className:f.isDir?`fw-semibold`:``,onClick:()=>{f.isDir&&l(p)},style:f.isDir?{cursor:`pointer`}:void 0,children:[f.name,f.isDir?`/`:``]}),!f.isDir&&n(`span`,{className:`text-muted small`,children:Z(f.size)}),r(`span`,{className:`ms-auto`,children:[r(`a`,{href:X.downloadSubtreeUrl(e,p),className:`btn btn-outline-secondary btn-sm me-1`,download:!0,children:[`Download`,f.isDir&&n(L,{color:`light`,className:`text-dark ms-1`,children:`ZIP`})]}),n(M,{color:`warning`,outline:!0,size:`sm`,disabled:c,title:c?`A restore is already in progress`:void 0,onClick:()=>{d(f,p)},children:`Restore…`})]})]}),f.isDir&&m&&n(Qi,{backupId:e,path:p,rootPath:i,depth:a+1,cache:o,expanded:s,restoreLocked:c,onToggle:l,onRetry:u,onStartRestore:d})]},f.name)})})}var $i=new Set([`preparing`,`safety_snapshotting`,`extracting`,`verifying`,`rolling_back`]),ea=new Set([`preparing`,`streaming`,`extracting`,`rolling_back`]);function ta(e){return $i.has(e)||ea.has(e)}function na({status:e,title:t,pathMapping:a,mapTargetPath:o=!0,onReset:s}){if(e.state===`idle`)return null;let c=ta(e.state),l=e.state===`failed`||e.state===`rolled_back`,u=e.state===`completed`,d=o?Wi(e.targetPath,a):e.targetPath;return r(K,{color:l?`danger`:u?`success`:`info`,className:`d-flex flex-column gap-2`,children:[r(`div`,{className:`d-flex justify-content-between align-items-start`,children:[r(`div`,{children:[r(`strong`,{children:[t??`Partial restore`,`: `,e.state]}),n(`div`,{className:`small`,children:e.statusMessage}),e.sourcePath&&r(`div`,{className:`small text-muted`,children:[`source `,n(`code`,{children:e.sourcePath}),d&&r(i,{children:[` `,`→ target `,n(`code`,{children:d})]})]}),e.error&&r(`div`,{className:`small text-danger`,children:[`Error: `,e.error]})]}),!c&&n(M,{size:`sm`,outline:!0,color:l?`danger`:`success`,onClick:s,children:`Dismiss`})]}),c&&n(jn,{animated:!0,striped:!0,value:e.progress,max:100,color:l?`danger`:`info`,children:e.progress>0?`${e.progress.toFixed(0)}%`:``})]})}var ra=new Set([`preparing`,`extracting`,`installing`,`restarting`,`verifying`,`rolling_back`]);function ia({status:e,onReset:t}){if(e.state===`idle`)return null;let i=ra.has(e.state),a=e.state===`failed`||e.state===`rolled_back`,o=e.state===`completed`;return r(K,{color:a?`danger`:o?`success`:`info`,className:`d-flex flex-column gap-2`,children:[r(`div`,{className:`d-flex justify-content-between align-items-start`,children:[r(`div`,{children:[r(`strong`,{children:[`Restore: `,e.state]}),n(`div`,{className:`small`,children:e.statusMessage}),e.error&&r(`div`,{className:`small text-danger`,children:[`Error: `,e.error]})]}),!i&&n(M,{size:`sm`,outline:!0,color:a?`danger`:`success`,onClick:t,children:`Dismiss`})]}),i&&n(jn,{animated:!0,striped:!0,value:e.progress,max:100,color:a?`danger`:`info`,children:e.progress>0?`${e.progress.toFixed(0)}%`:``})]})}function aa(){let e=$(()=>X.listBackups(),{intervalMs:3e4}),t=$(()=>X.restoreStatus(),{intervalMs:2e3}),o=$(()=>X.restorePartialStatus(),{intervalMs:2e3}),s=$(()=>X.restorePartialHostStatus(),{intervalMs:2e3}),l=$(()=>X.pluginStatus(),{intervalMs:6e4}),[u,d]=c(``),[f,p]=c(!1),[m,h]=c(null),[g,_]=c(null),[v,y]=c(null),[b,x]=c(null),S=a(null),[C,w]=c(``),[T,ee]=c(!1),[E,D]=c(null),te=async()=>{p(!0),h(null);try{await X.createBackup(u.trim()||void 0),d(``),e.refresh()}catch(e){h(e instanceof Error?e.message:String(e))}finally{p(!1)}},ne=async()=>{let t=S.current?.files?.[0];if(!t){D(`Select a file first.`);return}ee(!0),D(null);try{await X.uploadBackup(t,C.trim()||void 0),w(``),S.current&&(S.current.value=``),e.refresh()}catch(e){D(e instanceof Error?e.message:String(e))}finally{ee(!1)}},re=async t=>{if(window.confirm(`Delete backup ${t.id.slice(0,12)} (${Q(t.createdAt)})?`)){_(t.id);try{await X.deleteBackup(t.id),e.refresh()}catch(e){window.alert(`Delete failed: ${e instanceof Error?e.message:String(e)}`)}finally{_(null)}}},ie=async e=>{if(window.confirm(`Restore backup ${e.id.slice(0,12)} (${Q(e.createdAt)})?\n\nThis OVERWRITES the current SignalK config and restarts the server. A safety backup is taken first, so the operation can be rolled back on failure — but any in-flight changes since the safety backup will be lost.`)){y(e.id);try{await X.startRestore(e.id),t.refresh()}catch(e){window.alert(`Restore failed to start: ${e instanceof Error?e.message:String(e)}`)}finally{y(null)}}},ae=async()=>{try{await X.resetRestoreState(),t.refresh()}catch(e){window.alert(`Reset failed: ${e instanceof Error?e.message:String(e)}`)}},oe=async()=>{try{await X.resetRestorePartialState(),o.refresh()}catch(e){window.alert(`Reset failed: ${e instanceof Error?e.message:String(e)}`)}},se=async()=>{try{await X.resetRestorePartialHostState(),s.refresh()}catch(e){window.alert(`Reset failed: ${e instanceof Error?e.message:String(e)}`)}},ce=e.data?.backups??[],O=t.data?ra.has(t.data.state):!1,le=o.data?$i.has(o.data.state):!1,ue=s.data?ea.has(s.data.state):!1,de=O||le||ue||v!==null;return r(i,{children:[n(`h2`,{className:`mb-3`,children:`Backups`}),t.data&&n(ia,{status:t.data,onReset:()=>void ae()}),o.data&&n(na,{status:o.data,pathMapping:l.data?.pathMapping,onReset:()=>void oe()}),s.data&&n(na,{status:s.data,title:`Host restore`,pathMapping:l.data?.pathMapping,mapTargetPath:!1,onReset:()=>void se()}),r(A,{className:`mb-3`,children:[n(j,{xs:12,md:6,children:r(R,{children:[n(B,{children:n(`strong`,{children:`Create new backup`})}),n(z,{children:r(Xr,{onSubmit:e=>{e.preventDefault(),te()},children:[r(U,{children:[n(G,{for:`backup-description`,children:`Description (optional)`}),n(W,{id:`backup-description`,value:u,onChange:e=>{d(e.target.value)},placeholder:`e.g. before plugin upgrade`,disabled:f})]}),n(M,{color:`primary`,type:`submit`,disabled:f,children:f?r(i,{children:[n(q,{size:`sm`}),` Creating…`]}):`Create backup`}),m&&n(K,{color:`danger`,className:`mt-3 mb-0`,children:m})]})})]})}),n(j,{xs:12,md:6,children:r(R,{children:[n(B,{children:n(`strong`,{children:`Upload backup`})}),n(z,{children:r(Xr,{onSubmit:e=>{e.preventDefault(),ne()},children:[r(U,{children:[n(G,{for:`backup-upload-file`,children:`Backup ZIP file`}),n(W,{id:`backup-upload-file`,type:`file`,accept:`.zip,application/zip`,innerRef:S,disabled:T})]}),r(U,{children:[n(G,{for:`backup-upload-description`,children:`Description (optional)`}),n(W,{id:`backup-upload-description`,value:C,onChange:e=>{w(e.target.value)},placeholder:`e.g. recovered from external drive`,disabled:T})]}),n(M,{color:`primary`,type:`submit`,disabled:T,children:T?r(i,{children:[n(q,{size:`sm`}),` Uploading…`]}):`Upload`}),E&&n(K,{color:`danger`,className:`mt-3 mb-0`,children:E})]})})]})})]}),r(R,{children:[r(B,{className:`d-flex justify-content-between align-items-center`,children:[r(`strong`,{children:[`All backups (`,ce.length,`)`]}),n(M,{color:`secondary`,outline:!0,size:`sm`,onClick:e.refresh,disabled:e.loading,children:`Refresh`})]}),n(z,{className:`p-0`,children:e.loading&&!e.data?n(`div`,{className:`text-center py-3`,children:n(q,{size:`sm`})}):e.error?n(K,{color:`danger`,className:`m-3 mb-0`,children:e.error}):ce.length===0?n(`p`,{className:`text-muted m-3 mb-0`,children:`No backups yet. Create one above, or wait for the scheduler.`}):r(Nr,{responsive:!0,striped:!0,className:`mb-0`,children:[n(`thead`,{children:r(`tr`,{children:[n(`th`,{children:`Type`}),n(`th`,{children:`Created`}),n(`th`,{children:`Size`}),n(`th`,{children:`Description`}),n(`th`,{children:`ID`}),n(`th`,{className:`text-end`,children:`Actions`})]})}),n(`tbody`,{children:ce.map(e=>r(`tr`,{children:[n(`td`,{children:n(L,{color:`light`,className:`text-dark`,children:e.type})}),n(`td`,{children:Q(e.createdAt)}),n(`td`,{children:Z(e.size)}),n(`td`,{className:`text-muted`,children:e.description??``}),n(`td`,{children:n(`code`,{className:`small`,children:e.id.slice(0,12)})}),r(`td`,{className:`text-end`,children:[n(`a`,{href:X.downloadUrl(e.id),className:`btn btn-outline-secondary btn-sm me-1`,download:!0,children:`Download`}),n(M,{color:`info`,outline:!0,size:`sm`,className:`me-1`,onClick:()=>{x(e)},children:`Browse…`}),n(M,{color:`warning`,outline:!0,size:`sm`,className:`me-1`,disabled:de,onClick:()=>void ie(e),children:v===e.id?n(q,{size:`sm`}):`Restore`}),n(M,{color:`danger`,outline:!0,size:`sm`,disabled:de||g===e.id,onClick:()=>void re(e),children:g===e.id?n(q,{size:`sm`}):`Delete`})]})]},e.id))})]})})]}),b&&n(Zi,{backup:b,isOpen:!0,restoreLocked:de,pathMapping:l.data?.pathMapping,onClose:()=>{x(null)},onRestoreStarted:()=>{o.refresh(),s.refresh()}})]})}var oa=1048576;function sa(e){return`${(e/oa).toFixed(1)} MB`}function ca(e){let t=Math.max(0,Math.floor(e/1e3)),n=Math.floor(t/60),r=t%60;return n>0?`${n}m ${r}s`:`${r}s`}function la(e,t,n=Date.now()){let r=e?.processedBlobs,i=e?.totalBlobs,a=e?.processedBytes;return typeof r==`number`&&typeof i==`number`&&i>0?{phase:`determinate`,percent:Math.min(100,r/i*100),label:`${r} / ${i} blobs${typeof a==`number`?` (${sa(a)})`:``}`}:typeof a==`number`?{phase:`bytes-only`,percent:100,label:`Syncing… ${sa(a)} transferred so far`}:{phase:`elapsed-only`,percent:100,label:`Syncing… (elapsed ${ca(t===null?0:Math.max(0,n-t))})`}}function ua({syncProgress:e,startedAt:t,now:i}){let a=la(e,t,i),o=a.phase===`determinate`;return r(`div`,{className:`mb-3`,children:[n(`div`,{className:`small text-body mb-1`,children:a.label}),n(jn,{animated:!o,striped:!o,value:a.percent,max:100,color:`info`})]})}function da(e){if(e==null)return``;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n.toFixed(+(n<10&&r>0))} ${t[r]}`}function fa(e){let t=e.trim().replace(/\/+$/,``);return t.split(`/`).some(e=>e===`..`)?null:t===`/media`||t.startsWith(`/media/`)?`/host-media`+t.slice(6):t===`/mnt`||t.startsWith(`/mnt/`)?`/host-mnt`+t.slice(4):null}function pa({onConfigured:e,onError:t}){let[i,a]=c(null),[o,s]=c(!1),[u,d]=c(``),[f,p]=c(``),[m,h]=c(!1),g=async()=>{s(!0);try{let{candidates:e}=await X.localDiscover();a(e);let t=u&&e.some(e=>e.containerPath===u&&e.writable!==!1);if(u&&!t&&d(``),(!u||!t)&&e.length>0){let[t]=[...e.filter(e=>e.writable!==!1)].sort((e,t)=>(t.freeBytes??0)-(e.freeBytes??0));t&&d(t.containerPath)}}catch(e){t(e instanceof Error?e.message:String(e))}finally{s(!1)}};l(()=>{g()},[]);let _=async(n,r)=>{h(!0);try{await X.localConfigure(n,r),e()}catch(e){t(e instanceof Error?e.message:String(e))}finally{h(!1)}};return r(`div`,{children:[r(U,{children:[n(G,{for:`local-candidate`,children:`Pick a drive or mounted folder`}),r(`div`,{className:`d-flex gap-2`,children:[r(W,{id:`local-candidate`,type:`select`,value:u,disabled:o||m,onChange:e=>{d(e.target.value)},children:[n(`option`,{value:``,children:`— select —`}),(i??[]).map(e=>{let t=e.freeBytes!=null&&e.totalBytes!=null?` (${da(e.freeBytes)} free of ${da(e.totalBytes)})`:``,n=e.writable===!1?` — not writable`:``;return r(`option`,{value:e.containerPath,disabled:e.writable===!1,children:[e.hostPath,t,n]},e.containerPath)})]}),n(M,{color:`secondary`,outline:!0,disabled:o||m,onClick:()=>void g(),title:`Re-scan /media and /mnt`,children:o?n(q,{size:`sm`}):`Re-scan`})]})]}),i!==null&&i.length===0&&r(K,{color:`warning`,className:`mt-2 mb-2`,children:[`No candidates found. Plug in a USB drive (and mount it under`,n(`code`,{children:` /media`}),`), or mount a network share under `,n(`code`,{children:`/mnt`}),`on the host, then click `,n(`strong`,{children:`Re-scan`}),`.`]}),n(M,{color:`primary`,disabled:!u||m,onClick:()=>{let e=i?.find(e=>e.containerPath===u);e&&_(e.containerPath,e.hostPath)},className:`me-2`,children:m?n(q,{size:`sm`}):`Use this`}),n(`hr`,{className:`my-3`}),r(U,{children:[n(G,{for:`manual-path`,children:`Or type a host path manually`}),r(`div`,{className:`d-flex gap-2`,children:[n(W,{id:`manual-path`,type:`text`,placeholder:`/media/dirk/USB-SSD or /mnt/nfs-share`,value:f,disabled:m,onChange:e=>{p(e.target.value)}}),n(M,{color:`secondary`,disabled:!f.trim()||m,onClick:()=>{let e=f.trim();if(!e)return;let n=fa(e);if(!n){t(`Path must live under /media or /mnt — those are the only host locations the backup engine can see. Plug a USB drive in (it auto-mounts under /media), or have the system administrator mount your destination under /mnt.`);return}_(n,e)},children:`Use`})]}),r(`small`,{className:`text-muted`,children:[`Enter the path the way you see it on the host — `,n(`code`,{children:`/media/...`}),` for plugged-in USB drives, `,n(`code`,{children:`/mnt/...`}),` for network shares mounted by the system. Inside the backup engine these are remapped to `,n(`code`,{children:`/host-media/...`}),` and `,n(`code`,{children:`/host-mnt/...`}),`, but you don't need to type that yourself.`]})]})]})}function ma({onConnected:e,onError:t}){let[i,a]=c(null),[o,s]=c(!1),[u,d]=c(!1),[f,p]=c(``),[m,h]=c(``),[g,_]=c(``),[v,y]=c(``),[b,x]=c(``),S=async()=>{s(!0);try{let{hosts:e}=await X.smbDiscover();a(e)}catch(e){console.debug(`SMB mDNS discovery failed:`,e),a([])}finally{s(!1)}};l(()=>{S()},[]);let C=async n=>{if(n?.preventDefault(),!(!f.trim()||!m.trim())){d(!0);try{await X.smbConnect({host:f.trim(),share:m.trim(),user:g.trim(),password:v,...b.trim()?{domain:b.trim()}:{}}),y(``),e()}catch(e){t(e instanceof Error?e.message:String(e))}finally{d(!1)}}};return r(`form`,{onSubmit:e=>void C(e),children:[r(K,{color:`warning`,className:`mb-3 small`,children:[n(`strong`,{children:`Heads up:`}),` SMB credentials are stored in rclone's obfuscated form (mode 0o600, owner-only). The obfuscation is reversible by anyone with read access to the backup-server container — treat it as protection against casual reading, not as encryption.`]}),r(U,{children:[n(G,{for:`smb-host`,children:`Host`}),r(`div`,{className:`d-flex gap-2`,children:[n(W,{id:`smb-host`,type:`text`,placeholder:`synology.local or 192.168.1.50`,value:f,disabled:u,onChange:e=>{p(e.target.value)},list:`smb-discovered-hosts`,required:!0}),n(M,{color:`secondary`,outline:!0,type:`button`,disabled:o||u,onClick:()=>void S(),title:`Re-scan _smb._tcp.local on the LAN`,children:o?n(q,{size:`sm`}):`Scan LAN`})]}),i!==null&&i.length>0&&n(`datalist`,{id:`smb-discovered-hosts`,children:i.map(e=>n(`option`,{value:e.address,children:e.name},e.address))}),i!==null&&i.length===0&&!o&&n(`small`,{className:`text-muted`,children:`No SMB devices announced on the LAN — type the host manually.`})]}),r(U,{children:[n(G,{for:`smb-share`,children:`Share`}),n(W,{id:`smb-share`,type:`text`,placeholder:`backups`,value:m,disabled:u,onChange:e=>{h(e.target.value)},required:!0})]}),r(U,{children:[n(G,{for:`smb-user`,children:`Username`}),n(W,{id:`smb-user`,type:`text`,autoComplete:`off`,value:g,disabled:u,onChange:e=>{_(e.target.value)}})]}),r(U,{children:[n(G,{for:`smb-password`,children:`Password`}),n(W,{id:`smb-password`,type:`password`,autoComplete:`new-password`,value:v,disabled:u,onChange:e=>{y(e.target.value)}}),n(`small`,{className:`text-muted`,children:`Leave Username and Password empty for guest / anonymous shares.`})]}),r(U,{children:[n(G,{for:`smb-domain`,children:`Domain (optional)`}),n(W,{id:`smb-domain`,type:`text`,placeholder:`WORKGROUP`,value:b,disabled:u,onChange:e=>{x(e.target.value)}})]}),n(M,{color:`primary`,type:`submit`,disabled:u,children:u?n(q,{size:`sm`}):`Connect`})]})}function ha(e){switch(e){case`gdrive`:return`Drive`;case`local`:return`Local destination`;case`smb`:return`SMB share`}}function ga({status:e}){let t=e.provider===`local`||e.provider===`smb`;return r(`div`,{className:`mb-2 d-flex gap-2 flex-wrap`,children:[n(L,{color:e.connected?`success`:`secondary`,children:e.connected?`Active: ${ha(e.provider)}`:`${ha(e.provider)} not configured`}),e.syncing&&n(L,{color:`info`,children:`Syncing`}),!t&&e.internetAvailable===!1&&n(L,{color:`warning`,children:`Offline`})]})}function _a({onDone:e,onError:t}){let[i,o]=c(!1),[s,u]=c(!1),[d,f]=c(``),[p,m]=c(!1),h=a(0),g=a(void 0),_=a(null),v=a(!1),y=()=>{g.current&&=(clearInterval(g.current),void 0),o(!1)};l(()=>()=>{y(),v.current=!1},[]);let b=async()=>{if(!v.current){v.current=!0,_.current=window.open(`about:blank`,`_blank`);try{let{authUrl:n}=await X.gdriveConnect();_.current&&!_.current.closed?_.current.location.href=n:u(!0),o(!0),h.current=Date.now(),g.current=setInterval(()=>{(async()=>{try{let n=await X.gdriveAuthState();n.state===`completed`?(y(),v.current=!1,u(!1),f(``),e()):n.state===`failed`?(y(),v.current=!1,u(!1),t(n.error??`Authorization failed`)):Date.now()-h.current>15e3&&u(!0)}catch{}})()},2e3)}catch(e){_.current?.close(),v.current=!1,t(e instanceof Error?e.message:String(e))}}},x=async()=>{y(),v.current=!1,u(!1),f(``);try{await X.gdriveCancel()}catch{}},S=async()=>{if(d.trim()){m(!0);try{await X.gdriveAuthCallback(d.trim()),f(``)}catch(e){t(e instanceof Error?e.message:String(e))}finally{m(!1)}}};return i?r(`div`,{children:[r(`div`,{className:`d-flex align-items-center gap-2 mb-3`,children:[n(q,{size:`sm`}),n(`span`,{children:`Waiting for Google authorization…`}),n(M,{color:`secondary`,outline:!0,size:`sm`,onClick:()=>void x(),children:`Cancel`})]}),s&&r(K,{color:`info`,className:`mb-0`,children:[n(`p`,{className:`mb-2`,children:n(`strong`,{children:`Browser on a different machine than this server?`})}),r(`p`,{className:`small mb-2`,children:[`After granting access in Google, your browser is redirected to a URL starting with`,n(`code`,{children:` http://127.0.0.1:53682/`}),`. Copy that whole URL from your browser's address bar and paste it here.`]}),r(U,{children:[n(G,{for:`callback-url`,children:`Callback URL`}),n(W,{id:`callback-url`,type:`text`,value:d,onChange:e=>{f(e.target.value)},placeholder:`http://127.0.0.1:53682/?code=...`,disabled:p})]}),n(M,{color:`primary`,size:`sm`,disabled:p||!d.trim(),onClick:()=>void S(),children:p?n(q,{size:`sm`}):`Submit callback`})]})]}):n(M,{color:`primary`,onClick:()=>void b(),children:`Connect Google Drive`})}function va(){let[e,t]=c(5e3),a=$(()=>X.cloudStatus(),{intervalMs:e}),o=$(()=>X.localStatus(),{intervalMs:5e3}),s=$(()=>X.smbStatus(),{intervalMs:5e3}),[u,d]=c(null);l(()=>{let e=a.data?.syncing===!0;t(e?2e3:5e3),d(t=>e&&t===null?Date.now():!e&&t!==null?null:t)},[a.data?.syncing]);let[f,p]=c(null),[m,h]=c(null),[g,_]=c(null),[v,y]=c(!1),[b,x]=c(null),S=b??a.data?.provider??`gdrive`,C=async()=>{let e=a.data?.provider;if(e===`gdrive`||!e){x(null);return}_(`switch`),p(null);try{switch(e){case`local`:await X.localDisconnect();break;case`smb`:await X.smbDisconnect()}x(null),a.refresh(),o.refresh(),s.refresh()}catch(e){p(e instanceof Error?e.message:String(e))}finally{_(null)}},w=async()=>{_(`sync`),p(null),h(null);try{await X.cloudSync(),a.refresh(),h(`Sync started`)}catch(e){p(e instanceof Error?e.message:String(e))}finally{_(null)}},T=async()=>{_(`cancel`);try{await X.cloudSyncCancel(),a.refresh()}catch(e){p(e instanceof Error?e.message:String(e))}finally{_(null)}},ee=async()=>{_(`disconnect`),p(null);try{await X.gdriveDisconnect(),a.refresh(),y(!1),h(`Google Drive disconnected`)}catch(e){p(e instanceof Error?e.message:String(e))}finally{_(null)}},E=async e=>{_(`config`),p(null);try{await X.cloudConfig(e),a.refresh()}catch(e){p(e instanceof Error?e.message:String(e))}finally{_(null)}};return r(i,{children:[n(`h2`,{className:`mb-3`,children:`Cloud sync`}),f&&n(K,{color:`danger`,toggle:()=>{p(null)},children:f}),m&&n(K,{color:`success`,toggle:()=>{h(null)},children:m}),r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Destination`})}),n(z,{children:a.loading&&!a.data?n(q,{size:`sm`}):a.error?n(K,{color:`danger`,className:`mb-0`,children:a.error}):a.data?r(i,{children:[n(ga,{status:a.data}),r(U,{className:`mb-3`,children:[n(G,{for:`provider-select`,children:`Where backups go`}),r(W,{id:`provider-select`,type:`select`,value:S,disabled:g!==null,onChange:e=>{let t=e.target.value;t!==S&&(t===`gdrive`?C():x(t))},children:[n(`option`,{value:`gdrive`,children:`Google Drive`}),n(`option`,{value:`local`,children:`Local drive / mounted folder`}),n(`option`,{value:`smb`,children:`SMB share`})]})]}),S===`gdrive`&&r(i,{children:[a.data.email&&r(`p`,{className:`text-muted small mb-2`,children:[`Account: `,a.data.email]}),a.data.connected?n(i,{children:v?r(`div`,{className:`d-flex gap-2 align-items-center`,children:[n(`span`,{children:`Really disconnect?`}),n(M,{color:`danger`,size:`sm`,disabled:g===`disconnect`,onClick:()=>void ee(),children:g===`disconnect`?n(q,{size:`sm`}):`Disconnect`}),n(M,{color:`secondary`,outline:!0,size:`sm`,onClick:()=>{y(!1)},children:`Cancel`})]}):n(M,{color:`danger`,outline:!0,onClick:()=>{y(!0)},children:`Disconnect`})}):n(_a,{onDone:()=>{a.refresh(),h(`Google Drive connected`)},onError:p})]}),S===`local`&&r(i,{children:[o.error&&r(K,{color:`danger`,className:`mb-2`,children:[`Failed to read local destination status: `,o.error]}),o.data?.connected?r(i,{children:[r(`p`,{className:`text-muted small mb-2`,children:[`Backing up to `,n(`code`,{children:o.data.hostPath??o.data.containerPath}),o.data.freeBytes!=null&&r(i,{children:[` — `,Math.round(o.data.freeBytes/1e9),` GB free`]})]}),n(M,{color:`danger`,outline:!0,disabled:g!==null,onClick:()=>void C(),children:g===`switch`?n(q,{size:`sm`}):`Switch back to Google Drive`})]}):r(i,{children:[o.data?.error&&n(K,{color:`warning`,className:`mb-2`,children:o.data.error}),n(pa,{onConfigured:()=>{x(null),a.refresh(),o.refresh(),h(`Local destination configured`)},onError:p})]})]}),S===`smb`&&r(i,{children:[s.error&&r(K,{color:`danger`,className:`mb-2`,children:[`Failed to read SMB status: `,s.error]}),s.data?.connected?r(i,{children:[r(`p`,{className:`text-muted small mb-2`,children:[`Backing up to`,` `,r(`code`,{children:[`\\\\`,s.data.host??`?`,`\\`,s.data.share??`?`]}),` `,`as `,n(`code`,{children:s.data.user??`?`})]}),n(M,{color:`danger`,outline:!0,disabled:g!==null,onClick:()=>void C(),children:g===`switch`?n(q,{size:`sm`}):`Switch back to Google Drive`})]}):n(ma,{onConnected:()=>{x(null),a.refresh(),s.refresh(),h(`SMB share connected`)},onError:p})]})]}):null})]}),a.data?.connected&&r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Sync`})}),r(z,{children:[r(A,{className:`g-3 mb-3`,children:[n(j,{xs:12,md:6,children:r(U,{children:[n(G,{for:`sync-mode`,children:`Sync mode`}),r(W,{id:`sync-mode`,type:`select`,value:a.data.syncMode??`manual`,disabled:g===`config`,onChange:e=>{let t=e.target.value,n={syncMode:t};t===`scheduled`&&!a.data?.syncFrequency&&(n.syncFrequency=`daily`),E(n)},children:[n(`option`,{value:`manual`,children:`Manual only`}),n(`option`,{value:`after_backup`,children:`After every backup`}),n(`option`,{value:`scheduled`,children:`On a schedule`})]})]})}),a.data.syncMode===`scheduled`&&n(j,{xs:12,md:6,children:r(U,{children:[n(G,{for:`sync-frequency`,children:`Schedule`}),r(W,{id:`sync-frequency`,type:`select`,value:a.data.syncFrequency??`daily`,disabled:g===`config`,onChange:e=>{E({syncFrequency:e.target.value})},children:[n(`option`,{value:`daily`,children:`Daily`}),n(`option`,{value:`weekly`,children:`Weekly`})]})]})})]}),a.data.syncing&&n(ua,{syncProgress:a.data.syncProgress,startedAt:u}),n(`div`,{className:`d-flex gap-2 align-items-center mb-3`,children:a.data.syncing?n(M,{color:`warning`,outline:!0,disabled:g===`cancel`,onClick:()=>void T(),children:g===`cancel`?n(q,{size:`sm`}):`Cancel sync`}):n(M,{color:`primary`,disabled:g===`sync`,onClick:()=>void w(),children:g===`sync`?n(q,{size:`sm`}):`Sync now`})}),r(`dl`,{className:`row mb-0`,children:[n(`dt`,{className:`col-sm-3`,children:`Last sync`}),n(`dd`,{className:`col-sm-9`,children:Q(a.data.lastSync)}),a.data.lastSyncError&&r(i,{children:[n(`dt`,{className:`col-sm-3`,children:`Last error`}),n(`dd`,{className:`col-sm-9 text-danger`,children:a.data.lastSyncError})]})]})]})]})]})}var ya=`plugin-config-data/signalk-backup/database-exports`,ba=new Set([`preparing`,`extracting`,`installing`,`restarting`,`verifying`,`rolling_back`]);function xa(){let e=$(()=>X.listStaging(),{intervalMs:3e4}),t=$(()=>X.listBackups(),{intervalMs:6e4}),a=$(()=>X.pluginStatus(),{intervalMs:6e4}),o=$(()=>X.restoreStatus(),{intervalMs:2e3}),s=$(()=>X.restorePartialStatus(),{intervalMs:2e3}),l=$(()=>X.restorePartialHostStatus(),{intervalMs:2e3}),[u,d]=c(null),[f,p]=c(``),m=e.data?.entries??[],h=t.data?.backups??[],g=()=>{let e=h.find(e=>e.id===f);e&&d(e)},_=async()=>{try{await X.resetRestorePartialState(),s.refresh()}catch(e){window.alert(`Reset failed: ${e instanceof Error?e.message:String(e)}`)}},v=async()=>{try{await X.resetRestorePartialHostState(),l.refresh()}catch(e){window.alert(`Reset failed: ${e instanceof Error?e.message:String(e)}`)}},y=o.data?ba.has(o.data.state):!1,b=s.data?$i.has(s.data.state):!1,x=l.data?ea.has(l.data.state):!1,S=y||b||x;return r(i,{children:[n(`h2`,{className:`mb-3`,children:`Database exports`}),s.data&&n(na,{status:s.data,pathMapping:a.data?.pathMapping,onReset:()=>void _()}),l.data&&n(na,{status:l.data,title:`Host restore`,pathMapping:a.data?.pathMapping,mapTargetPath:!1,onReset:()=>void v()}),n(`p`,{className:`text-muted`,children:`QuestDB, Grafana and signalk-database exports staged by the plugin. The top card extracts the database-exports subtree from any historical backup without pulling the whole snapshot; the live list below shows what's on disk right now (the next backup will include these).`}),r(R,{className:`mb-3`,children:[r(B,{children:[n(`strong`,{children:`Extract from a historical backup`}),` `,r(L,{color:`light`,className:`text-dark ms-1`,children:[`Browser scoped to `,ya]})]}),r(z,{children:[n(`p`,{className:`small text-muted mb-3`,children:`Pick a backup and open the database-exports subtree. From there you can download individual files (octet-stream) or whole subdirectories (ZIP) without pulling the full snapshot.`}),t.loading&&!t.data?n(q,{size:`sm`}):t.error?n(K,{color:`danger`,className:`mb-0`,children:t.error}):h.length===0?n(`p`,{className:`text-muted mb-0`,children:`No backups yet. Once the scheduler runs (or you create a manual one), it will appear here.`}):r(`div`,{className:`d-flex gap-2 align-items-end flex-wrap`,children:[r(`div`,{style:{minWidth:`20rem`,flex:`1 1 20rem`},children:[n(G,{for:`db-export-backup-picker`,children:`Backup`}),r(W,{id:`db-export-backup-picker`,type:`select`,value:f,onChange:e=>{p(e.target.value)},children:[n(`option`,{value:``,children:`— select a backup —`}),h.map(e=>r(`option`,{value:e.id,children:[Q(e.createdAt),` · `,e.type,` · `,e.id.slice(0,12)]},e.id))]})]}),n(M,{color:`primary`,disabled:!f,onClick:g,children:`Open browser`})]})]})]}),r(R,{children:[r(B,{className:`d-flex justify-content-between align-items-center`,children:[r(`strong`,{children:[`Live staging (`,m.length,`)`]}),n(M,{color:`secondary`,outline:!0,size:`sm`,onClick:e.refresh,disabled:e.loading,children:`Refresh`})]}),r(z,{className:`p-0`,children:[e.loading&&!e.data?n(`div`,{className:`text-center py-3`,children:n(q,{size:`sm`})}):e.error?n(K,{color:`danger`,className:`m-3 mb-0`,children:e.error}):m.length===0?n(`p`,{className:`text-muted m-3 mb-0`,children:`Nothing staged yet. Enable the relevant exporter in Settings → Database export, or wait for the next scheduler tick.`}):r(Nr,{responsive:!0,striped:!0,className:`mb-0`,children:[n(`thead`,{children:r(`tr`,{children:[n(`th`,{children:`Path`}),n(`th`,{children:`Size`}),n(`th`,{children:`Modified`}),n(`th`,{className:`text-end`,children:`Actions`})]})}),n(`tbody`,{children:m.map(e=>r(`tr`,{children:[n(`td`,{children:n(`code`,{className:`small`,children:e.path})}),n(`td`,{children:Z(e.size)}),n(`td`,{className:`small text-muted`,children:Q(e.mtime)}),n(`td`,{className:`text-end`,children:n(`a`,{href:X.stagingDownloadUrl(e.path),className:`btn btn-outline-secondary btn-sm`,download:!0,children:`Download`})})]},e.path))})]}),e.data?.stagingRoot&&r(`div`,{className:`px-3 py-2 small text-muted border-top`,children:[`Staging root: `,n(`code`,{children:e.data.stagingRoot})]})]})]}),u&&n(Zi,{backup:u,isOpen:!0,initialPath:ya,pathMapping:a.data?.pathMapping,restoreLocked:S,onClose:()=>{d(null)},onRestoreStarted:()=>{s.refresh(),l.refresh()}})]})}function Sa(){let[e,t]=c(!1),a=$(()=>X.checkUpdate(),{intervalMs:e?5e3:0}),[o,s]=c(!1),[u,d]=c(null),[f,p]=c(null),m=async()=>{s(!0),d(null),p(null);try{let{tag:e}=await X.applyUpdate();p(e),t(!0),a.refresh()}catch(e){d(e instanceof Error?e.message:String(e))}finally{s(!1)}},h=a.data;return l(()=>{e&&h&&h.reason!==`unknown`&&t(!1)},[e,h]),r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Backup server container`})}),n(z,{children:a.loading&&!h?n(q,{size:`sm`}):a.error?n(K,{color:`danger`,className:`mb-0`,children:a.error}):h?r(i,{children:[r(`dl`,{className:`row mb-2`,children:[n(`dt`,{className:`col-sm-4`,children:`Running`}),r(`dd`,{className:`col-sm-8`,children:[n(`code`,{children:h.currentVersion??h.runningTag}),` `,h.updateAvailable?n(L,{color:`warning`,children:`update available`}):h.reason===`up-to-date`?n(L,{color:`success`,children:`up to date`}):n(L,{color:`secondary`,children:`not checked`})]}),h.latestVersion&&r(i,{children:[n(`dt`,{className:`col-sm-4`,children:`Latest`}),n(`dd`,{className:`col-sm-8`,children:n(`code`,{children:h.latestVersion})})]})]}),h.reason===`offline`&&n(`p`,{className:`text-muted small mb-2`,children:`Offline — showing the last successful check.`}),h.reason===`unknown`&&!h.error&&n(`p`,{className:`text-muted small mb-2`,children:`No update check yet — the container is not running.`}),h.error&&r(`p`,{className:`text-muted small mb-2`,children:[`Last check failed: `,h.error]}),h.updateAvailable&&r(i,{children:[n(`p`,{className:`text-muted small mb-2`,children:`Applying restarts the backup server. Backups in progress will be interrupted.`}),n(M,{color:`primary`,disabled:o,onClick:()=>void m(),children:o?n(q,{size:`sm`}):`Apply update`})]}),f&&r(K,{color:`success`,className:`mt-2 mb-0`,children:[`Updated to `,f,`. The container is restarting.`]}),u&&n(K,{color:`danger`,className:`mt-2 mb-0`,children:u})]}):null})]})}function Ca(){let e=$(()=>X.scheduler(),{intervalMs:15e3}),[t,a]=c(!1),[o,s]=c(null),l=async t=>{a(!0),s(null);try{t?await X.schedulerStart():await X.schedulerStop(),e.refresh()}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}};return r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Scheduler`})}),n(z,{children:e.loading&&!e.data?n(q,{size:`sm`}):e.error?n(K,{color:`danger`,className:`mb-0`,children:e.error}):e.data?r(i,{children:[n(`div`,{className:`mb-2`,children:n(L,{color:e.data.enabled?`success`:`secondary`,children:e.data.enabled?`Running`:`Stopped`})}),n(`p`,{className:`text-muted small mb-3`,children:`When running, the backup-server creates hourly, daily, and weekly snapshots automatically per its retention policy. Manual backups still work either way.`}),e.data.enabled?n(M,{color:`warning`,outline:!0,disabled:t,onClick:()=>void l(!1),children:t?n(q,{size:`sm`}):`Stop scheduler`}):n(M,{color:`primary`,disabled:t,onClick:()=>void l(!0),children:t?n(q,{size:`sm`}):`Start scheduler`}),o&&n(K,{color:`danger`,className:`mt-2 mb-0`,children:o})]}):null})]})}function wa(e){let{rows:t,isExcluded:i,toggle:a,stripPrefix:o,showNote:s}=e;return t.length===0?null:r(Nr,{responsive:!0,striped:!0,size:`sm`,className:`mb-2`,children:[n(`thead`,{children:r(`tr`,{children:[n(`th`,{style:{width:`4em`},children:`Include`}),n(`th`,{children:`Directory`}),n(`th`,{style:{width:`7em`},children:`Size`}),s&&n(`th`,{children:`Note`})]})}),n(`tbody`,{children:t.map(e=>{let t=i(e.name,e.excluded),c=o&&e.name.startsWith(o)?e.name.slice(o.length):e.name;return r(`tr`,{children:[n(`td`,{children:n(W,{type:`checkbox`,checked:!t,disabled:e.locked,onChange:()=>{a(e.name,t,e.excluded)},"aria-label":`Include ${e.name}`})}),n(`td`,{children:n(`code`,{className:`small`,children:c})}),n(`td`,{children:Z(e.size)}),s&&n(`td`,{className:`text-muted small`,title:e.lockReason??``,children:e.lockReason?`🔒 ${e.lockReason}`:``})]},e.name)})})]})}function Ta(){let e=$(()=>X.dataDirs()),t=$(()=>X.pluginDataDirs()),a=$(()=>X.exclusions()),[s,u]=c({}),[d,f]=c(!1),[p,m]=c(null),[h,g]=c(null);l(()=>{u({})},[a.data,e.data,t.data]);let _=o(()=>(e.data??[]).filter(e=>e.name!==`plugin-config-data`).map(e=>({name:e.name,size:e.size,excluded:e.excluded})),[e.data]),v=o(()=>(t.data??[]).filter(e=>!e.lockedExcluded).map(e=>({name:`plugin-config-data/${e.name}/`,size:e.size,excluded:e.excluded})),[t.data]),y=o(()=>(t.data??[]).filter(e=>e.lockedExcluded===!0).map(e=>({name:`plugin-config-data/${e.name}/`,size:e.size,excluded:e.excluded,locked:!0,lockReason:e.lockReason})),[t.data]),b=(e,t)=>s[e]??t,x=(e,t,n)=>{let r=!t;u(t=>r===n?e in t?Object.fromEntries(Object.entries(t).filter(([t])=>t!==e)):t:t[e]===r?t:{...t,[e]:r})},S=async()=>{f(!0),m(null);try{let n=new Set;for(let t of e.data??[])n.add(t.name+`/`);for(let e of t.data??[])n.add(`plugin-config-data/${e.name}/`);let r=(a.data?.exclusions??[]).filter(e=>!n.has(e)),i=[];for(let t of e.data??[])b(t.name,t.excluded)&&i.push(t.name+`/`);for(let e of t.data??[]){let t=`plugin-config-data/${e.name}/`;b(t,e.excluded)&&i.push(t)}let o=[...r,...i];await X.setExclusions(o),a.refresh(),e.refresh(),t.refresh(),g(Date.now())}catch(e){m(e instanceof Error?e.message:String(e))}finally{f(!1)}},C=Object.keys(s).length>0;return r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Backup exclusions`})}),n(z,{children:e.loading||t.loading||a.loading?n(q,{size:`sm`}):e.error||t.error||a.error?n(K,{color:`danger`,className:`mb-0`,children:e.error??t.error??a.error}):r(i,{children:[n(`p`,{className:`text-muted small mb-3`,children:`Uncheck a directory to exclude it from backups. Some plugin directories are locked-excluded by the server (live database state, our own kopia repo); see the note next to each.`}),n(`h6`,{className:`mb-2`,children:`Top-level directories`}),n(wa,{rows:_,isExcluded:b,toggle:x}),r(`h6`,{className:`mt-4 mb-1`,children:[`Plugin data `,n(`code`,{className:`small text-muted`,children:`plugin-config-data/`})]}),n(`p`,{className:`text-muted small mb-2`,children:`Per-plugin state under your SignalK config root.`}),v.length>0&&r(i,{children:[n(`div`,{className:`small text-muted fw-bold mb-1`,children:`Editable`}),n(wa,{rows:v,isExcluded:b,toggle:x,stripPrefix:`plugin-config-data/`})]}),y.length>0&&r(i,{children:[n(`div`,{className:`small text-muted fw-bold mt-3 mb-1`,children:`Always excluded`}),n(wa,{rows:y,isExcluded:b,toggle:x,stripPrefix:`plugin-config-data/`,showNote:!0})]}),r(`div`,{className:`d-flex align-items-center gap-2`,children:[n(M,{color:`primary`,disabled:!C||d,onClick:()=>void S(),children:d?n(q,{size:`sm`}):`Save`}),C&&n(M,{color:`secondary`,outline:!0,disabled:d,onClick:()=>{u({})},children:`Discard changes`}),h&&!C&&n(`small`,{className:`text-success`,children:`Saved.`})]}),p&&n(K,{color:`danger`,className:`mt-2 mb-0`,children:p})]})})]})}function Ea(){let e=$(()=>X.passwordStatus(),{intervalMs:0}),[t,a]=c(!1),[o,s]=c(``),[l,u]=c(``),[d,f]=c(!1),[p,m]=c(null),[h,g]=c(null),[_,v]=c(!1),[y,b]=c(!1),[x,S]=c(!1),[C,w]=c(!1),T=async e=>{try{await navigator.clipboard.writeText(e),w(!0),setTimeout(()=>{w(!1)},1500)}catch{}},ee=async()=>{if(m(null),g(null),o.length<8){m(`Password must be at least 8 characters.`);return}if(o!==l){m(`Passwords don't match.`);return}f(!0);try{await X.setPassword(o),a(!1),s(``),u(``),e.refresh(),g(`Password updated.`)}catch(e){m(e instanceof Error?e.message:String(e))}finally{f(!1)}},E=async()=>{v(!0),m(null);try{await X.resetPassword(),b(!1),e.refresh(),g(`Password reset to default.`)}catch(e){m(e instanceof Error?e.message:String(e))}finally{v(!1)}},D=e.data?.hasCustomPassword??!1;return r(R,{children:[n(B,{children:n(`strong`,{children:`Encryption password`})}),r(z,{children:[r(`p`,{className:`text-muted small mb-3`,children:[`The kopia repository is encrypted at rest with this password. The default is publicly known; set a custom one if your backup destination (cloud sync, external drive) is accessible to anyone besides you.`,` `,n(`strong`,{children:`Forgetting your custom password makes existing backups unreadable.`})]}),e.loading&&!e.data?n(q,{size:`sm`}):e.error?n(K,{color:`danger`,className:`mb-0`,children:e.error}):r(i,{children:[n(`div`,{className:`mb-3`,children:n(L,{color:D?`success`:`warning`,children:D?`Custom password set`:`Default password (publicly known)`})}),!t&&e.data?.password?(()=>{let t=e.data.password;return r(U,{children:[n(G,{for:`current-password`,children:`Current password`}),r(`div`,{className:`d-flex gap-2 align-items-center`,children:[n(W,{id:`current-password`,type:x?`text`:`password`,value:t,readOnly:!0,style:{fontFamily:`monospace`,maxWidth:`24rem`}}),n(M,{size:`sm`,color:`secondary`,outline:!0,onClick:()=>{S(e=>!e)},"aria-label":x?`Hide password`:`Show password`,children:x?`Hide`:`Show`}),n(M,{size:`sm`,color:`secondary`,outline:!0,onClick:()=>{T(t)},children:C?`Copied!`:`Copy`})]})]})})():null,t?r(Xr,{onSubmit:e=>{e.preventDefault(),ee()},children:[r(U,{children:[n(G,{for:`new-password`,children:`New password`}),n(W,{id:`new-password`,type:`password`,value:o,onChange:e=>{s(e.target.value)},minLength:8,required:!0,disabled:d,autoComplete:`new-password`})]}),r(U,{children:[n(G,{for:`confirm-password`,children:`Confirm password`}),n(W,{id:`confirm-password`,type:`password`,value:l,onChange:e=>{u(e.target.value)},minLength:8,required:!0,disabled:d,autoComplete:`new-password`})]}),r(`div`,{className:`d-flex gap-2`,children:[n(M,{color:`primary`,type:`submit`,disabled:d,children:d?n(q,{size:`sm`}):`Save`}),n(M,{color:`secondary`,outline:!0,type:`button`,disabled:d,onClick:()=>{a(!1),s(``),u(``),m(null)},children:`Cancel`})]})]}):r(`div`,{className:`d-flex flex-wrap gap-2 align-items-center`,children:[n(M,{color:`primary`,onClick:()=>{a(!0),m(null),g(null)},children:D?`Change password`:`Set custom password`}),D&&(y?r(i,{children:[n(`span`,{children:`Reset to default?`}),n(M,{color:`warning`,size:`sm`,disabled:_,onClick:()=>void E(),children:_?n(q,{size:`sm`}):`Reset`}),n(M,{color:`secondary`,outline:!0,size:`sm`,disabled:_,onClick:()=>{b(!1)},children:`Cancel`})]}):n(M,{color:`warning`,outline:!0,onClick:()=>{b(!0)},children:`Reset to default`}))]}),p&&n(K,{color:`danger`,className:`mt-3 mb-0`,children:p}),h&&n(K,{color:`success`,className:`mt-3 mb-0`,toggle:()=>{g(null)},children:h})]})]})]})}function Da(){let e=$(()=>X.dbExportConfig(),{intervalMs:6e4}),[t,a]=c(!1),[o,s]=c(null),[u,d]=c(null),[f,p]=c(``);l(()=>{e.data&&p(String(e.data.intervalMinutes))},[e.data]);let m=async t=>{a(!0),s(null),d(null);try{await X.dbExportConfigSet({questdb:t}),e.refresh(),d(t?`QuestDB export enabled`:`QuestDB export disabled`)}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}},h=async t=>{a(!0),s(null),d(null);try{await X.dbExportConfigSet({grafana:t}),e.refresh(),d(t?`Grafana export enabled`:`Grafana export disabled`)}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}},g=async t=>{a(!0),s(null),d(null);try{await X.dbExportConfigSet({signalkDatabase:t}),e.refresh(),d(t?`SignalK Database export enabled`:`SignalK Database export disabled`)}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}},_=async()=>{let t=parseInt(f,10);if(!Number.isFinite(t)||t<5||t>1440){s(`Interval must be between 5 and 1440 minutes.`);return}a(!0),s(null),d(null);try{await X.dbExportConfigSet({intervalMinutes:t}),e.refresh(),d(`Export interval set to ${t} minutes`)}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}},v=e.data,y=v?String(v.intervalMinutes)!==f:!1;return r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Database export`})}),n(z,{children:e.loading&&!v?n(q,{size:`sm`}):e.error?n(K,{color:`danger`,className:`mb-0`,children:e.error}):v?r(i,{children:[n(`p`,{className:`text-muted small mb-3`,children:`When enabled, the plugin periodically exports database tables to Parquet files inside the SignalK config root. The next backup-server snapshot then captures them as part of the regular backup. Filesystem-level database files (WAL etc.) are still excluded.`}),r(U,{switch:!0,className:`mb-3`,children:[n(W,{id:`db-export-questdb`,type:`switch`,role:`switch`,checked:v.questdb,disabled:t,onChange:e=>void m(e.target.checked)}),n(G,{for:`db-export-questdb`,check:!0,children:`Export QuestDB tables to backup`})]}),r(U,{switch:!0,className:`mb-3`,children:[n(W,{id:`db-export-grafana`,type:`switch`,role:`switch`,checked:v.grafana,disabled:t,onChange:e=>void h(e.target.checked)}),n(G,{for:`db-export-grafana`,check:!0,children:`Export Grafana dashboards, provisioning, and SQLite checkpoint`})]}),r(U,{switch:!0,className:`mb-3`,children:[n(W,{id:`db-export-signalk-database`,type:`switch`,role:`switch`,checked:v.signalkDatabase,disabled:t,onChange:e=>void g(e.target.checked)}),n(G,{for:`db-export-signalk-database`,check:!0,children:`Export SignalK Database plugin DBs (VACUUM INTO per plugin)`})]}),r(U,{children:[n(G,{for:`db-export-interval`,children:`Export interval (minutes)`}),r(`div`,{className:`d-flex gap-2`,children:[n(W,{id:`db-export-interval`,type:`number`,min:5,max:1440,step:5,value:f,disabled:t,onChange:e=>{p(e.target.value)},style:{maxWidth:`12em`}}),n(M,{color:`primary`,disabled:t||!y,onClick:()=>void _(),children:t?n(q,{size:`sm`}):`Save`})]}),n(`small`,{className:`text-muted`,children:`Default 60. Lower values keep DB data fresher in backups but write more often. Effective freshness is bounded by max(this interval, the snapshot interval).`})]}),o&&n(K,{color:`danger`,className:`mt-2 mb-0`,children:o}),u&&n(K,{color:`success`,className:`mt-2 mb-0`,children:u})]}):null})]})}function Oa(){let e=$(()=>X.retention(),{intervalMs:6e4}),[t,o]=c(!1),[s,u]=c(null),[d,f]=c(null),[p,m]=c({hourly:``,daily:``,weekly:``,startup:``}),[h,g]=c({hourly:``,daily:``,weekly:``,startup:``}),_=a(p),v=a(h);l(()=>{_.current=p},[p]),l(()=>{v.current=h},[h]),l(()=>{if(!e.data)return;let t={hourly:String(e.data.hourly),daily:String(e.data.daily),weekly:String(e.data.weekly),startup:String(e.data.startup)},n=_.current,r=v.current;n.hourly===r.hourly&&n.daily===r.daily&&n.weekly===r.weekly&&n.startup===r.startup&&m(t),g(t)},[e.data]);let y=async()=>{u(null),f(null);let t=/^\d+$/,n=[`hourly`,`daily`,`weekly`,`startup`],r={};for(let e of n){let n=p[e].trim();if(!t.test(n)){u(`${e} must be a whole number between 1 and 365`);return}let i=Number(n);if(i<1||i>365){u(`${e} must be a whole number between 1 and 365`);return}r[e]=i}o(!0);try{await X.setRetention(r),e.refresh(),f(`Retention policy saved`)}catch(e){u(e instanceof Error?e.message:String(e))}finally{o(!1)}},b=e.data!==null&&(String(e.data.hourly)!==p.hourly||String(e.data.daily)!==p.daily||String(e.data.weekly)!==p.weekly||String(e.data.startup)!==p.startup);return r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Retention`})}),n(z,{children:e.loading&&!e.data?n(q,{size:`sm`}):e.error?n(K,{color:`danger`,className:`mb-0`,children:e.error}):e.data?r(i,{children:[n(`p`,{className:`text-muted small mb-3`,children:`How many backups of each scheduled tier to keep. Older ones get pruned after the next scheduled backup. Manual backups are never auto-pruned.`}),r(Xr,{onSubmit:e=>{e.preventDefault(),y()},children:[[{key:`hourly`,label:`Hourly`,help:`24 = one full day at 1-per-hour`},{key:`daily`,label:`Daily`,help:`7 = one full week at 1-per-day`},{key:`weekly`,label:`Weekly`,help:`4 = roughly one month`},{key:`startup`,label:`On startup`,help:`Created when SignalK boots after >24h offline`}].map(e=>r(U,{className:`mb-2`,children:[n(G,{for:`retention-${e.key}`,children:e.label}),r(`div`,{className:`d-flex gap-2 align-items-center`,children:[n(W,{id:`retention-${e.key}`,type:`number`,min:1,max:365,step:1,value:p[e.key],disabled:t,onChange:t=>{m(n=>({...n,[e.key]:t.target.value}))},style:{maxWidth:`8em`}}),n(`small`,{className:`text-muted`,children:e.help})]})]},e.key)),n(M,{color:`primary`,type:`submit`,disabled:t||!b,className:`mt-2`,children:t?n(q,{size:`sm`}):`Save retention policy`})]}),s&&n(K,{color:`danger`,className:`mt-3 mb-0`,children:s}),d&&n(K,{color:`success`,className:`mt-3 mb-0`,children:d})]}):null})]})}function ka(){return r(i,{children:[n(`h2`,{className:`mb-3`,children:`Settings`}),n(Sa,{}),n(Ca,{}),n(Oa,{}),n(Ta,{}),n(Da,{}),n(Ea,{})]})}var Aa=[{id:`dashboard`,label:`Dashboard`},{id:`backups`,label:`Backups`},{id:`database-exports`,label:`Database exports`},{id:`cloud`,label:`Cloud sync`},{id:`settings`,label:`Settings`}];function ja(){let[e,t]=c(`dashboard`);return r(Oe,{className:`py-4`,children:[r(`div`,{className:`d-flex align-items-center mb-4`,children:[n(`img`,{src:`/signalk-backup/icon.svg`,alt:``,width:40,height:40,className:`me-3`}),n(`h1`,{className:`mb-0`,children:`SignalK Backup`}),r(`small`,{className:`text-muted ms-3 align-self-end mb-2`,children:[`v`,`1.1.1`]})]}),n($e,{tabs:!0,className:`mb-3`,children:Aa.map(r=>n(at,{children:n(St,{href:`#`,active:e===r.id,onClick:e=>{e.preventDefault(),t(r.id)},children:r.label})},r.id))}),e===`dashboard`&&n(Ji,{}),e===`backups`&&n(aa,{}),e===`database-exports`&&n(xa,{}),e===`cloud`&&n(va,{}),e===`settings`&&n(ka,{})]})}function Ma(){return n(ja,{})}export{Ma as default};
|
|
3
|
-
//# sourceMappingURL=AppPanel-
|
|
2
|
+
${t}`);var a=[...arguments].slice(3);return e.apply(void 0,[n,r,i].concat(a))}}var oe=(typeof window>`u`?`undefined`:x(window))===`object`&&window.Element||function(){};function se(e,t,n){if(!(e[t]instanceof oe))return Error("Invalid prop `"+t+"` supplied to `"+n+"`. Expected prop to be an instance of Element. Validation failed.")}var ce=_.default.oneOfType([_.default.string,_.default.func,se,_.default.shape({current:_.default.any})]),O=_.default.oneOfType([_.default.func,_.default.string,_.default.shape({$$typeof:_.default.symbol,render:_.default.func}),_.default.arrayOf(_.default.oneOfType([_.default.func,_.default.string,_.default.shape({$$typeof:_.default.symbol,render:_.default.func})]))]),le={Fade:150,Collapse:350,Modal:300,Carousel:600,Offcanvas:300},ue=[`in`,`mountOnEnter`,`unmountOnExit`,`appear`,`enter`,`exit`,`timeout`,`onEnter`,`onEntering`,`onEntered`,`onExit`,`onExiting`,`onExited`],de={esc:27,space:32,enter:13,tab:9,up:38,down:40,home:36,end:35,n:78,p:80},fe=!!(typeof window<`u`&&window.document&&window.document.createElement);function pe(e){return e&&x(e)===`object`?`current`in e:!1}function me(e){return e==null?e===void 0?`[object Undefined]`:`[object Null]`:Object.prototype.toString.call(e)}function he(e){var t=x(e);return e!=null&&(t===`object`||t===`function`)}function ge(e){var t=x(e),n=NaN;if(t===`number`)return e;if(t===`symbol`||t===`object`&&me(e)===`[object Symbol]`)return n;if(he(e)){var r=typeof e.valueOf==`function`?e.valueOf():e;e=he(r)?`${r}`:r}if(t!==`string`)return e===0?e:+e;e=e.replace(/^\s+|\s+$/g,``);var i=/^0b[01]+$/i.test(e);return i||/^0o[0-7]+$/i.test(e)?parseInt(e.slice(2),i?2:8):/^[-+]0x[0-9a-f]+$/i.test(e)?n:+e}function _e(e){if(!he(e))return!1;var t=me(e);return t===`[object Function]`||t===`[object AsyncFunction]`||t===`[object GeneratorFunction]`||t===`[object Proxy]`}function ve(e){if(pe(e))return e.current;if(_e(e))return e();if(typeof e==`string`&&fe){var t=document.querySelectorAll(e);if(t.length||(t=document.querySelectorAll(`#${e}`)),!t.length)throw Error(`The target '${e}' could not be identified in the dom, tip: check spelling`);return t}return e}function ye(e){return e===null?!1:Array.isArray(e)||fe&&typeof e.length==`number`}function be(e,t){var n=ve(e);return t?ye(n)?n:n===null?[]:[n]:ye(n)?n[0]:n}var xe=[`a[href]`,`area[href]`,`input:not([disabled]):not([type=hidden])`,`select:not([disabled])`,`textarea:not([disabled])`,`button:not([disabled])`,`object`,`embed`,`[tabindex]:not(.modal):not(.offcanvas)`,`audio[controls]`,`video[controls]`,`[contenteditable]:not([contenteditable="false"])`];function Se(e,t){if(!e||!t)return t;var n=y({},t);return Object.keys(e).forEach(function(t){n[t]===void 0&&(n[t]=e[t]),Object.keys(e[t]||{}).length>0&&x(e[t])===`object`&&Se(e[t],n)}),n}var k=e(g()),Ce=[`className`,`cssModule`,`fluid`,`tag`];function we(){return we=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},we.apply(this,arguments)}function Te(e,t){if(e==null)return{};var n=Ee(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Ee(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var De={tag:O,fluid:_.default.oneOfType([_.default.bool,_.default.string]),className:_.default.string,cssModule:_.default.object};function Oe(e){var t=e.className,n=e.cssModule,r=e.fluid,i=e.tag,a=i===void 0?`div`:i,o=Te(e,Ce),s=`container`;r===!0?s=`container-fluid`:r&&(s=`container-${r}`);var c=D((0,k.default)(t,s),n);return u.createElement(a,we({},o,{className:c}))}Oe.propTypes=De;var ke=[`className`,`cssModule`,`noGutters`,`tag`,`widths`];function Ae(){return Ae=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ae.apply(this,arguments)}function je(e,t){if(e==null)return{};var n=Me(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Me(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Ne=[`xs`,`sm`,`md`,`lg`,`xl`,`xxl`],Pe=_.default.oneOfType([_.default.number,_.default.string]),Fe={tag:O,noGutters:ae(_.default.bool,`Please use Bootstrap 5 gutter utility classes. https://getbootstrap.com/docs/5.0/layout/gutters/`),className:_.default.string,cssModule:_.default.object,xs:Pe,sm:Pe,md:Pe,lg:Pe,xl:Pe,xxl:Pe,widths:_.default.array};function A(e){var t=e.className,n=e.cssModule,r=e.noGutters,i=e.tag,a=i===void 0?`div`:i,o=e.widths,s=o===void 0?Ne:o,c=je(e,ke),l=[];s.forEach(function(t,n){var r=e[t];if(delete c[t],r){var i=!n;l.push(i?`row-cols-${r}`:`row-cols-${t}-${r}`)}});var d=D((0,k.default)(t,r?`gx-0`:null,`row`,l),n);return u.createElement(a,Ae({},c,{className:d}))}A.propTypes=Fe;var Ie=[`className`,`cssModule`,`widths`,`tag`];function Le(){return Le=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Le.apply(this,arguments)}function Re(e,t){if(e==null)return{};var n=ze(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function ze(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function Be(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ve=[`xs`,`sm`,`md`,`lg`,`xl`,`xxl`],He=_.default.oneOfType([_.default.number,_.default.string]),Ue=_.default.oneOfType([_.default.bool,_.default.number,_.default.string,_.default.shape({size:_.default.oneOfType([_.default.bool,_.default.number,_.default.string]),order:He,offset:He})]),We={tag:O,xs:Ue,sm:Ue,md:Ue,lg:Ue,xl:Ue,xxl:Ue,className:_.default.string,cssModule:_.default.object,widths:_.default.array},Ge=function(e,t,n){return n===!0||n===``?e?`col`:`col-${t}`:n===`auto`?e?`col-auto`:`col-${t}-auto`:e?`col-${n}`:`col-${t}-${n}`},Ke=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ve,r=e,i=[];return n.forEach(function(e,n){var a=r[e];if(delete r[e],!(!a&&a!==``)){var o=!n;if(he(a)){var s,c=o?`-`:`-${e}-`,l=Ge(o,e,a.size);i.push(D((0,k.default)((s={},Be(s,l,a.size||a.size===``),Be(s,`order${c}${a.order}`,a.order||a.order===0),Be(s,`offset${c}${a.offset}`,a.offset||a.offset===0),s)),t))}else{var u=Ge(o,e,a);i.push(u)}}}),{colClasses:i,modifiedAttributes:r}};function j(e){var t=e.className,n=e.cssModule,r=e.widths,i=r===void 0?Ve:r,a=e.tag,o=a===void 0?`div`:a,s=Ke(Re(e,Ie),n,i),c=s.modifiedAttributes,l=s.colClasses;l.length||l.push(`col`);var d=D((0,k.default)(t,l),n);return u.createElement(o,Le({},c,{className:d}))}j.propTypes=We;var qe=[`className`,`cssModule`,`tabs`,`pills`,`vertical`,`horizontal`,`justified`,`fill`,`navbar`,`card`,`tag`];function Je(){return Je=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Je.apply(this,arguments)}function Ye(e,t){if(e==null)return{};var n=Xe(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Xe(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Ze={card:_.default.bool,className:_.default.string,cssModule:_.default.object,fill:_.default.bool,horizontal:_.default.oneOf([`center`,`end`]),justified:_.default.bool,navbar:_.default.bool,pills:_.default.bool,tabs:_.default.bool,tag:O,vertical:_.default.oneOfType([_.default.bool,_.default.string])},Qe=function(e){return e===!1?!1:e===!0||e===`xs`?`flex-column`:`flex-${e}-column`};function $e(e){var t=e.className,n=e.cssModule,r=e.tabs,i=e.pills,a=e.vertical,o=a!==void 0&&a,s=e.horizontal,c=e.justified,l=e.fill,d=e.navbar,f=e.card,p=e.tag,m=p===void 0?`ul`:p,h=Ye(e,qe),g=D((0,k.default)(t,d?`navbar-nav`:`nav`,s?`justify-content-${s}`:!1,Qe(o),{"nav-tabs":r,"card-header-tabs":f&&r,"nav-pills":i,"card-header-pills":f&&i,"nav-justified":c,"nav-fill":l}),n);return u.createElement(m,Je({},h,{className:g}))}$e.propTypes=Ze;var et=[`className`,`cssModule`,`active`,`tag`];function tt(){return tt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},tt.apply(this,arguments)}function nt(e,t){if(e==null)return{};var n=rt(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function rt(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var it={active:_.default.bool,className:_.default.string,cssModule:_.default.object,tag:O};function at(e){var t=e.className,n=e.cssModule,r=e.active,i=e.tag,a=i===void 0?`li`:i,o=nt(e,et),s=D((0,k.default)(t,`nav-item`,r?`active`:!1),n);return u.createElement(a,tt({},o,{className:s}))}at.propTypes=it;function ot(e){"@babel/helpers - typeof";return ot=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},ot(e)}var st=[`className`,`cssModule`,`active`,`tag`,`innerRef`];function ct(){return ct=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ct.apply(this,arguments)}function lt(e,t){if(e==null)return{};var n=ut(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function ut(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function dt(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function ft(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function pt(e,t,n){return t&&ft(e.prototype,t),n&&ft(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function mt(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&ht(e,t)}function ht(e,t){return ht=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ht(e,t)}function gt(e){var t=yt();return function(){var n=bt(e),r;if(t){var i=bt(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return _t(this,r)}}function _t(e,t){if(t&&(ot(t)===`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return vt(e)}function vt(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function yt(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function bt(e){return bt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},bt(e)}var xt={active:_.default.bool,className:_.default.string,cssModule:_.default.object,disabled:_.default.bool,href:_.default.any,innerRef:_.default.oneOfType([_.default.object,_.default.func,_.default.string]),onClick:_.default.func,tag:O},St=function(e){mt(n,e);var t=gt(n);function n(e){var r;return dt(this,n),r=t.call(this,e),r.onClick=r.onClick.bind(vt(r)),r}return pt(n,[{key:`onClick`,value:function(e){if(this.props.disabled){e.preventDefault();return}this.props.href===`#`&&e.preventDefault(),this.props.onClick&&this.props.onClick(e)}},{key:`render`,value:function(){var e=this.props,t=e.className,n=e.cssModule,r=e.active,i=e.tag,a=i===void 0?`a`:i,o=e.innerRef,s=lt(e,st),c=D((0,k.default)(t,`nav-link`,{disabled:s.disabled,active:r}),n);return u.createElement(a,ct({},s,{ref:o,onClick:this.onClick,className:c}))}}]),n}(u.Component);St.propTypes=xt;var Ct=[`className`,`cssModule`,`variant`,`innerRef`];function wt(){return wt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},wt.apply(this,arguments)}function Tt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Et(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Tt(Object(n),!0).forEach(function(t){Dt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Tt(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Dt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ot(e,t){if(e==null)return{};var n=kt(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function kt(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var At={active:_.default.bool,"aria-label":_.default.string,onClick:_.default.func,variant:_.default.oneOf([`white`]),className:_.default.string,cssModule:_.default.object,innerRef:_.default.oneOfType([_.default.object,_.default.string,_.default.func])};function jt(e){var t=e.className;e.cssModule;var n=e.variant,r=e.innerRef,i=Ot(e,Ct),a=D((0,k.default)(t,`btn-close`,n&&`btn-close-${n}`));return u.createElement(`button`,wt({ref:r,type:`button`,className:a},Et({"aria-label":`close`},i)))}jt.propTypes=At;var Mt=[`active`,`aria-label`,`block`,`className`,`close`,`cssModule`,`color`,`outline`,`size`,`tag`,`innerRef`];function Nt(){return Nt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Nt.apply(this,arguments)}function Pt(e,t){if(e==null)return{};var n=Ft(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Ft(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var It={active:_.default.bool,"aria-label":_.default.string,block:_.default.bool,children:_.default.node,className:_.default.string,cssModule:_.default.object,close:_.default.bool,color:_.default.string,disabled:_.default.bool,innerRef:_.default.oneOfType([_.default.object,_.default.func,_.default.string]),onClick:_.default.func,outline:_.default.bool,size:_.default.string,tag:O};function M(e){var t=s(function(t){if(e.disabled){t.preventDefault();return}if(e.onClick)return e.onClick(t)},[e.onClick,e.disabled]),n=e.active,r=e[`aria-label`],i=e.block,a=e.className,o=e.close,c=e.cssModule,l=e.color,d=l===void 0?`secondary`:l,f=e.outline,p=e.size,m=e.tag,h=m===void 0?`button`:m,g=e.innerRef,_=Pt(e,Mt);if(o)return u.createElement(jt,_);var v=`btn${f?`-outline`:``}-${d}`,y=D((0,k.default)(a,`btn`,v,p?`btn-${p}`:!1,i?`d-block w-100`:!1,{active:n,disabled:e.disabled}),c);return _.href&&h===`button`&&(h=`a`),u.createElement(h,Nt({type:h===`button`&&_.onClick?`button`:void 0},_,{className:y,ref:g,onClick:t,"aria-label":r}))}M.propTypes=It;function Lt(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function Rt(e,t){return Rt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Rt(e,t)}function zt(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Rt(e,t)}var Bt={disabled:!1},Vt=u.createContext(null),Ht=function(e){return e.scrollTop},Ut=`unmounted`,N=`exited`,Wt=`entering`,Gt=`entered`,Kt=`exiting`,P=function(e){zt(t,e);function t(t,n){var r=e.call(this,t,n)||this,i=n,a=i&&!i.isMounting?t.enter:t.appear,o;return r.appearStatus=null,t.in?a?(o=N,r.appearStatus=Wt):o=Gt:o=t.unmountOnExit||t.mountOnEnter?Ut:N,r.state={status:o},r.nextCallback=null,r}t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===`unmounted`?{status:N}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==`entering`&&n!==`entered`&&(t=Wt):(n===`entering`||n===`entered`)&&(t=Kt)}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e=this.props.timeout,t=n=r=e,n,r;return e!=null&&typeof e!=`number`&&(t=e.exit,n=e.enter,r=e.appear===void 0?n:e.appear),{exit:t,enter:n,appear:r}},n.updateStatus=function(e,t){if(e===void 0&&(e=!1),t!==null){if(this.cancelNextCallback(),t===`entering`){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:f.findDOMNode(this);n&&Ht(n)}this.performEnter(e)}else this.performExit()}else this.props.unmountOnExit&&this.state.status===`exited`&&this.setState({status:Ut})},n.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,i=this.props.nodeRef?[r]:[f.findDOMNode(this),r],a=i[0],o=i[1],s=this.getTimeouts(),c=r?s.appear:s.enter;if(!e&&!n||Bt.disabled){this.safeSetState({status:Gt},function(){t.props.onEntered(a)});return}this.props.onEnter(a,o),this.safeSetState({status:Wt},function(){t.props.onEntering(a,o),t.onTransitionEnd(c,function(){t.safeSetState({status:Gt},function(){t.props.onEntered(a,o)})})})},n.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:f.findDOMNode(this);if(!t||Bt.disabled){this.safeSetState({status:N},function(){e.props.onExited(r)});return}this.props.onExit(r),this.safeSetState({status:Kt},function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,function(){e.safeSetState({status:N},function(){e.props.onExited(r)})})})},n.cancelNextCallback=function(){this.nextCallback!==null&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:f.findDOMNode(this),r=e==null&&!this.props.addEndListener;if(!n||r){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var i=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],a=i[0],o=i[1];this.props.addEndListener(a,o)}e!=null&&setTimeout(this.nextCallback,e)},n.render=function(){var e=this.state.status;if(e===`unmounted`)return null;var t=this.props,n=t.children;t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef;var r=Lt(t,[`children`,`in`,`mountOnEnter`,`unmountOnExit`,`appear`,`enter`,`exit`,`timeout`,`addEndListener`,`onEnter`,`onEntering`,`onEntered`,`onExit`,`onExiting`,`onExited`,`nodeRef`]);return u.createElement(Vt.Provider,{value:null},typeof n==`function`?n(e,r):u.cloneElement(u.Children.only(n),r))},t}(u.Component);P.contextType=Vt,P.propTypes={};function F(){}P.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:F,onEntering:F,onEntered:F,onExit:F,onExiting:F,onExited:F},P.UNMOUNTED=Ut,P.EXITED=N,P.ENTERING=Wt,P.ENTERED=Gt,P.EXITING=Kt;var qt=[`tag`,`baseClass`,`baseClassActive`,`className`,`cssModule`,`children`,`innerRef`];function Jt(){return Jt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Jt.apply(this,arguments)}function Yt(e,t){if(e==null)return{};var n=Xt(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Xt(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function Zt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Qt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Zt(Object(n),!0).forEach(function(t){$t(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zt(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function $t(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var en=Qt(Qt({},P.propTypes),{},{children:_.default.oneOfType([_.default.arrayOf(_.default.node),_.default.node]),tag:O,baseClass:_.default.string,baseClassActive:_.default.string,className:_.default.string,cssModule:_.default.object,innerRef:_.default.oneOfType([_.default.object,_.default.string,_.default.func])}),tn=Qt(Qt({},P.defaultProps),{},{timeout:le.Fade,appear:!0,enter:!0,exit:!0,in:!0});function I(e){var t=a(null),n=Se(tn,e),r=n.tag,i=r===void 0?`div`:r,o=n.baseClass,s=o===void 0?`fade`:o,c=n.baseClassActive,l=c===void 0?`show`:c,d=n.className,f=n.cssModule,p=n.children,m=n.innerRef,h=m===void 0?t:m,g=Yt(n,qt),_=ne(Qt({defaultProps:tn},g),ue),v=te(g,ue);return u.createElement(P,Jt({nodeRef:h},_),function(e){var t=D((0,k.default)(d,s,e===`entered`&&l),f);return u.createElement(i,Jt({className:t},v,{ref:h}),p)})}I.propTypes=en;var nn=[`className`,`cssModule`,`color`,`innerRef`,`pill`,`tag`];function rn(){return rn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},rn.apply(this,arguments)}function an(e,t){if(e==null)return{};var n=on(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function on(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var sn={children:_.default.node,className:_.default.string,color:_.default.string,cssModule:_.default.object,innerRef:_.default.oneOfType([_.default.object,_.default.func,_.default.string]),pill:_.default.bool,tag:O};function L(e){var t=e.className,n=e.cssModule,r=e.color,i=r===void 0?`secondary`:r,a=e.innerRef,o=e.pill,s=o!==void 0&&o,c=e.tag,l=c===void 0?`span`:c,d=an(e,nn),f=D((0,k.default)(t,`badge`,`bg-`+i,s?`rounded-pill`:!1),n);return d.href&&l===`span`&&(l=`a`),u.createElement(l,rn({},d,{className:f,ref:a}))}L.propTypes=sn;var cn=[`className`,`cssModule`,`color`,`body`,`inverse`,`outline`,`tag`,`innerRef`];function ln(){return ln=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ln.apply(this,arguments)}function un(e,t){if(e==null)return{};var n=dn(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function dn(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var fn={body:_.default.bool,className:_.default.string,color:_.default.string,cssModule:_.default.object,innerRef:_.default.oneOfType([_.default.object,_.default.string,_.default.func]),inverse:_.default.bool,outline:_.default.bool,tag:O};function R(e){var t=e.className,n=e.cssModule,r=e.color,i=e.body,a=e.inverse,o=e.outline,s=e.tag,c=s===void 0?`div`:s,l=e.innerRef,d=un(e,cn),f=D((0,k.default)(t,`card`,a?`text-white`:!1,i?`card-body`:!1,r?`${o?`border`:`bg`}-${r}`:!1),n);return u.createElement(c,ln({},d,{className:f,ref:l}))}R.propTypes=fn;var pn=[`className`,`cssModule`,`innerRef`,`tag`];function mn(){return mn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},mn.apply(this,arguments)}function hn(e,t){if(e==null)return{};var n=gn(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function gn(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var _n={className:_.default.string,cssModule:_.default.object,innerRef:_.default.oneOfType([_.default.object,_.default.string,_.default.func]),tag:O};function z(e){var t=e.className,n=e.cssModule,r=e.innerRef,i=e.tag,a=i===void 0?`div`:i,o=hn(e,pn),s=D((0,k.default)(t,`card-body`),n);return u.createElement(a,mn({},o,{className:s,ref:r}))}z.propTypes=_n;var vn=[`className`,`cssModule`,`tag`];function yn(){return yn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},yn.apply(this,arguments)}function bn(e,t){if(e==null)return{};var n=xn(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function xn(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Sn={className:_.default.string,cssModule:_.default.object,tag:O};function B(e){var t=e.className,n=e.cssModule,r=e.tag,i=r===void 0?`div`:r,a=bn(e,vn),o=D((0,k.default)(t,`card-header`),n);return u.createElement(i,yn({},a,{className:o}))}B.propTypes=Sn;var Cn=[`children`,`className`,`barClassName`,`cssModule`,`value`,`min`,`max`,`animated`,`striped`,`color`,`bar`,`multi`,`tag`,`style`,`barStyle`,`barAriaValueText`,`barAriaLabelledBy`];function wn(){return wn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},wn.apply(this,arguments)}function Tn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function En(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Tn(Object(n),!0).forEach(function(t){Dn(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Tn(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Dn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function On(e,t){if(e==null)return{};var n=kn(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function kn(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var An={animated:_.default.bool,bar:_.default.bool,barAriaLabelledBy:_.default.string,barAriaValueText:_.default.string,barClassName:_.default.string,barStyle:_.default.object,children:_.default.node,className:_.default.string,cssModule:_.default.object,color:_.default.string,max:_.default.oneOfType([_.default.string,_.default.number]),min:_.default.oneOfType([_.default.string,_.default.number]),multi:_.default.bool,striped:_.default.bool,style:_.default.object,tag:O,value:_.default.oneOfType([_.default.string,_.default.number])};function jn(e){var t=e.children,n=e.className,r=e.barClassName,i=e.cssModule,a=e.value,o=a===void 0?0:a,s=e.min,c=s===void 0?0:s,l=e.max,d=l===void 0?100:l,f=e.animated,p=e.striped,m=e.color,h=e.bar,g=e.multi,_=e.tag,v=_===void 0?`div`:_,y=e.style,b=y===void 0?{}:y,x=e.barStyle,S=x===void 0?{}:x,C=e.barAriaValueText,w=e.barAriaLabelledBy,T=On(e,Cn),ee=ge(o)/ge(d)*100,E=D((0,k.default)(n,`progress`),i),te={className:D((0,k.default)(`progress-bar`,h&&n||r,f?`progress-bar-animated`:null,m?`bg-${m}`:null,p||f?`progress-bar-striped`:null),i),style:En(En(En({},h?b:{}),S),{},{width:`${ee}%`}),role:`progressbar`,"aria-valuenow":o,"aria-valuemin":c,"aria-valuemax":d,"aria-valuetext":C,"aria-labelledby":w,children:t};return h?u.createElement(v,wn({},T,te)):u.createElement(v,wn({},T,{style:b,className:E}),g?t:u.createElement(`div`,te))}jn.propTypes=An;function Mn(e){"@babel/helpers - typeof";return Mn=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Mn(e)}function Nn(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function Pn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Fn(e,t,n){return t&&Pn(e.prototype,t),n&&Pn(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function In(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Ln(e,t)}function Ln(e,t){return Ln=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Ln(e,t)}function Rn(e){var t=Vn();return function(){var n=Hn(e),r;if(t){var i=Hn(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return zn(this,r)}}function zn(e,t){if(t&&(Mn(t)===`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return Bn(e)}function Bn(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function Vn(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Hn(e){return Hn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Hn(e)}var Un={children:_.default.node.isRequired,node:_.default.any},Wn=function(e){In(n,e);var t=Rn(n);function n(){return Nn(this,n),t.apply(this,arguments)}return Fn(n,[{key:`componentWillUnmount`,value:function(){this.defaultNode&&document.body.removeChild(this.defaultNode),this.defaultNode=null}},{key:`render`,value:function(){return fe?(!this.props.node&&!this.defaultNode&&(this.defaultNode=document.createElement(`div`),document.body.appendChild(this.defaultNode)),f.createPortal(this.props.children,this.props.node||this.defaultNode)):null}}]),n}(u.Component);Wn.propTypes=Un;function Gn(e){"@babel/helpers - typeof";return Gn=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Gn(e)}function Kn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function V(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Kn(Object(n),!0).forEach(function(t){Jn(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Kn(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function qn(){return qn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},qn.apply(this,arguments)}function Jn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Yn(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function Xn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Zn(e,t,n){return t&&Xn(e.prototype,t),n&&Xn(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Qn(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&$n(e,t)}function $n(e,t){return $n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},$n(e,t)}function er(e){var t=nr();return function(){var n=rr(e),r;if(t){var i=rr(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return tr(this,r)}}function tr(e,t){if(t&&(Gn(t)===`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return H(e)}function H(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function nr(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function rr(e){return rr=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},rr(e)}function ir(){}var ar=_.default.shape(I.propTypes),or={autoFocus:_.default.bool,backdrop:_.default.oneOfType([_.default.bool,_.default.oneOf([`static`])]),backdropClassName:_.default.string,backdropTransition:ar,centered:_.default.bool,children:_.default.node,contentClassName:_.default.string,className:_.default.string,container:ce,cssModule:_.default.object,external:_.default.node,fade:_.default.bool,fullscreen:_.default.oneOfType([_.default.bool,_.default.oneOf([`sm`,`md`,`lg`,`xl`])]),innerRef:_.default.oneOfType([_.default.object,_.default.string,_.default.func]),isOpen:_.default.bool,keyboard:_.default.bool,labelledBy:_.default.string,modalClassName:_.default.string,modalTransition:ar,onClosed:_.default.func,onEnter:_.default.func,onExit:_.default.func,onOpened:_.default.func,returnFocusAfterClose:_.default.bool,role:_.default.string,scrollable:_.default.bool,size:_.default.string,toggle:_.default.func,trapFocus:_.default.bool,unmountOnClose:_.default.bool,wrapClassName:_.default.string,zIndex:_.default.oneOfType([_.default.number,_.default.string])},sr=Object.keys(or),cr={isOpen:!1,autoFocus:!0,centered:!1,scrollable:!1,role:`dialog`,backdrop:!0,keyboard:!0,zIndex:1050,fade:!0,onOpened:ir,onClosed:ir,modalTransition:{timeout:le.Modal},backdropTransition:{mountOnEnter:!0,timeout:le.Fade},unmountOnClose:!0,returnFocusAfterClose:!0,container:`body`,trapFocus:!1},lr=function(e){Qn(n,e);var t=er(n);function n(e){var r;return Yn(this,n),r=t.call(this,e),r._element=null,r._originalBodyPadding=null,r.getFocusableChildren=r.getFocusableChildren.bind(H(r)),r.handleBackdropClick=r.handleBackdropClick.bind(H(r)),r.handleBackdropMouseDown=r.handleBackdropMouseDown.bind(H(r)),r.handleEscape=r.handleEscape.bind(H(r)),r.handleStaticBackdropAnimation=r.handleStaticBackdropAnimation.bind(H(r)),r.handleTab=r.handleTab.bind(H(r)),r.onOpened=r.onOpened.bind(H(r)),r.onClosed=r.onClosed.bind(H(r)),r.manageFocusAfterClose=r.manageFocusAfterClose.bind(H(r)),r.clearBackdropAnimationTimeout=r.clearBackdropAnimationTimeout.bind(H(r)),r.trapFocus=r.trapFocus.bind(H(r)),r.state={isOpen:!1,showStaticBackdropAnimation:!1},r}return Zn(n,[{key:`componentDidMount`,value:function(){var e=this.props,t=e.isOpen,n=e.autoFocus,r=e.onEnter;t&&(this.init(),this.setState({isOpen:!0}),n&&this.setFocus()),r&&r(),document.addEventListener(`focus`,this.trapFocus,!0),this._isMounted=!0}},{key:`componentDidUpdate`,value:function(e,t){if(this.props.isOpen&&!e.isOpen){this.init(),this.setState({isOpen:!0});return}this.props.autoFocus&&this.state.isOpen&&!t.isOpen&&this.setFocus(),this._element&&e.zIndex!==this.props.zIndex&&(this._element.style.zIndex=this.props.zIndex)}},{key:`componentWillUnmount`,value:function(){this.clearBackdropAnimationTimeout(),this.props.onExit&&this.props.onExit(),this._element&&(this.destroy(),(this.props.isOpen||this.state.isOpen)&&this.close()),document.removeEventListener(`focus`,this.trapFocus,!0),this._isMounted=!1}},{key:`handleBackdropClick`,value:function(e){if(e.target===this._mouseDownElement){e.stopPropagation();var t=this._dialog?this._dialog.parentNode:null;if(t&&e.target===t&&this.props.backdrop===`static`&&this.handleStaticBackdropAnimation(),!this.props.isOpen||this.props.backdrop!==!0)return;t&&e.target===t&&this.props.toggle&&this.props.toggle(e)}}},{key:`handleTab`,value:function(e){if(e.which===9&&!(this.modalIndex<n.openCount-1)){var t=this.getFocusableChildren(),r=t.length;if(r!==0){for(var i=this.getFocusedChild(),a=0,o=0;o<r;o+=1)if(t[o]===i){a=o;break}e.shiftKey&&a===0?(e.preventDefault(),t[r-1].focus()):!e.shiftKey&&a===r-1&&(e.preventDefault(),t[0].focus())}}}},{key:`handleBackdropMouseDown`,value:function(e){this._mouseDownElement=e.target}},{key:`handleEscape`,value:function(e){this.props.isOpen&&e.keyCode===de.esc&&this.props.toggle&&(this.props.keyboard?(e.preventDefault(),e.stopPropagation(),this.props.toggle(e)):this.props.backdrop===`static`&&(e.preventDefault(),e.stopPropagation(),this.handleStaticBackdropAnimation()))}},{key:`handleStaticBackdropAnimation`,value:function(){var e=this;this.clearBackdropAnimationTimeout(),this.setState({showStaticBackdropAnimation:!0}),this._backdropAnimationTimeout=setTimeout(function(){e.setState({showStaticBackdropAnimation:!1})},100)}},{key:`onOpened`,value:function(e,t){this.props.onOpened(),(this.props.modalTransition.onEntered||ir)(e,t)}},{key:`onClosed`,value:function(e){var t=this.props.unmountOnClose;this.props.onClosed(),(this.props.modalTransition.onExited||ir)(e),t&&this.destroy(),this.close(),this._isMounted&&this.setState({isOpen:!1})}},{key:`setFocus`,value:function(){this._dialog&&this._dialog.parentNode&&typeof this._dialog.parentNode.focus==`function`&&this._dialog.parentNode.focus()}},{key:`getFocusableChildren`,value:function(){return this._element.querySelectorAll(xe.join(`, `))}},{key:`getFocusedChild`,value:function(){var e,t=this.getFocusableChildren();try{e=document.activeElement}catch{e=t[0]}return e}},{key:`trapFocus`,value:function(e){if(this.props.trapFocus&&this._element&&!(this._dialog&&this._dialog.parentNode===e.target)&&!(this.modalIndex<n.openCount-1)){for(var t=this.getFocusableChildren(),r=0;r<t.length;r+=1)if(t[r]===e.target)return;t.length>0&&(e.preventDefault(),e.stopPropagation(),t[0].focus())}}},{key:`init`,value:function(){try{this._triggeringElement=document.activeElement}catch{this._triggeringElement=null}this._element||(this._element=document.createElement(`div`),this._element.setAttribute(`tabindex`,`-1`),this._element.style.position=`relative`,this._element.style.zIndex=this.props.zIndex,this._mountContainer=be(this.props.container),this._mountContainer.appendChild(this._element)),this._originalBodyPadding=T(),n.openCount<1&&(n.originalBodyOverflow=window.getComputedStyle(document.body).overflow),ee(),n.openCount===0&&(document.body.className=(0,k.default)(document.body.className,D(`modal-open`,this.props.cssModule)),document.body.style.overflow=`hidden`),this.modalIndex=n.openCount,n.openCount+=1}},{key:`destroy`,value:function(){this._element&&=(this._mountContainer.removeChild(this._element),null),this.manageFocusAfterClose()}},{key:`manageFocusAfterClose`,value:function(){if(this._triggeringElement){var e=this.props.returnFocusAfterClose;this._triggeringElement.focus&&e&&this._triggeringElement.focus(),this._triggeringElement=null}}},{key:`close`,value:function(){if(n.openCount<=1){var e=D(`modal-open`,this.props.cssModule),t=RegExp(`(^| )${e}( |\$)`);document.body.className=document.body.className.replace(t,` `).trim(),document.body.style.overflow=n.originalBodyOverflow}this.manageFocusAfterClose(),n.openCount=Math.max(0,n.openCount-1),C(this._originalBodyPadding)}},{key:`clearBackdropAnimationTimeout`,value:function(){this._backdropAnimationTimeout&&=(clearTimeout(this._backdropAnimationTimeout),void 0)}},{key:`renderModalDialog`,value:function(){var e,t=this,n=te(this.props,sr),r=`modal-dialog`;return u.createElement(`div`,qn({},n,{className:D((0,k.default)(r,this.props.className,(e={},Jn(e,`modal-${this.props.size}`,this.props.size),Jn(e,`${r}-centered`,this.props.centered),Jn(e,`${r}-scrollable`,this.props.scrollable),Jn(e,`modal-fullscreen`,this.props.fullscreen===!0),Jn(e,`modal-fullscreen-${this.props.fullscreen}-down`,typeof this.props.fullscreen==`string`),e)),this.props.cssModule),role:`document`,ref:function(e){t._dialog=e}}),u.createElement(`div`,{className:D((0,k.default)(`modal-content`,this.props.contentClassName),this.props.cssModule)},this.props.children))}},{key:`render`,value:function(){var e=this.props.unmountOnClose;if(this._element&&(this.state.isOpen||!e)){var t=!!this._element&&!this.state.isOpen&&!e;this._element.style.display=t?`none`:`block`;var n=this.props,r=n.wrapClassName,i=n.modalClassName,a=n.backdropClassName,o=n.cssModule,s=n.isOpen,c=n.backdrop,l=n.role,d=n.labelledBy,f=n.external,p=n.innerRef,m={onClick:this.handleBackdropClick,onMouseDown:this.handleBackdropMouseDown,onKeyUp:this.handleEscape,onKeyDown:this.handleTab,style:{display:`block`},"aria-labelledby":d,"aria-modal":!0,role:l,tabIndex:`-1`},h=this.props.fade,g=V(V(V({},I.defaultProps),this.props.modalTransition),{},{baseClass:h?this.props.modalTransition.baseClass:``,timeout:h?this.props.modalTransition.timeout:0}),_=V(V(V({},I.defaultProps),this.props.backdropTransition),{},{baseClass:h?this.props.backdropTransition.baseClass:``,timeout:h?this.props.backdropTransition.timeout:0}),v=c&&(h?u.createElement(I,qn({},_,{in:s&&!!c,cssModule:o,className:D((0,k.default)(`modal-backdrop`,a),o)})):u.createElement(`div`,{className:D((0,k.default)(`modal-backdrop`,`show`,a),o)}));return u.createElement(Wn,{node:this._element},u.createElement(`div`,{className:D(r)},u.createElement(I,qn({},m,g,{in:s,onEntered:this.onOpened,onExited:this.onClosed,cssModule:o,className:D((0,k.default)(`modal`,i,this.state.showStaticBackdropAnimation&&`modal-static`),o),innerRef:p}),f,this.renderModalDialog()),v))}return null}}]),n}(u.Component);lr.propTypes=or,lr.defaultProps=cr,lr.openCount=0,lr.originalBodyOverflow=null;var ur=[`className`,`cssModule`,`children`,`toggle`,`tag`,`wrapTag`,`closeAriaLabel`,`close`];function dr(){return dr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},dr.apply(this,arguments)}function fr(e,t){if(e==null)return{};var n=pr(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function pr(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var mr={children:_.default.node,className:_.default.string,close:_.default.object,closeAriaLabel:_.default.string,cssModule:_.default.object,tag:O,toggle:_.default.func,wrapTag:O};function hr(e){var t,n=e.className,r=e.cssModule,i=e.children,a=e.toggle,o=e.tag,s=o===void 0?`h5`:o,c=e.wrapTag,l=c===void 0?`div`:c,d=e.closeAriaLabel,f=d===void 0?`Close`:d,p=e.close,m=fr(e,ur),h=D((0,k.default)(n,`modal-header`),r);return!p&&a&&(t=u.createElement(`button`,{type:`button`,onClick:a,className:D(`btn-close`,r),"aria-label":f})),u.createElement(l,dr({},m,{className:h}),u.createElement(s,{className:D(`modal-title`,r)},i),p||t)}hr.propTypes=mr;var gr=[`className`,`cssModule`,`tag`];function _r(){return _r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_r.apply(this,arguments)}function vr(e,t){if(e==null)return{};var n=yr(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function yr(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var br={className:_.default.string,cssModule:_.default.object,tag:O};function xr(e){var t=e.className,n=e.cssModule,r=e.tag,i=r===void 0?`div`:r,a=vr(e,gr),o=D((0,k.default)(t,`modal-body`),n);return u.createElement(i,_r({},a,{className:o}))}xr.propTypes=br;var Sr=[`className`,`cssModule`,`tag`];function Cr(){return Cr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Cr.apply(this,arguments)}function wr(e,t){if(e==null)return{};var n=Tr(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Tr(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Er={className:_.default.string,cssModule:_.default.object,tag:O};function Dr(e){var t=e.className,n=e.cssModule,r=e.tag,i=r===void 0?`div`:r,a=wr(e,Sr),o=D((0,k.default)(t,`modal-footer`),n);return u.createElement(i,Cr({},a,{className:o}))}Dr.propTypes=Er;var Or=[`className`,`cssModule`,`size`,`bordered`,`borderless`,`striped`,`dark`,`hover`,`responsive`,`tag`,`responsiveTag`,`innerRef`];function kr(){return kr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},kr.apply(this,arguments)}function Ar(e,t){if(e==null)return{};var n=jr(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function jr(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Mr={bordered:_.default.bool,borderless:_.default.bool,className:_.default.string,cssModule:_.default.object,dark:_.default.bool,hover:_.default.bool,innerRef:_.default.oneOfType([_.default.func,_.default.string,_.default.object]),responsive:_.default.oneOfType([_.default.bool,_.default.string]),responsiveTag:O,size:_.default.string,striped:_.default.bool,tag:O};function Nr(e){var t=e.className,n=e.cssModule,r=e.size,i=e.bordered,a=e.borderless,o=e.striped,s=e.dark,c=e.hover,l=e.responsive,d=e.tag,f=d===void 0?`table`:d,p=e.responsiveTag,m=p===void 0?`div`:p,h=e.innerRef,g=Ar(e,Or),_=D((0,k.default)(t,`table`,r?`table-`+r:!1,i?`table-bordered`:!1,a?`table-borderless`:!1,o?`table-striped`:!1,s?`table-dark`:!1,c?`table-hover`:!1),n),v=u.createElement(f,kr({},g,{ref:h,className:_}));if(l){var y=D(l===!0?`table-responsive`:`table-responsive-${l}`,n);return u.createElement(m,{className:y},v)}return v}Nr.propTypes=Mr;function Pr(e){"@babel/helpers - typeof";return Pr=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Pr(e)}var Fr=[`className`,`cssModule`,`tag`,`innerRef`];function Ir(){return Ir=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ir.apply(this,arguments)}function Lr(e,t){if(e==null)return{};var n=Rr(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Rr(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function zr(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function Br(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Vr(e,t,n){return t&&Br(e.prototype,t),n&&Br(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Hr(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Ur(e,t)}function Ur(e,t){return Ur=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Ur(e,t)}function Wr(e){var t=qr();return function(){var n=Jr(e),r;if(t){var i=Jr(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return Gr(this,r)}}function Gr(e,t){if(t&&(Pr(t)===`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return Kr(e)}function Kr(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function qr(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Jr(e){return Jr=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Jr(e)}var Yr={children:_.default.node,tag:O,innerRef:_.default.oneOfType([_.default.object,_.default.func,_.default.string]),className:_.default.string,cssModule:_.default.object},Xr=function(e){Hr(n,e);var t=Wr(n);function n(e){var r;return zr(this,n),r=t.call(this,e),r.getRef=r.getRef.bind(Kr(r)),r.submit=r.submit.bind(Kr(r)),r}return Vr(n,[{key:`getRef`,value:function(e){this.props.innerRef&&this.props.innerRef(e),this.ref=e}},{key:`submit`,value:function(){this.ref&&this.ref.submit()}},{key:`render`,value:function(){var e=this.props,t=e.className,n=e.cssModule,r=e.tag,i=r===void 0?`form`:r,a=e.innerRef,o=Lr(e,Fr),s=D(t,n);return u.createElement(i,Ir({},o,{ref:a,className:s}))}}]),n}(d);Xr.propTypes=Yr;var Zr=[`className`,`cssModule`,`row`,`disabled`,`check`,`inline`,`floating`,`noMargin`,`tag`,`switch`];function Qr(){return Qr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Qr.apply(this,arguments)}function $r(e,t){if(e==null)return{};var n=ei(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function ei(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var ti={children:_.default.node,row:_.default.bool,check:_.default.bool,switch:_.default.bool,inline:_.default.bool,floating:_.default.bool,noMargin:_.default.bool,disabled:_.default.bool,tag:O,className:_.default.string,cssModule:_.default.object};function U(e){var t=e.className,n=e.cssModule,r=e.row,i=e.disabled,a=e.check,o=e.inline,s=e.floating,c=e.noMargin,l=e.tag,d=l===void 0?`div`:l,f=e.switch,p=$r(e,Zr),m=a||f,h=D((0,k.default)(t,r?`row`:!1,m?`form-check`:!1,f?`form-switch`:!1,m||c?!1:`mb-3`,m&&o?`form-check-inline`:!1,m&&i?`disabled`:!1,s&&`form-floating`),n);return d===`fieldset`&&(p.disabled=i),u.createElement(d,Qr({},p,{className:h}))}U.propTypes=ti;function ni(e){"@babel/helpers - typeof";return ni=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},ni(e)}var ri=[`className`,`cssModule`,`type`,`bsSize`,`valid`,`invalid`,`tag`,`addon`,`plaintext`,`innerRef`];function ii(){return ii=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ii.apply(this,arguments)}function ai(e,t){if(e==null)return{};var n=oi(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function oi(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function si(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function ci(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function li(e,t,n){return t&&ci(e.prototype,t),n&&ci(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function ui(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&di(e,t)}function di(e,t){return di=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},di(e,t)}function fi(e){var t=hi();return function(){var n=gi(e),r;if(t){var i=gi(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return pi(this,r)}}function pi(e,t){if(t&&(ni(t)===`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return mi(e)}function mi(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function hi(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function gi(e){return gi=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},gi(e)}var _i={children:_.default.node,type:_.default.string,size:_.default.oneOfType([_.default.number,_.default.string]),bsSize:_.default.string,valid:_.default.bool,invalid:_.default.bool,tag:O,innerRef:_.default.oneOfType([_.default.object,_.default.func,_.default.string]),plaintext:_.default.bool,addon:_.default.bool,className:_.default.string,cssModule:_.default.object},W=function(e){ui(n,e);var t=fi(n);function n(e){var r;return si(this,n),r=t.call(this,e),r.getRef=r.getRef.bind(mi(r)),r.focus=r.focus.bind(mi(r)),r}return li(n,[{key:`getRef`,value:function(e){this.props.innerRef&&this.props.innerRef(e),this.ref=e}},{key:`focus`,value:function(){this.ref&&this.ref.focus()}},{key:`render`,value:function(){var e=this.props,t=e.className,n=e.cssModule,r=e.type,i=r===void 0?`text`:r,a=e.bsSize,o=e.valid,s=e.invalid,c=e.tag,l=e.addon,d=e.plaintext,f=e.innerRef,p=ai(e,ri),m=[`switch`,`radio`,`checkbox`].indexOf(i)>-1,h=/\D/g,g=i===`textarea`,_=i===`select`,v=i===`range`,y=c||(_||g?i:`input`),b=`form-control`;d?(b=`${b}-plaintext`,y=c||`input`):v?b=`form-range`:_?b=`form-select`:m&&(b=l?null:`form-check-input`),p.size&&h.test(p.size)&&(ie(`Please use the prop "bsSize" instead of the "size" to bootstrap's input sizing.`),a=p.size,delete p.size);var x=D((0,k.default)(t,s&&`is-invalid`,o&&`is-valid`,a?_?`form-select-${a}`:`form-control-${a}`:!1,b),n);return(y===`input`||c&&typeof c==`function`)&&(p.type=i===`switch`?`checkbox`:i),p.children&&!(d||i===`select`||typeof y!=`string`||y===`select`)&&(ie(`Input with a type of "${i}" cannot have children. Please use "value"/"defaultValue" instead.`),delete p.children),u.createElement(y,ii({},p,{ref:f,className:x,"aria-invalid":s}))}}]),n}(u.Component);W.propTypes=_i;var vi=[`className`,`cssModule`,`hidden`,`widths`,`tag`,`check`,`size`,`for`];function yi(){return yi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},yi.apply(this,arguments)}function bi(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function xi(e,t){if(e==null)return{};var n=Si(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Si(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Ci=[`xs`,`sm`,`md`,`lg`,`xl`,`xxl`],wi=_.default.oneOfType([_.default.number,_.default.string]),Ti=_.default.oneOfType([_.default.bool,_.default.string,_.default.number,_.default.shape({size:wi,order:wi,offset:wi})]),Ei={children:_.default.node,hidden:_.default.bool,check:_.default.bool,size:_.default.string,for:_.default.string,tag:O,className:_.default.string,cssModule:_.default.object,xs:Ti,sm:Ti,md:Ti,lg:Ti,xl:Ti,xxl:Ti,widths:_.default.array},Di=function(e,t,n){return n===!0||n===``?e?`col`:`col-${t}`:n===`auto`?e?`col-auto`:`col-${t}-auto`:e?`col-${n}`:`col-${t}-${n}`};function G(e){var t=e.className,n=e.cssModule,r=e.hidden,i=e.widths,a=i===void 0?Ci:i,o=e.tag,s=o===void 0?`label`:o,c=e.check,l=e.size,d=e.for,f=xi(e,vi),p=[];a.forEach(function(t,r){var i=e[t];if(delete f[t],!(!i&&i!==``)){var a=!r,o;if(he(i)){var s,c=a?`-`:`-${t}-`;o=Di(a,t,i.size),p.push(D((0,k.default)((s={},bi(s,o,i.size||i.size===``),bi(s,`order${c}${i.order}`,i.order||i.order===0),bi(s,`offset${c}${i.offset}`,i.offset||i.offset===0),s))),n)}else o=Di(a,t,i),p.push(o)}});var m=l||p.length,h=!(c||m),g=D((0,k.default)(t,r?`visually-hidden`:!1,c?`form-check-label`:!1,l?`col-form-label-${l}`:!1,p,m?`col-form-label`:!1,h?`form-label`:!1),n);return u.createElement(s,yi({htmlFor:d},f,{className:g}))}G.propTypes=Ei;var Oi=[`className`,`closeClassName`,`closeAriaLabel`,`cssModule`,`tag`,`color`,`isOpen`,`toggle`,`children`,`transition`,`fade`,`innerRef`];function ki(){return ki=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ki.apply(this,arguments)}function Ai(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ji(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Ai(Object(n),!0).forEach(function(t){Mi(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ai(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Mi(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ni(e,t){if(e==null)return{};var n=Pi(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Pi(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Fi={children:_.default.node,className:_.default.string,closeClassName:_.default.string,closeAriaLabel:_.default.string,color:_.default.string,cssModule:_.default.object,fade:_.default.bool,innerRef:_.default.oneOfType([_.default.object,_.default.string,_.default.func]),isOpen:_.default.bool,tag:O,toggle:_.default.func,transition:_.default.shape(I.propTypes)};function K(e){var t=e.className,n=e.closeClassName,r=e.closeAriaLabel,i=r===void 0?`Close`:r,a=e.cssModule,o=e.tag,s=o===void 0?`div`:o,c=e.color,l=c===void 0?`success`:c,d=e.isOpen,f=d===void 0||d,p=e.toggle,m=e.children,h=e.transition,g=h===void 0?ji(ji({},I.defaultProps),{},{unmountOnExit:!0}):h,_=e.fade,v=_===void 0||_,y=e.innerRef,b=Ni(e,Oi),x=D((0,k.default)(t,`alert`,`alert-${l}`,{"alert-dismissible":p}),a),S=D((0,k.default)(`btn-close`,n),a),C=ji(ji(ji({},I.defaultProps),g),{},{baseClass:v?g.baseClass:``,timeout:v?g.timeout:0});return u.createElement(I,ki({},b,C,{tag:s,className:x,in:f,role:`alert`,innerRef:y}),p?u.createElement(`button`,{type:`button`,className:S,"aria-label":i,onClick:p}):null,m)}K.propTypes=Fi;var Ii=[`className`,`cssModule`,`type`,`size`,`color`,`children`,`tag`];function Li(){return Li=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Li.apply(this,arguments)}function Ri(e,t){if(e==null)return{};var n=zi(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function zi(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}var Bi={tag:O,type:_.default.oneOf([`border`,`grow`]),size:_.default.oneOf([`sm`]),color:_.default.oneOf([`primary`,`secondary`,`success`,`danger`,`warning`,`info`,`light`,`dark`]),className:_.default.string,cssModule:_.default.object,children:_.default.string};function q(e){var t=e.className,n=e.cssModule,r=e.type,i=r===void 0?`border`:r,a=e.size,o=e.color,s=e.children,c=s===void 0?`Loading...`:s,l=e.tag,d=l===void 0?`div`:l,f=Ri(e,Ii),p=D((0,k.default)(t,a?`spinner-${i}-${a}`:!1,`spinner-${i}`,o?`text-${o}`:!1),n);return u.createElement(d,Li({role:`status`},f,{className:p}),c&&u.createElement(`span`,{className:D(`visually-hidden`,n)},c))}q.propTypes=Bi;var J=`/plugins/signalk-backup/api`,Vi=class extends Error{conflict;constructor(e,t){super(e),this.conflict=t,this.name=`PartialRestoreConflictError`}},Hi=class extends Error{status;code;constructor(e,t,n){super(e),this.status=t,this.code=n,this.name=`ApiError`}};async function Y(e,t){let n=await fetch(J+e,t),r=await n.json().catch(()=>null);if(typeof r==`object`&&r&&`success`in r){let e=r;if(e.success===!1){let t=e.error?.code;throw new Hi(e.error?.message??`unknown server error`,n.status,t)}if(e.success===!0&&`data`in r)return e.data}if(!n.ok)throw new Hi(`HTTP ${n.status}`,n.status,void 0);return r}async function Ui(e,t){let n=await fetch(J+e,t),r=await n.json().catch(()=>null);if(!n.ok){let e=r?.error;throw new Hi(e??`HTTP ${n.status}`,n.status,void 0)}return r}var X={health:()=>Y(`/health`),listBackups:()=>Y(`/backups`),scheduler:()=>Y(`/backups/scheduler`),repository:()=>Y(`/backups/repository`),createBackup:e=>Y(`/backups`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({description:e})}),deleteBackup:e=>Y(`/backups/${encodeURIComponent(e)}`,{method:`DELETE`}),uploadBackup:(e,t)=>{let n=new FormData;return n.append(`file`,e),t&&n.append(`description`,t),n.append(`restoreImmediately`,`false`),Y(`/backups/upload`,{method:`POST`,body:n})},startRestore:e=>Y(`/backups/${encodeURIComponent(e)}/restore`,{method:`POST`}),restoreStatus:()=>Y(`/backups/restore/status`),resetRestoreState:()=>Y(`/backups/restore/reset`,{method:`POST`}),downloadUrl:e=>`${J}/backups/${encodeURIComponent(e)}/download`,listBackupTree:(e,t)=>Y(`/backups/${encodeURIComponent(e)}/tree?path=${encodeURIComponent(t)}`),downloadSubtreeUrl:(e,t)=>`${J}/backups/${encodeURIComponent(e)}/download-subtree?path=${encodeURIComponent(t)}`,restorePartial:async(e,t)=>{let n=`${J}/backups/${encodeURIComponent(e)}/restore-partial`,r=await fetch(n,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(r.status===409){let e=await r.json().catch(()=>null),t=e?.data?.conflict,n=e?.error?.code;throw n===`TARGET_EXISTS`&&t?new Vi(e.error?.message??`Target already exists`,t):Error(`restore-partial → 409${n?` [${n}]`:``}: ${e?.error?.message??`conflict`}`)}if(!r.ok){let e=await r.text().catch(()=>``);throw Error(`restore-partial → ${r.status}: ${e.slice(0,200)}`)}let i=await r.json();if(i.success===!1)throw Error(`restore-partial: ${i.error?.message??`unknown error`}`);return i.data??{started:!0}},restorePartialStatus:()=>Y(`/backups/restore-partial/status`),resetRestorePartialState:()=>Y(`/backups/restore-partial/reset`,{method:`POST`}),restorePartialHost:async e=>{let t=await fetch(`${J}/restore-partial-host`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(t.status===409){let e=await t.json().catch(()=>null),n=e?.data?.conflict,r=e?.error?.code;throw r===`TARGET_EXISTS`&&n?new Vi(e.error?.message??`Target already exists`,n):Error(`restore-partial-host → 409${r?` [${r}]`:``}: ${e?.error?.message??`conflict`}`)}if(!t.ok){let e=await t.text().catch(()=>``);throw Error(`restore-partial-host → ${t.status}: ${e.slice(0,200)}`)}let n=await t.json();if(n.success===!1)throw Error(`restore-partial-host: ${n.error?.message??`unknown error`}`);return n.data??{started:!0}},restorePartialHostStatus:()=>Y(`/restore-partial-host/status`),resetRestorePartialHostState:()=>Y(`/restore-partial-host/reset`,{method:`POST`}),listStaging:()=>Y(`/db-export/staging`),stagingDownloadUrl:e=>`${J}/db-export/staging/download?file=${encodeURIComponent(e)}`,cloudStatus:async()=>{let e=await Y(`/cloud/status`);return{...e,provider:e.provider??`gdrive`}},gdriveStatus:()=>Y(`/cloud/gdrive/status`),gdriveAuthState:()=>Y(`/cloud/gdrive/auth-state`),gdriveConnect:()=>Y(`/cloud/gdrive/connect`,{method:`POST`}),gdriveCancel:()=>Y(`/cloud/gdrive/cancel`,{method:`POST`}),gdriveAuthCallback:e=>Y(`/cloud/gdrive/auth-callback`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({url:e})}),gdriveDisconnect:()=>Y(`/cloud/gdrive/disconnect`,{method:`POST`}),localStatus:()=>Y(`/cloud/local/status`),localDiscover:()=>Y(`/cloud/local/discover`),localConfigure:(e,t)=>Y(`/cloud/local/configure`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({containerPath:e,hostPath:t})}),localDisconnect:()=>Y(`/cloud/local/disconnect`,{method:`POST`}),smbStatus:()=>Y(`/cloud/smb/status`),smbDiscover:()=>Y(`/cloud/smb/discover`),smbConnect:e=>Y(`/cloud/smb/connect`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),smbDisconnect:()=>Y(`/cloud/smb/disconnect`,{method:`POST`}),dbExportConfig:()=>Y(`/db-export/config`),dbExportConfigSet:e=>Y(`/db-export/config`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),cloudSync:()=>Y(`/cloud/sync`,{method:`POST`}),cloudSyncCancel:()=>Y(`/cloud/sync/cancel`,{method:`POST`}),cloudConfig:e=>Y(`/cloud/config`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),schedulerStart:()=>Y(`/backups/scheduler/start`,{method:`POST`}),schedulerStop:()=>Y(`/backups/scheduler/stop`,{method:`POST`}),retention:()=>Y(`/backups/retention`),setRetention:e=>Y(`/backups/retention`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),exclusions:()=>Y(`/backups/exclusions`),setExclusions:e=>Y(`/backups/exclusions`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({exclusions:e})}),dataDirs:()=>Y(`/backups/data-dirs`),pluginDataDirs:()=>Y(`/backups/plugin-data-dirs`),passwordStatus:()=>Y(`/backups/password`),setPassword:e=>Y(`/backups/password`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({password:e,confirmPassword:e})}),resetPassword:()=>Y(`/backups/password`,{method:`DELETE`}),checkUpdate:()=>Ui(`/update/check`),applyUpdate:e=>Ui(`/update/apply`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e?{tag:e}:{})}),pluginStatus:async()=>{let e=await fetch(`/plugins/signalk-backup/status`);if(!e.ok)throw Error(`/status → ${e.status}`);return e.json()}};function Z(e){if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`,`TB`],n=e/1024,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n.toFixed(1)} ${t[r]}`}function Wi(e,t){if(!e||!t)return e;let n=e=>e.replace(/\/+$/,``)||`/`,r=n(t.containerPath),i=n(t.hostPath);if(n(e)===r)return i;let a=r===`/`?`/`:r+`/`;return e.startsWith(a)?i+`/`+e.slice(a.length):e}function Q(e){if(!e)return`Never`;let t=new Date(e);return isNaN(t.getTime())?e:t.toLocaleString(void 0,{year:`numeric`,month:`short`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`})}function $(e,t={}){let{intervalMs:n}=t,[r,i]=c(null),[o,u]=c(!0),[d,f]=c(null),p=a(e);p.current=e;let m=s(async e=>{try{let t=await p.current();if(e.current)return;i(t),f(null)}catch(t){if(e.current)return;f(t instanceof Error?t.message:String(t))}finally{e.current||u(!1)}},[]),[h,g]=c(0),_=s(()=>{g(e=>e+1)},[]);return l(()=>{let e={current:!1};u(!0),m(e);let t;return n&&n>0&&(t=setInterval(()=>{m(e)},n)),()=>{e.current=!0,t&&clearInterval(t)}},[n,m,h]),{data:r,loading:o,error:d,refresh:_}}function Gi({status:e}){return e?e.ready?n(L,{color:`success`,children:`Ready`}):n(L,{color:`warning`,children:`Not ready`}):n(L,{color:`secondary`,children:`Unknown`})}function Ki({stats:e}){let t=e.totalSize>0?e.originalSize/e.totalSize:0;return r(A,{className:`g-2`,children:[r(j,{xs:6,children:[n(`small`,{className:`text-muted d-block`,children:`On disk`}),n(`div`,{children:Z(e.totalSize)})]}),r(j,{xs:6,children:[n(`small`,{className:`text-muted d-block`,children:`Logical`}),n(`div`,{children:Z(e.originalSize)})]}),n(j,{xs:12,className:`mt-2`,children:n(`small`,{className:`text-muted d-block`,children:t>=1.1?`${t.toFixed(1)}× dedup (${Z(e.dedupSavings)} saved)`:`No significant dedup yet`})})]})}function qi({scheduler:e}){return r(A,{className:`g-2 mt-2`,children:[r(j,{xs:3,children:[n(`small`,{className:`text-muted d-block`,children:`Hourly`}),n(`div`,{children:e.backupCounts.hourly})]}),r(j,{xs:3,children:[n(`small`,{className:`text-muted d-block`,children:`Daily`}),n(`div`,{children:e.backupCounts.daily})]}),r(j,{xs:3,children:[n(`small`,{className:`text-muted d-block`,children:`Weekly`}),n(`div`,{children:e.backupCounts.weekly})]}),r(j,{xs:3,children:[n(`small`,{className:`text-muted d-block`,children:`Manual`}),n(`div`,{children:e.backupCounts.manual})]})]})}function Ji(){let e=$(()=>X.pluginStatus(),{intervalMs:5e3}),t=$(()=>X.scheduler(),{intervalMs:15e3}),a=$(()=>X.listBackups(),{intervalMs:3e4}),o=$(()=>X.repository(),{intervalMs:6e4});return r(i,{children:[r(`div`,{className:`d-flex justify-content-between align-items-center mb-3`,children:[n(`h2`,{className:`mb-0`,children:`Dashboard`}),n(M,{color:`secondary`,outline:!0,size:`sm`,onClick:()=>{e.refresh(),t.refresh(),a.refresh(),o.refresh()},disabled:e.loading||t.loading||a.loading||o.loading,children:`Refresh`})]}),r(A,{children:[n(j,{xs:12,md:6,children:r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Plugin status`})}),n(z,{children:e.loading&&!e.data?n(q,{size:`sm`}):e.error?n(K,{color:`danger`,className:`mb-0`,children:e.error}):r(i,{children:[n(`div`,{className:`mb-2`,children:n(Gi,{status:e.data})}),e.data&&r(`dl`,{className:`row mb-0`,children:[n(`dt`,{className:`col-sm-4`,children:`Image`}),n(`dd`,{className:`col-sm-8 text-truncate`,children:n(`code`,{children:e.data.container.image})}),n(`dt`,{className:`col-sm-4`,children:`Container`}),r(`dd`,{className:`col-sm-8`,children:[e.data.container.state,` `,e.data.container.managed&&n(`small`,{className:`text-muted`,children:`(managed)`})]})]})]})})]})}),n(j,{xs:12,md:6,children:r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Scheduler`})}),n(z,{children:t.loading&&!t.data?n(q,{size:`sm`}):t.error?n(K,{color:`danger`,className:`mb-0`,children:t.error}):t.data?r(i,{children:[n(`div`,{className:`mb-2`,children:n(L,{color:t.data.enabled?`success`:`secondary`,children:t.data.enabled?`Running`:`Stopped`})}),r(A,{className:`g-2`,children:[r(j,{xs:6,children:[n(`small`,{className:`text-muted d-block`,children:`Last backup`}),n(`div`,{children:Q(t.data.lastBackup)})]}),r(j,{xs:6,children:[n(`small`,{className:`text-muted d-block`,children:`Total snapshots`}),n(`div`,{children:t.data.backupCounts.total})]})]}),n(qi,{scheduler:t.data})]}):null})]})}),n(j,{xs:12,md:6,children:r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Local repository`})}),n(z,{children:o.loading&&!o.data?n(q,{size:`sm`}):o.error?n(K,{color:`danger`,className:`mb-0`,children:o.error}):o.data?n(Ki,{stats:o.data}):null})]})})]}),r(R,{children:[n(B,{children:n(`strong`,{children:`Recent backups`})}),n(z,{children:a.loading&&!a.data?n(q,{size:`sm`}):a.error?n(K,{color:`danger`,className:`mb-0`,children:a.error}):a.data&&a.data.backups.length>0?n(`ul`,{className:`list-unstyled mb-0`,children:a.data.backups.slice(0,5).map(e=>r(`li`,{className:`d-flex justify-content-between border-bottom py-2`,children:[r(`span`,{children:[n(L,{color:`light`,className:`text-dark me-2`,children:e.type}),Q(e.createdAt)]}),n(`code`,{className:`text-muted small`,children:e.id.slice(0,12)})]},e.id))}):n(`p`,{className:`text-muted mb-0`,children:`No backups yet.`})})]})]})}function Yi({backup:e,sourceEntry:t,sourcePath:a,pathMapping:o,onClose:s,onSubmitted:l}){let[u,d]=c(`original`),[f,p]=c(``),[m,h]=c(!1),[g,_]=c(null),[v,y]=c(null),b=e=>({sourcePath:a,targetMode:u,...u===`custom`?{customPath:f.trim()}:{},confirmOverwrite:e}),x=async n=>{h(!0),_(null);try{u===`custom`?await X.restorePartialHost({backupId:e.id,sourcePath:a,customPath:f.trim(),isDir:t.isDir,confirmOverwrite:n}):await X.restorePartial(e.id,b(n)),l()}catch(e){e instanceof Vi?y(e.conflict):_(e instanceof Error?e.message:String(e))}finally{h(!1)}},S=m||u===`custom`&&f.trim().length===0;return r(lr,{isOpen:!0,toggle:m?void 0:s,size:`md`,backdrop:`static`,children:[r(hr,{toggle:m?void 0:s,children:[`Restore `,t.isDir?`directory`:`file`]}),r(xr,{children:[r(`div`,{className:`mb-3 small text-muted`,children:[`Source:`,` `,r(`code`,{children:[a,t.isDir?`/`:``]}),` `,`(`,Z(t.size),`)`]}),r(U,{tag:`fieldset`,disabled:m,children:[n(`legend`,{className:`h6`,children:`Restore target`}),n(U,{check:!0,children:r(G,{check:!0,children:[n(W,{type:`radio`,name:`partial-restore-mode`,checked:u===`original`,onChange:()=>{d(`original`),y(null)}}),` `,`Original location (under SignalK config root)`]})}),n(U,{check:!0,children:r(G,{check:!0,children:[n(W,{type:`radio`,name:`partial-restore-mode`,checked:u===`custom`,onChange:()=>{d(`custom`),y(null)}}),` `,`Custom path (anywhere the SignalK user can write)`]})}),u===`custom`&&r(U,{className:`mt-2`,children:[n(G,{for:`partial-restore-custom-path`,children:`Custom path`}),n(W,{id:`partial-restore-custom-path`,value:f,onChange:e=>{p(e.target.value),y(null)},placeholder:`e.g. /tmp/restored or /media/usb/backups/`}),n(`small`,{className:`text-muted`,children:`Relative or absolute. The plugin writes locally under the SignalK process's permissions, so anywhere your user can write works — including /tmp, /media/usb/…, or under your home directory. Add a trailing slash to land inside as a directory.`})]})]}),v&&r(K,{color:`warning`,className:`mt-3 mb-0`,children:[n(`div`,{className:`fw-semibold`,children:`Target already exists`}),n(`div`,{className:`small mb-2`,children:n(`code`,{children:Wi(v.targetPath,o)})}),r(`div`,{className:`small`,children:[r(`div`,{children:[`Existing size: `,v.size==null?`unknown`:Z(v.size)]}),r(`div`,{children:[`Existing mtime: `,v.mtime?Q(v.mtime):`unknown`]}),r(`div`,{children:[`Snapshot entry size: `,Z(t.size)]}),r(`div`,{children:[`Snapshot entry mtime: `,t.mtime]})]}),r(`div`,{className:`mt-2 d-flex gap-2`,children:[n(M,{color:`danger`,size:`sm`,disabled:m,onClick:()=>void x(!0),children:m?n(q,{size:`sm`}):`Overwrite`}),n(M,{color:`secondary`,outline:!0,size:`sm`,disabled:m,onClick:()=>{y(null)},children:`Cancel`})]})]}),g&&n(K,{color:`danger`,className:`mt-3 mb-0`,children:g})]}),r(Dr,{children:[n(M,{color:`secondary`,outline:!0,disabled:m,onClick:s,children:`Cancel`}),n(M,{color:`primary`,disabled:S||v!==null,onClick:()=>void x(!1),children:m?r(i,{children:[n(q,{size:`sm`}),` Starting…`]}):`Restore`})]})]})}function Xi(e,t){return e?`${e}/${t}`:t}function Zi({backup:e,isOpen:t,onClose:o,initialPath:u,restoreLocked:d,pathMapping:f,onRestoreStarted:p}){let m=(u??``).replace(/^\/+|\/+$/g,``),[h,g]=c({}),[_,v]=c(()=>new Set([m])),[y,b]=c(null),x=a(0);l(()=>{t&&(x.current+=1,g({}),v(new Set([m])),b(null))},[t,e.id,m]);let S=s(async t=>{let n=x.current;g(e=>({...e,[t]:{entries:null,error:null,errorCode:null}}));try{let r=await X.listBackupTree(e.id,t);if(n!==x.current)return;g(e=>({...e,[t]:{entries:r.entries,error:null,errorCode:null}}))}catch(e){if(n!==x.current)return;let r=e instanceof Error?e.message:String(e),i=e instanceof Hi?e.code??null:null;g(e=>({...e,[t]:{entries:null,error:r,errorCode:i}}))}},[e.id]);return l(()=>{t&&h[m]===void 0&&S(m)},[t,m,h,S]),r(lr,{isOpen:t,toggle:o,size:`lg`,scrollable:!0,children:[r(hr,{toggle:o,children:[`Browse backup `,n(`code`,{className:`small ms-1`,children:e.id.slice(0,12)})]}),r(xr,{children:[n(`div`,{className:`text-muted small mb-2`,children:m?r(i,{children:[`Scoped to `,r(`code`,{children:[m,`/`]})]}):n(i,{children:`Showing snapshot root`})}),n(Qi,{backupId:e.id,path:m,rootPath:m,depth:0,cache:h,expanded:_,restoreLocked:d===!0,onToggle:e=>{let t=new Set(_);t.has(e)?t.delete(e):(t.add(e),h[e]===void 0&&S(e)),v(t)},onRetry:S,onStartRestore:(e,t)=>{b({...e,fullPath:t})}})]}),n(Dr,{children:n(M,{color:`secondary`,outline:!0,onClick:o,children:`Close`})}),y&&n(Yi,{backup:e,sourceEntry:y,sourcePath:y.fullPath,pathMapping:f,onClose:()=>{b(null)},onSubmitted:()=>{b(null),p?.()}})]})}function Qi({backupId:e,path:t,rootPath:i,depth:a,cache:o,expanded:s,restoreLocked:c,onToggle:l,onRetry:u,onStartRestore:d}){let f=o[t];if(!f||f.entries===null&&!f.error)return r(`div`,{className:`ps-3 py-1`,children:[n(q,{size:`sm`}),` Loading…`]});if(f.error)return f.errorCode===`ENTRY_NOT_FOUND`&&a===0&&t===i&&i!==``?r(`div`,{className:`ps-3 py-3 text-muted small`,children:[n(`div`,{children:`This backup doesn’t contain any files at this path.`}),r(`div`,{className:`mt-1`,children:[`The subtree `,r(`code`,{children:[i,`/`]}),` may not have existed when this snapshot was taken.`]})]}):r(`div`,{className:`ps-3 py-1`,children:[n(K,{color:`danger`,className:`mb-1 py-1 small`,children:f.error}),n(M,{size:`sm`,color:`secondary`,outline:!0,onClick:()=>void u(t),children:`Retry`})]});let p=f.entries??[];if(p.length===0)return n(`div`,{className:`ps-3 py-1 text-muted small`,children:`(empty)`});let m=[...p].sort((e,t)=>e.isDir===t.isDir?e.name.localeCompare(t.name):e.isDir?-1:1);return n(`ul`,{className:`list-unstyled mb-0`,style:{marginLeft:a===0?0:`1rem`},children:m.map(f=>{let p=Xi(t,f.name),m=f.isDir&&s.has(p);return r(`li`,{className:`py-1`,children:[r(`div`,{className:`d-flex align-items-center gap-2 flex-wrap`,children:[f.isDir?n(M,{color:`link`,size:`sm`,className:`p-0 text-decoration-none`,onClick:()=>{l(p)},style:{minWidth:`1.2em`},"aria-expanded":m,"aria-label":m?`Collapse folder`:`Expand folder`,children:m?`▾`:`▸`}):n(`span`,{"aria-hidden":`true`,style:{minWidth:`1.2em`,display:`inline-block`}}),r(`span`,{className:f.isDir?`fw-semibold`:``,onClick:()=>{f.isDir&&l(p)},style:f.isDir?{cursor:`pointer`}:void 0,children:[f.name,f.isDir?`/`:``]}),!f.isDir&&n(`span`,{className:`text-muted small`,children:Z(f.size)}),r(`span`,{className:`ms-auto`,children:[r(`a`,{href:X.downloadSubtreeUrl(e,p),className:`btn btn-outline-secondary btn-sm me-1`,download:!0,children:[`Download`,f.isDir&&n(L,{color:`light`,className:`text-dark ms-1`,children:`ZIP`})]}),n(M,{color:`warning`,outline:!0,size:`sm`,disabled:c,title:c?`A restore is already in progress`:void 0,onClick:()=>{d(f,p)},children:`Restore…`})]})]}),f.isDir&&m&&n(Qi,{backupId:e,path:p,rootPath:i,depth:a+1,cache:o,expanded:s,restoreLocked:c,onToggle:l,onRetry:u,onStartRestore:d})]},f.name)})})}var $i=new Set([`preparing`,`safety_snapshotting`,`extracting`,`verifying`,`rolling_back`]),ea=new Set([`preparing`,`streaming`,`extracting`,`rolling_back`]);function ta(e){return $i.has(e)||ea.has(e)}function na({status:e,title:t,pathMapping:a,mapTargetPath:o=!0,onReset:s}){if(e.state===`idle`)return null;let c=ta(e.state),l=e.state===`failed`||e.state===`rolled_back`,u=e.state===`completed`,d=o?Wi(e.targetPath,a):e.targetPath;return r(K,{color:l?`danger`:u?`success`:`info`,className:`d-flex flex-column gap-2`,children:[r(`div`,{className:`d-flex justify-content-between align-items-start`,children:[r(`div`,{children:[r(`strong`,{children:[t??`Partial restore`,`: `,e.state]}),n(`div`,{className:`small`,children:e.statusMessage}),e.sourcePath&&r(`div`,{className:`small text-muted`,children:[`source `,n(`code`,{children:e.sourcePath}),d&&r(i,{children:[` `,`→ target `,n(`code`,{children:d})]})]}),e.error&&r(`div`,{className:`small text-danger`,children:[`Error: `,e.error]})]}),!c&&n(M,{size:`sm`,outline:!0,color:l?`danger`:`success`,onClick:s,children:`Dismiss`})]}),c&&n(jn,{animated:!0,striped:!0,value:e.progress,max:100,color:l?`danger`:`info`,children:e.progress>0?`${e.progress.toFixed(0)}%`:``})]})}var ra=new Set([`preparing`,`extracting`,`installing`,`restarting`,`verifying`,`rolling_back`]);function ia({status:e,onReset:t}){if(e.state===`idle`)return null;let i=ra.has(e.state),a=e.state===`failed`||e.state===`rolled_back`,o=e.state===`completed`;return r(K,{color:a?`danger`:o?`success`:`info`,className:`d-flex flex-column gap-2`,children:[r(`div`,{className:`d-flex justify-content-between align-items-start`,children:[r(`div`,{children:[r(`strong`,{children:[`Restore: `,e.state]}),n(`div`,{className:`small`,children:e.statusMessage}),e.error&&r(`div`,{className:`small text-danger`,children:[`Error: `,e.error]})]}),!i&&n(M,{size:`sm`,outline:!0,color:a?`danger`:`success`,onClick:t,children:`Dismiss`})]}),i&&n(jn,{animated:!0,striped:!0,value:e.progress,max:100,color:a?`danger`:`info`,children:e.progress>0?`${e.progress.toFixed(0)}%`:``})]})}function aa(){let e=$(()=>X.listBackups(),{intervalMs:3e4}),t=$(()=>X.restoreStatus(),{intervalMs:2e3}),o=$(()=>X.restorePartialStatus(),{intervalMs:2e3}),s=$(()=>X.restorePartialHostStatus(),{intervalMs:2e3}),l=$(()=>X.pluginStatus(),{intervalMs:6e4}),[u,d]=c(``),[f,p]=c(!1),[m,h]=c(null),[g,_]=c(null),[v,y]=c(null),[b,x]=c(null),S=a(null),[C,w]=c(``),[T,ee]=c(!1),[E,D]=c(null),te=async()=>{p(!0),h(null);try{await X.createBackup(u.trim()||void 0),d(``),e.refresh()}catch(e){h(e instanceof Error?e.message:String(e))}finally{p(!1)}},ne=async()=>{let t=S.current?.files?.[0];if(!t){D(`Select a file first.`);return}ee(!0),D(null);try{await X.uploadBackup(t,C.trim()||void 0),w(``),S.current&&(S.current.value=``),e.refresh()}catch(e){D(e instanceof Error?e.message:String(e))}finally{ee(!1)}},re=async t=>{if(window.confirm(`Delete backup ${t.id.slice(0,12)} (${Q(t.createdAt)})?`)){_(t.id);try{await X.deleteBackup(t.id),e.refresh()}catch(e){window.alert(`Delete failed: ${e instanceof Error?e.message:String(e)}`)}finally{_(null)}}},ie=async e=>{if(window.confirm(`Restore backup ${e.id.slice(0,12)} (${Q(e.createdAt)})?\n\nThis OVERWRITES the current SignalK config and restarts the server. A safety backup is taken first, so the operation can be rolled back on failure — but any in-flight changes since the safety backup will be lost.`)){y(e.id);try{await X.startRestore(e.id),t.refresh()}catch(e){window.alert(`Restore failed to start: ${e instanceof Error?e.message:String(e)}`)}finally{y(null)}}},ae=async()=>{try{await X.resetRestoreState(),t.refresh()}catch(e){window.alert(`Reset failed: ${e instanceof Error?e.message:String(e)}`)}},oe=async()=>{try{await X.resetRestorePartialState(),o.refresh()}catch(e){window.alert(`Reset failed: ${e instanceof Error?e.message:String(e)}`)}},se=async()=>{try{await X.resetRestorePartialHostState(),s.refresh()}catch(e){window.alert(`Reset failed: ${e instanceof Error?e.message:String(e)}`)}},ce=e.data?.backups??[],O=t.data?ra.has(t.data.state):!1,le=o.data?$i.has(o.data.state):!1,ue=s.data?ea.has(s.data.state):!1,de=O||le||ue||v!==null;return r(i,{children:[n(`h2`,{className:`mb-3`,children:`Backups`}),t.data&&n(ia,{status:t.data,onReset:()=>void ae()}),o.data&&n(na,{status:o.data,pathMapping:l.data?.pathMapping,onReset:()=>void oe()}),s.data&&n(na,{status:s.data,title:`Host restore`,pathMapping:l.data?.pathMapping,mapTargetPath:!1,onReset:()=>void se()}),r(A,{className:`mb-3`,children:[n(j,{xs:12,md:6,children:r(R,{children:[n(B,{children:n(`strong`,{children:`Create new backup`})}),n(z,{children:r(Xr,{onSubmit:e=>{e.preventDefault(),te()},children:[r(U,{children:[n(G,{for:`backup-description`,children:`Description (optional)`}),n(W,{id:`backup-description`,value:u,onChange:e=>{d(e.target.value)},placeholder:`e.g. before plugin upgrade`,disabled:f})]}),n(M,{color:`primary`,type:`submit`,disabled:f,children:f?r(i,{children:[n(q,{size:`sm`}),` Creating…`]}):`Create backup`}),m&&n(K,{color:`danger`,className:`mt-3 mb-0`,children:m})]})})]})}),n(j,{xs:12,md:6,children:r(R,{children:[n(B,{children:n(`strong`,{children:`Upload backup`})}),n(z,{children:r(Xr,{onSubmit:e=>{e.preventDefault(),ne()},children:[r(U,{children:[n(G,{for:`backup-upload-file`,children:`Backup ZIP file`}),n(W,{id:`backup-upload-file`,type:`file`,accept:`.zip,application/zip`,innerRef:S,disabled:T})]}),r(U,{children:[n(G,{for:`backup-upload-description`,children:`Description (optional)`}),n(W,{id:`backup-upload-description`,value:C,onChange:e=>{w(e.target.value)},placeholder:`e.g. recovered from external drive`,disabled:T})]}),n(M,{color:`primary`,type:`submit`,disabled:T,children:T?r(i,{children:[n(q,{size:`sm`}),` Uploading…`]}):`Upload`}),E&&n(K,{color:`danger`,className:`mt-3 mb-0`,children:E})]})})]})})]}),r(R,{children:[r(B,{className:`d-flex justify-content-between align-items-center`,children:[r(`strong`,{children:[`All backups (`,ce.length,`)`]}),n(M,{color:`secondary`,outline:!0,size:`sm`,onClick:e.refresh,disabled:e.loading,children:`Refresh`})]}),n(z,{className:`p-0`,children:e.loading&&!e.data?n(`div`,{className:`text-center py-3`,children:n(q,{size:`sm`})}):e.error?n(K,{color:`danger`,className:`m-3 mb-0`,children:e.error}):ce.length===0?n(`p`,{className:`text-muted m-3 mb-0`,children:`No backups yet. Create one above, or wait for the scheduler.`}):r(Nr,{responsive:!0,striped:!0,className:`mb-0`,children:[n(`thead`,{children:r(`tr`,{children:[n(`th`,{children:`Type`}),n(`th`,{children:`Created`}),n(`th`,{children:`Size`}),n(`th`,{children:`Description`}),n(`th`,{children:`ID`}),n(`th`,{className:`text-end`,children:`Actions`})]})}),n(`tbody`,{children:ce.map(e=>r(`tr`,{children:[n(`td`,{children:n(L,{color:`light`,className:`text-dark`,children:e.type})}),n(`td`,{children:Q(e.createdAt)}),n(`td`,{children:Z(e.size)}),n(`td`,{className:`text-muted`,children:e.description??``}),n(`td`,{children:n(`code`,{className:`small`,children:e.id.slice(0,12)})}),r(`td`,{className:`text-end`,children:[n(`a`,{href:X.downloadUrl(e.id),className:`btn btn-outline-secondary btn-sm me-1`,download:!0,children:`Download`}),n(M,{color:`info`,outline:!0,size:`sm`,className:`me-1`,onClick:()=>{x(e)},children:`Browse…`}),n(M,{color:`warning`,outline:!0,size:`sm`,className:`me-1`,disabled:de,onClick:()=>void ie(e),children:v===e.id?n(q,{size:`sm`}):`Restore`}),n(M,{color:`danger`,outline:!0,size:`sm`,disabled:de||g===e.id,onClick:()=>void re(e),children:g===e.id?n(q,{size:`sm`}):`Delete`})]})]},e.id))})]})})]}),b&&n(Zi,{backup:b,isOpen:!0,restoreLocked:de,pathMapping:l.data?.pathMapping,onClose:()=>{x(null)},onRestoreStarted:()=>{o.refresh(),s.refresh()}})]})}var oa=1048576;function sa(e){return`${(e/oa).toFixed(1)} MB`}function ca(e){let t=Math.max(0,Math.floor(e/1e3)),n=Math.floor(t/60),r=t%60;return n>0?`${n}m ${r}s`:`${r}s`}function la(e,t,n=Date.now()){let r=e?.processedBlobs,i=e?.totalBlobs,a=e?.processedBytes;return typeof r==`number`&&typeof i==`number`&&i>0?{phase:`determinate`,percent:Math.min(100,r/i*100),label:`${r} / ${i} blobs${typeof a==`number`?` (${sa(a)})`:``}`}:typeof a==`number`?{phase:`bytes-only`,percent:100,label:`Syncing… ${sa(a)} transferred so far`}:{phase:`elapsed-only`,percent:100,label:`Syncing… (elapsed ${ca(t===null?0:Math.max(0,n-t))})`}}function ua({syncProgress:e,startedAt:t,now:i}){let a=la(e,t,i),o=a.phase===`determinate`;return r(`div`,{className:`mb-3`,children:[n(`div`,{className:`small text-body mb-1`,children:a.label}),n(jn,{animated:!o,striped:!o,value:a.percent,max:100,color:`info`})]})}function da(e){if(e==null)return``;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n.toFixed(+(n<10&&r>0))} ${t[r]}`}function fa(e){let t=e.trim().replace(/\/+$/,``);return t.split(`/`).some(e=>e===`..`)?null:t===`/media`||t.startsWith(`/media/`)?`/host-media`+t.slice(6):t===`/mnt`||t.startsWith(`/mnt/`)?`/host-mnt`+t.slice(4):null}function pa({onConfigured:e,onError:t}){let[i,a]=c(null),[o,s]=c(!1),[u,d]=c(``),[f,p]=c(``),[m,h]=c(!1),g=async()=>{s(!0);try{let{candidates:e}=await X.localDiscover();a(e);let t=u&&e.some(e=>e.containerPath===u&&e.writable!==!1);if(u&&!t&&d(``),(!u||!t)&&e.length>0){let[t]=[...e.filter(e=>e.writable!==!1)].sort((e,t)=>(t.freeBytes??0)-(e.freeBytes??0));t&&d(t.containerPath)}}catch(e){t(e instanceof Error?e.message:String(e))}finally{s(!1)}};l(()=>{g()},[]);let _=async(n,r)=>{h(!0);try{await X.localConfigure(n,r),e()}catch(e){t(e instanceof Error?e.message:String(e))}finally{h(!1)}};return r(`div`,{children:[r(U,{children:[n(G,{for:`local-candidate`,children:`Pick a drive or mounted folder`}),r(`div`,{className:`d-flex gap-2`,children:[r(W,{id:`local-candidate`,type:`select`,value:u,disabled:o||m,onChange:e=>{d(e.target.value)},children:[n(`option`,{value:``,children:`— select —`}),(i??[]).map(e=>{let t=e.freeBytes!=null&&e.totalBytes!=null?` (${da(e.freeBytes)} free of ${da(e.totalBytes)})`:``,n=e.writable===!1?` — not writable`:``;return r(`option`,{value:e.containerPath,disabled:e.writable===!1,children:[e.hostPath,t,n]},e.containerPath)})]}),n(M,{color:`secondary`,outline:!0,disabled:o||m,onClick:()=>void g(),title:`Re-scan /media and /mnt`,children:o?n(q,{size:`sm`}):`Re-scan`})]})]}),i!==null&&i.length===0&&r(K,{color:`warning`,className:`mt-2 mb-2`,children:[`No candidates found. Plug in a USB drive (and mount it under`,n(`code`,{children:` /media`}),`), or mount a network share under `,n(`code`,{children:`/mnt`}),`on the host, then click `,n(`strong`,{children:`Re-scan`}),`.`]}),n(M,{color:`primary`,disabled:!u||m,onClick:()=>{let e=i?.find(e=>e.containerPath===u);e&&_(e.containerPath,e.hostPath)},className:`me-2`,children:m?n(q,{size:`sm`}):`Use this`}),n(`hr`,{className:`my-3`}),r(U,{children:[n(G,{for:`manual-path`,children:`Or type a host path manually`}),r(`div`,{className:`d-flex gap-2`,children:[n(W,{id:`manual-path`,type:`text`,placeholder:`/media/dirk/USB-SSD or /mnt/nfs-share`,value:f,disabled:m,onChange:e=>{p(e.target.value)}}),n(M,{color:`secondary`,disabled:!f.trim()||m,onClick:()=>{let e=f.trim();if(!e)return;let n=fa(e);if(!n){t(`Path must live under /media or /mnt — those are the only host locations the backup engine can see. Plug a USB drive in (it auto-mounts under /media), or have the system administrator mount your destination under /mnt.`);return}_(n,e)},children:`Use`})]}),r(`small`,{className:`text-muted`,children:[`Enter the path the way you see it on the host — `,n(`code`,{children:`/media/...`}),` for plugged-in USB drives, `,n(`code`,{children:`/mnt/...`}),` for network shares mounted by the system. Inside the backup engine these are remapped to `,n(`code`,{children:`/host-media/...`}),` and `,n(`code`,{children:`/host-mnt/...`}),`, but you don't need to type that yourself.`]})]})]})}function ma({onConnected:e,onError:t}){let[i,a]=c(null),[o,s]=c(!1),[u,d]=c(!1),[f,p]=c(``),[m,h]=c(``),[g,_]=c(``),[v,y]=c(``),[b,x]=c(``),S=async()=>{s(!0);try{let{hosts:e}=await X.smbDiscover();a(e)}catch(e){console.debug(`SMB mDNS discovery failed:`,e),a([])}finally{s(!1)}};l(()=>{S()},[]);let C=async n=>{if(n?.preventDefault(),!(!f.trim()||!m.trim())){d(!0);try{await X.smbConnect({host:f.trim(),share:m.trim(),user:g.trim(),password:v,...b.trim()?{domain:b.trim()}:{}}),y(``),e()}catch(e){t(e instanceof Error?e.message:String(e))}finally{d(!1)}}};return r(`form`,{onSubmit:e=>void C(e),children:[r(K,{color:`warning`,className:`mb-3 small`,children:[n(`strong`,{children:`Heads up:`}),` SMB credentials are stored in rclone's obfuscated form (mode 0o600, owner-only). The obfuscation is reversible by anyone with read access to the backup-server container — treat it as protection against casual reading, not as encryption.`]}),r(U,{children:[n(G,{for:`smb-host`,children:`Host`}),r(`div`,{className:`d-flex gap-2`,children:[n(W,{id:`smb-host`,type:`text`,placeholder:`synology.local or 192.168.1.50`,value:f,disabled:u,onChange:e=>{p(e.target.value)},list:`smb-discovered-hosts`,required:!0}),n(M,{color:`secondary`,outline:!0,type:`button`,disabled:o||u,onClick:()=>void S(),title:`Re-scan _smb._tcp.local on the LAN`,children:o?n(q,{size:`sm`}):`Scan LAN`})]}),i!==null&&i.length>0&&n(`datalist`,{id:`smb-discovered-hosts`,children:i.map(e=>n(`option`,{value:e.address,children:e.name},e.address))}),i!==null&&i.length===0&&!o&&n(`small`,{className:`text-muted`,children:`No SMB devices announced on the LAN — type the host manually.`})]}),r(U,{children:[n(G,{for:`smb-share`,children:`Share`}),n(W,{id:`smb-share`,type:`text`,placeholder:`backups`,value:m,disabled:u,onChange:e=>{h(e.target.value)},required:!0})]}),r(U,{children:[n(G,{for:`smb-user`,children:`Username`}),n(W,{id:`smb-user`,type:`text`,autoComplete:`off`,value:g,disabled:u,onChange:e=>{_(e.target.value)}})]}),r(U,{children:[n(G,{for:`smb-password`,children:`Password`}),n(W,{id:`smb-password`,type:`password`,autoComplete:`new-password`,value:v,disabled:u,onChange:e=>{y(e.target.value)}}),n(`small`,{className:`text-muted`,children:`Leave Username and Password empty for guest / anonymous shares.`})]}),r(U,{children:[n(G,{for:`smb-domain`,children:`Domain (optional)`}),n(W,{id:`smb-domain`,type:`text`,placeholder:`WORKGROUP`,value:b,disabled:u,onChange:e=>{x(e.target.value)}})]}),n(M,{color:`primary`,type:`submit`,disabled:u,children:u?n(q,{size:`sm`}):`Connect`})]})}function ha(e){switch(e){case`gdrive`:return`Drive`;case`local`:return`Local destination`;case`smb`:return`SMB share`}}function ga({status:e}){let t=e.provider===`local`||e.provider===`smb`;return r(`div`,{className:`mb-2 d-flex gap-2 flex-wrap`,children:[n(L,{color:e.connected?`success`:`secondary`,children:e.connected?`Active: ${ha(e.provider)}`:`${ha(e.provider)} not configured`}),e.syncing&&n(L,{color:`info`,children:`Syncing`}),!t&&e.internetAvailable===!1&&n(L,{color:`warning`,children:`Offline`})]})}function _a({onDone:e,onError:t}){let[i,o]=c(!1),[s,u]=c(!1),[d,f]=c(``),[p,m]=c(!1),h=a(0),g=a(void 0),_=a(null),v=a(!1),y=()=>{g.current&&=(clearInterval(g.current),void 0),o(!1)};l(()=>()=>{y(),v.current=!1},[]);let b=async()=>{if(!v.current){v.current=!0,_.current=window.open(`about:blank`,`_blank`);try{let{authUrl:n}=await X.gdriveConnect();_.current&&!_.current.closed?_.current.location.href=n:u(!0),o(!0),h.current=Date.now(),g.current=setInterval(()=>{(async()=>{try{let n=await X.gdriveAuthState();n.state===`completed`?(y(),v.current=!1,u(!1),f(``),e()):n.state===`failed`?(y(),v.current=!1,u(!1),t(n.error??`Authorization failed`)):Date.now()-h.current>15e3&&u(!0)}catch{}})()},2e3)}catch(e){_.current?.close(),v.current=!1,t(e instanceof Error?e.message:String(e))}}},x=async()=>{y(),v.current=!1,u(!1),f(``);try{await X.gdriveCancel()}catch{}},S=async()=>{if(d.trim()){m(!0);try{await X.gdriveAuthCallback(d.trim()),f(``)}catch(e){t(e instanceof Error?e.message:String(e))}finally{m(!1)}}};return i?r(`div`,{children:[r(`div`,{className:`d-flex align-items-center gap-2 mb-3`,children:[n(q,{size:`sm`}),n(`span`,{children:`Waiting for Google authorization…`}),n(M,{color:`secondary`,outline:!0,size:`sm`,onClick:()=>void x(),children:`Cancel`})]}),s&&r(K,{color:`info`,className:`mb-0`,children:[n(`p`,{className:`mb-2`,children:n(`strong`,{children:`Browser on a different machine than this server?`})}),r(`p`,{className:`small mb-2`,children:[`After granting access in Google, your browser is redirected to a URL starting with`,n(`code`,{children:` http://127.0.0.1:53682/`}),`. Copy that whole URL from your browser's address bar and paste it here.`]}),r(U,{children:[n(G,{for:`callback-url`,children:`Callback URL`}),n(W,{id:`callback-url`,type:`text`,value:d,onChange:e=>{f(e.target.value)},placeholder:`http://127.0.0.1:53682/?code=...`,disabled:p})]}),n(M,{color:`primary`,size:`sm`,disabled:p||!d.trim(),onClick:()=>void S(),children:p?n(q,{size:`sm`}):`Submit callback`})]})]}):n(M,{color:`primary`,onClick:()=>void b(),children:`Connect Google Drive`})}function va(){let[e,t]=c(5e3),a=$(()=>X.cloudStatus(),{intervalMs:e}),o=$(()=>X.localStatus(),{intervalMs:5e3}),s=$(()=>X.smbStatus(),{intervalMs:5e3}),[u,d]=c(null);l(()=>{let e=a.data?.syncing===!0;t(e?2e3:5e3),d(t=>e&&t===null?Date.now():!e&&t!==null?null:t)},[a.data?.syncing]);let[f,p]=c(null),[m,h]=c(null),[g,_]=c(null),[v,y]=c(!1),[b,x]=c(null),S=b??a.data?.provider??`gdrive`,C=async()=>{let e=a.data?.provider;if(e===`gdrive`||!e){x(null);return}_(`switch`),p(null);try{switch(e){case`local`:await X.localDisconnect();break;case`smb`:await X.smbDisconnect()}x(null),a.refresh(),o.refresh(),s.refresh()}catch(e){p(e instanceof Error?e.message:String(e))}finally{_(null)}},w=async()=>{_(`sync`),p(null),h(null);try{await X.cloudSync(),a.refresh(),h(`Sync started`)}catch(e){p(e instanceof Error?e.message:String(e))}finally{_(null)}},T=async()=>{_(`cancel`);try{await X.cloudSyncCancel(),a.refresh()}catch(e){p(e instanceof Error?e.message:String(e))}finally{_(null)}},ee=async()=>{_(`disconnect`),p(null);try{await X.gdriveDisconnect(),a.refresh(),y(!1),h(`Google Drive disconnected`)}catch(e){p(e instanceof Error?e.message:String(e))}finally{_(null)}},E=async e=>{_(`config`),p(null);try{await X.cloudConfig(e),a.refresh()}catch(e){p(e instanceof Error?e.message:String(e))}finally{_(null)}};return r(i,{children:[n(`h2`,{className:`mb-3`,children:`Cloud sync`}),f&&n(K,{color:`danger`,toggle:()=>{p(null)},children:f}),m&&n(K,{color:`success`,toggle:()=>{h(null)},children:m}),r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Destination`})}),n(z,{children:a.loading&&!a.data?n(q,{size:`sm`}):a.error?n(K,{color:`danger`,className:`mb-0`,children:a.error}):a.data?r(i,{children:[n(ga,{status:a.data}),r(U,{className:`mb-3`,children:[n(G,{for:`provider-select`,children:`Where backups go`}),r(W,{id:`provider-select`,type:`select`,value:S,disabled:g!==null,onChange:e=>{let t=e.target.value;t!==S&&(t===`gdrive`?C():x(t))},children:[n(`option`,{value:`gdrive`,children:`Google Drive`}),n(`option`,{value:`local`,children:`Local drive / mounted folder`}),n(`option`,{value:`smb`,children:`SMB share`})]})]}),S===`gdrive`&&r(i,{children:[a.data.email&&r(`p`,{className:`text-muted small mb-2`,children:[`Account: `,a.data.email]}),a.data.connected?n(i,{children:v?r(`div`,{className:`d-flex gap-2 align-items-center`,children:[n(`span`,{children:`Really disconnect?`}),n(M,{color:`danger`,size:`sm`,disabled:g===`disconnect`,onClick:()=>void ee(),children:g===`disconnect`?n(q,{size:`sm`}):`Disconnect`}),n(M,{color:`secondary`,outline:!0,size:`sm`,onClick:()=>{y(!1)},children:`Cancel`})]}):n(M,{color:`danger`,outline:!0,onClick:()=>{y(!0)},children:`Disconnect`})}):n(_a,{onDone:()=>{a.refresh(),h(`Google Drive connected`)},onError:p})]}),S===`local`&&r(i,{children:[o.error&&r(K,{color:`danger`,className:`mb-2`,children:[`Failed to read local destination status: `,o.error]}),o.data?.connected?r(i,{children:[r(`p`,{className:`text-muted small mb-2`,children:[`Backing up to `,n(`code`,{children:o.data.hostPath??o.data.containerPath}),o.data.freeBytes!=null&&r(i,{children:[` — `,Math.round(o.data.freeBytes/1e9),` GB free`]})]}),n(M,{color:`danger`,outline:!0,disabled:g!==null,onClick:()=>void C(),children:g===`switch`?n(q,{size:`sm`}):`Switch back to Google Drive`})]}):r(i,{children:[o.data?.error&&n(K,{color:`warning`,className:`mb-2`,children:o.data.error}),n(pa,{onConfigured:()=>{x(null),a.refresh(),o.refresh(),h(`Local destination configured`)},onError:p})]})]}),S===`smb`&&r(i,{children:[s.error&&r(K,{color:`danger`,className:`mb-2`,children:[`Failed to read SMB status: `,s.error]}),s.data?.connected?r(i,{children:[r(`p`,{className:`text-muted small mb-2`,children:[`Backing up to`,` `,r(`code`,{children:[`\\\\`,s.data.host??`?`,`\\`,s.data.share??`?`]}),` `,`as `,n(`code`,{children:s.data.user??`?`})]}),n(M,{color:`danger`,outline:!0,disabled:g!==null,onClick:()=>void C(),children:g===`switch`?n(q,{size:`sm`}):`Switch back to Google Drive`})]}):n(ma,{onConnected:()=>{x(null),a.refresh(),s.refresh(),h(`SMB share connected`)},onError:p})]})]}):null})]}),a.data?.connected&&r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Sync`})}),r(z,{children:[r(A,{className:`g-3 mb-3`,children:[n(j,{xs:12,md:6,children:r(U,{children:[n(G,{for:`sync-mode`,children:`Sync mode`}),r(W,{id:`sync-mode`,type:`select`,value:a.data.syncMode??`manual`,disabled:g===`config`,onChange:e=>{let t=e.target.value,n={syncMode:t};t===`scheduled`&&!a.data?.syncFrequency&&(n.syncFrequency=`daily`),E(n)},children:[n(`option`,{value:`manual`,children:`Manual only`}),n(`option`,{value:`after_backup`,children:`After every backup`}),n(`option`,{value:`scheduled`,children:`On a schedule`})]})]})}),a.data.syncMode===`scheduled`&&n(j,{xs:12,md:6,children:r(U,{children:[n(G,{for:`sync-frequency`,children:`Schedule`}),r(W,{id:`sync-frequency`,type:`select`,value:a.data.syncFrequency??`daily`,disabled:g===`config`,onChange:e=>{E({syncFrequency:e.target.value})},children:[n(`option`,{value:`daily`,children:`Daily`}),n(`option`,{value:`weekly`,children:`Weekly`})]})]})})]}),a.data.syncing&&n(ua,{syncProgress:a.data.syncProgress,startedAt:u}),n(`div`,{className:`d-flex gap-2 align-items-center mb-3`,children:a.data.syncing?n(M,{color:`warning`,outline:!0,disabled:g===`cancel`,onClick:()=>void T(),children:g===`cancel`?n(q,{size:`sm`}):`Cancel sync`}):n(M,{color:`primary`,disabled:g===`sync`,onClick:()=>void w(),children:g===`sync`?n(q,{size:`sm`}):`Sync now`})}),r(`dl`,{className:`row mb-0`,children:[n(`dt`,{className:`col-sm-3`,children:`Last sync`}),n(`dd`,{className:`col-sm-9`,children:Q(a.data.lastSync)}),a.data.lastSyncError&&r(i,{children:[n(`dt`,{className:`col-sm-3`,children:`Last error`}),n(`dd`,{className:`col-sm-9 text-danger`,children:a.data.lastSyncError})]})]})]})]})]})}var ya=`plugin-config-data/signalk-backup/database-exports`,ba=new Set([`preparing`,`extracting`,`installing`,`restarting`,`verifying`,`rolling_back`]);function xa(){let e=$(()=>X.listStaging(),{intervalMs:3e4}),t=$(()=>X.listBackups(),{intervalMs:6e4}),a=$(()=>X.pluginStatus(),{intervalMs:6e4}),o=$(()=>X.restoreStatus(),{intervalMs:2e3}),s=$(()=>X.restorePartialStatus(),{intervalMs:2e3}),l=$(()=>X.restorePartialHostStatus(),{intervalMs:2e3}),[u,d]=c(null),[f,p]=c(``),m=e.data?.entries??[],h=t.data?.backups??[],g=()=>{let e=h.find(e=>e.id===f);e&&d(e)},_=async()=>{try{await X.resetRestorePartialState(),s.refresh()}catch(e){window.alert(`Reset failed: ${e instanceof Error?e.message:String(e)}`)}},v=async()=>{try{await X.resetRestorePartialHostState(),l.refresh()}catch(e){window.alert(`Reset failed: ${e instanceof Error?e.message:String(e)}`)}},y=o.data?ba.has(o.data.state):!1,b=s.data?$i.has(s.data.state):!1,x=l.data?ea.has(l.data.state):!1,S=y||b||x;return r(i,{children:[n(`h2`,{className:`mb-3`,children:`Database exports`}),s.data&&n(na,{status:s.data,pathMapping:a.data?.pathMapping,onReset:()=>void _()}),l.data&&n(na,{status:l.data,title:`Host restore`,pathMapping:a.data?.pathMapping,mapTargetPath:!1,onReset:()=>void v()}),n(`p`,{className:`text-muted`,children:`QuestDB, Grafana and signalk-database exports staged by the plugin. The top card extracts the database-exports subtree from any historical backup without pulling the whole snapshot; the live list below shows what's on disk right now (the next backup will include these).`}),r(R,{className:`mb-3`,children:[r(B,{children:[n(`strong`,{children:`Extract from a historical backup`}),` `,r(L,{color:`light`,className:`text-dark ms-1`,children:[`Browser scoped to `,ya]})]}),r(z,{children:[n(`p`,{className:`small text-muted mb-3`,children:`Pick a backup and open the database-exports subtree. From there you can download individual files (octet-stream) or whole subdirectories (ZIP) without pulling the full snapshot.`}),t.loading&&!t.data?n(q,{size:`sm`}):t.error?n(K,{color:`danger`,className:`mb-0`,children:t.error}):h.length===0?n(`p`,{className:`text-muted mb-0`,children:`No backups yet. Once the scheduler runs (or you create a manual one), it will appear here.`}):r(`div`,{className:`d-flex gap-2 align-items-end flex-wrap`,children:[r(`div`,{style:{minWidth:`20rem`,flex:`1 1 20rem`},children:[n(G,{for:`db-export-backup-picker`,children:`Backup`}),r(W,{id:`db-export-backup-picker`,type:`select`,value:f,onChange:e=>{p(e.target.value)},children:[n(`option`,{value:``,children:`— select a backup —`}),h.map(e=>r(`option`,{value:e.id,children:[Q(e.createdAt),` · `,e.type,` · `,e.id.slice(0,12)]},e.id))]})]}),n(M,{color:`primary`,disabled:!f,onClick:g,children:`Open browser`})]})]})]}),r(R,{children:[r(B,{className:`d-flex justify-content-between align-items-center`,children:[r(`strong`,{children:[`Live staging (`,m.length,`)`]}),n(M,{color:`secondary`,outline:!0,size:`sm`,onClick:e.refresh,disabled:e.loading,children:`Refresh`})]}),r(z,{className:`p-0`,children:[e.loading&&!e.data?n(`div`,{className:`text-center py-3`,children:n(q,{size:`sm`})}):e.error?n(K,{color:`danger`,className:`m-3 mb-0`,children:e.error}):m.length===0?n(`p`,{className:`text-muted m-3 mb-0`,children:`Nothing staged yet. Enable the relevant exporter in Settings → Database export, or wait for the next scheduler tick.`}):r(Nr,{responsive:!0,striped:!0,className:`mb-0`,children:[n(`thead`,{children:r(`tr`,{children:[n(`th`,{children:`Path`}),n(`th`,{children:`Size`}),n(`th`,{children:`Modified`}),n(`th`,{className:`text-end`,children:`Actions`})]})}),n(`tbody`,{children:m.map(e=>r(`tr`,{children:[n(`td`,{children:n(`code`,{className:`small`,children:e.path})}),n(`td`,{children:Z(e.size)}),n(`td`,{className:`small text-muted`,children:Q(e.mtime)}),n(`td`,{className:`text-end`,children:n(`a`,{href:X.stagingDownloadUrl(e.path),className:`btn btn-outline-secondary btn-sm`,download:!0,children:`Download`})})]},e.path))})]}),e.data?.stagingRoot&&r(`div`,{className:`px-3 py-2 small text-muted border-top`,children:[`Staging root: `,n(`code`,{children:e.data.stagingRoot})]})]})]}),u&&n(Zi,{backup:u,isOpen:!0,initialPath:ya,pathMapping:a.data?.pathMapping,restoreLocked:S,onClose:()=>{d(null)},onRestoreStarted:()=>{s.refresh(),l.refresh()}})]})}function Sa(){let[e,t]=c(!1),a=$(()=>X.checkUpdate(),{intervalMs:e?5e3:0}),[o,s]=c(!1),[u,d]=c(null),[f,p]=c(null),m=async()=>{s(!0),d(null),p(null);try{let{tag:e}=await X.applyUpdate();p(e),t(!0),a.refresh()}catch(e){d(e instanceof Error?e.message:String(e))}finally{s(!1)}},h=a.data;return l(()=>{e&&h&&h.reason!==`unknown`&&t(!1)},[e,h]),r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Backup server container`})}),n(z,{children:a.loading&&!h?n(q,{size:`sm`}):a.error?n(K,{color:`danger`,className:`mb-0`,children:a.error}):h?r(i,{children:[r(`dl`,{className:`row mb-2`,children:[n(`dt`,{className:`col-sm-4`,children:`Running`}),r(`dd`,{className:`col-sm-8`,children:[n(`code`,{children:h.currentVersion??h.runningTag}),` `,h.updateAvailable?n(L,{color:`warning`,children:`update available`}):h.reason===`up-to-date`?n(L,{color:`success`,children:`up to date`}):n(L,{color:`secondary`,children:`not checked`})]}),h.latestVersion&&r(i,{children:[n(`dt`,{className:`col-sm-4`,children:`Latest`}),n(`dd`,{className:`col-sm-8`,children:n(`code`,{children:h.latestVersion})})]})]}),h.reason===`offline`&&n(`p`,{className:`text-muted small mb-2`,children:`Offline — showing the last successful check.`}),h.reason===`unknown`&&!h.error&&n(`p`,{className:`text-muted small mb-2`,children:`No update check yet — the container is not running.`}),h.error&&r(`p`,{className:`text-muted small mb-2`,children:[`Last check failed: `,h.error]}),h.updateAvailable&&r(i,{children:[n(`p`,{className:`text-muted small mb-2`,children:`Applying restarts the backup server. Backups in progress will be interrupted.`}),n(M,{color:`primary`,disabled:o,onClick:()=>void m(),children:o?n(q,{size:`sm`}):`Apply update`})]}),f&&r(K,{color:`success`,className:`mt-2 mb-0`,children:[`Updated to `,f,`. The container is restarting.`]}),u&&n(K,{color:`danger`,className:`mt-2 mb-0`,children:u})]}):null})]})}function Ca(){let e=$(()=>X.scheduler(),{intervalMs:15e3}),[t,a]=c(!1),[o,s]=c(null),l=async t=>{a(!0),s(null);try{t?await X.schedulerStart():await X.schedulerStop(),e.refresh()}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}};return r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Scheduler`})}),n(z,{children:e.loading&&!e.data?n(q,{size:`sm`}):e.error?n(K,{color:`danger`,className:`mb-0`,children:e.error}):e.data?r(i,{children:[n(`div`,{className:`mb-2`,children:n(L,{color:e.data.enabled?`success`:`secondary`,children:e.data.enabled?`Running`:`Stopped`})}),n(`p`,{className:`text-muted small mb-3`,children:`When running, the backup-server creates hourly, daily, and weekly snapshots automatically per its retention policy. Manual backups still work either way.`}),e.data.enabled?n(M,{color:`warning`,outline:!0,disabled:t,onClick:()=>void l(!1),children:t?n(q,{size:`sm`}):`Stop scheduler`}):n(M,{color:`primary`,disabled:t,onClick:()=>void l(!0),children:t?n(q,{size:`sm`}):`Start scheduler`}),o&&n(K,{color:`danger`,className:`mt-2 mb-0`,children:o})]}):null})]})}function wa(e){let{rows:t,isExcluded:i,toggle:a,stripPrefix:o,showNote:s}=e;return t.length===0?null:r(Nr,{responsive:!0,striped:!0,size:`sm`,className:`mb-2`,children:[n(`thead`,{children:r(`tr`,{children:[n(`th`,{style:{width:`4em`},children:`Include`}),n(`th`,{children:`Directory`}),n(`th`,{style:{width:`7em`},children:`Size`}),s&&n(`th`,{children:`Note`})]})}),n(`tbody`,{children:t.map(e=>{let t=i(e.name,e.excluded),c=o&&e.name.startsWith(o)?e.name.slice(o.length):e.name;return r(`tr`,{children:[n(`td`,{children:n(W,{type:`checkbox`,checked:!t,disabled:e.locked,onChange:()=>{a(e.name,t,e.excluded)},"aria-label":`Include ${e.name}`})}),n(`td`,{children:n(`code`,{className:`small`,children:c})}),n(`td`,{children:Z(e.size)}),s&&n(`td`,{className:`text-muted small`,title:e.lockReason??``,children:e.lockReason?`🔒 ${e.lockReason}`:``})]},e.name)})})]})}function Ta(){let e=$(()=>X.dataDirs()),t=$(()=>X.pluginDataDirs()),a=$(()=>X.exclusions()),[s,u]=c({}),[d,f]=c(!1),[p,m]=c(null),[h,g]=c(null);l(()=>{u({})},[a.data,e.data,t.data]);let _=o(()=>(e.data??[]).filter(e=>e.name!==`plugin-config-data`).map(e=>({name:e.name,size:e.size,excluded:e.excluded})),[e.data]),v=o(()=>(t.data??[]).filter(e=>!e.lockedExcluded).map(e=>({name:`plugin-config-data/${e.name}/`,size:e.size,excluded:e.excluded})),[t.data]),y=o(()=>(t.data??[]).filter(e=>e.lockedExcluded===!0).map(e=>({name:`plugin-config-data/${e.name}/`,size:e.size,excluded:e.excluded,locked:!0,lockReason:e.lockReason})),[t.data]),b=(e,t)=>s[e]??t,x=(e,t,n)=>{let r=!t;u(t=>r===n?e in t?Object.fromEntries(Object.entries(t).filter(([t])=>t!==e)):t:t[e]===r?t:{...t,[e]:r})},S=async()=>{f(!0),m(null);try{let n=new Set;for(let t of e.data??[])n.add(t.name+`/`);for(let e of t.data??[])n.add(`plugin-config-data/${e.name}/`);let r=(a.data?.exclusions??[]).filter(e=>!n.has(e)),i=[];for(let t of e.data??[])b(t.name,t.excluded)&&i.push(t.name+`/`);for(let e of t.data??[]){let t=`plugin-config-data/${e.name}/`;b(t,e.excluded)&&i.push(t)}let o=[...r,...i];await X.setExclusions(o),a.refresh(),e.refresh(),t.refresh(),g(Date.now())}catch(e){m(e instanceof Error?e.message:String(e))}finally{f(!1)}},C=Object.keys(s).length>0;return r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Backup exclusions`})}),n(z,{children:e.loading||t.loading||a.loading?n(q,{size:`sm`}):e.error||t.error||a.error?n(K,{color:`danger`,className:`mb-0`,children:e.error??t.error??a.error}):r(i,{children:[n(`p`,{className:`text-muted small mb-3`,children:`Uncheck a directory to exclude it from backups. Some plugin directories are locked-excluded by the server (live database state, our own kopia repo); see the note next to each.`}),n(`h6`,{className:`mb-2`,children:`Top-level directories`}),n(wa,{rows:_,isExcluded:b,toggle:x}),r(`h6`,{className:`mt-4 mb-1`,children:[`Plugin data `,n(`code`,{className:`small text-muted`,children:`plugin-config-data/`})]}),n(`p`,{className:`text-muted small mb-2`,children:`Per-plugin state under your SignalK config root.`}),v.length>0&&r(i,{children:[n(`div`,{className:`small text-muted fw-bold mb-1`,children:`Editable`}),n(wa,{rows:v,isExcluded:b,toggle:x,stripPrefix:`plugin-config-data/`})]}),y.length>0&&r(i,{children:[n(`div`,{className:`small text-muted fw-bold mt-3 mb-1`,children:`Always excluded`}),n(wa,{rows:y,isExcluded:b,toggle:x,stripPrefix:`plugin-config-data/`,showNote:!0})]}),r(`div`,{className:`d-flex align-items-center gap-2`,children:[n(M,{color:`primary`,disabled:!C||d,onClick:()=>void S(),children:d?n(q,{size:`sm`}):`Save`}),C&&n(M,{color:`secondary`,outline:!0,disabled:d,onClick:()=>{u({})},children:`Discard changes`}),h&&!C&&n(`small`,{className:`text-success`,children:`Saved.`})]}),p&&n(K,{color:`danger`,className:`mt-2 mb-0`,children:p})]})})]})}function Ea(){let e=$(()=>X.passwordStatus(),{intervalMs:0}),[t,a]=c(!1),[o,s]=c(``),[l,u]=c(``),[d,f]=c(!1),[p,m]=c(null),[h,g]=c(null),[_,v]=c(!1),[y,b]=c(!1),[x,S]=c(!1),[C,w]=c(!1),T=async e=>{try{await navigator.clipboard.writeText(e),w(!0),setTimeout(()=>{w(!1)},1500)}catch{}},ee=async()=>{if(m(null),g(null),o.length<8){m(`Password must be at least 8 characters.`);return}if(o!==l){m(`Passwords don't match.`);return}f(!0);try{await X.setPassword(o),a(!1),s(``),u(``),e.refresh(),g(`Password updated.`)}catch(e){m(e instanceof Error?e.message:String(e))}finally{f(!1)}},E=async()=>{v(!0),m(null);try{await X.resetPassword(),b(!1),e.refresh(),g(`Password reset to default.`)}catch(e){m(e instanceof Error?e.message:String(e))}finally{v(!1)}},D=e.data?.hasCustomPassword??!1;return r(R,{children:[n(B,{children:n(`strong`,{children:`Encryption password`})}),r(z,{children:[r(`p`,{className:`text-muted small mb-3`,children:[`The kopia repository is encrypted at rest with this password. The default is publicly known; set a custom one if your backup destination (cloud sync, external drive) is accessible to anyone besides you.`,` `,n(`strong`,{children:`Forgetting your custom password makes existing backups unreadable.`})]}),e.loading&&!e.data?n(q,{size:`sm`}):e.error?n(K,{color:`danger`,className:`mb-0`,children:e.error}):r(i,{children:[n(`div`,{className:`mb-3`,children:n(L,{color:D?`success`:`warning`,children:D?`Custom password set`:`Default password (publicly known)`})}),!t&&e.data?.password?(()=>{let t=e.data.password;return r(U,{children:[n(G,{for:`current-password`,children:`Current password`}),r(`div`,{className:`d-flex gap-2 align-items-center`,children:[n(W,{id:`current-password`,type:x?`text`:`password`,value:t,readOnly:!0,style:{fontFamily:`monospace`,maxWidth:`24rem`}}),n(M,{size:`sm`,color:`secondary`,outline:!0,onClick:()=>{S(e=>!e)},"aria-label":x?`Hide password`:`Show password`,children:x?`Hide`:`Show`}),n(M,{size:`sm`,color:`secondary`,outline:!0,onClick:()=>{T(t)},children:C?`Copied!`:`Copy`})]})]})})():null,t?r(Xr,{onSubmit:e=>{e.preventDefault(),ee()},children:[r(U,{children:[n(G,{for:`new-password`,children:`New password`}),n(W,{id:`new-password`,type:`password`,value:o,onChange:e=>{s(e.target.value)},minLength:8,required:!0,disabled:d,autoComplete:`new-password`})]}),r(U,{children:[n(G,{for:`confirm-password`,children:`Confirm password`}),n(W,{id:`confirm-password`,type:`password`,value:l,onChange:e=>{u(e.target.value)},minLength:8,required:!0,disabled:d,autoComplete:`new-password`})]}),r(`div`,{className:`d-flex gap-2`,children:[n(M,{color:`primary`,type:`submit`,disabled:d,children:d?n(q,{size:`sm`}):`Save`}),n(M,{color:`secondary`,outline:!0,type:`button`,disabled:d,onClick:()=>{a(!1),s(``),u(``),m(null)},children:`Cancel`})]})]}):r(`div`,{className:`d-flex flex-wrap gap-2 align-items-center`,children:[n(M,{color:`primary`,onClick:()=>{a(!0),m(null),g(null)},children:D?`Change password`:`Set custom password`}),D&&(y?r(i,{children:[n(`span`,{children:`Reset to default?`}),n(M,{color:`warning`,size:`sm`,disabled:_,onClick:()=>void E(),children:_?n(q,{size:`sm`}):`Reset`}),n(M,{color:`secondary`,outline:!0,size:`sm`,disabled:_,onClick:()=>{b(!1)},children:`Cancel`})]}):n(M,{color:`warning`,outline:!0,onClick:()=>{b(!0)},children:`Reset to default`}))]}),p&&n(K,{color:`danger`,className:`mt-3 mb-0`,children:p}),h&&n(K,{color:`success`,className:`mt-3 mb-0`,toggle:()=>{g(null)},children:h})]})]})]})}function Da(){let e=$(()=>X.dbExportConfig(),{intervalMs:6e4}),[t,a]=c(!1),[o,s]=c(null),[u,d]=c(null),[f,p]=c(``);l(()=>{e.data&&p(String(e.data.intervalMinutes))},[e.data]);let m=async t=>{a(!0),s(null),d(null);try{await X.dbExportConfigSet({questdb:t}),e.refresh(),d(t?`QuestDB export enabled`:`QuestDB export disabled`)}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}},h=async t=>{a(!0),s(null),d(null);try{await X.dbExportConfigSet({grafana:t}),e.refresh(),d(t?`Grafana export enabled`:`Grafana export disabled`)}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}},g=async t=>{a(!0),s(null),d(null);try{await X.dbExportConfigSet({signalkDatabase:t}),e.refresh(),d(t?`SignalK Database export enabled`:`SignalK Database export disabled`)}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}},_=async()=>{let t=parseInt(f,10);if(!Number.isFinite(t)||t<5||t>1440){s(`Interval must be between 5 and 1440 minutes.`);return}a(!0),s(null),d(null);try{await X.dbExportConfigSet({intervalMinutes:t}),e.refresh(),d(`Export interval set to ${t} minutes`)}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}},v=e.data,y=v?String(v.intervalMinutes)!==f:!1;return r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Database export`})}),n(z,{children:e.loading&&!v?n(q,{size:`sm`}):e.error?n(K,{color:`danger`,className:`mb-0`,children:e.error}):v?r(i,{children:[n(`p`,{className:`text-muted small mb-3`,children:`When enabled, the plugin periodically exports database tables to Parquet files inside the SignalK config root. The next backup-server snapshot then captures them as part of the regular backup. Filesystem-level database files (WAL etc.) are still excluded.`}),r(U,{switch:!0,className:`mb-3`,children:[n(W,{id:`db-export-questdb`,type:`switch`,role:`switch`,checked:v.questdb,disabled:t,onChange:e=>void m(e.target.checked)}),n(G,{for:`db-export-questdb`,check:!0,children:`Export QuestDB tables to backup`})]}),r(U,{switch:!0,className:`mb-3`,children:[n(W,{id:`db-export-grafana`,type:`switch`,role:`switch`,checked:v.grafana,disabled:t,onChange:e=>void h(e.target.checked)}),n(G,{for:`db-export-grafana`,check:!0,children:`Export Grafana dashboards, provisioning, and SQLite checkpoint`})]}),r(U,{switch:!0,className:`mb-3`,children:[n(W,{id:`db-export-signalk-database`,type:`switch`,role:`switch`,checked:v.signalkDatabase,disabled:t,onChange:e=>void g(e.target.checked)}),n(G,{for:`db-export-signalk-database`,check:!0,children:`Export SignalK Database plugin DBs (VACUUM INTO per plugin)`})]}),r(U,{children:[n(G,{for:`db-export-interval`,children:`Export interval (minutes)`}),r(`div`,{className:`d-flex gap-2`,children:[n(W,{id:`db-export-interval`,type:`number`,min:5,max:1440,step:5,value:f,disabled:t,onChange:e=>{p(e.target.value)},style:{maxWidth:`12em`}}),n(M,{color:`primary`,disabled:t||!y,onClick:()=>void _(),children:t?n(q,{size:`sm`}):`Save`})]}),n(`small`,{className:`text-muted`,children:`Default 60. Lower values keep DB data fresher in backups but write more often. Effective freshness is bounded by max(this interval, the snapshot interval).`})]}),o&&n(K,{color:`danger`,className:`mt-2 mb-0`,children:o}),u&&n(K,{color:`success`,className:`mt-2 mb-0`,children:u})]}):null})]})}function Oa(){let e=$(()=>X.retention(),{intervalMs:6e4}),[t,o]=c(!1),[s,u]=c(null),[d,f]=c(null),[p,m]=c({hourly:``,daily:``,weekly:``,startup:``}),[h,g]=c({hourly:``,daily:``,weekly:``,startup:``}),_=a(p),v=a(h);l(()=>{_.current=p},[p]),l(()=>{v.current=h},[h]),l(()=>{if(!e.data)return;let t={hourly:String(e.data.hourly),daily:String(e.data.daily),weekly:String(e.data.weekly),startup:String(e.data.startup)},n=_.current,r=v.current;n.hourly===r.hourly&&n.daily===r.daily&&n.weekly===r.weekly&&n.startup===r.startup&&m(t),g(t)},[e.data]);let y=async()=>{u(null),f(null);let t=/^\d+$/,n=[`hourly`,`daily`,`weekly`,`startup`],r={};for(let e of n){let n=p[e].trim();if(!t.test(n)){u(`${e} must be a whole number between 1 and 365`);return}let i=Number(n);if(i<1||i>365){u(`${e} must be a whole number between 1 and 365`);return}r[e]=i}o(!0);try{await X.setRetention(r),e.refresh(),f(`Retention policy saved`)}catch(e){u(e instanceof Error?e.message:String(e))}finally{o(!1)}},b=e.data!==null&&(String(e.data.hourly)!==p.hourly||String(e.data.daily)!==p.daily||String(e.data.weekly)!==p.weekly||String(e.data.startup)!==p.startup);return r(R,{className:`mb-3`,children:[n(B,{children:n(`strong`,{children:`Retention`})}),n(z,{children:e.loading&&!e.data?n(q,{size:`sm`}):e.error?n(K,{color:`danger`,className:`mb-0`,children:e.error}):e.data?r(i,{children:[n(`p`,{className:`text-muted small mb-3`,children:`How many backups of each scheduled tier to keep. Older ones get pruned after the next scheduled backup. Manual backups are never auto-pruned.`}),r(Xr,{onSubmit:e=>{e.preventDefault(),y()},children:[[{key:`hourly`,label:`Hourly`,help:`24 = one full day at 1-per-hour`},{key:`daily`,label:`Daily`,help:`7 = one full week at 1-per-day`},{key:`weekly`,label:`Weekly`,help:`4 = roughly one month`},{key:`startup`,label:`On startup`,help:`Created when SignalK boots after >24h offline`}].map(e=>r(U,{className:`mb-2`,children:[n(G,{for:`retention-${e.key}`,children:e.label}),r(`div`,{className:`d-flex gap-2 align-items-center`,children:[n(W,{id:`retention-${e.key}`,type:`number`,min:1,max:365,step:1,value:p[e.key],disabled:t,onChange:t=>{m(n=>({...n,[e.key]:t.target.value}))},style:{maxWidth:`8em`}}),n(`small`,{className:`text-muted`,children:e.help})]})]},e.key)),n(M,{color:`primary`,type:`submit`,disabled:t||!b,className:`mt-2`,children:t?n(q,{size:`sm`}):`Save retention policy`})]}),s&&n(K,{color:`danger`,className:`mt-3 mb-0`,children:s}),d&&n(K,{color:`success`,className:`mt-3 mb-0`,children:d})]}):null})]})}function ka(){return r(i,{children:[n(`h2`,{className:`mb-3`,children:`Settings`}),n(Sa,{}),n(Ca,{}),n(Oa,{}),n(Ta,{}),n(Da,{}),n(Ea,{})]})}var Aa=[{id:`dashboard`,label:`Dashboard`},{id:`backups`,label:`Backups`},{id:`database-exports`,label:`Database exports`},{id:`cloud`,label:`Cloud sync`},{id:`settings`,label:`Settings`}];function ja(){let[e,t]=c(`dashboard`);return r(Oe,{className:`py-4`,children:[r(`div`,{className:`d-flex align-items-center mb-4`,children:[n(`img`,{src:`/signalk-backup/icon.svg`,alt:``,width:40,height:40,className:`me-3`}),n(`h1`,{className:`mb-0`,children:`SignalK Backup`}),r(`small`,{className:`text-muted ms-3 align-self-end mb-2`,children:[`v`,`1.2.0`]})]}),n($e,{tabs:!0,className:`mb-3`,children:Aa.map(r=>n(at,{children:n(St,{href:`#`,active:e===r.id,onClick:e=>{e.preventDefault(),t(r.id)},children:r.label})},r.id))}),e===`dashboard`&&n(Ji,{}),e===`backups`&&n(aa,{}),e===`database-exports`&&n(xa,{}),e===`cloud`&&n(va,{}),e===`settings`&&n(ka,{})]})}function Ma(){return n(ja,{})}export{Ma as default};
|
|
3
|
+
//# sourceMappingURL=AppPanel-Wn1uKmbh.js.map
|