signalk-backup 1.0.0 → 1.1.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 +2 -2
- package/package.json +8 -6
- package/plugin/config/image-tag.d.ts +5 -2
- package/plugin/config/image-tag.d.ts.map +1 -1
- package/plugin/config/image-tag.js +66 -7
- package/plugin/config/image-tag.js.map +1 -1
- package/plugin/config/resolve-auto-tag.d.ts +10 -0
- package/plugin/config/resolve-auto-tag.d.ts.map +1 -0
- package/plugin/config/resolve-auto-tag.js +70 -0
- package/plugin/config/resolve-auto-tag.js.map +1 -0
- package/plugin/config/schema.d.ts +1 -0
- package/plugin/config/schema.d.ts.map +1 -1
- package/plugin/config/schema.js +15 -4
- package/plugin/config/schema.js.map +1 -1
- package/plugin/index.d.ts.map +1 -1
- package/plugin/index.js +58 -9
- package/plugin/index.js.map +1 -1
- package/plugin/types.d.ts +1 -1
- package/plugin/types.d.ts.map +1 -1
- package/public/assets/AppPanel-CpQvnyQ7.js +3 -0
- package/public/assets/AppPanel-CpQvnyQ7.js.map +1 -0
- package/public/assets/_virtual_mf-localSharedImportMap___mfe_internal__signalk_mf_2_backup__mf_owner__1-Du7wMbis.js +1 -0
- package/public/assets/_virtual_mf___mfe_internal__signalk_mf_2_backup__mf_owner__1__loadShare__react__loadShare__.js-h6Wc3FqT.js +1 -0
- package/public/assets/_virtual_mf___mfe_internal__signalk_mf_2_backup__mf_owner__1__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-BVtcTS_R.js +2 -0
- package/public/assets/_virtual_mf___mfe_internal__signalk_mf_2_backup__mf_owner__1__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-BVtcTS_R.js.map +1 -0
- package/public/assets/_virtual_mf___mfe_internal__signalk_mf_2_backup__mf_owner__1__loadShare__react_mf_2_dom__loadShare__.js-DXBr3ZZh.js +1 -0
- package/public/assets/dist-DWxKLhdH.js +5 -0
- package/public/assets/dist-DWxKLhdH.js.map +1 -0
- package/public/assets/hostInit-kjS4q64P.js +1 -0
- package/public/assets/jsx-dev-runtime-DqDQgAbA.js +2 -0
- package/public/assets/jsx-dev-runtime-DqDQgAbA.js.map +1 -0
- package/public/assets/remote-BvRk9kiK.js +0 -0
- package/public/assets/remote-D8TGjLl9.js +2 -0
- package/public/assets/remote-D8TGjLl9.js.map +1 -0
- package/public/assets/{rolldown-runtime-Bh1tDfsg.js → rolldown-runtime-CbXtAM7H.js} +1 -1
- package/public/assets/virtualExposes-D71LtenL.js +2 -0
- package/public/assets/virtualExposes-D71LtenL.js.map +1 -0
- package/public/assets/vite-preload-helper-Fl0ucuR7.js +1 -0
- package/public/index.html +12 -14
- package/public/remoteEntry.js +1 -1
- package/public/remoteEntry.js.map +1 -1
- package/public/assets/App-jHrc2yzu.js +0 -3
- package/public/assets/App-jHrc2yzu.js.map +0 -1
- package/public/assets/AppPanel-D0iGGeiX.js +0 -2
- package/public/assets/AppPanel-D0iGGeiX.js.map +0 -1
- package/public/assets/_virtual_mf-localSharedImportMap___mfe_internal__signalk_mf_2_backup-B9dkCYcU.js +0 -1
- package/public/assets/_virtual_mf___mfe_internal__signalk_mf_2_backup__loadShare__react__loadShare__.mjs-CRDWkJnD.js +0 -1
- package/public/assets/_virtual_mf___mfe_internal__signalk_mf_2_backup__loadShare__react_mf_1_jsx_mf_2_dev_mf_2_runtime__loadShare__-CZEusA_v.js +0 -1
- package/public/assets/_virtual_mf___mfe_internal__signalk_mf_2_backup__loadShare__react_mf_1_jsx_mf_2_dev_mf_2_runtime__loadShare__.mjs-C5oceaDt.js +0 -2
- package/public/assets/_virtual_mf___mfe_internal__signalk_mf_2_backup__loadShare__react_mf_1_jsx_mf_2_dev_mf_2_runtime__loadShare__.mjs-C5oceaDt.js.map +0 -1
- package/public/assets/_virtual_mf___mfe_internal__signalk_mf_2_backup__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__-Dh2Je4Q8.js +0 -1
- package/public/assets/_virtual_mf___mfe_internal__signalk_mf_2_backup__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.mjs-BJsP72ov.js +0 -2
- package/public/assets/_virtual_mf___mfe_internal__signalk_mf_2_backup__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.mjs-BJsP72ov.js.map +0 -1
- package/public/assets/_virtual_mf___mfe_internal__signalk_mf_2_backup__loadShare__react_mf_2_dom__loadShare__.mjs-COVU9tAo.js +0 -1
- package/public/assets/_virtual_mf___mfe_internal__signalk_mf_2_backup__loadShare__react_mf_2_dom_mf_1_client__loadShare__.mjs-F9Hr43sq.js +0 -1
- package/public/assets/dist-Cr3RQpe1.js +0 -5
- package/public/assets/dist-Cr3RQpe1.js.map +0 -1
- package/public/assets/hostInit-CBfbRWDG.js +0 -1
- package/public/assets/index-BvOjez90.js +0 -2
- package/public/assets/index-BvOjez90.js.map +0 -1
- package/public/assets/jsx-dev-runtime-BvApC5zd.js +0 -1
- package/public/assets/jsx-runtime-4HRoLdzw.js +0 -1
- package/public/assets/main-BZOfKcLT.js +0 -2
- package/public/assets/main-BZOfKcLT.js.map +0 -1
- package/public/assets/preload-helper-DCSm9-xi.js +0 -1
- package/public/assets/virtualExposes-E_ORVUj7.js +0 -2
- package/public/assets/virtualExposes-E_ORVUj7.js.map +0 -1
- package/public/mf-entry-bootstrap-0.js +0 -17
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./rolldown-runtime-Bh1tDfsg.js";import{i as n,n as r,r as i}from"./_virtual_mf___mfe_internal__signalk_mf_2_backup__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.mjs-BJsP72ov.js";import{a,c as o,i as s,n as c,o as l,r as u,t as d}from"./_virtual_mf___mfe_internal__signalk_mf_2_backup__loadShare__react__loadShare__.mjs-CRDWkJnD.js";import{t as f}from"./_virtual_mf___mfe_internal__signalk_mf_2_backup__loadShare__react_mf_2_dom__loadShare__.mjs-COVU9tAo.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=e(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 E(){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 D;function O(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:``,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:D;return t?e.split(` `).map(function(e){return t[e]||e}).join(` `):e}function ee(e,t){var n={};return Object.keys(e).forEach(function(r){t.indexOf(r)===-1&&(n[r]=e[r])}),n}function te(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 ne={};function re(e){ne[e]||(typeof console<`u`&&console.error(e),ne[e]=!0)}function ie(e,t){return function(n,r,i){n[r]!==null&&n[r]!==void 0&&re(`"${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 ae=(typeof window>`u`?`undefined`:x(window))===`object`&&window.Element||function(){};function oe(e,t,n){if(!(e[t]instanceof ae))return Error("Invalid prop `"+t+"` supplied to `"+n+"`. Expected prop to be an instance of Element. Validation failed.")}var se=_.default.oneOfType([_.default.string,_.default.func,oe,_.default.shape({current:_.default.any})]),k=_.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})]))]),ce={Fade:150,Collapse:350,Modal:300,Carousel:600,Offcanvas:300},le=[`in`,`mountOnEnter`,`unmountOnExit`,`appear`,`enter`,`exit`,`timeout`,`onEnter`,`onEntering`,`onEntered`,`onExit`,`onExiting`,`onExited`],ue={esc:27,space:32,enter:13,tab:9,up:38,down:40,home:36,end:35,n:78,p:80},de=!!(typeof window<`u`&&window.document&&window.document.createElement);function fe(e){return e&&x(e)===`object`?`current`in e:!1}function pe(e){return e==null?e===void 0?`[object Undefined]`:`[object Null]`:Object.prototype.toString.call(e)}function me(e){var t=x(e);return e!=null&&(t===`object`||t===`function`)}function he(e){var t=x(e),n=NaN;if(t===`number`)return e;if(t===`symbol`||t===`object`&&pe(e)===`[object Symbol]`)return n;if(me(e)){var r=typeof e.valueOf==`function`?e.valueOf():e;e=me(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 ge(e){if(!me(e))return!1;var t=pe(e);return t===`[object Function]`||t===`[object AsyncFunction]`||t===`[object GeneratorFunction]`||t===`[object Proxy]`}function _e(e){if(fe(e))return e.current;if(ge(e))return e();if(typeof e==`string`&&de){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 ve(e){return e===null?!1:Array.isArray(e)||de&&typeof e.length==`number`}function ye(e,t){var n=_e(e);return t?ve(n)?n:n===null?[]:[n]:ve(n)?n[0]:n}var be=[`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 xe(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`&&xe(e[t],n)}),n}var Se=[`className`,`cssModule`,`fluid`,`tag`];function Ce(){return Ce=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},Ce.apply(this,arguments)}function we(e,t){if(e==null)return{};var n=Te(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 Te(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 Ee={tag:k,fluid:_.default.oneOfType([_.default.bool,_.default.string]),className:_.default.string,cssModule:_.default.object};function De(e){var t=e.className,n=e.cssModule,r=e.fluid,i=e.tag,a=i===void 0?`div`:i,s=we(e,Se),c=`container`;r===!0?c=`container-fluid`:r&&(c=`container-${r}`);var l=O((0,g.default)(t,c),n);return o.createElement(a,Ce({},s,{className:l}))}De.propTypes=Ee;var Oe=[`className`,`cssModule`,`noGutters`,`tag`,`widths`];function ke(){return ke=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},ke.apply(this,arguments)}function Ae(e,t){if(e==null)return{};var n=je(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 je(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 Me=[`xs`,`sm`,`md`,`lg`,`xl`,`xxl`],A=_.default.oneOfType([_.default.number,_.default.string]),Ne={tag:k,noGutters:ie(_.default.bool,`Please use Bootstrap 5 gutter utility classes. https://getbootstrap.com/docs/5.0/layout/gutters/`),className:_.default.string,cssModule:_.default.object,xs:A,sm:A,md:A,lg:A,xl:A,xxl:A,widths:_.default.array};function j(e){var t=e.className,n=e.cssModule,r=e.noGutters,i=e.tag,a=i===void 0?`div`:i,s=e.widths,c=s===void 0?Me:s,l=Ae(e,Oe),u=[];c.forEach(function(t,n){var r=e[t];if(delete l[t],r){var i=!n;u.push(i?`row-cols-${r}`:`row-cols-${t}-${r}`)}});var d=O((0,g.default)(t,r?`gx-0`:null,`row`,u),n);return o.createElement(a,ke({},l,{className:d}))}j.propTypes=Ne;var Pe=[`className`,`cssModule`,`widths`,`tag`];function Fe(){return Fe=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},Fe.apply(this,arguments)}function Ie(e,t){if(e==null)return{};var n=Le(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 Le(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 Re(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ze=[`xs`,`sm`,`md`,`lg`,`xl`,`xxl`],Be=_.default.oneOfType([_.default.number,_.default.string]),Ve=_.default.oneOfType([_.default.bool,_.default.number,_.default.string,_.default.shape({size:_.default.oneOfType([_.default.bool,_.default.number,_.default.string]),order:Be,offset:Be})]),He={tag:k,xs:Ve,sm:Ve,md:Ve,lg:Ve,xl:Ve,xxl:Ve,className:_.default.string,cssModule:_.default.object,widths:_.default.array},Ue=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}`},We=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:ze,r=e,i=[];return n.forEach(function(e,n){var a=r[e];if(delete r[e],!(!a&&a!==``)){var o=!n;if(me(a)){var s,c=o?`-`:`-${e}-`,l=Ue(o,e,a.size);i.push(O((0,g.default)((s={},Re(s,l,a.size||a.size===``),Re(s,`order${c}${a.order}`,a.order||a.order===0),Re(s,`offset${c}${a.offset}`,a.offset||a.offset===0),s)),t))}else{var u=Ue(o,e,a);i.push(u)}}}),{colClasses:i,modifiedAttributes:r}};function M(e){var t=e.className,n=e.cssModule,r=e.widths,i=r===void 0?ze:r,a=e.tag,s=a===void 0?`div`:a,c=We(Ie(e,Pe),n,i),l=c.modifiedAttributes,u=c.colClasses;u.length||u.push(`col`);var d=O((0,g.default)(t,u),n);return o.createElement(s,Fe({},l,{className:d}))}M.propTypes=He;var Ge=[`className`,`cssModule`,`tabs`,`pills`,`vertical`,`horizontal`,`justified`,`fill`,`navbar`,`card`,`tag`];function Ke(){return Ke=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},Ke.apply(this,arguments)}function qe(e,t){if(e==null)return{};var n=Je(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 Je(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 Ye={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:k,vertical:_.default.oneOfType([_.default.bool,_.default.string])},Xe=function(e){return e===!1?!1:e===!0||e===`xs`?`flex-column`:`flex-${e}-column`};function Ze(e){var t=e.className,n=e.cssModule,r=e.tabs,i=e.pills,a=e.vertical,s=a===void 0?!1:a,c=e.horizontal,l=e.justified,u=e.fill,d=e.navbar,f=e.card,p=e.tag,m=p===void 0?`ul`:p,h=qe(e,Ge),_=O((0,g.default)(t,d?`navbar-nav`:`nav`,c?`justify-content-${c}`:!1,Xe(s),{"nav-tabs":r,"card-header-tabs":f&&r,"nav-pills":i,"card-header-pills":f&&i,"nav-justified":l,"nav-fill":u}),n);return o.createElement(m,Ke({},h,{className:_}))}Ze.propTypes=Ye;var Qe=[`className`,`cssModule`,`active`,`tag`];function $e(){return $e=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},$e.apply(this,arguments)}function et(e,t){if(e==null)return{};var n=tt(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 tt(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 nt={active:_.default.bool,className:_.default.string,cssModule:_.default.object,tag:k};function rt(e){var t=e.className,n=e.cssModule,r=e.active,i=e.tag,a=i===void 0?`li`:i,s=et(e,Qe),c=O((0,g.default)(t,`nav-item`,r?`active`:!1),n);return o.createElement(a,$e({},s,{className:c}))}rt.propTypes=nt;function it(e){"@babel/helpers - typeof";return it=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},it(e)}var at=[`className`,`cssModule`,`active`,`tag`,`innerRef`];function ot(){return ot=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},ot.apply(this,arguments)}function st(e,t){if(e==null)return{};var n=ct(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 ct(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 lt(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function ut(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 dt(e,t,n){return t&&ut(e.prototype,t),n&&ut(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function ft(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&&pt(e,t)}function pt(e,t){return pt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},pt(e,t)}function mt(e){var t=_t();return function(){var n=vt(e),r;if(t){var i=vt(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return ht(this,r)}}function ht(e,t){if(t&&(it(t)===`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return gt(e)}function gt(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function _t(){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 vt(e){return vt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},vt(e)}var yt={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:k},bt=function(e){ft(n,e);var t=mt(n);function n(e){var r;return lt(this,n),r=t.call(this,e),r.onClick=r.onClick.bind(gt(r)),r}return dt(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,s=e.innerRef,c=st(e,at),l=O((0,g.default)(t,`nav-link`,{disabled:c.disabled,active:r}),n);return o.createElement(a,ot({},c,{ref:s,onClick:this.onClick,className:l}))}}]),n}(o.Component);bt.propTypes=yt;var xt=[`className`,`cssModule`,`variant`,`innerRef`];function St(){return St=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},St.apply(this,arguments)}function Ct(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 wt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Ct(Object(n),!0).forEach(function(t){Tt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ct(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Tt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Et(e,t){if(e==null)return{};var n=Dt(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 Dt(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 Ot={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 kt(e){var t=e.className;e.cssModule;var n=e.variant,r=e.innerRef,i=Et(e,xt),a=O((0,g.default)(t,`btn-close`,n&&`btn-close-${n}`));return o.createElement(`button`,St({ref:r,type:`button`,className:a},wt({"aria-label":`close`},i)))}kt.propTypes=Ot;var At=[`active`,`aria-label`,`block`,`className`,`close`,`cssModule`,`color`,`outline`,`size`,`tag`,`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 Mt(e,t){if(e==null)return{};var n=Nt(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 Nt(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 Pt={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:k};function N(e){var t=c(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,s=e.close,l=e.cssModule,u=e.color,d=u===void 0?`secondary`:u,f=e.outline,p=e.size,m=e.tag,h=m===void 0?`button`:m,_=e.innerRef,v=Mt(e,At);if(s)return o.createElement(kt,v);var y=O((0,g.default)(a,`btn`,`btn${f?`-outline`:``}-${d}`,p?`btn-${p}`:!1,i?`d-block w-100`:!1,{active:n,disabled:e.disabled}),l);return v.href&&h===`button`&&(h=`a`),o.createElement(h,jt({type:h===`button`&&v.onClick?`button`:void 0},v,{className:y,ref:_,onClick:t,"aria-label":r}))}N.propTypes=Pt;function Ft(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 It(e,t){return It=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},It(e,t)}function Lt(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,It(e,t)}var Rt={disabled:!1},zt=o.createContext(null),Bt=function(e){return e.scrollTop},Vt=`unmounted`,P=`exited`,Ht=`entering`,Ut=`entered`,Wt=`exiting`,F=function(e){Lt(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=P,r.appearStatus=Ht):o=Ut:o=t.unmountOnExit||t.mountOnEnter?Vt:P,r.state={status:o},r.nextCallback=null,r}t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===`unmounted`?{status:P}: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=Ht):(n===`entering`||n===`entered`)&&(t=Wt)}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&&Bt(n)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===`exited`&&this.setState({status:Vt})},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||Rt.disabled){this.safeSetState({status:Ut},function(){t.props.onEntered(a)});return}this.props.onEnter(a,o),this.safeSetState({status:Ht},function(){t.props.onEntering(a,o),t.onTransitionEnd(c,function(){t.safeSetState({status:Ut},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||Rt.disabled){this.safeSetState({status:P},function(){e.props.onExited(r)});return}this.props.onExit(r),this.safeSetState({status:Wt},function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,function(){e.safeSetState({status:P},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=Ft(t,[`children`,`in`,`mountOnEnter`,`unmountOnExit`,`appear`,`enter`,`exit`,`timeout`,`addEndListener`,`onEnter`,`onEntering`,`onEntered`,`onExit`,`onExiting`,`onExited`,`nodeRef`]);return o.createElement(zt.Provider,{value:null},typeof n==`function`?n(e,r):o.cloneElement(o.Children.only(n),r))},t}(o.Component);F.contextType=zt,F.propTypes={};function Gt(){}F.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:Gt,onEntering:Gt,onEntered:Gt,onExit:Gt,onExiting:Gt,onExited:Gt},F.UNMOUNTED=Vt,F.EXITED=P,F.ENTERING=Ht,F.ENTERED=Ut,F.EXITING=Wt;var Kt=[`tag`,`baseClass`,`baseClassActive`,`className`,`cssModule`,`children`,`innerRef`];function qt(){return qt=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},qt.apply(this,arguments)}function Jt(e,t){if(e==null)return{};var n=Yt(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 Yt(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 Xt(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 Zt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Xt(Object(n),!0).forEach(function(t){Qt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xt(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Qt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var $t=Zt(Zt({},F.propTypes),{},{children:_.default.oneOfType([_.default.arrayOf(_.default.node),_.default.node]),tag:k,baseClass:_.default.string,baseClassActive:_.default.string,className:_.default.string,cssModule:_.default.object,innerRef:_.default.oneOfType([_.default.object,_.default.string,_.default.func])}),en=Zt(Zt({},F.defaultProps),{},{timeout:ce.Fade,appear:!0,enter:!0,exit:!0,in:!0});function I(e){var t=a(null),n=xe(en,e),r=n.tag,i=r===void 0?`div`:r,s=n.baseClass,c=s===void 0?`fade`:s,l=n.baseClassActive,u=l===void 0?`show`:l,d=n.className,f=n.cssModule,p=n.children,m=n.innerRef,h=m===void 0?t:m,_=Jt(n,Kt),v=te(Zt({defaultProps:en},_),le),y=ee(_,le);return o.createElement(F,qt({nodeRef:h},v),function(e){var t=O((0,g.default)(d,c,e===`entered`&&u),f);return o.createElement(i,qt({className:t},y,{ref:h}),p)})}I.propTypes=$t;var tn=[`className`,`cssModule`,`color`,`innerRef`,`pill`,`tag`];function nn(){return nn=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},nn.apply(this,arguments)}function rn(e,t){if(e==null)return{};var n=an(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 an(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 on={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:k};function L(e){var t=e.className,n=e.cssModule,r=e.color,i=r===void 0?`secondary`:r,a=e.innerRef,s=e.pill,c=s===void 0?!1:s,l=e.tag,u=l===void 0?`span`:l,d=rn(e,tn),f=O((0,g.default)(t,`badge`,`bg-`+i,c?`rounded-pill`:!1),n);return d.href&&u===`span`&&(u=`a`),o.createElement(u,nn({},d,{className:f,ref:a}))}L.propTypes=on;var sn=[`className`,`cssModule`,`color`,`body`,`inverse`,`outline`,`tag`,`innerRef`];function cn(){return cn=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},cn.apply(this,arguments)}function ln(e,t){if(e==null)return{};var n=un(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 un(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 dn={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:k};function R(e){var t=e.className,n=e.cssModule,r=e.color,i=e.body,a=e.inverse,s=e.outline,c=e.tag,l=c===void 0?`div`:c,u=e.innerRef,d=ln(e,sn),f=O((0,g.default)(t,`card`,a?`text-white`:!1,i?`card-body`:!1,r?`${s?`border`:`bg`}-${r}`:!1),n);return o.createElement(l,cn({},d,{className:f,ref:u}))}R.propTypes=dn;var fn=[`className`,`cssModule`,`innerRef`,`tag`];function pn(){return pn=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},pn.apply(this,arguments)}function mn(e,t){if(e==null)return{};var n=hn(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 hn(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 gn={className:_.default.string,cssModule:_.default.object,innerRef:_.default.oneOfType([_.default.object,_.default.string,_.default.func]),tag:k};function z(e){var t=e.className,n=e.cssModule,r=e.innerRef,i=e.tag,a=i===void 0?`div`:i,s=mn(e,fn),c=O((0,g.default)(t,`card-body`),n);return o.createElement(a,pn({},s,{className:c,ref:r}))}z.propTypes=gn;var _n=[`className`,`cssModule`,`tag`];function vn(){return vn=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},vn.apply(this,arguments)}function yn(e,t){if(e==null)return{};var n=bn(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 bn(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 xn={className:_.default.string,cssModule:_.default.object,tag:k};function B(e){var t=e.className,n=e.cssModule,r=e.tag,i=r===void 0?`div`:r,a=yn(e,_n),s=O((0,g.default)(t,`card-header`),n);return o.createElement(i,vn({},a,{className:s}))}B.propTypes=xn;var Sn=[`children`,`className`,`barClassName`,`cssModule`,`value`,`min`,`max`,`animated`,`striped`,`color`,`bar`,`multi`,`tag`,`style`,`barStyle`,`barAriaValueText`,`barAriaLabelledBy`];function Cn(){return Cn=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},Cn.apply(this,arguments)}function wn(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 Tn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?wn(Object(n),!0).forEach(function(t){En(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):wn(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function En(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Dn(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 kn={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:k,value:_.default.oneOfType([_.default.string,_.default.number])};function An(e){var t=e.children,n=e.className,r=e.barClassName,i=e.cssModule,a=e.value,s=a===void 0?0:a,c=e.min,l=c===void 0?0:c,u=e.max,d=u===void 0?100:u,f=e.animated,p=e.striped,m=e.color,h=e.bar,_=e.multi,v=e.tag,y=v===void 0?`div`:v,b=e.style,x=b===void 0?{}:b,S=e.barStyle,C=S===void 0?{}:S,w=e.barAriaValueText,T=e.barAriaLabelledBy,E=Dn(e,Sn),D=he(s)/he(d)*100,ee=O((0,g.default)(n,`progress`),i),te={className:O((0,g.default)(`progress-bar`,h&&n||r,f?`progress-bar-animated`:null,m?`bg-${m}`:null,p||f?`progress-bar-striped`:null),i),style:Tn(Tn(Tn({},h?x:{}),C),{},{width:`${D}%`}),role:`progressbar`,"aria-valuenow":s,"aria-valuemin":l,"aria-valuemax":d,"aria-valuetext":w,"aria-labelledby":T,children:t};return h?o.createElement(y,Cn({},E,te)):o.createElement(y,Cn({},E,{style:x,className:ee}),_?t:o.createElement(`div`,te))}An.propTypes=kn;function jn(e){"@babel/helpers - typeof";return jn=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},jn(e)}function Mn(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function Nn(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 Pn(e,t,n){return t&&Nn(e.prototype,t),n&&Nn(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Fn(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&&In(e,t)}function In(e,t){return In=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},In(e,t)}function Ln(e){var t=Bn();return function(){var n=Vn(e),r;if(t){var i=Vn(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return Rn(this,r)}}function Rn(e,t){if(t&&(jn(t)===`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return zn(e)}function zn(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function Bn(){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 Vn(e){return Vn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Vn(e)}var Hn={children:_.default.node.isRequired,node:_.default.any},Un=function(e){Fn(n,e);var t=Ln(n);function n(){return Mn(this,n),t.apply(this,arguments)}return Pn(n,[{key:`componentWillUnmount`,value:function(){this.defaultNode&&document.body.removeChild(this.defaultNode),this.defaultNode=null}},{key:`render`,value:function(){return de?(!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}(o.Component);Un.propTypes=Hn;function Wn(e){"@babel/helpers - typeof";return Wn=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},Wn(e)}function Gn(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 Kn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Gn(Object(n),!0).forEach(function(t){Jn(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Gn(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&&(Wn(t)===`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return V(e)}function V(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:se,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:ce.Modal},backdropTransition:{mountOnEnter:!0,timeout:ce.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(V(r)),r.handleBackdropClick=r.handleBackdropClick.bind(V(r)),r.handleBackdropMouseDown=r.handleBackdropMouseDown.bind(V(r)),r.handleEscape=r.handleEscape.bind(V(r)),r.handleStaticBackdropAnimation=r.handleStaticBackdropAnimation.bind(V(r)),r.handleTab=r.handleTab.bind(V(r)),r.onOpened=r.onOpened.bind(V(r)),r.onClosed=r.onClosed.bind(V(r)),r.manageFocusAfterClose=r.manageFocusAfterClose.bind(V(r)),r.clearBackdropAnimationTimeout=r.clearBackdropAnimationTimeout.bind(V(r)),r.trapFocus=r.trapFocus.bind(V(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===ue.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(be.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=ye(this.props.container),this._mountContainer.appendChild(this._element)),this._originalBodyPadding=T(),n.openCount<1&&(n.originalBodyOverflow=window.getComputedStyle(document.body).overflow),E(),n.openCount===0&&(document.body.className=(0,g.default)(document.body.className,O(`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=O(`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=ee(this.props,sr),r=`modal-dialog`;return o.createElement(`div`,qn({},n,{className:O((0,g.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}}),o.createElement(`div`,{className:O((0,g.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,s=n.cssModule,c=n.isOpen,l=n.backdrop,u=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:u,tabIndex:`-1`},h=this.props.fade,_=Kn(Kn(Kn({},I.defaultProps),this.props.modalTransition),{},{baseClass:h?this.props.modalTransition.baseClass:``,timeout:h?this.props.modalTransition.timeout:0}),v=Kn(Kn(Kn({},I.defaultProps),this.props.backdropTransition),{},{baseClass:h?this.props.backdropTransition.baseClass:``,timeout:h?this.props.backdropTransition.timeout:0}),y=l&&(h?o.createElement(I,qn({},v,{in:c&&!!l,cssModule:s,className:O((0,g.default)(`modal-backdrop`,a),s)})):o.createElement(`div`,{className:O((0,g.default)(`modal-backdrop`,`show`,a),s)}));return o.createElement(Un,{node:this._element},o.createElement(`div`,{className:O(r)},o.createElement(I,qn({},m,_,{in:c,onEntered:this.onOpened,onExited:this.onClosed,cssModule:s,className:O((0,g.default)(`modal`,i,this.state.showStaticBackdropAnimation&&`modal-static`),s),innerRef:p}),f,this.renderModalDialog()),y))}return null}}]),n}(o.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:k,toggle:_.default.func,wrapTag:k};function hr(e){var t,n=e.className,r=e.cssModule,i=e.children,a=e.toggle,s=e.tag,c=s===void 0?`h5`:s,l=e.wrapTag,u=l===void 0?`div`:l,d=e.closeAriaLabel,f=d===void 0?`Close`:d,p=e.close,m=fr(e,ur),h=O((0,g.default)(n,`modal-header`),r);return!p&&a&&(t=o.createElement(`button`,{type:`button`,onClick:a,className:O(`btn-close`,r),"aria-label":f})),o.createElement(u,dr({},m,{className:h}),o.createElement(c,{className:O(`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:k};function xr(e){var t=e.className,n=e.cssModule,r=e.tag,i=r===void 0?`div`:r,a=vr(e,gr),s=O((0,g.default)(t,`modal-body`),n);return o.createElement(i,_r({},a,{className:s}))}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:k};function Dr(e){var t=e.className,n=e.cssModule,r=e.tag,i=r===void 0?`div`:r,a=wr(e,Sr),s=O((0,g.default)(t,`modal-footer`),n);return o.createElement(i,Cr({},a,{className:s}))}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:k,size:_.default.string,striped:_.default.bool,tag:k};function Nr(e){var t=e.className,n=e.cssModule,r=e.size,i=e.bordered,a=e.borderless,s=e.striped,c=e.dark,l=e.hover,u=e.responsive,d=e.tag,f=d===void 0?`table`:d,p=e.responsiveTag,m=p===void 0?`div`:p,h=e.innerRef,_=Ar(e,Or),v=O((0,g.default)(t,`table`,r?`table-`+r:!1,i?`table-bordered`:!1,a?`table-borderless`:!1,s?`table-striped`:!1,c?`table-dark`:!1,l?`table-hover`:!1),n),y=o.createElement(f,kr({},_,{ref:h,className:v}));if(u){var b=O(u===!0?`table-responsive`:`table-responsive-${u}`,n);return o.createElement(m,{className:b},y)}return y}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:k,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,s=Lr(e,Fr),c=O(t,n);return o.createElement(i,Ir({},s,{ref:a,className:c}))}}]),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:k,className:_.default.string,cssModule:_.default.object};function H(e){var t=e.className,n=e.cssModule,r=e.row,i=e.disabled,a=e.check,s=e.inline,c=e.floating,l=e.noMargin,u=e.tag,d=u===void 0?`div`:u,f=e.switch,p=$r(e,Zr),m=a||f,h=O((0,g.default)(t,r?`row`:!1,m?`form-check`:!1,f?`form-switch`:!1,m||l?!1:`mb-3`,m&&s?`form-check-inline`:!1,m&&i?`disabled`:!1,c&&`form-floating`),n);return d===`fieldset`&&(p.disabled=i),o.createElement(d,Qr({},p,{className:h}))}H.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:k,innerRef:_.default.oneOfType([_.default.object,_.default.func,_.default.string]),plaintext:_.default.bool,addon:_.default.bool,className:_.default.string,cssModule:_.default.object},U=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,s=e.valid,c=e.invalid,l=e.tag,u=e.addon,d=e.plaintext,f=e.innerRef,p=ai(e,ri),m=[`switch`,`radio`,`checkbox`].indexOf(i)>-1,h=/\D/g,_=i===`textarea`,v=i===`select`,y=i===`range`,b=l||(v||_?i:`input`),x=`form-control`;d?(x=`${x}-plaintext`,b=l||`input`):y?x=`form-range`:v?x=`form-select`:m&&(x=u?null:`form-check-input`),p.size&&h.test(p.size)&&(re(`Please use the prop "bsSize" instead of the "size" to bootstrap's input sizing.`),a=p.size,delete p.size);var S=O((0,g.default)(t,c&&`is-invalid`,s&&`is-valid`,a?v?`form-select-${a}`:`form-control-${a}`:!1,x),n);return(b===`input`||l&&typeof l==`function`)&&(p.type=i===`switch`?`checkbox`:i),p.children&&!(d||i===`select`||typeof b!=`string`||b===`select`)&&(re(`Input with a type of "${i}" cannot have children. Please use "value"/"defaultValue" instead.`),delete p.children),o.createElement(b,ii({},p,{ref:f,className:S,"aria-invalid":c}))}}]),n}(o.Component);U.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]),W=_.default.oneOfType([_.default.bool,_.default.string,_.default.number,_.default.shape({size:wi,order:wi,offset:wi})]),Ti={children:_.default.node,hidden:_.default.bool,check:_.default.bool,size:_.default.string,for:_.default.string,tag:k,className:_.default.string,cssModule:_.default.object,xs:W,sm:W,md:W,lg:W,xl:W,xxl:W,widths:_.default.array},Ei=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,s=e.tag,c=s===void 0?`label`:s,l=e.check,u=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(me(i)){var s,c=a?`-`:`-${t}-`;o=Ei(a,t,i.size),p.push(O((0,g.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=Ei(a,t,i),p.push(o)}});var m=u||p.length,h=!(l||m),_=O((0,g.default)(t,r?`visually-hidden`:!1,l?`form-check-label`:!1,u?`col-form-label-${u}`:!1,p,m?`col-form-label`:!1,h?`form-label`:!1),n);return o.createElement(c,yi({htmlFor:d},f,{className:_}))}G.propTypes=Ti;var Di=[`className`,`closeClassName`,`closeAriaLabel`,`cssModule`,`tag`,`color`,`isOpen`,`toggle`,`children`,`transition`,`fade`,`innerRef`];function Oi(){return Oi=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},Oi.apply(this,arguments)}function ki(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 Ai(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?ki(Object(n),!0).forEach(function(t){ji(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ki(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function ji(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Mi(e,t){if(e==null)return{};var n=Ni(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 Ni(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 Pi={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:k,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,s=e.tag,c=s===void 0?`div`:s,l=e.color,u=l===void 0?`success`:l,d=e.isOpen,f=d===void 0?!0:d,p=e.toggle,m=e.children,h=e.transition,_=h===void 0?Ai(Ai({},I.defaultProps),{},{unmountOnExit:!0}):h,v=e.fade,y=v===void 0?!0:v,b=e.innerRef,x=Mi(e,Di),S=O((0,g.default)(t,`alert`,`alert-${u}`,{"alert-dismissible":p}),a),C=O((0,g.default)(`btn-close`,n),a),w=Ai(Ai(Ai({},I.defaultProps),_),{},{baseClass:y?_.baseClass:``,timeout:y?_.timeout:0});return o.createElement(I,Oi({},x,w,{tag:c,className:S,in:f,role:`alert`,innerRef:b}),p?o.createElement(`button`,{type:`button`,className:C,"aria-label":i,onClick:p}):null,m)}K.propTypes=Pi;var Fi=[`className`,`cssModule`,`type`,`size`,`color`,`children`,`tag`];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 Li(e,t){if(e==null)return{};var n=Ri(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 Ri(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 zi={tag:k,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,s=e.color,c=e.children,l=c===void 0?`Loading...`:c,u=e.tag,d=u===void 0?`div`:u,f=Li(e,Fi),p=O((0,g.default)(t,a?`spinner-${i}-${a}`:!1,`spinner-${i}`,s?`text-${s}`:!1),n);return o.createElement(d,Ii({role:`status`},f,{className:p}),l&&o.createElement(`span`,{className:O(`visually-hidden`,n)},l))}q.propTypes=zi;var J=`/plugins/signalk-backup/api`,Bi=class extends Error{conflict;constructor(e,t){super(e),this.conflict=t,this.name=`PartialRestoreConflictError`}},Vi=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 Vi(e.error?.message??`unknown server error`,n.status,t)}if(e.success===!0&&`data`in r)return e.data}if(!n.ok)throw new Vi(`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 Bi(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 Bi(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`}),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 Hi(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]=l(null),[o,s]=l(!0),[d,f]=l(null),p=a(e);p.current=e;let m=c(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||s(!1)}},[]),[h,g]=l(0),_=c(()=>{g(e=>e+1)},[]);return u(()=>{let e={current:!1};s(!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 Ui({status:e}){return e?e.ready?i(L,{color:`success`,children:`Ready`}):i(L,{color:`warning`,children:`Not ready`}):i(L,{color:`secondary`,children:`Unknown`})}function Wi({stats:e}){let t=e.totalSize>0?e.originalSize/e.totalSize:0;return n(j,{className:`g-2`,children:[n(M,{xs:6,children:[i(`small`,{className:`text-muted d-block`,children:`On disk`}),i(`div`,{children:Z(e.totalSize)})]}),n(M,{xs:6,children:[i(`small`,{className:`text-muted d-block`,children:`Logical`}),i(`div`,{children:Z(e.originalSize)})]}),i(M,{xs:12,className:`mt-2`,children:i(`small`,{className:`text-muted d-block`,children:t>=1.1?`${t.toFixed(1)}× dedup (${Z(e.dedupSavings)} saved)`:`No significant dedup yet`})})]})}function Gi({scheduler:e}){return n(j,{className:`g-2 mt-2`,children:[n(M,{xs:3,children:[i(`small`,{className:`text-muted d-block`,children:`Hourly`}),i(`div`,{children:e.backupCounts.hourly})]}),n(M,{xs:3,children:[i(`small`,{className:`text-muted d-block`,children:`Daily`}),i(`div`,{children:e.backupCounts.daily})]}),n(M,{xs:3,children:[i(`small`,{className:`text-muted d-block`,children:`Weekly`}),i(`div`,{children:e.backupCounts.weekly})]}),n(M,{xs:3,children:[i(`small`,{className:`text-muted d-block`,children:`Manual`}),i(`div`,{children:e.backupCounts.manual})]})]})}function Ki(){let e=$(()=>X.pluginStatus(),{intervalMs:5e3}),t=$(()=>X.scheduler(),{intervalMs:15e3}),a=$(()=>X.listBackups(),{intervalMs:3e4}),o=$(()=>X.repository(),{intervalMs:6e4});return n(r,{children:[n(`div`,{className:`d-flex justify-content-between align-items-center mb-3`,children:[i(`h2`,{className:`mb-0`,children:`Dashboard`}),i(N,{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`})]}),n(j,{children:[i(M,{xs:12,md:6,children:n(R,{className:`mb-3`,children:[i(B,{children:i(`strong`,{children:`Plugin status`})}),i(z,{children:e.loading&&!e.data?i(q,{size:`sm`}):e.error?i(K,{color:`danger`,className:`mb-0`,children:e.error}):n(r,{children:[i(`div`,{className:`mb-2`,children:i(Ui,{status:e.data})}),e.data&&n(`dl`,{className:`row mb-0`,children:[i(`dt`,{className:`col-sm-4`,children:`Image`}),i(`dd`,{className:`col-sm-8 text-truncate`,children:i(`code`,{children:e.data.container.image})}),i(`dt`,{className:`col-sm-4`,children:`Container`}),n(`dd`,{className:`col-sm-8`,children:[e.data.container.state,` `,e.data.container.managed&&i(`small`,{className:`text-muted`,children:`(managed)`})]})]})]})})]})}),i(M,{xs:12,md:6,children:n(R,{className:`mb-3`,children:[i(B,{children:i(`strong`,{children:`Scheduler`})}),i(z,{children:t.loading&&!t.data?i(q,{size:`sm`}):t.error?i(K,{color:`danger`,className:`mb-0`,children:t.error}):t.data?n(r,{children:[i(`div`,{className:`mb-2`,children:i(L,{color:t.data.enabled?`success`:`secondary`,children:t.data.enabled?`Running`:`Stopped`})}),n(j,{className:`g-2`,children:[n(M,{xs:6,children:[i(`small`,{className:`text-muted d-block`,children:`Last backup`}),i(`div`,{children:Q(t.data.lastBackup)})]}),n(M,{xs:6,children:[i(`small`,{className:`text-muted d-block`,children:`Total snapshots`}),i(`div`,{children:t.data.backupCounts.total})]})]}),i(Gi,{scheduler:t.data})]}):null})]})}),i(M,{xs:12,md:6,children:n(R,{className:`mb-3`,children:[i(B,{children:i(`strong`,{children:`Local repository`})}),i(z,{children:o.loading&&!o.data?i(q,{size:`sm`}):o.error?i(K,{color:`danger`,className:`mb-0`,children:o.error}):o.data?i(Wi,{stats:o.data}):null})]})})]}),n(R,{children:[i(B,{children:i(`strong`,{children:`Recent backups`})}),i(z,{children:a.loading&&!a.data?i(q,{size:`sm`}):a.error?i(K,{color:`danger`,className:`mb-0`,children:a.error}):a.data&&a.data.backups.length>0?i(`ul`,{className:`list-unstyled mb-0`,children:a.data.backups.slice(0,5).map(e=>n(`li`,{className:`d-flex justify-content-between border-bottom py-2`,children:[n(`span`,{children:[i(L,{color:`light`,className:`text-dark me-2`,children:e.type}),Q(e.createdAt)]}),i(`code`,{className:`text-muted small`,children:e.id.slice(0,12)})]},e.id))}):i(`p`,{className:`text-muted mb-0`,children:`No backups yet.`})})]})]})}function qi({backup:e,sourceEntry:t,sourcePath:a,pathMapping:o,onClose:s,onSubmitted:c}){let[u,d]=l(`original`),[f,p]=l(``),[m,h]=l(!1),[g,_]=l(null),[v,y]=l(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)),c()}catch(e){e instanceof Bi?y(e.conflict):_(e instanceof Error?e.message:String(e))}finally{h(!1)}},S=m||u===`custom`&&f.trim().length===0;return n(lr,{isOpen:!0,toggle:m?void 0:s,size:`md`,backdrop:`static`,children:[n(hr,{toggle:m?void 0:s,children:[`Restore `,t.isDir?`directory`:`file`]}),n(xr,{children:[n(`div`,{className:`mb-3 small text-muted`,children:[`Source:`,` `,n(`code`,{children:[a,t.isDir?`/`:``]}),` `,`(`,Z(t.size),`)`]}),n(H,{tag:`fieldset`,disabled:m,children:[i(`legend`,{className:`h6`,children:`Restore target`}),i(H,{check:!0,children:n(G,{check:!0,children:[i(U,{type:`radio`,name:`partial-restore-mode`,checked:u===`original`,onChange:()=>{d(`original`),y(null)}}),` `,`Original location (under SignalK config root)`]})}),i(H,{check:!0,children:n(G,{check:!0,children:[i(U,{type:`radio`,name:`partial-restore-mode`,checked:u===`custom`,onChange:()=>{d(`custom`),y(null)}}),` `,`Custom path (anywhere the SignalK user can write)`]})}),u===`custom`&&n(H,{className:`mt-2`,children:[i(G,{for:`partial-restore-custom-path`,children:`Custom path`}),i(U,{id:`partial-restore-custom-path`,value:f,onChange:e=>{p(e.target.value),y(null)},placeholder:`e.g. /tmp/restored or /media/usb/backups/`}),i(`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&&n(K,{color:`warning`,className:`mt-3 mb-0`,children:[i(`div`,{className:`fw-semibold`,children:`Target already exists`}),i(`div`,{className:`small mb-2`,children:i(`code`,{children:Hi(v.targetPath,o)})}),n(`div`,{className:`small`,children:[n(`div`,{children:[`Existing size: `,v.size==null?`unknown`:Z(v.size)]}),n(`div`,{children:[`Existing mtime: `,v.mtime?Q(v.mtime):`unknown`]}),n(`div`,{children:[`Snapshot entry size: `,Z(t.size)]}),n(`div`,{children:[`Snapshot entry mtime: `,t.mtime]})]}),n(`div`,{className:`mt-2 d-flex gap-2`,children:[i(N,{color:`danger`,size:`sm`,disabled:m,onClick:()=>void x(!0),children:m?i(q,{size:`sm`}):`Overwrite`}),i(N,{color:`secondary`,outline:!0,size:`sm`,disabled:m,onClick:()=>{y(null)},children:`Cancel`})]})]}),g&&i(K,{color:`danger`,className:`mt-3 mb-0`,children:g})]}),n(Dr,{children:[i(N,{color:`secondary`,outline:!0,disabled:m,onClick:s,children:`Cancel`}),i(N,{color:`primary`,disabled:S||v!==null,onClick:()=>void x(!1),children:m?n(r,{children:[i(q,{size:`sm`}),` Starting…`]}):`Restore`})]})]})}function Ji(e,t){return e?`${e}/${t}`:t}function Yi({backup:e,isOpen:t,onClose:o,initialPath:s,restoreLocked:d,pathMapping:f,onRestoreStarted:p}){let m=(s??``).replace(/^\/+|\/+$/g,``),[h,g]=l({}),[_,v]=l(()=>new Set([m])),[y,b]=l(null),x=a(0);u(()=>{t&&(x.current+=1,g({}),v(new Set([m])),b(null))},[t,e.id,m]);let S=c(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 Vi?e.code??null:null;g(e=>({...e,[t]:{entries:null,error:r,errorCode:i}}))}},[e.id]);return u(()=>{t&&h[m]===void 0&&S(m)},[t,m,h,S]),n(lr,{isOpen:t,toggle:o,size:`lg`,scrollable:!0,children:[n(hr,{toggle:o,children:[`Browse backup `,i(`code`,{className:`small ms-1`,children:e.id.slice(0,12)})]}),n(xr,{children:[i(`div`,{className:`text-muted small mb-2`,children:m?n(r,{children:[`Scoped to `,n(`code`,{children:[m,`/`]})]}):i(r,{children:`Showing snapshot root`})}),i(Xi,{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})}})]}),i(Dr,{children:i(N,{color:`secondary`,outline:!0,onClick:o,children:`Close`})}),y&&i(qi,{backup:e,sourceEntry:y,sourcePath:y.fullPath,pathMapping:f,onClose:()=>{b(null)},onSubmitted:()=>{b(null),p?.()}})]})}function Xi({backupId:e,path:t,rootPath:r,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 n(`div`,{className:`ps-3 py-1`,children:[i(q,{size:`sm`}),` Loading…`]});if(f.error)return f.errorCode===`ENTRY_NOT_FOUND`&&a===0&&t===r&&r!==``?n(`div`,{className:`ps-3 py-3 text-muted small`,children:[i(`div`,{children:`This backup doesn’t contain any files at this path.`}),n(`div`,{className:`mt-1`,children:[`The subtree `,n(`code`,{children:[r,`/`]}),` may not have existed when this snapshot was taken.`]})]}):n(`div`,{className:`ps-3 py-1`,children:[i(K,{color:`danger`,className:`mb-1 py-1 small`,children:f.error}),i(N,{size:`sm`,color:`secondary`,outline:!0,onClick:()=>void u(t),children:`Retry`})]});let p=f.entries??[];if(p.length===0)return i(`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 i(`ul`,{className:`list-unstyled mb-0`,style:{marginLeft:a===0?0:`1rem`},children:m.map(f=>{let p=Ji(t,f.name),m=f.isDir&&s.has(p);return n(`li`,{className:`py-1`,children:[n(`div`,{className:`d-flex align-items-center gap-2 flex-wrap`,children:[f.isDir?i(N,{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?`▾`:`▸`}):i(`span`,{"aria-hidden":`true`,style:{minWidth:`1.2em`,display:`inline-block`}}),n(`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&&i(`span`,{className:`text-muted small`,children:Z(f.size)}),n(`span`,{className:`ms-auto`,children:[n(`a`,{href:X.downloadSubtreeUrl(e,p),className:`btn btn-outline-secondary btn-sm me-1`,download:!0,children:[`Download`,f.isDir&&i(L,{color:`light`,className:`text-dark ms-1`,children:`ZIP`})]}),i(N,{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&&i(Xi,{backupId:e,path:p,rootPath:r,depth:a+1,cache:o,expanded:s,restoreLocked:c,onToggle:l,onRetry:u,onStartRestore:d})]},f.name)})})}var Zi=new Set([`preparing`,`safety_snapshotting`,`extracting`,`verifying`,`rolling_back`]),Qi=new Set([`preparing`,`streaming`,`extracting`,`rolling_back`]);function $i(e){return Zi.has(e)||Qi.has(e)}function ea({status:e,title:t,pathMapping:a,mapTargetPath:o=!0,onReset:s}){if(e.state===`idle`)return null;let c=$i(e.state),l=e.state===`failed`||e.state===`rolled_back`,u=e.state===`completed`,d=o?Hi(e.targetPath,a):e.targetPath;return n(K,{color:l?`danger`:u?`success`:`info`,className:`d-flex flex-column gap-2`,children:[n(`div`,{className:`d-flex justify-content-between align-items-start`,children:[n(`div`,{children:[n(`strong`,{children:[t??`Partial restore`,`: `,e.state]}),i(`div`,{className:`small`,children:e.statusMessage}),e.sourcePath&&n(`div`,{className:`small text-muted`,children:[`source `,i(`code`,{children:e.sourcePath}),d&&n(r,{children:[` `,`→ target `,i(`code`,{children:d})]})]}),e.error&&n(`div`,{className:`small text-danger`,children:[`Error: `,e.error]})]}),!c&&i(N,{size:`sm`,outline:!0,color:l?`danger`:`success`,onClick:s,children:`Dismiss`})]}),c&&i(An,{animated:!0,striped:!0,value:e.progress,max:100,color:l?`danger`:`info`,children:e.progress>0?`${e.progress.toFixed(0)}%`:``})]})}var ta=new Set([`preparing`,`extracting`,`installing`,`restarting`,`verifying`,`rolling_back`]);function na({status:e,onReset:t}){if(e.state===`idle`)return null;let r=ta.has(e.state),a=e.state===`failed`||e.state===`rolled_back`,o=e.state===`completed`;return n(K,{color:a?`danger`:o?`success`:`info`,className:`d-flex flex-column gap-2`,children:[n(`div`,{className:`d-flex justify-content-between align-items-start`,children:[n(`div`,{children:[n(`strong`,{children:[`Restore: `,e.state]}),i(`div`,{className:`small`,children:e.statusMessage}),e.error&&n(`div`,{className:`small text-danger`,children:[`Error: `,e.error]})]}),!r&&i(N,{size:`sm`,outline:!0,color:a?`danger`:`success`,onClick:t,children:`Dismiss`})]}),r&&i(An,{animated:!0,striped:!0,value:e.progress,max:100,color:a?`danger`:`info`,children:e.progress>0?`${e.progress.toFixed(0)}%`:``})]})}function ra(){let e=$(()=>X.listBackups(),{intervalMs:3e4}),t=$(()=>X.restoreStatus(),{intervalMs:2e3}),o=$(()=>X.restorePartialStatus(),{intervalMs:2e3}),s=$(()=>X.restorePartialHostStatus(),{intervalMs:2e3}),c=$(()=>X.pluginStatus(),{intervalMs:6e4}),[u,d]=l(``),[f,p]=l(!1),[m,h]=l(null),[g,_]=l(null),[v,y]=l(null),[b,x]=l(null),S=a(null),[C,w]=l(``),[T,E]=l(!1),[D,O]=l(null),ee=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)}},te=async()=>{let t=S.current?.files?.[0];if(!t){O(`Select a file first.`);return}E(!0),O(null);try{await X.uploadBackup(t,C.trim()||void 0),w(``),S.current&&(S.current.value=``),e.refresh()}catch(e){O(e instanceof Error?e.message:String(e))}finally{E(!1)}},ne=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)}}},re=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)}}},ie=async()=>{try{await X.resetRestoreState(),t.refresh()}catch(e){window.alert(`Reset failed: ${e instanceof Error?e.message:String(e)}`)}},ae=async()=>{try{await X.resetRestorePartialState(),o.refresh()}catch(e){window.alert(`Reset failed: ${e instanceof Error?e.message:String(e)}`)}},oe=async()=>{try{await X.resetRestorePartialHostState(),s.refresh()}catch(e){window.alert(`Reset failed: ${e instanceof Error?e.message:String(e)}`)}},se=e.data?.backups??[],k=t.data?ta.has(t.data.state):!1,ce=o.data?Zi.has(o.data.state):!1,le=s.data?Qi.has(s.data.state):!1,ue=k||ce||le||v!==null;return n(r,{children:[i(`h2`,{className:`mb-3`,children:`Backups`}),t.data&&i(na,{status:t.data,onReset:()=>void ie()}),o.data&&i(ea,{status:o.data,pathMapping:c.data?.pathMapping,onReset:()=>void ae()}),s.data&&i(ea,{status:s.data,title:`Host restore`,pathMapping:c.data?.pathMapping,mapTargetPath:!1,onReset:()=>void oe()}),n(j,{className:`mb-3`,children:[i(M,{xs:12,md:6,children:n(R,{children:[i(B,{children:i(`strong`,{children:`Create new backup`})}),i(z,{children:n(Xr,{onSubmit:e=>{e.preventDefault(),ee()},children:[n(H,{children:[i(G,{for:`backup-description`,children:`Description (optional)`}),i(U,{id:`backup-description`,value:u,onChange:e=>{d(e.target.value)},placeholder:`e.g. before plugin upgrade`,disabled:f})]}),i(N,{color:`primary`,type:`submit`,disabled:f,children:f?n(r,{children:[i(q,{size:`sm`}),` Creating…`]}):`Create backup`}),m&&i(K,{color:`danger`,className:`mt-3 mb-0`,children:m})]})})]})}),i(M,{xs:12,md:6,children:n(R,{children:[i(B,{children:i(`strong`,{children:`Upload backup`})}),i(z,{children:n(Xr,{onSubmit:e=>{e.preventDefault(),te()},children:[n(H,{children:[i(G,{for:`backup-upload-file`,children:`Backup ZIP file`}),i(U,{id:`backup-upload-file`,type:`file`,accept:`.zip,application/zip`,innerRef:S,disabled:T})]}),n(H,{children:[i(G,{for:`backup-upload-description`,children:`Description (optional)`}),i(U,{id:`backup-upload-description`,value:C,onChange:e=>{w(e.target.value)},placeholder:`e.g. recovered from external drive`,disabled:T})]}),i(N,{color:`primary`,type:`submit`,disabled:T,children:T?n(r,{children:[i(q,{size:`sm`}),` Uploading…`]}):`Upload`}),D&&i(K,{color:`danger`,className:`mt-3 mb-0`,children:D})]})})]})})]}),n(R,{children:[n(B,{className:`d-flex justify-content-between align-items-center`,children:[n(`strong`,{children:[`All backups (`,se.length,`)`]}),i(N,{color:`secondary`,outline:!0,size:`sm`,onClick:e.refresh,disabled:e.loading,children:`Refresh`})]}),i(z,{className:`p-0`,children:e.loading&&!e.data?i(`div`,{className:`text-center py-3`,children:i(q,{size:`sm`})}):e.error?i(K,{color:`danger`,className:`m-3 mb-0`,children:e.error}):se.length===0?i(`p`,{className:`text-muted m-3 mb-0`,children:`No backups yet. Create one above, or wait for the scheduler.`}):n(Nr,{responsive:!0,striped:!0,className:`mb-0`,children:[i(`thead`,{children:n(`tr`,{children:[i(`th`,{children:`Type`}),i(`th`,{children:`Created`}),i(`th`,{children:`Size`}),i(`th`,{children:`Description`}),i(`th`,{children:`ID`}),i(`th`,{className:`text-end`,children:`Actions`})]})}),i(`tbody`,{children:se.map(e=>n(`tr`,{children:[i(`td`,{children:i(L,{color:`light`,className:`text-dark`,children:e.type})}),i(`td`,{children:Q(e.createdAt)}),i(`td`,{children:Z(e.size)}),i(`td`,{className:`text-muted`,children:e.description??``}),i(`td`,{children:i(`code`,{className:`small`,children:e.id.slice(0,12)})}),n(`td`,{className:`text-end`,children:[i(`a`,{href:X.downloadUrl(e.id),className:`btn btn-outline-secondary btn-sm me-1`,download:!0,children:`Download`}),i(N,{color:`info`,outline:!0,size:`sm`,className:`me-1`,onClick:()=>{x(e)},children:`Browse…`}),i(N,{color:`warning`,outline:!0,size:`sm`,className:`me-1`,disabled:ue,onClick:()=>void re(e),children:v===e.id?i(q,{size:`sm`}):`Restore`}),i(N,{color:`danger`,outline:!0,size:`sm`,disabled:ue||g===e.id,onClick:()=>void ne(e),children:g===e.id?i(q,{size:`sm`}):`Delete`})]})]},e.id))})]})})]}),b&&i(Yi,{backup:b,isOpen:!0,restoreLocked:ue,pathMapping:c.data?.pathMapping,onClose:()=>{x(null)},onRestoreStarted:()=>{o.refresh(),s.refresh()}})]})}var ia=1024*1024;function aa(e){return`${(e/ia).toFixed(1)} MB`}function oa(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 sa(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`?` (${aa(a)})`:``}`}:typeof a==`number`?{phase:`bytes-only`,percent:100,label:`Syncing… ${aa(a)} transferred so far`}:{phase:`elapsed-only`,percent:100,label:`Syncing… (elapsed ${oa(t===null?0:Math.max(0,n-t))})`}}function ca({syncProgress:e,startedAt:t,now:r}){let a=sa(e,t,r),o=a.phase===`determinate`;return n(`div`,{className:`mb-3`,children:[i(`div`,{className:`small text-body mb-1`,children:a.label}),i(An,{animated:!o,striped:!o,value:a.percent,max:100,color:`info`})]})}function la(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 ua(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 da({onConfigured:e,onError:t}){let[r,a]=l(null),[o,s]=l(!1),[c,d]=l(``),[f,p]=l(``),[m,h]=l(!1),g=async()=>{s(!0);try{let{candidates:e}=await X.localDiscover();a(e);let t=c&&e.some(e=>e.containerPath===c&&e.writable!==!1);if(c&&!t&&d(``),(!c||!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)}};u(()=>{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 n(`div`,{children:[n(H,{children:[i(G,{for:`local-candidate`,children:`Pick a drive or mounted folder`}),n(`div`,{className:`d-flex gap-2`,children:[n(U,{id:`local-candidate`,type:`select`,value:c,disabled:o||m,onChange:e=>{d(e.target.value)},children:[i(`option`,{value:``,children:`— select —`}),(r??[]).map(e=>{let t=e.freeBytes!=null&&e.totalBytes!=null?` (${la(e.freeBytes)} free of ${la(e.totalBytes)})`:``,r=e.writable===!1?` — not writable`:``;return n(`option`,{value:e.containerPath,disabled:e.writable===!1,children:[e.hostPath,t,r]},e.containerPath)})]}),i(N,{color:`secondary`,outline:!0,disabled:o||m,onClick:()=>void g(),title:`Re-scan /media and /mnt`,children:o?i(q,{size:`sm`}):`Re-scan`})]})]}),r!==null&&r.length===0&&n(K,{color:`warning`,className:`mt-2 mb-2`,children:[`No candidates found. Plug in a USB drive (and mount it under`,i(`code`,{children:` /media`}),`), or mount a network share under `,i(`code`,{children:`/mnt`}),`on the host, then click `,i(`strong`,{children:`Re-scan`}),`.`]}),i(N,{color:`primary`,disabled:!c||m,onClick:()=>{let e=r?.find(e=>e.containerPath===c);e&&_(e.containerPath,e.hostPath)},className:`me-2`,children:m?i(q,{size:`sm`}):`Use this`}),i(`hr`,{className:`my-3`}),n(H,{children:[i(G,{for:`manual-path`,children:`Or type a host path manually`}),n(`div`,{className:`d-flex gap-2`,children:[i(U,{id:`manual-path`,type:`text`,placeholder:`/media/dirk/USB-SSD or /mnt/nfs-share`,value:f,disabled:m,onChange:e=>{p(e.target.value)}}),i(N,{color:`secondary`,disabled:!f.trim()||m,onClick:()=>{let e=f.trim();if(!e)return;let n=ua(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`})]}),n(`small`,{className:`text-muted`,children:[`Enter the path the way you see it on the host — `,i(`code`,{children:`/media/...`}),` for plugged-in USB drives, `,i(`code`,{children:`/mnt/...`}),` for network shares mounted by the system. Inside the backup engine these are remapped to `,i(`code`,{children:`/host-media/...`}),` and `,i(`code`,{children:`/host-mnt/...`}),`, but you don't need to type that yourself.`]})]})]})}function fa({onConnected:e,onError:t}){let[r,a]=l(null),[o,s]=l(!1),[c,d]=l(!1),[f,p]=l(``),[m,h]=l(``),[g,_]=l(``),[v,y]=l(``),[b,x]=l(``),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)}};u(()=>{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 n(`form`,{onSubmit:e=>void C(e),children:[n(K,{color:`warning`,className:`mb-3 small`,children:[i(`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.`]}),n(H,{children:[i(G,{for:`smb-host`,children:`Host`}),n(`div`,{className:`d-flex gap-2`,children:[i(U,{id:`smb-host`,type:`text`,placeholder:`synology.local or 192.168.1.50`,value:f,disabled:c,onChange:e=>{p(e.target.value)},list:`smb-discovered-hosts`,required:!0}),i(N,{color:`secondary`,outline:!0,type:`button`,disabled:o||c,onClick:()=>void S(),title:`Re-scan _smb._tcp.local on the LAN`,children:o?i(q,{size:`sm`}):`Scan LAN`})]}),r!==null&&r.length>0&&i(`datalist`,{id:`smb-discovered-hosts`,children:r.map(e=>i(`option`,{value:e.address,children:e.name},e.address))}),r!==null&&r.length===0&&!o&&i(`small`,{className:`text-muted`,children:`No SMB devices announced on the LAN — type the host manually.`})]}),n(H,{children:[i(G,{for:`smb-share`,children:`Share`}),i(U,{id:`smb-share`,type:`text`,placeholder:`backups`,value:m,disabled:c,onChange:e=>{h(e.target.value)},required:!0})]}),n(H,{children:[i(G,{for:`smb-user`,children:`Username`}),i(U,{id:`smb-user`,type:`text`,autoComplete:`off`,value:g,disabled:c,onChange:e=>{_(e.target.value)}})]}),n(H,{children:[i(G,{for:`smb-password`,children:`Password`}),i(U,{id:`smb-password`,type:`password`,autoComplete:`new-password`,value:v,disabled:c,onChange:e=>{y(e.target.value)}}),i(`small`,{className:`text-muted`,children:`Leave Username and Password empty for guest / anonymous shares.`})]}),n(H,{children:[i(G,{for:`smb-domain`,children:`Domain (optional)`}),i(U,{id:`smb-domain`,type:`text`,placeholder:`WORKGROUP`,value:b,disabled:c,onChange:e=>{x(e.target.value)}})]}),i(N,{color:`primary`,type:`submit`,disabled:c,children:c?i(q,{size:`sm`}):`Connect`})]})}function pa(e){switch(e){case`gdrive`:return`Drive`;case`local`:return`Local destination`;case`smb`:return`SMB share`}}function ma({status:e}){let t=e.provider===`local`||e.provider===`smb`;return n(`div`,{className:`mb-2 d-flex gap-2 flex-wrap`,children:[i(L,{color:e.connected?`success`:`secondary`,children:e.connected?`Active: ${pa(e.provider)}`:`${pa(e.provider)} not configured`}),e.syncing&&i(L,{color:`info`,children:`Syncing`}),!t&&e.internetAvailable===!1&&i(L,{color:`warning`,children:`Offline`})]})}function ha({onDone:e,onError:t}){let[r,o]=l(!1),[s,c]=l(!1),[d,f]=l(``),[p,m]=l(!1),h=a(0),g=a(void 0),_=a(null),v=a(!1),y=()=>{g.current&&=(clearInterval(g.current),void 0),o(!1)};u(()=>()=>{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:c(!0),o(!0),h.current=Date.now(),g.current=setInterval(()=>{(async()=>{try{let n=await X.gdriveAuthState();n.state===`completed`?(y(),v.current=!1,c(!1),f(``),e()):n.state===`failed`?(y(),v.current=!1,c(!1),t(n.error??`Authorization failed`)):Date.now()-h.current>15e3&&c(!0)}catch{}})()},2e3)}catch(e){_.current?.close(),v.current=!1,t(e instanceof Error?e.message:String(e))}}},x=async()=>{y(),v.current=!1,c(!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 r?n(`div`,{children:[n(`div`,{className:`d-flex align-items-center gap-2 mb-3`,children:[i(q,{size:`sm`}),i(`span`,{children:`Waiting for Google authorization…`}),i(N,{color:`secondary`,outline:!0,size:`sm`,onClick:()=>void x(),children:`Cancel`})]}),s&&n(K,{color:`info`,className:`mb-0`,children:[i(`p`,{className:`mb-2`,children:i(`strong`,{children:`Browser on a different machine than this server?`})}),n(`p`,{className:`small mb-2`,children:[`After granting access in Google, your browser is redirected to a URL starting with`,i(`code`,{children:` http://127.0.0.1:53682/`}),`. Copy that whole URL from your browser's address bar and paste it here.`]}),n(H,{children:[i(G,{for:`callback-url`,children:`Callback URL`}),i(U,{id:`callback-url`,type:`text`,value:d,onChange:e=>{f(e.target.value)},placeholder:`http://127.0.0.1:53682/?code=...`,disabled:p})]}),i(N,{color:`primary`,size:`sm`,disabled:p||!d.trim(),onClick:()=>void S(),children:p?i(q,{size:`sm`}):`Submit callback`})]})]}):i(N,{color:`primary`,onClick:()=>void b(),children:`Connect Google Drive`})}function ga(){let[e,t]=l(5e3),a=$(()=>X.cloudStatus(),{intervalMs:e}),o=$(()=>X.localStatus(),{intervalMs:5e3}),s=$(()=>X.smbStatus(),{intervalMs:5e3}),[c,d]=l(null);u(()=>{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]=l(null),[m,h]=l(null),[g,_]=l(null),[v,y]=l(!1),[b,x]=l(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();break}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)}},E=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)}},D=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 n(r,{children:[i(`h2`,{className:`mb-3`,children:`Cloud sync`}),f&&i(K,{color:`danger`,toggle:()=>{p(null)},children:f}),m&&i(K,{color:`success`,toggle:()=>{h(null)},children:m}),n(R,{className:`mb-3`,children:[i(B,{children:i(`strong`,{children:`Destination`})}),i(z,{children:a.loading&&!a.data?i(q,{size:`sm`}):a.error?i(K,{color:`danger`,className:`mb-0`,children:a.error}):a.data?n(r,{children:[i(ma,{status:a.data}),n(H,{className:`mb-3`,children:[i(G,{for:`provider-select`,children:`Where backups go`}),n(U,{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:[i(`option`,{value:`gdrive`,children:`Google Drive`}),i(`option`,{value:`local`,children:`Local drive / mounted folder`}),i(`option`,{value:`smb`,children:`SMB share`})]})]}),S===`gdrive`&&n(r,{children:[a.data.email&&n(`p`,{className:`text-muted small mb-2`,children:[`Account: `,a.data.email]}),a.data.connected?i(r,{children:v?n(`div`,{className:`d-flex gap-2 align-items-center`,children:[i(`span`,{children:`Really disconnect?`}),i(N,{color:`danger`,size:`sm`,disabled:g===`disconnect`,onClick:()=>void E(),children:g===`disconnect`?i(q,{size:`sm`}):`Disconnect`}),i(N,{color:`secondary`,outline:!0,size:`sm`,onClick:()=>{y(!1)},children:`Cancel`})]}):i(N,{color:`danger`,outline:!0,onClick:()=>{y(!0)},children:`Disconnect`})}):i(ha,{onDone:()=>{a.refresh(),h(`Google Drive connected`)},onError:p})]}),S===`local`&&n(r,{children:[o.error&&n(K,{color:`danger`,className:`mb-2`,children:[`Failed to read local destination status: `,o.error]}),o.data?.connected?n(r,{children:[n(`p`,{className:`text-muted small mb-2`,children:[`Backing up to `,i(`code`,{children:o.data.hostPath??o.data.containerPath}),o.data.freeBytes!=null&&n(r,{children:[` — `,Math.round(o.data.freeBytes/1e9),` GB free`]})]}),i(N,{color:`danger`,outline:!0,disabled:g!==null,onClick:()=>void C(),children:g===`switch`?i(q,{size:`sm`}):`Switch back to Google Drive`})]}):n(r,{children:[o.data?.error&&i(K,{color:`warning`,className:`mb-2`,children:o.data.error}),i(da,{onConfigured:()=>{x(null),a.refresh(),o.refresh(),h(`Local destination configured`)},onError:p})]})]}),S===`smb`&&n(r,{children:[s.error&&n(K,{color:`danger`,className:`mb-2`,children:[`Failed to read SMB status: `,s.error]}),s.data?.connected?n(r,{children:[n(`p`,{className:`text-muted small mb-2`,children:[`Backing up to`,` `,n(`code`,{children:[`\\\\`,s.data.host??`?`,`\\`,s.data.share??`?`]}),` `,`as `,i(`code`,{children:s.data.user??`?`})]}),i(N,{color:`danger`,outline:!0,disabled:g!==null,onClick:()=>void C(),children:g===`switch`?i(q,{size:`sm`}):`Switch back to Google Drive`})]}):i(fa,{onConnected:()=>{x(null),a.refresh(),s.refresh(),h(`SMB share connected`)},onError:p})]})]}):null})]}),a.data?.connected&&n(R,{className:`mb-3`,children:[i(B,{children:i(`strong`,{children:`Sync`})}),n(z,{children:[n(j,{className:`g-3 mb-3`,children:[i(M,{xs:12,md:6,children:n(H,{children:[i(G,{for:`sync-mode`,children:`Sync mode`}),n(U,{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`),D(n)},children:[i(`option`,{value:`manual`,children:`Manual only`}),i(`option`,{value:`after_backup`,children:`After every backup`}),i(`option`,{value:`scheduled`,children:`On a schedule`})]})]})}),a.data.syncMode===`scheduled`&&i(M,{xs:12,md:6,children:n(H,{children:[i(G,{for:`sync-frequency`,children:`Schedule`}),n(U,{id:`sync-frequency`,type:`select`,value:a.data.syncFrequency??`daily`,disabled:g===`config`,onChange:e=>{D({syncFrequency:e.target.value})},children:[i(`option`,{value:`daily`,children:`Daily`}),i(`option`,{value:`weekly`,children:`Weekly`})]})]})})]}),a.data.syncing&&i(ca,{syncProgress:a.data.syncProgress,startedAt:c}),i(`div`,{className:`d-flex gap-2 align-items-center mb-3`,children:a.data.syncing?i(N,{color:`warning`,outline:!0,disabled:g===`cancel`,onClick:()=>void T(),children:g===`cancel`?i(q,{size:`sm`}):`Cancel sync`}):i(N,{color:`primary`,disabled:g===`sync`,onClick:()=>void w(),children:g===`sync`?i(q,{size:`sm`}):`Sync now`})}),n(`dl`,{className:`row mb-0`,children:[i(`dt`,{className:`col-sm-3`,children:`Last sync`}),i(`dd`,{className:`col-sm-9`,children:Q(a.data.lastSync)}),a.data.lastSyncError&&n(r,{children:[i(`dt`,{className:`col-sm-3`,children:`Last error`}),i(`dd`,{className:`col-sm-9 text-danger`,children:a.data.lastSyncError})]})]})]})]})]})}var _a=`plugin-config-data/signalk-backup/database-exports`,va=new Set([`preparing`,`extracting`,`installing`,`restarting`,`verifying`,`rolling_back`]);function ya(){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}),c=$(()=>X.restorePartialHostStatus(),{intervalMs:2e3}),[u,d]=l(null),[f,p]=l(``),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(),c.refresh()}catch(e){window.alert(`Reset failed: ${e instanceof Error?e.message:String(e)}`)}},y=o.data?va.has(o.data.state):!1,b=s.data?Zi.has(s.data.state):!1,x=c.data?Qi.has(c.data.state):!1,S=y||b||x;return n(r,{children:[i(`h2`,{className:`mb-3`,children:`Database exports`}),s.data&&i(ea,{status:s.data,pathMapping:a.data?.pathMapping,onReset:()=>void _()}),c.data&&i(ea,{status:c.data,title:`Host restore`,pathMapping:a.data?.pathMapping,mapTargetPath:!1,onReset:()=>void v()}),i(`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).`}),n(R,{className:`mb-3`,children:[n(B,{children:[i(`strong`,{children:`Extract from a historical backup`}),` `,n(L,{color:`light`,className:`text-dark ms-1`,children:[`Browser scoped to `,_a]})]}),n(z,{children:[i(`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?i(q,{size:`sm`}):t.error?i(K,{color:`danger`,className:`mb-0`,children:t.error}):h.length===0?i(`p`,{className:`text-muted mb-0`,children:`No backups yet. Once the scheduler runs (or you create a manual one), it will appear here.`}):n(`div`,{className:`d-flex gap-2 align-items-end flex-wrap`,children:[n(`div`,{style:{minWidth:`20rem`,flex:`1 1 20rem`},children:[i(G,{for:`db-export-backup-picker`,children:`Backup`}),n(U,{id:`db-export-backup-picker`,type:`select`,value:f,onChange:e=>{p(e.target.value)},children:[i(`option`,{value:``,children:`— select a backup —`}),h.map(e=>n(`option`,{value:e.id,children:[Q(e.createdAt),` · `,e.type,` · `,e.id.slice(0,12)]},e.id))]})]}),i(N,{color:`primary`,disabled:!f,onClick:g,children:`Open browser`})]})]})]}),n(R,{children:[n(B,{className:`d-flex justify-content-between align-items-center`,children:[n(`strong`,{children:[`Live staging (`,m.length,`)`]}),i(N,{color:`secondary`,outline:!0,size:`sm`,onClick:e.refresh,disabled:e.loading,children:`Refresh`})]}),n(z,{className:`p-0`,children:[e.loading&&!e.data?i(`div`,{className:`text-center py-3`,children:i(q,{size:`sm`})}):e.error?i(K,{color:`danger`,className:`m-3 mb-0`,children:e.error}):m.length===0?i(`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.`}):n(Nr,{responsive:!0,striped:!0,className:`mb-0`,children:[i(`thead`,{children:n(`tr`,{children:[i(`th`,{children:`Path`}),i(`th`,{children:`Size`}),i(`th`,{children:`Modified`}),i(`th`,{className:`text-end`,children:`Actions`})]})}),i(`tbody`,{children:m.map(e=>n(`tr`,{children:[i(`td`,{children:i(`code`,{className:`small`,children:e.path})}),i(`td`,{children:Z(e.size)}),i(`td`,{className:`small text-muted`,children:Q(e.mtime)}),i(`td`,{className:`text-end`,children:i(`a`,{href:X.stagingDownloadUrl(e.path),className:`btn btn-outline-secondary btn-sm`,download:!0,children:`Download`})})]},e.path))})]}),e.data?.stagingRoot&&n(`div`,{className:`px-3 py-2 small text-muted border-top`,children:[`Staging root: `,i(`code`,{children:e.data.stagingRoot})]})]})]}),u&&i(Yi,{backup:u,isOpen:!0,initialPath:_a,pathMapping:a.data?.pathMapping,restoreLocked:S,onClose:()=>{d(null)},onRestoreStarted:()=>{s.refresh(),c.refresh()}})]})}function ba(){let e=$(()=>X.scheduler(),{intervalMs:15e3}),[t,a]=l(!1),[o,s]=l(null),c=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 n(R,{className:`mb-3`,children:[i(B,{children:i(`strong`,{children:`Scheduler`})}),i(z,{children:e.loading&&!e.data?i(q,{size:`sm`}):e.error?i(K,{color:`danger`,className:`mb-0`,children:e.error}):e.data?n(r,{children:[i(`div`,{className:`mb-2`,children:i(L,{color:e.data.enabled?`success`:`secondary`,children:e.data.enabled?`Running`:`Stopped`})}),i(`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?i(N,{color:`warning`,outline:!0,disabled:t,onClick:()=>void c(!1),children:t?i(q,{size:`sm`}):`Stop scheduler`}):i(N,{color:`primary`,disabled:t,onClick:()=>void c(!0),children:t?i(q,{size:`sm`}):`Start scheduler`}),o&&i(K,{color:`danger`,className:`mt-2 mb-0`,children:o})]}):null})]})}function xa(e){let{rows:t,isExcluded:r,toggle:a,stripPrefix:o,showNote:s}=e;return t.length===0?null:n(Nr,{responsive:!0,striped:!0,size:`sm`,className:`mb-2`,children:[i(`thead`,{children:n(`tr`,{children:[i(`th`,{style:{width:`4em`},children:`Include`}),i(`th`,{children:`Directory`}),i(`th`,{style:{width:`7em`},children:`Size`}),s&&i(`th`,{children:`Note`})]})}),i(`tbody`,{children:t.map(e=>{let t=r(e.name,e.excluded),c=o&&e.name.startsWith(o)?e.name.slice(o.length):e.name;return n(`tr`,{children:[i(`td`,{children:i(U,{type:`checkbox`,checked:!t,disabled:e.locked,onChange:()=>{a(e.name,t,e.excluded)},"aria-label":`Include ${e.name}`})}),i(`td`,{children:i(`code`,{className:`small`,children:c})}),i(`td`,{children:Z(e.size)}),s&&i(`td`,{className:`text-muted small`,title:e.lockReason??``,children:e.lockReason?`🔒 ${e.lockReason}`:``})]},e.name)})})]})}function Sa(){let e=$(()=>X.dataDirs()),t=$(()=>X.pluginDataDirs()),a=$(()=>X.exclusions()),[o,c]=l({}),[d,f]=l(!1),[p,m]=l(null),[h,g]=l(null);u(()=>{c({})},[a.data,e.data,t.data]);let _=s(()=>(e.data??[]).filter(e=>e.name!==`plugin-config-data`).map(e=>({name:e.name,size:e.size,excluded:e.excluded})),[e.data]),v=s(()=>(t.data??[]).filter(e=>!e.lockedExcluded).map(e=>({name:`plugin-config-data/${e.name}/`,size:e.size,excluded:e.excluded})),[t.data]),y=s(()=>(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)=>o[e]??t,x=(e,t,n)=>{let r=!t;c(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(o).length>0;return n(R,{className:`mb-3`,children:[i(B,{children:i(`strong`,{children:`Backup exclusions`})}),i(z,{children:e.loading||t.loading||a.loading?i(q,{size:`sm`}):e.error||t.error||a.error?i(K,{color:`danger`,className:`mb-0`,children:e.error??t.error??a.error}):n(r,{children:[i(`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.`}),i(`h6`,{className:`mb-2`,children:`Top-level directories`}),i(xa,{rows:_,isExcluded:b,toggle:x}),n(`h6`,{className:`mt-4 mb-1`,children:[`Plugin data `,i(`code`,{className:`small text-muted`,children:`plugin-config-data/`})]}),i(`p`,{className:`text-muted small mb-2`,children:`Per-plugin state under your SignalK config root.`}),v.length>0&&n(r,{children:[i(`div`,{className:`small text-muted fw-bold mb-1`,children:`Editable`}),i(xa,{rows:v,isExcluded:b,toggle:x,stripPrefix:`plugin-config-data/`})]}),y.length>0&&n(r,{children:[i(`div`,{className:`small text-muted fw-bold mt-3 mb-1`,children:`Always excluded`}),i(xa,{rows:y,isExcluded:b,toggle:x,stripPrefix:`plugin-config-data/`,showNote:!0})]}),n(`div`,{className:`d-flex align-items-center gap-2`,children:[i(N,{color:`primary`,disabled:!C||d,onClick:()=>void S(),children:d?i(q,{size:`sm`}):`Save`}),C&&i(N,{color:`secondary`,outline:!0,disabled:d,onClick:()=>{c({})},children:`Discard changes`}),h&&!C&&i(`small`,{className:`text-success`,children:`Saved.`})]}),p&&i(K,{color:`danger`,className:`mt-2 mb-0`,children:p})]})})]})}function Ca(){let e=$(()=>X.passwordStatus(),{intervalMs:0}),[t,a]=l(!1),[o,s]=l(``),[c,u]=l(``),[d,f]=l(!1),[p,m]=l(null),[h,g]=l(null),[_,v]=l(!1),[y,b]=l(!1),[x,S]=l(!1),[C,w]=l(!1),T=async e=>{try{await navigator.clipboard.writeText(e),w(!0),setTimeout(()=>{w(!1)},1500)}catch{}},E=async()=>{if(m(null),g(null),o.length<8){m(`Password must be at least 8 characters.`);return}if(o!==c){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)}},D=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)}},O=e.data?.hasCustomPassword??!1;return n(R,{children:[i(B,{children:i(`strong`,{children:`Encryption password`})}),n(z,{children:[n(`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.`,` `,i(`strong`,{children:`Forgetting your custom password makes existing backups unreadable.`})]}),e.loading&&!e.data?i(q,{size:`sm`}):e.error?i(K,{color:`danger`,className:`mb-0`,children:e.error}):n(r,{children:[i(`div`,{className:`mb-3`,children:i(L,{color:O?`success`:`warning`,children:O?`Custom password set`:`Default password (publicly known)`})}),!t&&e.data?.password?(()=>{let t=e.data.password;return n(H,{children:[i(G,{for:`current-password`,children:`Current password`}),n(`div`,{className:`d-flex gap-2 align-items-center`,children:[i(U,{id:`current-password`,type:x?`text`:`password`,value:t,readOnly:!0,style:{fontFamily:`monospace`,maxWidth:`24rem`}}),i(N,{size:`sm`,color:`secondary`,outline:!0,onClick:()=>{S(e=>!e)},"aria-label":x?`Hide password`:`Show password`,children:x?`Hide`:`Show`}),i(N,{size:`sm`,color:`secondary`,outline:!0,onClick:()=>{T(t)},children:C?`Copied!`:`Copy`})]})]})})():null,t?n(Xr,{onSubmit:e=>{e.preventDefault(),E()},children:[n(H,{children:[i(G,{for:`new-password`,children:`New password`}),i(U,{id:`new-password`,type:`password`,value:o,onChange:e=>{s(e.target.value)},minLength:8,required:!0,disabled:d,autoComplete:`new-password`})]}),n(H,{children:[i(G,{for:`confirm-password`,children:`Confirm password`}),i(U,{id:`confirm-password`,type:`password`,value:c,onChange:e=>{u(e.target.value)},minLength:8,required:!0,disabled:d,autoComplete:`new-password`})]}),n(`div`,{className:`d-flex gap-2`,children:[i(N,{color:`primary`,type:`submit`,disabled:d,children:d?i(q,{size:`sm`}):`Save`}),i(N,{color:`secondary`,outline:!0,type:`button`,disabled:d,onClick:()=>{a(!1),s(``),u(``),m(null)},children:`Cancel`})]})]}):n(`div`,{className:`d-flex flex-wrap gap-2 align-items-center`,children:[i(N,{color:`primary`,onClick:()=>{a(!0),m(null),g(null)},children:O?`Change password`:`Set custom password`}),O&&(y?n(r,{children:[i(`span`,{children:`Reset to default?`}),i(N,{color:`warning`,size:`sm`,disabled:_,onClick:()=>void D(),children:_?i(q,{size:`sm`}):`Reset`}),i(N,{color:`secondary`,outline:!0,size:`sm`,disabled:_,onClick:()=>{b(!1)},children:`Cancel`})]}):i(N,{color:`warning`,outline:!0,onClick:()=>{b(!0)},children:`Reset to default`}))]}),p&&i(K,{color:`danger`,className:`mt-3 mb-0`,children:p}),h&&i(K,{color:`success`,className:`mt-3 mb-0`,toggle:()=>{g(null)},children:h})]})]})]})}function wa(){let e=$(()=>X.dbExportConfig(),{intervalMs:6e4}),[t,a]=l(!1),[o,s]=l(null),[c,d]=l(null),[f,p]=l(``);u(()=>{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 n(R,{className:`mb-3`,children:[i(B,{children:i(`strong`,{children:`Database export`})}),i(z,{children:e.loading&&!v?i(q,{size:`sm`}):e.error?i(K,{color:`danger`,className:`mb-0`,children:e.error}):v?n(r,{children:[i(`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.`}),n(H,{switch:!0,className:`mb-3`,children:[i(U,{id:`db-export-questdb`,type:`switch`,role:`switch`,checked:v.questdb,disabled:t,onChange:e=>void m(e.target.checked)}),i(G,{for:`db-export-questdb`,check:!0,children:`Export QuestDB tables to backup`})]}),n(H,{switch:!0,className:`mb-3`,children:[i(U,{id:`db-export-grafana`,type:`switch`,role:`switch`,checked:v.grafana,disabled:t,onChange:e=>void h(e.target.checked)}),i(G,{for:`db-export-grafana`,check:!0,children:`Export Grafana dashboards, provisioning, and SQLite checkpoint`})]}),n(H,{switch:!0,className:`mb-3`,children:[i(U,{id:`db-export-signalk-database`,type:`switch`,role:`switch`,checked:v.signalkDatabase,disabled:t,onChange:e=>void g(e.target.checked)}),i(G,{for:`db-export-signalk-database`,check:!0,children:`Export SignalK Database plugin DBs (VACUUM INTO per plugin)`})]}),n(H,{children:[i(G,{for:`db-export-interval`,children:`Export interval (minutes)`}),n(`div`,{className:`d-flex gap-2`,children:[i(U,{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`}}),i(N,{color:`primary`,disabled:t||!y,onClick:()=>void _(),children:t?i(q,{size:`sm`}):`Save`})]}),i(`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&&i(K,{color:`danger`,className:`mt-2 mb-0`,children:o}),c&&i(K,{color:`success`,className:`mt-2 mb-0`,children:c})]}):null})]})}function Ta(){let e=$(()=>X.retention(),{intervalMs:6e4}),[t,o]=l(!1),[s,c]=l(null),[d,f]=l(null),[p,m]=l({hourly:``,daily:``,weekly:``,startup:``}),[h,g]=l({hourly:``,daily:``,weekly:``,startup:``}),_=a(p),v=a(h);u(()=>{_.current=p},[p]),u(()=>{v.current=h},[h]),u(()=>{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()=>{c(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)){c(`${e} must be a whole number between 1 and 365`);return}let i=Number(n);if(i<1||i>365){c(`${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){c(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 n(R,{className:`mb-3`,children:[i(B,{children:i(`strong`,{children:`Retention`})}),i(z,{children:e.loading&&!e.data?i(q,{size:`sm`}):e.error?i(K,{color:`danger`,className:`mb-0`,children:e.error}):e.data?n(r,{children:[i(`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.`}),n(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=>n(H,{className:`mb-2`,children:[i(G,{for:`retention-${e.key}`,children:e.label}),n(`div`,{className:`d-flex gap-2 align-items-center`,children:[i(U,{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`}}),i(`small`,{className:`text-muted`,children:e.help})]})]},e.key)),i(N,{color:`primary`,type:`submit`,disabled:t||!b,className:`mt-2`,children:t?i(q,{size:`sm`}):`Save retention policy`})]}),s&&i(K,{color:`danger`,className:`mt-3 mb-0`,children:s}),d&&i(K,{color:`success`,className:`mt-3 mb-0`,children:d})]}):null})]})}function Ea(){return n(r,{children:[i(`h2`,{className:`mb-3`,children:`Settings`}),i(ba,{}),i(Ta,{}),i(Sa,{}),i(wa,{}),i(Ca,{})]})}var Da=[{id:`dashboard`,label:`Dashboard`},{id:`backups`,label:`Backups`},{id:`database-exports`,label:`Database exports`},{id:`cloud`,label:`Cloud sync`},{id:`settings`,label:`Settings`}];function Oa(){let[e,t]=l(`dashboard`);return n(De,{className:`py-4`,children:[n(`div`,{className:`d-flex align-items-center mb-4`,children:[i(`img`,{src:`/signalk-backup/icon.svg`,alt:``,width:40,height:40,className:`me-3`}),i(`h1`,{className:`mb-0`,children:`SignalK Backup`}),n(`small`,{className:`text-muted ms-3 align-self-end mb-2`,children:[`v`,`1.0.0`]})]}),i(Ze,{tabs:!0,className:`mb-3`,children:Da.map(n=>i(rt,{children:i(bt,{href:`#`,active:e===n.id,onClick:e=>{e.preventDefault(),t(n.id)},children:n.label})},n.id))}),e===`dashboard`&&i(Ki,{}),e===`backups`&&i(ra,{}),e===`database-exports`&&i(ya,{}),e===`cloud`&&i(ga,{}),e===`settings`&&i(Ea,{})]})}export{Oa as t};
|
|
3
|
-
//# sourceMappingURL=App-jHrc2yzu.js.map
|