@plutonhq/core-frontend 0.1.33 → 0.1.34

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.
@@ -2,7 +2,7 @@ import { jsxs as i, jsx as a } from "react/jsx-runtime";
2
2
  import d from "../../common/form/Input/Input.js";
3
3
  import o from "../../common/form/NumberInput/NumberInput.js";
4
4
  import l from "../EditDevice/EditDevice.module.scss.js";
5
- const h = ({ settings: e = {}, onUpdate: c }) => /* @__PURE__ */ i("div", { children: [
5
+ const n = ({ settings: e = {}, onUpdate: c }) => /* @__PURE__ */ i("div", { children: [
6
6
  /* @__PURE__ */ a("div", { className: l.field, children: /* @__PURE__ */ a(
7
7
  d,
8
8
  {
@@ -40,8 +40,8 @@ const h = ({ settings: e = {}, onUpdate: c }) => /* @__PURE__ */ i("div", { chil
40
40
  o,
41
41
  {
42
42
  label: "Packet Size (MB)",
43
- fieldValue: e != null && e.packSize ? parseInt(e.packSize.replace("MiB", ""), 10) : "",
44
- onUpdate: (r) => c({ ...e, packSize: r ? r + "MiB" : "" }),
43
+ fieldValue: e != null && e.packSize ? parseInt(e.packSize, 10) : "",
44
+ onUpdate: (r) => c({ ...e, packSize: r ? r.toString() : "" }),
45
45
  min: 0,
46
46
  max: 4e3,
47
47
  hint: "Packs are blobs of data, which are encrypted and stored in the repository. Increasing the pack size requires more disk space for temporary pack files to be created before uploading.",
@@ -50,6 +50,6 @@ const h = ({ settings: e = {}, onUpdate: c }) => /* @__PURE__ */ i("div", { chil
50
50
  ) })
51
51
  ] });
52
52
  export {
53
- h as default
53
+ n as default
54
54
  };
55
55
  //# sourceMappingURL=DeviceResticSettings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceResticSettings.js","sources":["../../../../src/components/Device/DeviceResticSettings/DeviceResticSettings.tsx"],"sourcesContent":["import { DeviceSettings } from '../../../@types/devices';\r\nimport Input from '../../common/form/Input/Input';\r\nimport NumberInput from '../../common/form/NumberInput/NumberInput';\r\nimport classes from '../EditDevice/EditDevice.module.scss';\r\n\r\ninterface DeviceResticSettingsProps {\r\n settings?: DeviceSettings['restic'];\r\n onUpdate: (settings: DeviceResticSettingsProps['settings']) => void;\r\n}\r\n\r\nconst DeviceResticSettings = ({ settings = {}, onUpdate }: DeviceResticSettingsProps) => {\r\n return (\r\n <div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"Cache Directory\"\r\n fieldValue={settings?.cacheDir || ''}\r\n onUpdate={(val) => onUpdate({ ...settings, cacheDir: val })}\r\n hint=\"Where Restic will store it's cache.\"\r\n inline={true}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Max Processor Cores\"\r\n fieldValue={settings?.maxProcessor || ''}\r\n onUpdate={(val) => onUpdate({ ...settings, maxProcessor: val === 0 ? '' : val })}\r\n min={0}\r\n max={64}\r\n hint=\"Keep 0 or empty to use all cores. Uses all cores by default.\"\r\n inline={true}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Read Concurrency\"\r\n fieldValue={settings?.readConcurrency || ''}\r\n onUpdate={(val) => onUpdate({ ...settings, readConcurrency: val === 0 ? '' : val })}\r\n min={0}\r\n hint=\"Read n files Concurrently. Default: 2\"\r\n inline={true}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Packet Size (MB)\"\r\n fieldValue={settings?.packSize ? parseInt(settings.packSize.replace('MiB', ''), 10) : ''}\r\n onUpdate={(val) => onUpdate({ ...settings, packSize: val ? val + 'MiB' : '' })}\r\n min={0}\r\n max={4000}\r\n hint=\"Packs are blobs of data, which are encrypted and stored in the repository. Increasing the pack size requires more disk space for temporary pack files to be created before uploading.\"\r\n inline={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default DeviceResticSettings;\r\n"],"names":["DeviceResticSettings","settings","onUpdate","jsx","classes","Input","val","NumberInput"],"mappings":";;;;AAUA,MAAMA,IAAuB,CAAC,EAAE,UAAAC,IAAW,CAAA,GAAI,UAAAC,0BAExC,OAAA,EACE,UAAA;AAAA,EAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,IAACE;AAAA,IAAA;AAAA,MACE,OAAM;AAAA,MACN,aAAYJ,KAAA,gBAAAA,EAAU,aAAY;AAAA,MAClC,UAAU,CAACK,MAAQJ,EAAS,EAAE,GAAGD,GAAU,UAAUK,GAAK;AAAA,MAC1D,MAAK;AAAA,MACL,QAAQ;AAAA,IAAA;AAAA,EAAA,GAEd;AAAA,EACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,IAACI;AAAA,IAAA;AAAA,MACE,OAAM;AAAA,MACN,aAAYN,KAAA,gBAAAA,EAAU,iBAAgB;AAAA,MACtC,UAAU,CAACK,MAAQJ,EAAS,EAAE,GAAGD,GAAU,cAAcK,MAAQ,IAAI,KAAKA,EAAA,CAAK;AAAA,MAC/E,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAK;AAAA,MACL,QAAQ;AAAA,IAAA;AAAA,EAAA,GAEd;AAAA,EACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,IAACI;AAAA,IAAA;AAAA,MACE,OAAM;AAAA,MACN,aAAYN,KAAA,gBAAAA,EAAU,oBAAmB;AAAA,MACzC,UAAU,CAACK,MAAQJ,EAAS,EAAE,GAAGD,GAAU,iBAAiBK,MAAQ,IAAI,KAAKA,EAAA,CAAK;AAAA,MAClF,KAAK;AAAA,MACL,MAAK;AAAA,MACL,QAAQ;AAAA,IAAA;AAAA,EAAA,GAEd;AAAA,EACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,IAACI;AAAA,IAAA;AAAA,MACE,OAAM;AAAA,MACN,YAAYN,KAAA,QAAAA,EAAU,WAAW,SAASA,EAAS,SAAS,QAAQ,OAAO,EAAE,GAAG,EAAE,IAAI;AAAA,MACtF,UAAU,CAACK,MAAQJ,EAAS,EAAE,GAAGD,GAAU,UAAUK,IAAMA,IAAM,QAAQ,GAAA,CAAI;AAAA,MAC7E,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAK;AAAA,MACL,QAAQ;AAAA,IAAA;AAAA,EAAA,EACX,CACH;AAAA,GACH;"}
1
+ {"version":3,"file":"DeviceResticSettings.js","sources":["../../../../src/components/Device/DeviceResticSettings/DeviceResticSettings.tsx"],"sourcesContent":["import { DeviceSettings } from '../../../@types/devices';\r\nimport Input from '../../common/form/Input/Input';\r\nimport NumberInput from '../../common/form/NumberInput/NumberInput';\r\nimport classes from '../EditDevice/EditDevice.module.scss';\r\n\r\ninterface DeviceResticSettingsProps {\r\n settings?: DeviceSettings['restic'];\r\n onUpdate: (settings: DeviceResticSettingsProps['settings']) => void;\r\n}\r\n\r\nconst DeviceResticSettings = ({ settings = {}, onUpdate }: DeviceResticSettingsProps) => {\r\n return (\r\n <div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"Cache Directory\"\r\n fieldValue={settings?.cacheDir || ''}\r\n onUpdate={(val) => onUpdate({ ...settings, cacheDir: val })}\r\n hint=\"Where Restic will store it's cache.\"\r\n inline={true}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Max Processor Cores\"\r\n fieldValue={settings?.maxProcessor || ''}\r\n onUpdate={(val) => onUpdate({ ...settings, maxProcessor: val === 0 ? '' : val })}\r\n min={0}\r\n max={64}\r\n hint=\"Keep 0 or empty to use all cores. Uses all cores by default.\"\r\n inline={true}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Read Concurrency\"\r\n fieldValue={settings?.readConcurrency || ''}\r\n onUpdate={(val) => onUpdate({ ...settings, readConcurrency: val === 0 ? '' : val })}\r\n min={0}\r\n hint=\"Read n files Concurrently. Default: 2\"\r\n inline={true}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Packet Size (MB)\"\r\n fieldValue={settings?.packSize ? parseInt(settings.packSize, 10) : ''}\r\n onUpdate={(val) => onUpdate({ ...settings, packSize: val ? val.toString() : '' })}\r\n min={0}\r\n max={4000}\r\n hint=\"Packs are blobs of data, which are encrypted and stored in the repository. Increasing the pack size requires more disk space for temporary pack files to be created before uploading.\"\r\n inline={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default DeviceResticSettings;\r\n"],"names":["DeviceResticSettings","settings","onUpdate","jsx","classes","Input","val","NumberInput"],"mappings":";;;;AAUA,MAAMA,IAAuB,CAAC,EAAE,UAAAC,IAAW,CAAA,GAAI,UAAAC,0BAExC,OAAA,EACE,UAAA;AAAA,EAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,IAACE;AAAA,IAAA;AAAA,MACE,OAAM;AAAA,MACN,aAAYJ,KAAA,gBAAAA,EAAU,aAAY;AAAA,MAClC,UAAU,CAACK,MAAQJ,EAAS,EAAE,GAAGD,GAAU,UAAUK,GAAK;AAAA,MAC1D,MAAK;AAAA,MACL,QAAQ;AAAA,IAAA;AAAA,EAAA,GAEd;AAAA,EACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,IAACI;AAAA,IAAA;AAAA,MACE,OAAM;AAAA,MACN,aAAYN,KAAA,gBAAAA,EAAU,iBAAgB;AAAA,MACtC,UAAU,CAACK,MAAQJ,EAAS,EAAE,GAAGD,GAAU,cAAcK,MAAQ,IAAI,KAAKA,EAAA,CAAK;AAAA,MAC/E,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAK;AAAA,MACL,QAAQ;AAAA,IAAA;AAAA,EAAA,GAEd;AAAA,EACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,IAACI;AAAA,IAAA;AAAA,MACE,OAAM;AAAA,MACN,aAAYN,KAAA,gBAAAA,EAAU,oBAAmB;AAAA,MACzC,UAAU,CAACK,MAAQJ,EAAS,EAAE,GAAGD,GAAU,iBAAiBK,MAAQ,IAAI,KAAKA,EAAA,CAAK;AAAA,MAClF,KAAK;AAAA,MACL,MAAK;AAAA,MACL,QAAQ;AAAA,IAAA;AAAA,EAAA,GAEd;AAAA,EACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,IAACI;AAAA,IAAA;AAAA,MACE,OAAM;AAAA,MACN,YAAYN,KAAA,QAAAA,EAAU,WAAW,SAASA,EAAS,UAAU,EAAE,IAAI;AAAA,MACnE,UAAU,CAACK,MAAQJ,EAAS,EAAE,GAAGD,GAAU,UAAUK,IAAMA,EAAI,SAAA,IAAa,IAAI;AAAA,MAChF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAK;AAAA,MACL,QAAQ;AAAA,IAAA;AAAA,EAAA,EACX,CACH;AAAA,GACH;"}
@@ -31,8 +31,8 @@ const b = ({ plan: s, onUpdate: r }) => {
31
31
  c,
32
32
  {
33
33
  label: "Packet Size (MB)",
34
- fieldValue: e != null && e.packSize ? parseInt(e.packSize.replace("MiB", ""), 10) : "",
35
- onUpdate: (a) => r({ ...e, packSize: a + "MiB" }),
34
+ fieldValue: e != null && e.packSize ? parseInt(e.packSize, 10) : "",
35
+ onUpdate: (a) => r({ ...e, packSize: a ? a.toString() : "" }),
36
36
  min: 0,
37
37
  max: 4e3
38
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PlanPerformanceSettings.js","sources":["../../../../src/components/Plan/PlanSettings/PlanPerformanceSettings.tsx"],"sourcesContent":["import classes from './PlanSettings.module.scss';\r\nimport Toggle from '../../common/form/Toggle/Toggle';\r\nimport { NewPlanSettings } from '../../../@types/plans';\r\nimport NumberInput from '../../common/form/NumberInput/NumberInput';\r\n\r\ninterface PlanPerformanceSettingsProps {\r\n plan: NewPlanSettings;\r\n onUpdate: (perfSettings: NewPlanSettings['settings']['performance']) => void;\r\n}\r\n\r\nconst PlanPerformanceSettings = ({ plan, onUpdate }: PlanPerformanceSettingsProps) => {\r\n const perfSettings = plan.settings?.performance || {};\r\n return (\r\n <>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Max Processor Cores\"\r\n fieldValue={perfSettings?.maxProcessor || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, maxProcessor: val })}\r\n min={0}\r\n max={64}\r\n hint=\"Keep 0 or empty to use all cores\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Read Concurrency\"\r\n fieldValue={perfSettings?.readConcurrency || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, readConcurrency: val })}\r\n min={0}\r\n hint=\"Read n files Concurrently. Default: 2\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Packet Size (MB)\"\r\n fieldValue={perfSettings?.packSize ? parseInt(perfSettings.packSize.replace('MiB', ''), 10) : ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, packSize: val + 'MiB' })}\r\n min={0}\r\n max={4000}\r\n />\r\n </div>\r\n\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Concurrent File Uploads\"\r\n fieldValue={perfSettings?.transfers || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, transfers: val })}\r\n min={0}\r\n max={100}\r\n hint=\"Default: 4\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Multi Thread Streams\"\r\n fieldValue={perfSettings?.multiThreadStream || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, multiThreadStream: val })}\r\n min={0}\r\n max={100}\r\n hint=\"Useful for large files. Default: 4\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Buffer Size (MB)\"\r\n fieldValue={perfSettings?.bufferSize ? parseInt(perfSettings.bufferSize.replace('M', ''), 10) : ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, bufferSize: val ? val + 'M' : '' })}\r\n min={0}\r\n max={100}\r\n hint=\"In Megabytes. Helps with streaming large files. Default: 4\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Toggle\r\n label=\"Scan Before Backup\"\r\n fieldValue={perfSettings.scan || false}\r\n onUpdate={(val: boolean) => onUpdate({ ...perfSettings, scan: val })}\r\n hint=\"Scan Before Backup for estimated Backup Time\"\r\n inline={true}\r\n />\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default PlanPerformanceSettings;\r\n"],"names":["PlanPerformanceSettings","plan","onUpdate","perfSettings","_a","jsxs","Fragment","jsx","classes","NumberInput","val","Toggle"],"mappings":"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"}
1
+ {"version":3,"file":"PlanPerformanceSettings.js","sources":["../../../../src/components/Plan/PlanSettings/PlanPerformanceSettings.tsx"],"sourcesContent":["import classes from './PlanSettings.module.scss';\r\nimport Toggle from '../../common/form/Toggle/Toggle';\r\nimport { NewPlanSettings } from '../../../@types/plans';\r\nimport NumberInput from '../../common/form/NumberInput/NumberInput';\r\n\r\ninterface PlanPerformanceSettingsProps {\r\n plan: NewPlanSettings;\r\n onUpdate: (perfSettings: NewPlanSettings['settings']['performance']) => void;\r\n}\r\n\r\nconst PlanPerformanceSettings = ({ plan, onUpdate }: PlanPerformanceSettingsProps) => {\r\n const perfSettings = plan.settings?.performance || {};\r\n return (\r\n <>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Max Processor Cores\"\r\n fieldValue={perfSettings?.maxProcessor || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, maxProcessor: val })}\r\n min={0}\r\n max={64}\r\n hint=\"Keep 0 or empty to use all cores\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Read Concurrency\"\r\n fieldValue={perfSettings?.readConcurrency || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, readConcurrency: val })}\r\n min={0}\r\n hint=\"Read n files Concurrently. Default: 2\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Packet Size (MB)\"\r\n fieldValue={perfSettings?.packSize ? parseInt(perfSettings.packSize, 10) : ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, packSize: val ? val.toString() : '' })}\r\n min={0}\r\n max={4000}\r\n />\r\n </div>\r\n\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Concurrent File Uploads\"\r\n fieldValue={perfSettings?.transfers || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, transfers: val })}\r\n min={0}\r\n max={100}\r\n hint=\"Default: 4\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Multi Thread Streams\"\r\n fieldValue={perfSettings?.multiThreadStream || ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, multiThreadStream: val })}\r\n min={0}\r\n max={100}\r\n hint=\"Useful for large files. Default: 4\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <NumberInput\r\n label=\"Buffer Size (MB)\"\r\n fieldValue={perfSettings?.bufferSize ? parseInt(perfSettings.bufferSize.replace('M', ''), 10) : ''}\r\n onUpdate={(val) => onUpdate({ ...perfSettings, bufferSize: val ? val + 'M' : '' })}\r\n min={0}\r\n max={100}\r\n hint=\"In Megabytes. Helps with streaming large files. Default: 4\"\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Toggle\r\n label=\"Scan Before Backup\"\r\n fieldValue={perfSettings.scan || false}\r\n onUpdate={(val: boolean) => onUpdate({ ...perfSettings, scan: val })}\r\n hint=\"Scan Before Backup for estimated Backup Time\"\r\n inline={true}\r\n />\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default PlanPerformanceSettings;\r\n"],"names":["PlanPerformanceSettings","plan","onUpdate","perfSettings","_a","jsxs","Fragment","jsx","classes","NumberInput","val","Toggle"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlanSizeChart.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanSizeChart/PlanSizeChart.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAgBjD,UAAU,kBAAkB;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,QAAA,MAAM,aAAa,GAAI,aAAa,kBAAkB,4CAwIrD,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"PlanSizeChart.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanSizeChart/PlanSizeChart.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAgBjD,UAAU,kBAAkB;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,QAAA,MAAM,aAAa,GAAI,aAAa,kBAAkB,4CA2IrD,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,34 +1,34 @@
1
- import { jsxs as c, jsx as o } from "react/jsx-runtime";
2
- import { useState as y, useRef as N, useEffect as D, useMemo as z } from "react";
3
- import { Chart as R, CategoryScale as w, LinearScale as x, PointElement as F, LineElement as L, Filler as A, Tooltip as E, Legend as T } from "../../../node_modules/.pnpm/chart.js@4.5.1/node_modules/chart.js/dist/chart.js";
4
- import { Line as I } from "../../../node_modules/.pnpm/react-chartjs-2@5.3.1_chart.js@4.5.1_react@18.3.1/node_modules/react-chartjs-2/dist/index.js";
5
- import B from "../../common/Icon/Icon.js";
6
- import { formatBytes as H, formatNumberToK as M, isDarkMode as m } from "../../../utils/helpers.js";
7
- import r from "./PlanSizeChart.module.scss.js";
8
- R.register(w, x, F, L, A, E, T);
9
- const f = [
10
- { key: "7d", label: "7d", days: 7 },
11
- { key: "14d", label: "14d", days: 14 },
12
- { key: "1m", label: "1m", days: 30 },
13
- { key: "3m", label: "3m", days: 90 },
14
- { key: "6m", label: "6m", days: 180 }
15
- ], G = ({ backups: p }) => {
16
- const [u, b] = y("3m"), [n, i] = y(!1), l = N(null);
17
- D(() => {
18
- if (!n) return;
19
- const e = (t) => {
20
- l.current && !l.current.contains(t.target) && i(!1);
1
+ import { jsxs as u, jsx as r } from "react/jsx-runtime";
2
+ import { useState as g, useRef as S, useEffect as N, useMemo as D } from "react";
3
+ import { Chart as z, CategoryScale as R, LinearScale as w, PointElement as x, LineElement as L, Filler as A, Tooltip as B, Legend as E } from "../../../node_modules/.pnpm/chart.js@4.5.1/node_modules/chart.js/dist/chart.js";
4
+ import { Line as T } from "../../../node_modules/.pnpm/react-chartjs-2@5.3.1_chart.js@4.5.1_react@18.3.1/node_modules/react-chartjs-2/dist/index.js";
5
+ import I from "../../common/Icon/Icon.js";
6
+ import { formatBytes as H, formatNumberToK as M, isDarkMode as f } from "../../../utils/helpers.js";
7
+ import a from "./PlanSizeChart.module.scss.js";
8
+ z.register(R, w, x, L, A, B, E);
9
+ const p = [
10
+ { key: "7d", label: "7d", labelFull: "7 days", days: 7 },
11
+ { key: "14d", label: "14d", labelFull: "14 days", days: 14 },
12
+ { key: "1m", label: "1m", labelFull: "1 month", days: 30 },
13
+ { key: "3m", label: "3m", labelFull: "3 months", days: 90 },
14
+ { key: "6m", label: "6m", labelFull: "6 months", days: 180 }
15
+ ], G = ({ backups: l }) => {
16
+ const [y, b] = g("3m"), [i, d] = g(!1), c = S(null);
17
+ N(() => {
18
+ if (!i) return;
19
+ const e = (s) => {
20
+ c.current && !c.current.contains(s.target) && d(!1);
21
21
  };
22
22
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
23
- }, [n]);
24
- const d = f.find((e) => e.key === u) || f[3], s = z(() => {
25
- const e = Date.now() - d.days * 24 * 60 * 60 * 1e3;
26
- return [...p || []].filter((t) => {
27
- const a = new Date(t.started).getTime();
28
- return !isNaN(a) && a >= e;
29
- }).sort((t, a) => new Date(t.started).getTime() - new Date(a.started).getTime());
30
- }, [p, d.days]), k = s.map((e) => new Date(e.started).toLocaleString()), C = s.map((e) => e.totalSize || 0), h = s.map((e) => e.totalFiles || 0), v = {
31
- labels: k,
23
+ }, [i]);
24
+ const m = p.find((e) => e.key === y) || p[3], n = D(() => {
25
+ const e = Date.now() - m.days * 24 * 60 * 60 * 1e3;
26
+ return [...l && l.length === 1 ? [l[0], l[0]] : l || []].filter((o) => {
27
+ const t = new Date(o.started).getTime();
28
+ return !isNaN(t) && t >= e;
29
+ }).sort((o, t) => new Date(o.started).getTime() - new Date(t.started).getTime());
30
+ }, [l, m.days]), h = n.map((e) => new Date(e.started).toLocaleString()), C = n.map((e) => e.totalSize || 0), k = n.map((e) => e.totalFiles || 0), v = {
31
+ labels: h,
32
32
  datasets: [
33
33
  {
34
34
  label: "Size",
@@ -45,7 +45,7 @@ const f = [
45
45
  },
46
46
  {
47
47
  label: "Files",
48
- data: h,
48
+ data: k,
49
49
  yAxisID: "yFiles",
50
50
  borderColor: "#9a9bff",
51
51
  backgroundColor: "transparent",
@@ -58,7 +58,7 @@ const f = [
58
58
  pointHoverBackgroundColor: "rgba(87, 90, 255, 1)"
59
59
  }
60
60
  ]
61
- }, S = {
61
+ }, F = {
62
62
  responsive: !0,
63
63
  animation: !1,
64
64
  maintainAspectRatio: !1,
@@ -67,17 +67,17 @@ const f = [
67
67
  legend: { display: !1 },
68
68
  tooltip: {
69
69
  displayColors: !1,
70
- backgroundColor: m ? "rgba(0, 0, 0, 0.9)" : "rgba(255, 255, 255, 1)",
71
- titleColor: m ? "#fff" : "#666",
72
- bodyColor: m ? "#ccc" : "#888",
70
+ backgroundColor: f ? "rgba(0, 0, 0, 0.9)" : "rgba(255, 255, 255, 1)",
71
+ titleColor: f ? "#fff" : "#666",
72
+ bodyColor: f ? "#ccc" : "#888",
73
73
  padding: 8,
74
74
  titleFont: { size: 11 },
75
75
  bodyFont: { size: 11 },
76
76
  callbacks: {
77
77
  title: (e) => {
78
- var g;
79
- const t = ((g = e[0]) == null ? void 0 : g.dataIndex) ?? 0, a = s[t];
80
- return a ? new Date(a.started).toLocaleString() : "";
78
+ var t;
79
+ const s = ((t = e[0]) == null ? void 0 : t.dataIndex) ?? 0, o = n[s];
80
+ return o ? new Date(o.started).toLocaleString() : "";
81
81
  },
82
82
  label: (e) => e.dataset.label === "Size" ? `Size: ${H(e.parsed.y || 0)}` : `Files: ${M(e.parsed.y || 0)}`
83
83
  }
@@ -89,25 +89,25 @@ const f = [
89
89
  yFiles: { display: !1, beginAtZero: !0, position: "right" }
90
90
  }
91
91
  };
92
- return /* @__PURE__ */ c("div", { className: r.chartWrap, children: [
93
- /* @__PURE__ */ c("div", { className: r.rangeSelector, ref: l, children: [
94
- /* @__PURE__ */ o("button", { type: "button", className: r.rangeBtn, onClick: () => i((e) => !e), children: d.label }),
95
- n && /* @__PURE__ */ o("ul", { className: r.rangeMenu, children: f.slice().reverse().map((e) => /* @__PURE__ */ o(
92
+ return /* @__PURE__ */ u("div", { className: a.chartWrap, children: [
93
+ /* @__PURE__ */ u("div", { className: a.rangeSelector, ref: c, children: [
94
+ /* @__PURE__ */ r("button", { type: "button", className: a.rangeBtn, onClick: () => d((e) => !e), children: m.label }),
95
+ i && /* @__PURE__ */ r("ul", { className: a.rangeMenu, children: p.slice().reverse().map((e) => /* @__PURE__ */ r(
96
96
  "li",
97
97
  {
98
- className: e.key === u ? r.active : "",
98
+ className: e.key === y ? a.active : "",
99
99
  onClick: () => {
100
- b(e.key), i(!1);
100
+ b(e.key), d(!1);
101
101
  },
102
- children: e.label
102
+ children: e.labelFull
103
103
  },
104
104
  e.key
105
105
  )) })
106
106
  ] }),
107
- s.length === 0 ? /* @__PURE__ */ c("div", { className: r.empty, children: [
108
- /* @__PURE__ */ o(B, { type: "folders", size: 16 }),
107
+ n.length === 0 ? /* @__PURE__ */ u("div", { className: a.empty, children: [
108
+ /* @__PURE__ */ r(I, { type: "folders", size: 16 }),
109
109
  " No data in range"
110
- ] }) : /* @__PURE__ */ o("div", { className: r.chartCanvas, children: /* @__PURE__ */ o(I, { data: v, options: S }) })
110
+ ] }) : /* @__PURE__ */ r("div", { className: a.chartCanvas, children: /* @__PURE__ */ r(T, { data: v, options: F }) })
111
111
  ] });
112
112
  };
113
113
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"PlanSizeChart.js","sources":["../../../../src/components/Plan/PlanSizeChart/PlanSizeChart.tsx"],"sourcesContent":["import { useMemo, useRef, useState, useEffect } from 'react';\r\nimport { Chart as ChartJS, CategoryScale, LinearScale, PointElement, LineElement, Filler, Tooltip, Legend, ChartOptions } from 'chart.js';\r\nimport { Line } from 'react-chartjs-2';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport { Backup } from '../../../@types/backups';\r\nimport { formatBytes, formatNumberToK, isDarkMode } from '../../../utils/helpers';\r\nimport classes from './PlanSizeChart.module.scss';\r\n\r\nChartJS.register(CategoryScale, LinearScale, PointElement, LineElement, Filler, Tooltip, Legend);\r\n\r\ntype RangeKey = '7d' | '14d' | '1m' | '3m' | '6m';\r\n\r\nconst RANGE_OPTIONS: { key: RangeKey; label: string; days: number }[] = [\r\n { key: '7d', label: '7d', days: 7 },\r\n { key: '14d', label: '14d', days: 14 },\r\n { key: '1m', label: '1m', days: 30 },\r\n { key: '3m', label: '3m', days: 90 },\r\n { key: '6m', label: '6m', days: 180 },\r\n];\r\n\r\ninterface PlanSizeChartProps {\r\n backups: Backup[];\r\n}\r\n\r\nconst PlanSizeChart = ({ backups }: PlanSizeChartProps) => {\r\n const [range, setRange] = useState<RangeKey>('3m');\r\n const [open, setOpen] = useState(false);\r\n const dropdownRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const onClick = (e: MouseEvent) => {\r\n if (dropdownRef.current && !dropdownRef.current.contains(e.target as Node)) {\r\n setOpen(false);\r\n }\r\n };\r\n document.addEventListener('mousedown', onClick);\r\n return () => document.removeEventListener('mousedown', onClick);\r\n }, [open]);\r\n\r\n const activeRange = RANGE_OPTIONS.find((r) => r.key === range) || RANGE_OPTIONS[3];\r\n\r\n const filtered = useMemo(() => {\r\n const cutoff = Date.now() - activeRange.days * 24 * 60 * 60 * 1000;\r\n return [...(backups || [])]\r\n .filter((b) => {\r\n const t = new Date(b.started).getTime();\r\n return !isNaN(t) && t >= cutoff;\r\n })\r\n .sort((a, b) => new Date(a.started).getTime() - new Date(b.started).getTime());\r\n }, [backups, activeRange.days]);\r\n\r\n const labels = filtered.map((b) => new Date(b.started).toLocaleString());\r\n const sizeData = filtered.map((b) => b.totalSize || 0);\r\n const filesData = filtered.map((b) => b.totalFiles || 0);\r\n\r\n const data = {\r\n labels,\r\n datasets: [\r\n {\r\n label: 'Size',\r\n data: sizeData,\r\n yAxisID: 'ySize',\r\n borderColor: 'transparent',\r\n backgroundColor: 'rgba(87, 132, 255, 0.12)',\r\n fill: true,\r\n tension: 0.4,\r\n borderWidth: 1.5,\r\n pointRadius: 0,\r\n pointHoverRadius: 4,\r\n pointHoverBackgroundColor: 'rgba(87, 90, 255, 1)',\r\n },\r\n {\r\n label: 'Files',\r\n data: filesData,\r\n yAxisID: 'yFiles',\r\n borderColor: '#9a9bff',\r\n backgroundColor: 'transparent',\r\n borderDash: [3, 3],\r\n fill: false,\r\n tension: 0.4,\r\n borderWidth: 1.2,\r\n pointRadius: 0,\r\n pointHoverRadius: 4,\r\n pointHoverBackgroundColor: 'rgba(87, 90, 255, 1)',\r\n },\r\n ],\r\n };\r\n\r\n const options: ChartOptions<'line'> = {\r\n responsive: true,\r\n animation: false,\r\n maintainAspectRatio: false,\r\n interaction: { mode: 'index', intersect: false },\r\n plugins: {\r\n legend: { display: false },\r\n tooltip: {\r\n displayColors: false,\r\n backgroundColor: isDarkMode ? 'rgba(0, 0, 0, 0.9)' : 'rgba(255, 255, 255, 1)',\r\n titleColor: isDarkMode ? '#fff' : '#666',\r\n bodyColor: isDarkMode ? '#ccc' : '#888',\r\n padding: 8,\r\n titleFont: { size: 11 },\r\n bodyFont: { size: 11 },\r\n callbacks: {\r\n title: (items) => {\r\n const idx = items[0]?.dataIndex ?? 0;\r\n const b = filtered[idx];\r\n return b ? new Date(b.started).toLocaleString() : '';\r\n },\r\n label: (ctx) => {\r\n if (ctx.dataset.label === 'Size') return `Size: ${formatBytes(ctx.parsed.y || 0)}`;\r\n return `Files: ${formatNumberToK(ctx.parsed.y || 0)}`;\r\n },\r\n },\r\n },\r\n },\r\n scales: {\r\n x: { display: false },\r\n ySize: { display: false, beginAtZero: true },\r\n yFiles: { display: false, beginAtZero: true, position: 'right' },\r\n },\r\n };\r\n\r\n return (\r\n <div className={classes.chartWrap}>\r\n <div className={classes.rangeSelector} ref={dropdownRef}>\r\n <button type=\"button\" className={classes.rangeBtn} onClick={() => setOpen((v) => !v)}>\r\n {activeRange.label}\r\n </button>\r\n {open && (\r\n <ul className={classes.rangeMenu}>\r\n {RANGE_OPTIONS.slice()\r\n .reverse()\r\n .map((opt) => (\r\n <li\r\n key={opt.key}\r\n className={opt.key === range ? classes.active : ''}\r\n onClick={() => {\r\n setRange(opt.key);\r\n setOpen(false);\r\n }}\r\n >\r\n {opt.label}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n {filtered.length === 0 ? (\r\n <div className={classes.empty}>\r\n <Icon type=\"folders\" size={16} /> No data in range\r\n </div>\r\n ) : (\r\n <div className={classes.chartCanvas}>\r\n <Line data={data} options={options} />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanSizeChart;\r\n"],"names":["ChartJS","CategoryScale","LinearScale","PointElement","LineElement","Filler","Tooltip","Legend","RANGE_OPTIONS","PlanSizeChart","backups","range","setRange","useState","open","setOpen","dropdownRef","useRef","useEffect","onClick","e","activeRange","r","filtered","useMemo","cutoff","b","t","a","labels","sizeData","filesData","data","options","isDarkMode","items","idx","_a","ctx","formatBytes","formatNumberToK","jsxs","classes","jsx","v","opt","Icon","Line"],"mappings":"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"}
1
+ {"version":3,"file":"PlanSizeChart.js","sources":["../../../../src/components/Plan/PlanSizeChart/PlanSizeChart.tsx"],"sourcesContent":["import { useMemo, useRef, useState, useEffect } from 'react';\r\nimport { Chart as ChartJS, CategoryScale, LinearScale, PointElement, LineElement, Filler, Tooltip, Legend, ChartOptions } from 'chart.js';\r\nimport { Line } from 'react-chartjs-2';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport { Backup } from '../../../@types/backups';\r\nimport { formatBytes, formatNumberToK, isDarkMode } from '../../../utils/helpers';\r\nimport classes from './PlanSizeChart.module.scss';\r\n\r\nChartJS.register(CategoryScale, LinearScale, PointElement, LineElement, Filler, Tooltip, Legend);\r\n\r\ntype RangeKey = '7d' | '14d' | '1m' | '3m' | '6m';\r\n\r\nconst RANGE_OPTIONS: { key: RangeKey; label: string; labelFull: string; days: number }[] = [\r\n { key: '7d', label: '7d', labelFull: '7 days', days: 7 },\r\n { key: '14d', label: '14d', labelFull: '14 days', days: 14 },\r\n { key: '1m', label: '1m', labelFull: '1 month', days: 30 },\r\n { key: '3m', label: '3m', labelFull: '3 months', days: 90 },\r\n { key: '6m', label: '6m', labelFull: '6 months', days: 180 },\r\n];\r\n\r\ninterface PlanSizeChartProps {\r\n backups: Backup[];\r\n}\r\n\r\nconst PlanSizeChart = ({ backups }: PlanSizeChartProps) => {\r\n const [range, setRange] = useState<RangeKey>('3m');\r\n const [open, setOpen] = useState(false);\r\n const dropdownRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const onClick = (e: MouseEvent) => {\r\n if (dropdownRef.current && !dropdownRef.current.contains(e.target as Node)) {\r\n setOpen(false);\r\n }\r\n };\r\n document.addEventListener('mousedown', onClick);\r\n return () => document.removeEventListener('mousedown', onClick);\r\n }, [open]);\r\n\r\n const activeRange = RANGE_OPTIONS.find((r) => r.key === range) || RANGE_OPTIONS[3];\r\n\r\n const filtered = useMemo(() => {\r\n const cutoff = Date.now() - activeRange.days * 24 * 60 * 60 * 1000;\r\n // if there is only one backup duplicate the first backup to make 2 items\r\n // so that the graph is never empty and shows the size even if there is only one backup in the selected range\r\n const theBackups = backups && backups.length === 1 ? [backups[0], backups[0]] : backups || [];\r\n return [...theBackups]\r\n .filter((b) => {\r\n const t = new Date(b.started).getTime();\r\n return !isNaN(t) && t >= cutoff;\r\n })\r\n .sort((a, b) => new Date(a.started).getTime() - new Date(b.started).getTime());\r\n }, [backups, activeRange.days]);\r\n\r\n const labels = filtered.map((b) => new Date(b.started).toLocaleString());\r\n const sizeData = filtered.map((b) => b.totalSize || 0);\r\n const filesData = filtered.map((b) => b.totalFiles || 0);\r\n\r\n const data = {\r\n labels,\r\n datasets: [\r\n {\r\n label: 'Size',\r\n data: sizeData,\r\n yAxisID: 'ySize',\r\n borderColor: 'transparent',\r\n backgroundColor: 'rgba(87, 132, 255, 0.12)',\r\n fill: true,\r\n tension: 0.4,\r\n borderWidth: 1.5,\r\n pointRadius: 0,\r\n pointHoverRadius: 4,\r\n pointHoverBackgroundColor: 'rgba(87, 90, 255, 1)',\r\n },\r\n {\r\n label: 'Files',\r\n data: filesData,\r\n yAxisID: 'yFiles',\r\n borderColor: '#9a9bff',\r\n backgroundColor: 'transparent',\r\n borderDash: [3, 3],\r\n fill: false,\r\n tension: 0.4,\r\n borderWidth: 1.2,\r\n pointRadius: 0,\r\n pointHoverRadius: 4,\r\n pointHoverBackgroundColor: 'rgba(87, 90, 255, 1)',\r\n },\r\n ],\r\n };\r\n\r\n const options: ChartOptions<'line'> = {\r\n responsive: true,\r\n animation: false,\r\n maintainAspectRatio: false,\r\n interaction: { mode: 'index', intersect: false },\r\n plugins: {\r\n legend: { display: false },\r\n tooltip: {\r\n displayColors: false,\r\n backgroundColor: isDarkMode ? 'rgba(0, 0, 0, 0.9)' : 'rgba(255, 255, 255, 1)',\r\n titleColor: isDarkMode ? '#fff' : '#666',\r\n bodyColor: isDarkMode ? '#ccc' : '#888',\r\n padding: 8,\r\n titleFont: { size: 11 },\r\n bodyFont: { size: 11 },\r\n callbacks: {\r\n title: (items) => {\r\n const idx = items[0]?.dataIndex ?? 0;\r\n const b = filtered[idx];\r\n return b ? new Date(b.started).toLocaleString() : '';\r\n },\r\n label: (ctx) => {\r\n if (ctx.dataset.label === 'Size') return `Size: ${formatBytes(ctx.parsed.y || 0)}`;\r\n return `Files: ${formatNumberToK(ctx.parsed.y || 0)}`;\r\n },\r\n },\r\n },\r\n },\r\n scales: {\r\n x: { display: false },\r\n ySize: { display: false, beginAtZero: true },\r\n yFiles: { display: false, beginAtZero: true, position: 'right' },\r\n },\r\n };\r\n\r\n return (\r\n <div className={classes.chartWrap}>\r\n <div className={classes.rangeSelector} ref={dropdownRef}>\r\n <button type=\"button\" className={classes.rangeBtn} onClick={() => setOpen((v) => !v)}>\r\n {activeRange.label}\r\n </button>\r\n {open && (\r\n <ul className={classes.rangeMenu}>\r\n {RANGE_OPTIONS.slice()\r\n .reverse()\r\n .map((opt) => (\r\n <li\r\n key={opt.key}\r\n className={opt.key === range ? classes.active : ''}\r\n onClick={() => {\r\n setRange(opt.key);\r\n setOpen(false);\r\n }}\r\n >\r\n {opt.labelFull}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n {filtered.length === 0 ? (\r\n <div className={classes.empty}>\r\n <Icon type=\"folders\" size={16} /> No data in range\r\n </div>\r\n ) : (\r\n <div className={classes.chartCanvas}>\r\n <Line data={data} options={options} />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanSizeChart;\r\n"],"names":["ChartJS","CategoryScale","LinearScale","PointElement","LineElement","Filler","Tooltip","Legend","RANGE_OPTIONS","PlanSizeChart","backups","range","setRange","useState","open","setOpen","dropdownRef","useRef","useEffect","onClick","e","activeRange","r","filtered","useMemo","cutoff","b","a","labels","sizeData","filesData","data","options","isDarkMode","items","idx","_a","ctx","formatBytes","formatNumberToK","jsxs","classes","jsx","v","opt","Icon","Line"],"mappings":";;;;;;;AAQAA,EAAQ,SAASC,GAAeC,GAAaC,GAAcC,GAAaC,GAAQC,GAASC,CAAM;AAI/F,MAAMC,IAAqF;AAAA,EACxF,EAAE,KAAK,MAAM,OAAO,MAAM,WAAW,UAAU,MAAM,EAAA;AAAA,EACrD,EAAE,KAAK,OAAO,OAAO,OAAO,WAAW,WAAW,MAAM,GAAA;AAAA,EACxD,EAAE,KAAK,MAAM,OAAO,MAAM,WAAW,WAAW,MAAM,GAAA;AAAA,EACtD,EAAE,KAAK,MAAM,OAAO,MAAM,WAAW,YAAY,MAAM,GAAA;AAAA,EACvD,EAAE,KAAK,MAAM,OAAO,MAAM,WAAW,YAAY,MAAM,IAAA;AAC1D,GAMMC,IAAgB,CAAC,EAAE,SAAAC,QAAkC;AACxD,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAmB,IAAI,GAC3C,CAACC,GAAMC,CAAO,IAAIF,EAAS,EAAK,GAChCG,IAAcC,EAAuB,IAAI;AAE/C,EAAAC,EAAU,MAAM;AACb,QAAI,CAACJ,EAAM;AACX,UAAMK,IAAU,CAACC,MAAkB;AAChC,MAAIJ,EAAY,WAAW,CAACA,EAAY,QAAQ,SAASI,EAAE,MAAc,KACtEL,EAAQ,EAAK;AAAA,IAEnB;AACA,oBAAS,iBAAiB,aAAaI,CAAO,GACvC,MAAM,SAAS,oBAAoB,aAAaA,CAAO;AAAA,EACjE,GAAG,CAACL,CAAI,CAAC;AAET,QAAMO,IAAcb,EAAc,KAAK,CAACc,MAAMA,EAAE,QAAQX,CAAK,KAAKH,EAAc,CAAC,GAE3Ee,IAAWC,EAAQ,MAAM;AAC5B,UAAMC,IAAS,KAAK,QAAQJ,EAAY,OAAO,KAAK,KAAK,KAAK;AAI9D,WAAO,CAAC,GADWX,KAAWA,EAAQ,WAAW,IAAI,CAACA,EAAQ,CAAC,GAAGA,EAAQ,CAAC,CAAC,IAAIA,KAAW,CAAA,CACtE,EACjB,OAAO,CAACgB,MAAM;AACZ,YAAM,IAAI,IAAI,KAAKA,EAAE,OAAO,EAAE,QAAA;AAC9B,aAAO,CAAC,MAAM,CAAC,KAAK,KAAKD;AAAA,IAC5B,CAAC,EACA,KAAK,CAACE,GAAGD,MAAM,IAAI,KAAKC,EAAE,OAAO,EAAE,QAAA,IAAY,IAAI,KAAKD,EAAE,OAAO,EAAE,SAAS;AAAA,EACnF,GAAG,CAAChB,GAASW,EAAY,IAAI,CAAC,GAExBO,IAASL,EAAS,IAAI,CAACG,MAAM,IAAI,KAAKA,EAAE,OAAO,EAAE,gBAAgB,GACjEG,IAAWN,EAAS,IAAI,CAACG,MAAMA,EAAE,aAAa,CAAC,GAC/CI,IAAYP,EAAS,IAAI,CAACG,MAAMA,EAAE,cAAc,CAAC,GAEjDK,IAAO;AAAA,IACV,QAAAH;AAAA,IACA,UAAU;AAAA,MACP;AAAA,QACG,OAAO;AAAA,QACP,MAAMC;AAAA,QACN,SAAS;AAAA,QACT,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB,MAAM;AAAA,QACN,SAAS;AAAA,QACT,aAAa;AAAA,QACb,aAAa;AAAA,QACb,kBAAkB;AAAA,QAClB,2BAA2B;AAAA,MAAA;AAAA,MAE9B;AAAA,QACG,OAAO;AAAA,QACP,MAAMC;AAAA,QACN,SAAS;AAAA,QACT,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB,YAAY,CAAC,GAAG,CAAC;AAAA,QACjB,MAAM;AAAA,QACN,SAAS;AAAA,QACT,aAAa;AAAA,QACb,aAAa;AAAA,QACb,kBAAkB;AAAA,QAClB,2BAA2B;AAAA,MAAA;AAAA,IAC9B;AAAA,EACH,GAGGE,IAAgC;AAAA,IACnC,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,qBAAqB;AAAA,IACrB,aAAa,EAAE,MAAM,SAAS,WAAW,GAAA;AAAA,IACzC,SAAS;AAAA,MACN,QAAQ,EAAE,SAAS,GAAA;AAAA,MACnB,SAAS;AAAA,QACN,eAAe;AAAA,QACf,iBAAiBC,IAAa,uBAAuB;AAAA,QACrD,YAAYA,IAAa,SAAS;AAAA,QAClC,WAAWA,IAAa,SAAS;AAAA,QACjC,SAAS;AAAA,QACT,WAAW,EAAE,MAAM,GAAA;AAAA,QACnB,UAAU,EAAE,MAAM,GAAA;AAAA,QAClB,WAAW;AAAA,UACR,OAAO,CAACC,MAAU;;AACf,kBAAMC,MAAMC,IAAAF,EAAM,CAAC,MAAP,gBAAAE,EAAU,cAAa,GAC7BV,IAAIH,EAASY,CAAG;AACtB,mBAAOT,IAAI,IAAI,KAAKA,EAAE,OAAO,EAAE,mBAAmB;AAAA,UACrD;AAAA,UACA,OAAO,CAACW,MACDA,EAAI,QAAQ,UAAU,SAAe,SAASC,EAAYD,EAAI,OAAO,KAAK,CAAC,CAAC,KACzE,UAAUE,EAAgBF,EAAI,OAAO,KAAK,CAAC,CAAC;AAAA,QACtD;AAAA,MACH;AAAA,IACH;AAAA,IAEH,QAAQ;AAAA,MACL,GAAG,EAAE,SAAS,GAAA;AAAA,MACd,OAAO,EAAE,SAAS,IAAO,aAAa,GAAA;AAAA,MACtC,QAAQ,EAAE,SAAS,IAAO,aAAa,IAAM,UAAU,QAAA;AAAA,IAAQ;AAAA,EAClE;AAGH,SACG,gBAAAG,EAAC,OAAA,EAAI,WAAWC,EAAQ,WACrB,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,EAAQ,eAAe,KAAKzB,GACzC,UAAA;AAAA,MAAA,gBAAA0B,EAAC,UAAA,EAAO,MAAK,UAAS,WAAWD,EAAQ,UAAU,SAAS,MAAM1B,EAAQ,CAAC4B,MAAM,CAACA,CAAC,GAC/E,YAAY,OAChB;AAAA,MACC7B,KACE,gBAAA4B,EAAC,MAAA,EAAG,WAAWD,EAAQ,WACnB,UAAAjC,EAAc,MAAA,EACX,QAAA,EACA,IAAI,CAACoC,MACH,gBAAAF;AAAA,QAAC;AAAA,QAAA;AAAA,UAEE,WAAWE,EAAI,QAAQjC,IAAQ8B,EAAQ,SAAS;AAAA,UAChD,SAAS,MAAM;AACZ,YAAA7B,EAASgC,EAAI,GAAG,GAChB7B,EAAQ,EAAK;AAAA,UAChB;AAAA,UAEC,UAAA6B,EAAI;AAAA,QAAA;AAAA,QAPAA,EAAI;AAAA,MAAA,CASd,EAAA,CACP;AAAA,IAAA,GAEN;AAAA,IACCrB,EAAS,WAAW,sBACjB,OAAA,EAAI,WAAWkB,EAAQ,OACrB,UAAA;AAAA,MAAA,gBAAAC,EAACG,GAAA,EAAK,MAAK,WAAU,MAAM,IAAI;AAAA,MAAE;AAAA,IAAA,EAAA,CACpC,IAEA,gBAAAH,EAAC,OAAA,EAAI,WAAWD,EAAQ,aACrB,UAAA,gBAAAC,EAACI,GAAA,EAAK,MAAAf,GAAY,SAAAC,EAAA,CAAkB,EAAA,CACvC;AAAA,EAAA,GAEN;AAEN;"}
@@ -1,20 +1,20 @@
1
- const a = "_chartWrap_slogW", t = "_chartCanvas_SAnEg", e = "_rangeSelector_CX7xw", n = "_rangeBtn_w8xWx", c = "_rangeMenu_JfD7U", r = "_active_8N8Tg", s = "_empty_xcKM5", _ = {
1
+ const a = "_chartWrap_bo3py", t = "_chartCanvas_xBRxt", e = "_rangeSelector_6Z1Hx", n = "_rangeBtn_6fPjz", r = "_rangeMenu_xBLqh", c = "_active_oXxJW", s = "_empty_OstSL", o = {
2
2
  chartWrap: a,
3
3
  chartCanvas: t,
4
4
  rangeSelector: e,
5
5
  rangeBtn: n,
6
- rangeMenu: c,
7
- active: r,
6
+ rangeMenu: r,
7
+ active: c,
8
8
  empty: s
9
9
  };
10
10
  export {
11
- r as active,
11
+ c as active,
12
12
  t as chartCanvas,
13
13
  a as chartWrap,
14
- _ as default,
14
+ o as default,
15
15
  s as empty,
16
16
  n as rangeBtn,
17
- c as rangeMenu,
17
+ r as rangeMenu,
18
18
  e as rangeSelector
19
19
  };
20
20
  //# sourceMappingURL=PlanSizeChart.module.scss.js.map
@@ -1,34 +1,36 @@
1
- const e = "_fileManager_aDrwc", i = "_navigationBar_1AroU", t = "_currentPath_cVdV9", n = "_fileList_AXO80", a = "_empty_pIu2Y", l = "_fileHeader_pDFDU", o = "_fileListContainer_k31sv", s = "_fileRow_mUxpD", f = "_selected_40OaM", _ = "_fileName_HLD33", c = "_fileNameText_OCYAF", r = "_fileSize_TQRkB", m = "_loading_CmWSR", d = "_mobileFileInfo_KiAvd", g = {
1
+ const e = "_fileManager_P4pn0", i = "_navigationBar_x4ZpO", t = "_currentPath_9bxS8", l = "_fileList_EuASU", n = "_empty_fDxgu", a = "_fileHeader_rdcxy", o = "_fileListContainer_865J4", f = "_fileRow_dcz21", _ = "_selected_K7B0e", s = "_fileName_8odvK", c = "_fileNameText_BEWX5", r = "_fileSize_InVxT", d = "_fileDate_dfRAk", m = "_loading_Wi2lx", g = "_mobileFileInfo_At6wj", x = {
2
2
  fileManager: e,
3
3
  navigationBar: i,
4
4
  currentPath: t,
5
- fileList: n,
6
- empty: a,
7
- fileHeader: l,
5
+ fileList: l,
6
+ empty: n,
7
+ fileHeader: a,
8
8
  fileListContainer: o,
9
- fileRow: s,
10
- selected: f,
11
- fileName: _,
9
+ fileRow: f,
10
+ selected: _,
11
+ fileName: s,
12
12
  fileNameText: c,
13
13
  fileSize: r,
14
+ fileDate: d,
14
15
  loading: m,
15
- mobileFileInfo: d
16
+ mobileFileInfo: g
16
17
  };
17
18
  export {
18
19
  t as currentPath,
19
- g as default,
20
- a as empty,
21
- l as fileHeader,
22
- n as fileList,
20
+ x as default,
21
+ n as empty,
22
+ d as fileDate,
23
+ a as fileHeader,
24
+ l as fileList,
23
25
  o as fileListContainer,
24
26
  e as fileManager,
25
- _ as fileName,
27
+ s as fileName,
26
28
  c as fileNameText,
27
- s as fileRow,
29
+ f as fileRow,
28
30
  r as fileSize,
29
31
  m as loading,
30
- d as mobileFileInfo,
32
+ g as mobileFileInfo,
31
33
  i as navigationBar,
32
- f as selected
34
+ _ as selected
33
35
  };
34
36
  //# sourceMappingURL=FileManager.module.scss.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileManager.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"FileManager.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}