Add functionality to download custom reports as an image. (#4219)
* Add functionality to download custom reports as an image. * Add functionality to download custom reports as an image. * Switched from html2canvas to html-to-image due to size considerations. * Snapshot filename * Add functionality to download custom reports as an image. * Add functionality to download custom reports as an image. * Update ReportTopbar.tsx Fixed mistake * Use existing date function * fix imports * Update VRT * move component out of common in aid of components lib migration --------- Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
@@ -65,6 +65,7 @@
|
|||||||
"eslint-plugin-react-hooks": "^5.2.0",
|
"eslint-plugin-react-hooks": "^5.2.0",
|
||||||
"eslint-plugin-rulesdir": "^0.2.2",
|
"eslint-plugin-rulesdir": "^0.2.2",
|
||||||
"globals": "^15.13.0",
|
"globals": "^15.13.0",
|
||||||
|
"html-to-image": "^1.11.11",
|
||||||
"husky": "^9.1.7",
|
"husky": "^9.1.7",
|
||||||
"lint-staged": "^15.5.0",
|
"lint-staged": "^15.5.0",
|
||||||
"node-jq": "^4.0.2",
|
"node-jq": "^4.0.2",
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 109 KiB After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 105 KiB |
|
Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 124 KiB After Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 111 KiB After Width: | Height: | Size: 111 KiB |
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 121 KiB |
@@ -9,12 +9,15 @@ import {
|
|||||||
SvgListBullet,
|
SvgListBullet,
|
||||||
SvgQueue,
|
SvgQueue,
|
||||||
SvgTag,
|
SvgTag,
|
||||||
|
SvgCamera,
|
||||||
SvgChartArea,
|
SvgChartArea,
|
||||||
} from '@actual-app/components/icons/v1';
|
} from '@actual-app/components/icons/v1';
|
||||||
import { SpaceBetween } from '@actual-app/components/space-between';
|
import { SpaceBetween } from '@actual-app/components/space-between';
|
||||||
import { theme } from '@actual-app/components/theme';
|
import { theme } from '@actual-app/components/theme';
|
||||||
import { View } from '@actual-app/components/view';
|
import { View } from '@actual-app/components/view';
|
||||||
|
import { toPng } from 'html-to-image';
|
||||||
|
|
||||||
|
import * as monthUtils from 'loot-core/shared/months';
|
||||||
import {
|
import {
|
||||||
type CustomReportEntity,
|
type CustomReportEntity,
|
||||||
type RuleConditionEntity,
|
type RuleConditionEntity,
|
||||||
@@ -25,6 +28,7 @@ import { FilterButton } from '../filters/FiltersMenu';
|
|||||||
import { GraphButton } from './GraphButton';
|
import { GraphButton } from './GraphButton';
|
||||||
import { SaveReport } from './SaveReport';
|
import { SaveReport } from './SaveReport';
|
||||||
import { setSessionReport } from './setSessionReport';
|
import { setSessionReport } from './setSessionReport';
|
||||||
|
import { SnapshotButton } from './SnapshotButton';
|
||||||
|
|
||||||
type ReportTopbarProps = {
|
type ReportTopbarProps = {
|
||||||
customReportItems: CustomReportEntity;
|
customReportItems: CustomReportEntity;
|
||||||
@@ -63,6 +67,20 @@ export function ReportTopbar({
|
|||||||
defaultItems(cond);
|
defaultItems(cond);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const downloadSnapshot = async () => {
|
||||||
|
const reportElement = document.getElementById('custom-report-content');
|
||||||
|
const title = report.name;
|
||||||
|
if (reportElement) {
|
||||||
|
const dataUrl = await toPng(reportElement);
|
||||||
|
const link = document.createElement('a');
|
||||||
|
link.href = dataUrl;
|
||||||
|
link.download = `${monthUtils.currentDay()} - ${title}.png`;
|
||||||
|
link.click();
|
||||||
|
} else {
|
||||||
|
console.error('Report container not found.');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
@@ -180,7 +198,6 @@ export function ReportTopbar({
|
|||||||
>
|
>
|
||||||
<SvgTag width={15} height={15} />
|
<SvgTag width={15} height={15} />
|
||||||
</GraphButton>
|
</GraphButton>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
width: 1,
|
width: 1,
|
||||||
@@ -190,7 +207,22 @@ export function ReportTopbar({
|
|||||||
flexShrink: 0,
|
flexShrink: 0,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
<SnapshotButton
|
||||||
|
style={{ marginRight: 15 }}
|
||||||
|
title={t('Download Snapshot')}
|
||||||
|
onSelect={downloadSnapshot}
|
||||||
|
>
|
||||||
|
<SvgCamera width={15} height={15} />
|
||||||
|
</SnapshotButton>
|
||||||
|
<View
|
||||||
|
style={{
|
||||||
|
width: 1,
|
||||||
|
height: 30,
|
||||||
|
backgroundColor: theme.pillBorderDark,
|
||||||
|
marginRight: 15,
|
||||||
|
flexShrink: 0,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
<SpaceBetween
|
<SpaceBetween
|
||||||
style={{
|
style={{
|
||||||
flexWrap: 'nowrap',
|
flexWrap: 'nowrap',
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
import React, { type ReactNode, type CSSProperties } from 'react';
|
||||||
|
|
||||||
|
import { Button } from '@actual-app/components/button';
|
||||||
|
import { styles } from '@actual-app/components/styles';
|
||||||
|
import { Text } from '@actual-app/components/text';
|
||||||
|
import { theme } from '@actual-app/components/theme';
|
||||||
|
import { Tooltip } from '@actual-app/components/tooltip';
|
||||||
|
|
||||||
|
type SnapshotButtonProps = {
|
||||||
|
selected?: boolean;
|
||||||
|
children: ReactNode;
|
||||||
|
style?: CSSProperties;
|
||||||
|
onSelect?: () => void;
|
||||||
|
title?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function SnapshotButton({
|
||||||
|
selected,
|
||||||
|
children,
|
||||||
|
style,
|
||||||
|
onSelect,
|
||||||
|
title,
|
||||||
|
}: SnapshotButtonProps) {
|
||||||
|
return (
|
||||||
|
<Tooltip
|
||||||
|
placement="bottom start"
|
||||||
|
content={<Text>{title}</Text>}
|
||||||
|
style={{ ...styles.tooltip, lineHeight: 1.5, padding: '6px 10px' }}
|
||||||
|
>
|
||||||
|
<Button
|
||||||
|
variant="bare"
|
||||||
|
style={{
|
||||||
|
...(selected && {
|
||||||
|
backgroundColor: theme.buttonBareBackgroundHover,
|
||||||
|
}),
|
||||||
|
...style,
|
||||||
|
}}
|
||||||
|
onPress={onSelect}
|
||||||
|
aria-label={title}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</Button>
|
||||||
|
</Tooltip>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -848,6 +848,7 @@ function CustomReportInner({ report: initialReport }: CustomReportInnerProps) {
|
|||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
<View
|
<View
|
||||||
|
id="custom-report-content"
|
||||||
style={{
|
style={{
|
||||||
backgroundColor: theme.tableBackground,
|
backgroundColor: theme.tableBackground,
|
||||||
flexDirection: 'row',
|
flexDirection: 'row',
|
||||||
|
|||||||
6
upcoming-release-notes/4219.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
category: Features
|
||||||
|
authors: [ADRROE]
|
||||||
|
---
|
||||||
|
|
||||||
|
Add functionality to download custom reports as an image.
|
||||||
226
yarn.lock
@@ -434,7 +434,14 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.26.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3":
|
"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3":
|
||||||
|
version: 7.22.5
|
||||||
|
resolution: "@babel/helper-plugin-utils@npm:7.22.5"
|
||||||
|
checksum: 10/ab220db218089a2aadd0582f5833fd17fa300245999f5f8784b10f5a75267c4e808592284a29438a0da365e702f05acb369f99e1c915c02f9f9210ec60eab8ea
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.26.5":
|
||||||
version: 7.26.5
|
version: 7.26.5
|
||||||
resolution: "@babel/helper-plugin-utils@npm:7.26.5"
|
resolution: "@babel/helper-plugin-utils@npm:7.26.5"
|
||||||
checksum: 10/1cc0fd8514da3bb249bed6c27227696ab5e84289749d7258098701cffc0c599b7f61ec40dd332f8613030564b79899d9826813c96f966330bcfc7145a8377857
|
checksum: 10/1cc0fd8514da3bb249bed6c27227696ab5e84289749d7258098701cffc0c599b7f61ec40dd332f8613030564b79899d9826813c96f966330bcfc7145a8377857
|
||||||
@@ -486,6 +493,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@babel/helper-string-parser@npm:^7.24.8":
|
||||||
|
version: 7.24.8
|
||||||
|
resolution: "@babel/helper-string-parser@npm:7.24.8"
|
||||||
|
checksum: 10/6d1bf8f27dd725ce02bdc6dffca3c95fb9ab8a06adc2edbd9c1c9d68500274230d1a609025833ed81981eff560045b6b38f7b4c6fb1ab19fc90e5004e3932535
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@babel/helper-string-parser@npm:^7.25.9":
|
"@babel/helper-string-parser@npm:^7.25.9":
|
||||||
version: 7.25.9
|
version: 7.25.9
|
||||||
resolution: "@babel/helper-string-parser@npm:7.25.9"
|
resolution: "@babel/helper-string-parser@npm:7.25.9"
|
||||||
@@ -500,6 +514,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@babel/helper-validator-identifier@npm:^7.24.7":
|
||||||
|
version: 7.24.7
|
||||||
|
resolution: "@babel/helper-validator-identifier@npm:7.24.7"
|
||||||
|
checksum: 10/86875063f57361471b531dbc2ea10bbf5406e12b06d249b03827d361db4cad2388c6f00936bcd9dc86479f7e2c69ea21412c2228d4b3672588b754b70a449d4b
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@babel/helper-validator-option@npm:^7.23.5, @babel/helper-validator-option@npm:^7.25.9":
|
"@babel/helper-validator-option@npm:^7.23.5, @babel/helper-validator-option@npm:^7.25.9":
|
||||||
version: 7.25.9
|
version: 7.25.9
|
||||||
resolution: "@babel/helper-validator-option@npm:7.25.9"
|
resolution: "@babel/helper-validator-option@npm:7.25.9"
|
||||||
@@ -528,7 +549,18 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.26.9":
|
"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7":
|
||||||
|
version: 7.25.6
|
||||||
|
resolution: "@babel/parser@npm:7.25.6"
|
||||||
|
dependencies:
|
||||||
|
"@babel/types": "npm:^7.25.6"
|
||||||
|
bin:
|
||||||
|
parser: ./bin/babel-parser.js
|
||||||
|
checksum: 10/830aab72116aa14eb8d61bfa8f9d69fc8f3a43d909ce993cb4350ae14d3af1a2f740a54410a22d821c48a253263643dfecbc094f9608e6a70ce9ff3c0bbfe91a
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@babel/parser@npm:^7.23.9, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.26.9":
|
||||||
version: 7.26.10
|
version: 7.26.10
|
||||||
resolution: "@babel/parser@npm:7.26.10"
|
resolution: "@babel/parser@npm:7.26.10"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -694,7 +726,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@babel/plugin-syntax-jsx@npm:^7.25.9, @babel/plugin-syntax-jsx@npm:^7.7.2":
|
"@babel/plugin-syntax-jsx@npm:^7.25.9":
|
||||||
version: 7.25.9
|
version: 7.25.9
|
||||||
resolution: "@babel/plugin-syntax-jsx@npm:7.25.9"
|
resolution: "@babel/plugin-syntax-jsx@npm:7.25.9"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -705,6 +737,17 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@babel/plugin-syntax-jsx@npm:^7.7.2":
|
||||||
|
version: 7.22.5
|
||||||
|
resolution: "@babel/plugin-syntax-jsx@npm:7.22.5"
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-plugin-utils": "npm:^7.22.5"
|
||||||
|
peerDependencies:
|
||||||
|
"@babel/core": ^7.0.0-0
|
||||||
|
checksum: 10/8829d30c2617ab31393d99cec2978e41f014f4ac6f01a1cecf4c4dd8320c3ec12fdc3ce121126b2d8d32f6887e99ca1a0bad53dedb1e6ad165640b92b24980ce
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3":
|
"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3":
|
||||||
version: 7.10.4
|
version: 7.10.4
|
||||||
resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4"
|
resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4"
|
||||||
@@ -793,7 +836,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@babel/plugin-syntax-typescript@npm:^7.25.9, @babel/plugin-syntax-typescript@npm:^7.7.2":
|
"@babel/plugin-syntax-typescript@npm:^7.25.9":
|
||||||
version: 7.25.9
|
version: 7.25.9
|
||||||
resolution: "@babel/plugin-syntax-typescript@npm:7.25.9"
|
resolution: "@babel/plugin-syntax-typescript@npm:7.25.9"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -804,6 +847,17 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@babel/plugin-syntax-typescript@npm:^7.7.2":
|
||||||
|
version: 7.22.5
|
||||||
|
resolution: "@babel/plugin-syntax-typescript@npm:7.22.5"
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-plugin-utils": "npm:^7.22.5"
|
||||||
|
peerDependencies:
|
||||||
|
"@babel/core": ^7.0.0-0
|
||||||
|
checksum: 10/8ab7718fbb026d64da93681a57797d60326097fd7cb930380c8bffd9eb101689e90142c760a14b51e8e69c88a73ba3da956cb4520a3b0c65743aee5c71ef360a
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6":
|
"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6":
|
||||||
version: 7.18.6
|
version: 7.18.6
|
||||||
resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6"
|
resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6"
|
||||||
@@ -1589,6 +1643,17 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@babel/types@npm:^7.25.6":
|
||||||
|
version: 7.25.6
|
||||||
|
resolution: "@babel/types@npm:7.25.6"
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-string-parser": "npm:^7.24.8"
|
||||||
|
"@babel/helper-validator-identifier": "npm:^7.24.7"
|
||||||
|
to-fast-properties: "npm:^2.0.0"
|
||||||
|
checksum: 10/7b54665e1b51f525fe0f451efdd9fe7a4a6dfba3fd4956c3530bc77336b66ffe3d78c093796ed044119b5d213176af7cf326f317a2057c538d575c6cefcb3562
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@bcoe/v8-coverage@npm:^0.2.3":
|
"@bcoe/v8-coverage@npm:^0.2.3":
|
||||||
version: 0.2.3
|
version: 0.2.3
|
||||||
resolution: "@bcoe/v8-coverage@npm:0.2.3"
|
resolution: "@bcoe/v8-coverage@npm:0.2.3"
|
||||||
@@ -5566,7 +5631,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/babel__core@npm:^7, @types/babel__core@npm:^7.1.14":
|
"@types/babel__core@npm:^7":
|
||||||
version: 7.20.5
|
version: 7.20.5
|
||||||
resolution: "@types/babel__core@npm:7.20.5"
|
resolution: "@types/babel__core@npm:7.20.5"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -5579,6 +5644,19 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@types/babel__core@npm:^7.1.14":
|
||||||
|
version: 7.20.0
|
||||||
|
resolution: "@types/babel__core@npm:7.20.0"
|
||||||
|
dependencies:
|
||||||
|
"@babel/parser": "npm:^7.20.7"
|
||||||
|
"@babel/types": "npm:^7.20.7"
|
||||||
|
"@types/babel__generator": "npm:*"
|
||||||
|
"@types/babel__template": "npm:*"
|
||||||
|
"@types/babel__traverse": "npm:*"
|
||||||
|
checksum: 10/b82e432bfc42075d4f6218e5ed5c4a7cdeb087e0416f969fc65a755c41d129d7e369c93e9a9dc59d43291327aa8d7cd149f3573d1c3b54d0192561d02bb225eb
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@types/babel__generator@npm:*":
|
"@types/babel__generator@npm:*":
|
||||||
version: 7.6.4
|
version: 7.6.4
|
||||||
resolution: "@types/babel__generator@npm:7.6.4"
|
resolution: "@types/babel__generator@npm:7.6.4"
|
||||||
@@ -5800,7 +5878,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6":
|
"@types/estree@npm:*, @types/estree@npm:^1.0.6":
|
||||||
version: 1.0.6
|
version: 1.0.6
|
||||||
resolution: "@types/estree@npm:1.0.6"
|
resolution: "@types/estree@npm:1.0.6"
|
||||||
checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d
|
checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d
|
||||||
@@ -5814,7 +5892,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/estree@npm:1.0.5":
|
"@types/estree@npm:1.0.5, @types/estree@npm:^1.0.0":
|
||||||
version: 1.0.5
|
version: 1.0.5
|
||||||
resolution: "@types/estree@npm:1.0.5"
|
resolution: "@types/estree@npm:1.0.5"
|
||||||
checksum: 10/7de6d928dd4010b0e20c6919e1a6c27b61f8d4567befa89252055fad503d587ecb9a1e3eab1b1901f923964d7019796db810b7fd6430acb26c32866d126fd408
|
checksum: 10/7de6d928dd4010b0e20c6919e1a6c27b61f8d4567befa89252055fad503d587ecb9a1e3eab1b1901f923964d7019796db810b7fd6430acb26c32866d126fd408
|
||||||
@@ -6905,7 +6983,14 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.3.2":
|
"acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.3.2":
|
||||||
|
version: 8.3.2
|
||||||
|
resolution: "acorn-walk@npm:8.3.2"
|
||||||
|
checksum: 10/57dbe2fd8cf744f562431775741c5c087196cd7a65ce4ccb3f3981cdfad25cd24ad2bad404997b88464ac01e789a0a61e5e355b2a84876f13deef39fb39686ca
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"acorn-walk@npm:^8.0.2":
|
||||||
version: 8.3.4
|
version: 8.3.4
|
||||||
resolution: "acorn-walk@npm:8.3.4"
|
resolution: "acorn-walk@npm:8.3.4"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -6914,7 +6999,16 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.10.0, acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.4.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2":
|
"acorn@npm:^8.0.4, acorn@npm:^8.10.0, acorn@npm:^8.4.1, acorn@npm:^8.8.2":
|
||||||
|
version: 8.11.2
|
||||||
|
resolution: "acorn@npm:8.11.2"
|
||||||
|
bin:
|
||||||
|
acorn: bin/acorn
|
||||||
|
checksum: 10/ff559b891382ad4cd34cc3c493511d0a7075a51f5f9f02a03440e92be3705679367238338566c5fbd3521ecadd565d29301bc8e16cb48379206bffbff3d72500
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.8.1":
|
||||||
version: 8.14.1
|
version: 8.14.1
|
||||||
resolution: "acorn@npm:8.14.1"
|
resolution: "acorn@npm:8.14.1"
|
||||||
bin:
|
bin:
|
||||||
@@ -6923,6 +7017,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"acorn@npm:^8.14.0":
|
||||||
|
version: 8.14.0
|
||||||
|
resolution: "acorn@npm:8.14.0"
|
||||||
|
bin:
|
||||||
|
acorn: bin/acorn
|
||||||
|
checksum: 10/6df29c35556782ca9e632db461a7f97947772c6c1d5438a81f0c873a3da3a792487e83e404d1c6c25f70513e91aa18745f6eafb1fcc3a43ecd1920b21dd173d2
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"actual@workspace:.":
|
"actual@workspace:.":
|
||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "actual@workspace:."
|
resolution: "actual@workspace:."
|
||||||
@@ -6939,6 +7042,7 @@ __metadata:
|
|||||||
eslint-plugin-react-hooks: "npm:^5.2.0"
|
eslint-plugin-react-hooks: "npm:^5.2.0"
|
||||||
eslint-plugin-rulesdir: "npm:^0.2.2"
|
eslint-plugin-rulesdir: "npm:^0.2.2"
|
||||||
globals: "npm:^15.13.0"
|
globals: "npm:^15.13.0"
|
||||||
|
html-to-image: "npm:^1.11.11"
|
||||||
husky: "npm:^9.1.7"
|
husky: "npm:^9.1.7"
|
||||||
lint-staged: "npm:^15.5.0"
|
lint-staged: "npm:^15.5.0"
|
||||||
node-jq: "npm:^4.0.2"
|
node-jq: "npm:^4.0.2"
|
||||||
@@ -7036,7 +7140,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"ajv@npm:^8.0.0, ajv@npm:^8.6.0, ajv@npm:^8.9.0":
|
"ajv@npm:^8.0.0, ajv@npm:^8.9.0":
|
||||||
version: 8.17.1
|
version: 8.17.1
|
||||||
resolution: "ajv@npm:8.17.1"
|
resolution: "ajv@npm:8.17.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -7048,6 +7152,18 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"ajv@npm:^8.6.0":
|
||||||
|
version: 8.12.0
|
||||||
|
resolution: "ajv@npm:8.12.0"
|
||||||
|
dependencies:
|
||||||
|
fast-deep-equal: "npm:^3.1.1"
|
||||||
|
json-schema-traverse: "npm:^1.0.0"
|
||||||
|
require-from-string: "npm:^2.0.2"
|
||||||
|
uri-js: "npm:^4.2.2"
|
||||||
|
checksum: 10/b406f3b79b5756ac53bfe2c20852471b08e122bc1ee4cde08ae4d6a800574d9cd78d60c81c69c63ff81e4da7cd0b638fafbb2303ae580d49cf1600b9059efb85
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"ansi-escapes@npm:^4.2.1":
|
"ansi-escapes@npm:^4.2.1":
|
||||||
version: 4.3.2
|
version: 4.3.2
|
||||||
resolution: "ansi-escapes@npm:4.3.2"
|
resolution: "ansi-escapes@npm:4.3.2"
|
||||||
@@ -8306,7 +8422,26 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3":
|
"chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.5.3":
|
||||||
|
version: 3.5.3
|
||||||
|
resolution: "chokidar@npm:3.5.3"
|
||||||
|
dependencies:
|
||||||
|
anymatch: "npm:~3.1.2"
|
||||||
|
braces: "npm:~3.0.2"
|
||||||
|
fsevents: "npm:~2.3.2"
|
||||||
|
glob-parent: "npm:~5.1.2"
|
||||||
|
is-binary-path: "npm:~2.1.0"
|
||||||
|
is-glob: "npm:~4.0.1"
|
||||||
|
normalize-path: "npm:~3.0.0"
|
||||||
|
readdirp: "npm:~3.6.0"
|
||||||
|
dependenciesMeta:
|
||||||
|
fsevents:
|
||||||
|
optional: true
|
||||||
|
checksum: 10/863e3ff78ee7a4a24513d2a416856e84c8e4f5e60efbe03e8ab791af1a183f569b62fc6f6b8044e2804966cb81277ddbbc1dc374fba3265bd609ea8efd62f5b3
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"chokidar@npm:^3.5.2":
|
||||||
version: 3.6.0
|
version: 3.6.0
|
||||||
resolution: "chokidar@npm:3.6.0"
|
resolution: "chokidar@npm:3.6.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -9297,15 +9432,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"debug@npm:4, debug@npm:^4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.6, debug@npm:^4.4.0":
|
"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4":
|
||||||
version: 4.4.0
|
version: 4.3.6
|
||||||
resolution: "debug@npm:4.4.0"
|
resolution: "debug@npm:4.3.6"
|
||||||
dependencies:
|
dependencies:
|
||||||
ms: "npm:^2.1.3"
|
ms: "npm:2.1.2"
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
supports-color:
|
supports-color:
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/1847944c2e3c2c732514b93d11886575625686056cd765336212dc15de2d2b29612b6cd80e1afba767bb8e1803b778caf9973e98169ef1a24a7a7009e1820367
|
checksum: 10/d3adb9af7d57a9e809a68f404490cf776122acca16e6359a2702c0f462e510e91f9765c07f707b8ab0d91e03bad57328f3256f5082631cefb5393d0394d50fb7
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@@ -9318,6 +9453,18 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"debug@npm:^4, debug@npm:^4.3.6, debug@npm:^4.4.0":
|
||||||
|
version: 4.4.0
|
||||||
|
resolution: "debug@npm:4.4.0"
|
||||||
|
dependencies:
|
||||||
|
ms: "npm:^2.1.3"
|
||||||
|
peerDependenciesMeta:
|
||||||
|
supports-color:
|
||||||
|
optional: true
|
||||||
|
checksum: 10/1847944c2e3c2c732514b93d11886575625686056cd765336212dc15de2d2b29612b6cd80e1afba767bb8e1803b778caf9973e98169ef1a24a7a7009e1820367
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"decimal.js-light@npm:^2.4.1":
|
"decimal.js-light@npm:^2.4.1":
|
||||||
version: 2.5.1
|
version: 2.5.1
|
||||||
resolution: "decimal.js-light@npm:2.5.1"
|
resolution: "decimal.js-light@npm:2.5.1"
|
||||||
@@ -12530,6 +12677,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"html-to-image@npm:^1.11.11":
|
||||||
|
version: 1.11.11
|
||||||
|
resolution: "html-to-image@npm:1.11.11"
|
||||||
|
checksum: 10/099206c3aaa54ca36d0df91426fe2b05258fe73c913dca6874dd8250973d47f629d3f45e427d5d51cc416ee305b898ce8db0a71336b3700a059ef1116b64d944
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"htmlparser2@npm:^9.1.0":
|
"htmlparser2@npm:^9.1.0":
|
||||||
version: 9.1.0
|
version: 9.1.0
|
||||||
resolution: "htmlparser2@npm:9.1.0"
|
resolution: "htmlparser2@npm:9.1.0"
|
||||||
@@ -16016,6 +16170,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"ms@npm:2.1.2":
|
||||||
|
version: 2.1.2
|
||||||
|
resolution: "ms@npm:2.1.2"
|
||||||
|
checksum: 10/673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3":
|
"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3":
|
||||||
version: 2.1.3
|
version: 2.1.3
|
||||||
resolution: "ms@npm:2.1.3"
|
resolution: "ms@npm:2.1.3"
|
||||||
@@ -18897,7 +19058,16 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0":
|
"semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.6.0":
|
||||||
|
version: 7.6.3
|
||||||
|
resolution: "semver@npm:7.6.3"
|
||||||
|
bin:
|
||||||
|
semver: bin/semver.js
|
||||||
|
checksum: 10/36b1fbe1a2b6f873559cd57b238f1094a053dbfd997ceeb8757d79d1d2089c56d1321b9f1069ce263dc64cfa922fa1d2ad566b39426fe1ac6c723c1487589e10
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"semver@npm:^7.5.4":
|
||||||
version: 7.7.1
|
version: 7.7.1
|
||||||
resolution: "semver@npm:7.7.1"
|
resolution: "semver@npm:7.7.1"
|
||||||
bin:
|
bin:
|
||||||
@@ -20289,6 +20459,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"to-fast-properties@npm:^2.0.0":
|
||||||
|
version: 2.0.0
|
||||||
|
resolution: "to-fast-properties@npm:2.0.0"
|
||||||
|
checksum: 10/be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"to-regex-range@npm:^5.0.1":
|
"to-regex-range@npm:^5.0.1":
|
||||||
version: 5.0.1
|
version: 5.0.1
|
||||||
resolution: "to-regex-range@npm:5.0.1"
|
resolution: "to-regex-range@npm:5.0.1"
|
||||||
@@ -21876,7 +22053,20 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.2":
|
"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.2":
|
||||||
|
version: 1.1.15
|
||||||
|
resolution: "which-typed-array@npm:1.1.15"
|
||||||
|
dependencies:
|
||||||
|
available-typed-arrays: "npm:^1.0.7"
|
||||||
|
call-bind: "npm:^1.0.7"
|
||||||
|
for-each: "npm:^0.3.3"
|
||||||
|
gopd: "npm:^1.0.1"
|
||||||
|
has-tostringtag: "npm:^1.0.2"
|
||||||
|
checksum: 10/c3b6a99beadc971baa53c3ee5b749f2b9bdfa3b3b9a70650dd8511a48b61d877288b498d424712e9991d16019633086bd8b5923369460d93463c5825fa36c448
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"which-typed-array@npm:^1.1.16":
|
||||||
version: 1.1.16
|
version: 1.1.16
|
||||||
resolution: "which-typed-array@npm:1.1.16"
|
resolution: "which-typed-array@npm:1.1.16"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|||||||