diff --git a/package-lock.json b/package-lock.json
index b9db728..bc20a09 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -66,6 +66,7 @@
"@redhat-cloud-services/frontend-components-utilities": ">= 6.1.0",
"@tanstack/react-pacer": ">= 0.15.0",
"@tanstack/react-query": ">= 5.83.0",
+ "deepmerge": ">= 4.3.1",
"p-all": ">= 4.0.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
@@ -1348,9 +1349,9 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz",
- "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz",
+ "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==",
"cpu": [
"ppc64"
],
@@ -1365,9 +1366,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz",
- "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz",
+ "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==",
"cpu": [
"arm"
],
@@ -1382,9 +1383,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz",
- "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz",
+ "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==",
"cpu": [
"arm64"
],
@@ -1399,9 +1400,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz",
- "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz",
+ "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==",
"cpu": [
"x64"
],
@@ -1416,9 +1417,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz",
- "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz",
+ "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==",
"cpu": [
"arm64"
],
@@ -1433,9 +1434,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz",
- "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz",
+ "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==",
"cpu": [
"x64"
],
@@ -1450,9 +1451,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz",
- "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz",
+ "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==",
"cpu": [
"arm64"
],
@@ -1467,9 +1468,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz",
- "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz",
+ "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==",
"cpu": [
"x64"
],
@@ -1484,9 +1485,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz",
- "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz",
+ "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==",
"cpu": [
"arm"
],
@@ -1501,9 +1502,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz",
- "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz",
+ "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==",
"cpu": [
"arm64"
],
@@ -1518,9 +1519,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz",
- "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz",
+ "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==",
"cpu": [
"ia32"
],
@@ -1535,9 +1536,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz",
- "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz",
+ "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==",
"cpu": [
"loong64"
],
@@ -1552,9 +1553,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz",
- "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz",
+ "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==",
"cpu": [
"mips64el"
],
@@ -1569,9 +1570,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz",
- "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz",
+ "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==",
"cpu": [
"ppc64"
],
@@ -1586,9 +1587,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz",
- "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz",
+ "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==",
"cpu": [
"riscv64"
],
@@ -1603,9 +1604,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz",
- "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz",
+ "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==",
"cpu": [
"s390x"
],
@@ -1620,9 +1621,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz",
- "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz",
+ "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==",
"cpu": [
"x64"
],
@@ -1637,9 +1638,9 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz",
- "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz",
+ "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==",
"cpu": [
"arm64"
],
@@ -1654,9 +1655,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz",
- "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz",
+ "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==",
"cpu": [
"x64"
],
@@ -1671,9 +1672,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz",
- "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz",
+ "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==",
"cpu": [
"arm64"
],
@@ -1688,9 +1689,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz",
- "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz",
+ "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==",
"cpu": [
"x64"
],
@@ -1705,9 +1706,9 @@
}
},
"node_modules/@esbuild/openharmony-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz",
- "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz",
+ "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==",
"cpu": [
"arm64"
],
@@ -1722,9 +1723,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz",
- "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz",
+ "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==",
"cpu": [
"x64"
],
@@ -1739,9 +1740,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz",
- "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz",
+ "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==",
"cpu": [
"arm64"
],
@@ -1756,9 +1757,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz",
- "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz",
+ "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==",
"cpu": [
"ia32"
],
@@ -1773,9 +1774,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz",
- "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz",
+ "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==",
"cpu": [
"x64"
],
@@ -3249,9 +3250,6 @@
"arm64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -3269,9 +3267,6 @@
"arm64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -3289,9 +3284,6 @@
"ppc64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -3309,9 +3301,6 @@
"riscv64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -3329,9 +3318,6 @@
"riscv64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -3349,9 +3335,6 @@
"s390x"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -3369,9 +3352,6 @@
"x64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -3389,9 +3369,6 @@
"x64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -3604,9 +3581,6 @@
"arm64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -3621,9 +3595,6 @@
"arm64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -3638,9 +3609,6 @@
"ppc64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -3655,9 +3623,6 @@
"riscv64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -3672,9 +3637,6 @@
"riscv64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -3689,9 +3651,6 @@
"s390x"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -3706,9 +3665,6 @@
"x64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -3723,9 +3679,6 @@
"x64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -4624,32 +4577,32 @@
}
},
"node_modules/@sentry/browser": {
- "version": "10.69.0",
- "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.69.0.tgz",
- "integrity": "sha512-8391tnm96YbR7b8SYfEA/NEIZuyb2r3SZrtAT0bhZtjlujcYWjo7gugQvk8sWLU9cAa/euD00eJoIoJvNfpd7Q==",
+ "version": "10.70.0",
+ "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.70.0.tgz",
+ "integrity": "sha512-IK6+J+8H06tZe+A8L37TT5ZxxwNtyQatW8zl5RYYJ/e9CsjrM8fPi8I1OT7uquTw8UtjqFHt7bEef/Vy63ksPg==",
"license": "MIT",
"peer": true,
"dependencies": {
- "@sentry/browser-utils": "10.69.0",
+ "@sentry/browser-utils": "10.70.0",
"@sentry/conventions": "^0.16.0",
- "@sentry/core": "10.69.0",
- "@sentry/feedback": "10.69.0",
- "@sentry/replay": "10.69.0",
- "@sentry/replay-canvas": "10.69.0"
+ "@sentry/core": "10.70.0",
+ "@sentry/feedback": "10.70.0",
+ "@sentry/replay": "10.70.0",
+ "@sentry/replay-canvas": "10.70.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@sentry/browser-utils": {
- "version": "10.69.0",
- "resolved": "https://registry.npmjs.org/@sentry/browser-utils/-/browser-utils-10.69.0.tgz",
- "integrity": "sha512-e/u1Abj0zRPwR/deGZAP3GOULrsx67/XXnM5Skniqs4uxTsdNtPek1Nef0tpxwaQJYxwh6pWdhswLPPbbPOgBQ==",
+ "version": "10.70.0",
+ "resolved": "https://registry.npmjs.org/@sentry/browser-utils/-/browser-utils-10.70.0.tgz",
+ "integrity": "sha512-IvjhafF5NFXrPCg5EHbAPGDwIhHxgUcLlHTklZ3DAdA6ky88BJYMfevbcnOEmgavf4nylhCaquRUFNB5+szj+A==",
"license": "MIT",
"peer": true,
"dependencies": {
"@sentry/conventions": "^0.16.0",
- "@sentry/core": "10.69.0"
+ "@sentry/core": "10.70.0"
},
"engines": {
"node": ">=18"
@@ -4666,9 +4619,9 @@
}
},
"node_modules/@sentry/core": {
- "version": "10.69.0",
- "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.69.0.tgz",
- "integrity": "sha512-+uuqVEeiDzYuAKjZLqsROKXvRTbl/QeH0gfGRtpYib1cud4rAFWRIkFmcR7Jb7JGFYwmReyQotiTj/hcDszTZg==",
+ "version": "10.70.0",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.70.0.tgz",
+ "integrity": "sha512-ozhCTDqg89oB4XmWfAwuHshABpvT7AkRpaPnogopPfMAaI61G1t8EKCJ4W7aum8JSBonlfyjPCyW5oYZFm0KvA==",
"license": "MIT",
"peer": true,
"dependencies": {
@@ -4679,41 +4632,41 @@
}
},
"node_modules/@sentry/feedback": {
- "version": "10.69.0",
- "resolved": "https://registry.npmjs.org/@sentry/feedback/-/feedback-10.69.0.tgz",
- "integrity": "sha512-qrGz5Qaw93/IhMjlFN6uIaXeHwgHDaKGa6FkTAP6PonpkvSbGGqan6xfsENxzj9HUVoli1lZ6tMRDnt2qtSPhg==",
+ "version": "10.70.0",
+ "resolved": "https://registry.npmjs.org/@sentry/feedback/-/feedback-10.70.0.tgz",
+ "integrity": "sha512-6VQn2ETJjHkk4QQDdx/587/JDfXsk3yBTLZ3UZOMtBVrkmwgk+1FJZ8ULJ3ud1xZcuh2icunIkc7tGVv2axdnw==",
"license": "MIT",
"peer": true,
"dependencies": {
- "@sentry/core": "10.69.0"
+ "@sentry/core": "10.70.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@sentry/replay": {
- "version": "10.69.0",
- "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-10.69.0.tgz",
- "integrity": "sha512-uRhmNhtFGPOlM0iniVmWKAX3KVXI0le41yYK/iKdPjinT9jA3ZrmykO/Fv1v/KI5znOtwa9D6eHRnDTTMRxFrg==",
+ "version": "10.70.0",
+ "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-10.70.0.tgz",
+ "integrity": "sha512-xMnSGzJn9Xd29rYd32lkx/gFW+5mtgqADJ2FiZvis0MBGZuDlNRwPn0/Cs1xA3JNXKV3NGfhdmmvs90w4dHSmw==",
"license": "MIT",
"peer": true,
"dependencies": {
- "@sentry/browser-utils": "10.69.0",
- "@sentry/core": "10.69.0"
+ "@sentry/browser-utils": "10.70.0",
+ "@sentry/core": "10.70.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@sentry/replay-canvas": {
- "version": "10.69.0",
- "resolved": "https://registry.npmjs.org/@sentry/replay-canvas/-/replay-canvas-10.69.0.tgz",
- "integrity": "sha512-VF6nXvSninHcc7dC1Zme0RjkC7VgRMCixs6jKaQX5zTNeqTW3dZGSefSOVv+ZteRi3hJvVORq985VjUC9Z/0+A==",
+ "version": "10.70.0",
+ "resolved": "https://registry.npmjs.org/@sentry/replay-canvas/-/replay-canvas-10.70.0.tgz",
+ "integrity": "sha512-irzpw22bK5CF3jbecDa0gBUcfjv7tgeUoLAvtIfeHOP5ajmf3o4Cp99a9RQqkfgvkcMeRZBUwE91SQhp6Ank+w==",
"license": "MIT",
"peer": true,
"dependencies": {
- "@sentry/core": "10.69.0",
- "@sentry/replay": "10.69.0"
+ "@sentry/core": "10.70.0",
+ "@sentry/replay": "10.70.0"
},
"engines": {
"node": ">=18"
@@ -5283,9 +5236,6 @@
"arm64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "Apache-2.0 AND MIT",
"optional": true,
"os": [
@@ -5303,9 +5253,6 @@
"arm64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "Apache-2.0 AND MIT",
"optional": true,
"os": [
@@ -5323,9 +5270,6 @@
"ppc64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "Apache-2.0 AND MIT",
"optional": true,
"os": [
@@ -5343,9 +5287,6 @@
"s390x"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "Apache-2.0 AND MIT",
"optional": true,
"os": [
@@ -5363,9 +5304,6 @@
"x64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "Apache-2.0 AND MIT",
"optional": true,
"os": [
@@ -5383,9 +5321,6 @@
"x64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "Apache-2.0 AND MIT",
"optional": true,
"os": [
@@ -6024,17 +5959,17 @@
"license": "MIT"
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.66.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.66.0.tgz",
- "integrity": "sha512-p088eaGrzYz1s+7cov0aMOCkNGTJlVxF4jgubf28c8L0Cv9Rloj8YBHnv4hXLq6IIEE1AsjNWavO+k+8kP2Y0A==",
+ "version": "8.67.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.67.0.tgz",
+ "integrity": "sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.12.2",
- "@typescript-eslint/scope-manager": "8.66.0",
- "@typescript-eslint/type-utils": "8.66.0",
- "@typescript-eslint/utils": "8.66.0",
- "@typescript-eslint/visitor-keys": "8.66.0",
+ "@typescript-eslint/scope-manager": "8.67.0",
+ "@typescript-eslint/type-utils": "8.67.0",
+ "@typescript-eslint/utils": "8.67.0",
+ "@typescript-eslint/visitor-keys": "8.67.0",
"ignore": "^7.0.5",
"natural-compare": "^1.4.0",
"ts-api-utils": "^2.5.0"
@@ -6047,22 +5982,22 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^8.66.0",
+ "@typescript-eslint/parser": "^8.67.0",
"eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
"typescript": ">=4.8.4 <6.1.0"
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.66.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.66.0.tgz",
- "integrity": "sha512-X6ypGChaWYk6PBtUg2BwuTZEFFcHJAtGTVJ9/lCTOufhZ4i9fNolQNnktq+kkMCwMj7V8Svsq7+TxSDslmhE0g==",
+ "version": "8.67.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.67.0.tgz",
+ "integrity": "sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.66.0",
- "@typescript-eslint/types": "8.66.0",
- "@typescript-eslint/typescript-estree": "8.66.0",
- "@typescript-eslint/visitor-keys": "8.66.0",
+ "@typescript-eslint/scope-manager": "8.67.0",
+ "@typescript-eslint/types": "8.67.0",
+ "@typescript-eslint/typescript-estree": "8.67.0",
+ "@typescript-eslint/visitor-keys": "8.67.0",
"debug": "^4.4.3"
},
"engines": {
@@ -6078,14 +6013,14 @@
}
},
"node_modules/@typescript-eslint/project-service": {
- "version": "8.66.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.66.0.tgz",
- "integrity": "sha512-7MthGPTt4BP69lSryqpqq8HQqxuzynssckL/jyDyk3+TNMQ3y2jFWkptCrktWvBrP+EH787Nl5N5Qpw7WZg+5g==",
+ "version": "8.67.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.67.0.tgz",
+ "integrity": "sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/tsconfig-utils": "^8.66.0",
- "@typescript-eslint/types": "^8.66.0",
+ "@typescript-eslint/tsconfig-utils": "^8.67.0",
+ "@typescript-eslint/types": "^8.67.0",
"debug": "^4.4.3"
},
"engines": {
@@ -6100,14 +6035,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.66.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.66.0.tgz",
- "integrity": "sha512-8TGcH25j9zqJ/IULB/ppyhRvxA8QYfFEZ7nfbg6/BN9spDgb8fPWQXlE5l8TWBL50EtUx007uZ1o9VOwrq2/9g==",
+ "version": "8.67.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.67.0.tgz",
+ "integrity": "sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.66.0",
- "@typescript-eslint/visitor-keys": "8.66.0"
+ "@typescript-eslint/types": "8.67.0",
+ "@typescript-eslint/visitor-keys": "8.67.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -6118,9 +6053,9 @@
}
},
"node_modules/@typescript-eslint/tsconfig-utils": {
- "version": "8.66.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.66.0.tgz",
- "integrity": "sha512-9D5gLYZG4rOjcoag8MQ/fWI8WqA9wcPDyOGyWtWFhvM1lHRbliqUSPIY5J3zqCU1tvSwzXxnnjhQhz5Ne7mJ4g==",
+ "version": "8.67.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.67.0.tgz",
+ "integrity": "sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6135,15 +6070,15 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.66.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.66.0.tgz",
- "integrity": "sha512-LG2dWfjZQQp0ADtAu/EWJVayefGL2UEZ3CDeI44D9v3rXB/WYUqE/jpO28KrEKul5AySrmI+Zh1v6v+xW2U9+g==",
+ "version": "8.67.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.67.0.tgz",
+ "integrity": "sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.66.0",
- "@typescript-eslint/typescript-estree": "8.66.0",
- "@typescript-eslint/utils": "8.66.0",
+ "@typescript-eslint/types": "8.67.0",
+ "@typescript-eslint/typescript-estree": "8.67.0",
+ "@typescript-eslint/utils": "8.67.0",
"debug": "^4.4.3",
"ts-api-utils": "^2.5.0"
},
@@ -6160,9 +6095,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.66.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.66.0.tgz",
- "integrity": "sha512-H6gcYaSDOyvL3AD/jHUtUFo2jqGgn/F6nuyuZSu0QTesxL+cP4dQoIMrODRofuJC09g64+WgZ6tE19Y1N2YIFQ==",
+ "version": "8.67.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.67.0.tgz",
+ "integrity": "sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6174,16 +6109,16 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.66.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.66.0.tgz",
- "integrity": "sha512-8/x4INiiQb10jGgXYD7116/zQ+OL84ZIFn0za68wwFHCanT/VLbBEroWht8RV8fn0/ZCAoazHLQgwUC0UQcDfg==",
+ "version": "8.67.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.67.0.tgz",
+ "integrity": "sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/project-service": "8.66.0",
- "@typescript-eslint/tsconfig-utils": "8.66.0",
- "@typescript-eslint/types": "8.66.0",
- "@typescript-eslint/visitor-keys": "8.66.0",
+ "@typescript-eslint/project-service": "8.67.0",
+ "@typescript-eslint/tsconfig-utils": "8.67.0",
+ "@typescript-eslint/types": "8.67.0",
+ "@typescript-eslint/visitor-keys": "8.67.0",
"debug": "^4.4.3",
"minimatch": "^10.2.2",
"semver": "^7.7.3",
@@ -6215,16 +6150,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.66.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.66.0.tgz",
- "integrity": "sha512-jasearZPolBw5NJNYGMwxzHMF83niVWmMU1VdHzG1CyfI2VS7f7nZltnKtHcg20hW+7Uo5GfK4MeDPoU3qI8EA==",
+ "version": "8.67.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.67.0.tgz",
+ "integrity": "sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.9.1",
- "@typescript-eslint/scope-manager": "8.66.0",
- "@typescript-eslint/types": "8.66.0",
- "@typescript-eslint/typescript-estree": "8.66.0"
+ "@typescript-eslint/scope-manager": "8.67.0",
+ "@typescript-eslint/types": "8.67.0",
+ "@typescript-eslint/typescript-estree": "8.67.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -6239,13 +6174,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.66.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.66.0.tgz",
- "integrity": "sha512-dkKR8q+lKciskj1Y3vthHktl+3cMLWGyVUP23bRiPZ5O9BRT++4EqDDV+TVeIKBL1VXVEqrJlz8MYbcnvJcAlg==",
+ "version": "8.67.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.67.0.tgz",
+ "integrity": "sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.66.0",
+ "@typescript-eslint/types": "8.67.0",
"eslint-visitor-keys": "^5.0.0"
},
"engines": {
@@ -6382,9 +6317,6 @@
"arm64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -6399,9 +6331,6 @@
"arm64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -6416,9 +6345,6 @@
"loong64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -6433,9 +6359,6 @@
"loong64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -6450,9 +6373,6 @@
"ppc64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -6467,9 +6387,6 @@
"riscv64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -6484,9 +6401,6 @@
"riscv64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -6501,9 +6415,6 @@
"s390x"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -6518,9 +6429,6 @@
"x64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -6535,9 +6443,6 @@
"x64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -9092,9 +8997,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.5.402",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.402.tgz",
- "integrity": "sha512-/oOpMaPT6Yg+6/1XQhyIPlzgj7Ye9zf+nNM2Uh6OcE2G2oNptWazFa+qB2Pdqqbsc9KnIDzgAntoYN0dbwOXwA==",
+ "version": "1.5.403",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.403.tgz",
+ "integrity": "sha512-MQsYmdaLzvaCX5j+ZZBr5Fm6uCCnPQcRtlvmvRlWqrXy+BH2O4ffXIAScF+JQznQWB9brWp4lSD9Z4yNmaf2BA==",
"dev": true,
"license": "ISC"
},
@@ -9557,9 +9462,9 @@
]
},
"node_modules/esbuild": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz",
- "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz",
+ "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -9570,32 +9475,32 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.28.1",
- "@esbuild/android-arm": "0.28.1",
- "@esbuild/android-arm64": "0.28.1",
- "@esbuild/android-x64": "0.28.1",
- "@esbuild/darwin-arm64": "0.28.1",
- "@esbuild/darwin-x64": "0.28.1",
- "@esbuild/freebsd-arm64": "0.28.1",
- "@esbuild/freebsd-x64": "0.28.1",
- "@esbuild/linux-arm": "0.28.1",
- "@esbuild/linux-arm64": "0.28.1",
- "@esbuild/linux-ia32": "0.28.1",
- "@esbuild/linux-loong64": "0.28.1",
- "@esbuild/linux-mips64el": "0.28.1",
- "@esbuild/linux-ppc64": "0.28.1",
- "@esbuild/linux-riscv64": "0.28.1",
- "@esbuild/linux-s390x": "0.28.1",
- "@esbuild/linux-x64": "0.28.1",
- "@esbuild/netbsd-arm64": "0.28.1",
- "@esbuild/netbsd-x64": "0.28.1",
- "@esbuild/openbsd-arm64": "0.28.1",
- "@esbuild/openbsd-x64": "0.28.1",
- "@esbuild/openharmony-arm64": "0.28.1",
- "@esbuild/sunos-x64": "0.28.1",
- "@esbuild/win32-arm64": "0.28.1",
- "@esbuild/win32-ia32": "0.28.1",
- "@esbuild/win32-x64": "0.28.1"
+ "@esbuild/aix-ppc64": "0.28.2",
+ "@esbuild/android-arm": "0.28.2",
+ "@esbuild/android-arm64": "0.28.2",
+ "@esbuild/android-x64": "0.28.2",
+ "@esbuild/darwin-arm64": "0.28.2",
+ "@esbuild/darwin-x64": "0.28.2",
+ "@esbuild/freebsd-arm64": "0.28.2",
+ "@esbuild/freebsd-x64": "0.28.2",
+ "@esbuild/linux-arm": "0.28.2",
+ "@esbuild/linux-arm64": "0.28.2",
+ "@esbuild/linux-ia32": "0.28.2",
+ "@esbuild/linux-loong64": "0.28.2",
+ "@esbuild/linux-mips64el": "0.28.2",
+ "@esbuild/linux-ppc64": "0.28.2",
+ "@esbuild/linux-riscv64": "0.28.2",
+ "@esbuild/linux-s390x": "0.28.2",
+ "@esbuild/linux-x64": "0.28.2",
+ "@esbuild/netbsd-arm64": "0.28.2",
+ "@esbuild/netbsd-x64": "0.28.2",
+ "@esbuild/openbsd-arm64": "0.28.2",
+ "@esbuild/openbsd-x64": "0.28.2",
+ "@esbuild/openharmony-arm64": "0.28.2",
+ "@esbuild/sunos-x64": "0.28.2",
+ "@esbuild/win32-arm64": "0.28.2",
+ "@esbuild/win32-ia32": "0.28.2",
+ "@esbuild/win32-x64": "0.28.2"
}
},
"node_modules/escalade": {
@@ -18411,9 +18316,9 @@
}
},
"node_modules/recast": {
- "version": "0.23.19",
- "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.19.tgz",
- "integrity": "sha512-T98lym7kH+pnZmRaD8yDRdaNqyUbwnbEBx0MuchrzMFOEMray4AO3ZJoTUZ5r78Ao78X/OhzW0DL8GB85w/I2w==",
+ "version": "0.23.21",
+ "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.21.tgz",
+ "integrity": "sha512-mFAyJq9vUbSTARLZUvAEf1z3YxlvAwswbmxMx2mPA/MSm4KmpwvwvhsH/NIrZhyOuwD60Lzyw2qh83uCbgTPYw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -21149,16 +21054,16 @@
}
},
"node_modules/typescript-eslint": {
- "version": "8.66.0",
- "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.66.0.tgz",
- "integrity": "sha512-QlEbBPz/RuJ1XUHj29nm3t0F/O/cSlEnntozqPOYHnnTGAXFamnMBu5i9Vn6vhUPHGAjR+Vl+5J8vPN/BMUrJw==",
+ "version": "8.67.0",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.67.0.tgz",
+ "integrity": "sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/eslint-plugin": "8.66.0",
- "@typescript-eslint/parser": "8.66.0",
- "@typescript-eslint/typescript-estree": "8.66.0",
- "@typescript-eslint/utils": "8.66.0"
+ "@typescript-eslint/eslint-plugin": "8.67.0",
+ "@typescript-eslint/parser": "8.67.0",
+ "@typescript-eslint/typescript-estree": "8.67.0",
+ "@typescript-eslint/utils": "8.67.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -21396,9 +21301,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.0.tgz",
- "integrity": "sha512-x/M6q3w4Ybp91CNaS4S69UnliqR3BzRpOT6LWbksjth0S/+jhfaPJsWjt/TewpT8j9eLIojUf5jr29WextHroA==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.1.tgz",
+ "integrity": "sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==",
"dev": true,
"funding": [
{
diff --git a/package.json b/package.json
index 861bae1..f43c056 100644
--- a/package.json
+++ b/package.json
@@ -39,6 +39,7 @@
"@redhat-cloud-services/frontend-components-utilities": ">= 6.1.0",
"@tanstack/react-pacer": ">= 0.15.0",
"@tanstack/react-query": ">= 5.83.0",
+ "deepmerge": ">= 4.3.1",
"p-all": ">= 4.0.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
diff --git a/public/mockServiceWorker.js b/public/mockServiceWorker.js
index 86e26f3..0c970ef 100644
--- a/public/mockServiceWorker.js
+++ b/public/mockServiceWorker.js
@@ -7,8 +7,8 @@
* - Please do NOT modify this file.
*/
-const PACKAGE_VERSION = '2.13.3'
-const INTEGRITY_CHECKSUM = '4db4a41e972cec1b64cc569c66952d82'
+const PACKAGE_VERSION = '2.15.0'
+const INTEGRITY_CHECKSUM = '03cb67ac84128e63d7cd722a6e5b7f1e'
const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
const activeClientIds = new Set()
@@ -137,8 +137,18 @@ async function handleRequest(event, requestId, requestInterceptedAt) {
if (client && activeClientIds.has(client.id)) {
const serializedRequest = await serializeRequest(requestCloneForEvents)
+ // Omit the body of server-sent event stream responses.
+ // Cloning such responses would prevent client-side stream cancelations
+ // from reaching the original stream (a teed stream only cancels its
+ // source once both of its branches cancel) and would buffer the
+ // entire stream into the unconsumed clone indefinitely.
+ const isEventStreamResponse = response.headers
+ .get('content-type')
+ ?.toLowerCase()
+ .startsWith('text/event-stream')
+
// Clone the response so both the client and the library could consume it.
- const responseClone = response.clone()
+ const responseClone = isEventStreamResponse ? null : response.clone()
sendToClient(
client,
@@ -151,15 +161,17 @@ async function handleRequest(event, requestId, requestInterceptedAt) {
...serializedRequest,
},
response: {
- type: responseClone.type,
- status: responseClone.status,
- statusText: responseClone.statusText,
- headers: Object.fromEntries(responseClone.headers.entries()),
- body: responseClone.body,
+ type: response.type,
+ status: response.status,
+ statusText: response.statusText,
+ headers: Object.fromEntries(response.headers.entries()),
+ body: responseClone ? responseClone.body : null,
},
},
},
- responseClone.body ? [serializedRequest.body, responseClone.body] : [],
+ responseClone && responseClone.body
+ ? [serializedRequest.body, responseClone.body]
+ : [],
)
}
diff --git a/src/components/BaseTableToolsTable/BaseTableToolsTable.js b/src/components/BaseTableToolsTable/BaseTableToolsTable.js
new file mode 100644
index 0000000..898f6ae
--- /dev/null
+++ b/src/components/BaseTableToolsTable/BaseTableToolsTable.js
@@ -0,0 +1,12 @@
+import React from 'react';
+import TableToolsTable from '~/components/TableToolsTable';
+
+import useWithDefaults from './hooks/useWithDefaults';
+
+const BaseTableToolsTable = (props) => {
+ const propsWithDefaults = useWithDefaults(props);
+
+ return ;
+};
+
+export default BaseTableToolsTable;
diff --git a/src/components/BaseTableToolsTable/BaseTableToolsTable.stories.js b/src/components/BaseTableToolsTable/BaseTableToolsTable.stories.js
new file mode 100644
index 0000000..cc04d59
--- /dev/null
+++ b/src/components/BaseTableToolsTable/BaseTableToolsTable.stories.js
@@ -0,0 +1,109 @@
+import React from 'react';
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
+
+import defaultStoryMeta from '~/support/defaultStoryMeta';
+import columns from '~/support/factories/columns';
+import filters, {
+ customNumberFilterType,
+ customNumberFilter,
+} from '~/support/factories/filters';
+import useExampleDataQuery from '~/support/hooks/useExampleDataQuery';
+
+import { BaseTableToolsTable, TableStateProvider } from '~/components';
+import paginationSerialiser from '~/components/StaticTableToolsTable/helpers/serialisers/pagination';
+import sortSerialiser from '~/components/StaticTableToolsTable/helpers/serialisers/sort';
+import filtersSerialiser from '~/components/StaticTableToolsTable/helpers/serialisers/filters';
+
+const queryClient = new QueryClient();
+
+const meta = {
+ title: 'BaseTableToolsTable',
+ args: {
+ debug: true,
+ columns,
+ filters,
+ },
+ ...defaultStoryMeta,
+};
+
+const defaultOptions = {
+ serialisers: {
+ pagination: paginationSerialiser,
+ sort: sortSerialiser,
+ filters: filtersSerialiser,
+ },
+};
+
+const ShareableTable = (props) => (
+
+);
+
+const SharableVariantTable = (props) => (
+ artist,
+ },
+ ],
+ }}
+ />
+);
+
+const ShareableTableToolsTableExample = () => {
+ const {
+ loading,
+ result: { data, meta: { total } = {} } = {},
+ error,
+ } = useExampleDataQuery({
+ endpoint: '/api',
+ useTableState: true,
+ tableQueries: {
+ extraParams: {
+ itemIdsInTable: { idsOnly: true },
+ },
+ },
+ });
+
+ return (
+
+ );
+};
+
+ShareableTableToolsTableExample.propTypes = {};
+
+export const ShareableTableToolsTable = {
+ decorators: [
+ (Story) => (
+
+
+
+
+
+ ),
+ ],
+ render: (args) => ,
+};
+
+export default meta;
diff --git a/src/components/BaseTableToolsTable/BaseTableToolsTable.test.js b/src/components/BaseTableToolsTable/BaseTableToolsTable.test.js
new file mode 100644
index 0000000..031d3a8
--- /dev/null
+++ b/src/components/BaseTableToolsTable/BaseTableToolsTable.test.js
@@ -0,0 +1,91 @@
+import React from 'react';
+import { render, screen } from '@testing-library/react';
+
+import items from '~/support/factories/items';
+import columns from '~/support/factories/columns';
+import filters, {
+ customNumberFilterType,
+ customNumberFilter,
+} from '~/support/factories/filters';
+
+import BaseTableToolsTable from './BaseTableToolsTable';
+
+const ShareableTable = (props) => (
+
+);
+
+const SharableVariantTable = (props) => (
+ artist,
+ },
+ ],
+ }}
+ />
+);
+
+describe('BaseTableToolsTable', () => {
+ const exampleItems = items(100).sort((item) => item.name);
+ const itemsFunc = async () => [
+ exampleItems.slice(0, 10),
+ exampleItems.length,
+ ];
+
+ it('should render a table with all defaults', async () => {
+ render();
+
+ expect(await screen.findByText(exampleItems[1].title)).toBeInTheDocument();
+
+ expect(
+ screen.getByRole('columnheader', {
+ name: /title/i,
+ }),
+ ).toBeInTheDocument();
+ });
+
+ it('should render a table with one default and one additional column', async () => {
+ const ariaLabel = 'Async Test Table';
+ const props = {
+ 'aria-label': ariaLabel,
+ columns: [
+ 'another-artist',
+ {
+ title: 'Title',
+ key: 'title',
+ },
+ ],
+ items: itemsFunc,
+ };
+
+ render();
+
+ expect(await screen.findByText(exampleItems[1].title)).toBeInTheDocument();
+
+ expect(await screen.findByText('Another Artist')).toBeInTheDocument();
+
+ expect(
+ screen.getByRole('columnheader', {
+ name: /title/i,
+ }),
+ ).toBeInTheDocument();
+ screen.logTestingPlaygroundURL();
+ });
+});
diff --git a/src/components/BaseTableToolsTable/helpers.js b/src/components/BaseTableToolsTable/helpers.js
new file mode 100644
index 0000000..5f551eb
--- /dev/null
+++ b/src/components/BaseTableToolsTable/helpers.js
@@ -0,0 +1,30 @@
+import deepmerge from 'deepmerge';
+
+const getId = (item) => {
+ const key = item.key || item.label || item.title || item;
+ return typeof key === 'string' ? key.replaceAll(' ', '-').toLowerCase() : key;
+};
+
+const findDefault = (defaults, ext) =>
+ defaults.find((def) => getId(def) === getId(ext));
+
+const selectByKeyAndMerge = (defaults, extension) =>
+ extension
+ .map((ext) => {
+ const def = findDefault(defaults, ext);
+
+ if (typeof ext === 'string') {
+ return def;
+ } else if (typeof ext === 'object') {
+ return deepmerge(def, ext);
+ }
+ })
+ .filter((v) => !!v);
+
+export const compileWithDefaults = (defaults, extension) => {
+ if (typeof extension === 'undefined') {
+ return defaults;
+ } else if (Array.isArray(extension)) {
+ return selectByKeyAndMerge(defaults, extension);
+ }
+};
diff --git a/src/components/BaseTableToolsTable/hooks/useWithDefaults.js b/src/components/BaseTableToolsTable/hooks/useWithDefaults.js
new file mode 100644
index 0000000..6f655a7
--- /dev/null
+++ b/src/components/BaseTableToolsTable/hooks/useWithDefaults.js
@@ -0,0 +1,59 @@
+import { useMemo } from 'react';
+import deepmerge from 'deepmerge';
+
+import { compileWithDefaults } from '../helpers';
+
+const useWithDefaults = (props) => {
+ const result = useMemo(() => {
+ const {
+ props: { props: parentProps, defaults: parentDefaults, ...thisProps },
+ defaults: thisDefaults,
+ } = props;
+ const allProps = deepmerge(parentProps || {}, {
+ ...(thisProps || {}),
+ ...(props || {}),
+ });
+ const allDefaults = deepmerge(parentDefaults || {}, thisDefaults || {});
+
+ const columns = compileWithDefaults(
+ allDefaults.columns || [],
+ allProps.columns,
+ );
+
+ const filters = {
+ ...allDefaults.filters,
+ ...allProps.filters,
+ filterConfig: compileWithDefaults(
+ allDefaults.filters?.filterConfig,
+ allProps.filters?.filterConfig,
+ ),
+ };
+
+ const options = deepmerge(
+ allDefaults.options || {},
+ allProps.options || {},
+ );
+
+ const result = {
+ ...allProps,
+ columns,
+ filters,
+ options,
+ };
+
+ if (result.options?.debug) {
+ console.group('Table with defaults');
+ console.log('Props:', props);
+ console.log('Combined props:', allProps);
+ console.log('Combined defaults:', allDefaults);
+ console.log('Result:', result);
+ console.groupEnd();
+ }
+
+ return result;
+ }, [props]);
+
+ return result;
+};
+
+export default useWithDefaults;
diff --git a/src/components/BaseTableToolsTable/index.js b/src/components/BaseTableToolsTable/index.js
new file mode 100644
index 0000000..a996a62
--- /dev/null
+++ b/src/components/BaseTableToolsTable/index.js
@@ -0,0 +1 @@
+export { default } from './BaseTableToolsTable';
diff --git a/src/components/QueryProviderWithUtilities.js b/src/components/QueryProviderWithUtilities.js
new file mode 100644
index 0000000..0823dc9
--- /dev/null
+++ b/src/components/QueryProviderWithUtilities.js
@@ -0,0 +1,19 @@
+import React from 'react';
+import propTypes from 'prop-types';
+
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
+
+const queryClient = new QueryClient();
+window.__TANSTACK_QUERY_CLIENT__ = queryClient;
+
+const QueryProviderWithUtilities = ({ children }) => {
+ return (
+ {children}
+ );
+};
+
+QueryProviderWithUtilities.propTypes = {
+ children: propTypes.node,
+};
+
+export default QueryProviderWithUtilities;
diff --git a/src/components/TableStateProvider/TableStateProvider.js b/src/components/TableStateProvider/TableStateProvider.js
index 2562f1f..a7178b2 100644
--- a/src/components/TableStateProvider/TableStateProvider.js
+++ b/src/components/TableStateProvider/TableStateProvider.js
@@ -1,11 +1,9 @@
import React, { useContext, useState, useRef } from 'react';
import propTypes from 'prop-types';
-import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
+import { QueryProviderWithUtilities } from '~/components';
import { TableContext } from '~/hooks/useTableContext/constants';
-const queryClient = new QueryClient();
-
/**
* This component provides a context for components/hooks that want to use async tables and access it's state to perform API requests
*
@@ -50,23 +48,31 @@ TableStateProvider.propTypes = {
parentContext: propTypes.object,
};
-const TableStateProviderWrapper = ({ isNewContext = false, children }) => {
+const TableStateProviderWrapper = ({
+ isNewContext = false,
+ hasItemsFunction = false,
+ children,
+}) => {
const tableContext = useContext(TableContext);
const Wrapper =
tableContext && !isNewContext ? React.Fragment : TableStateProvider;
+ const QueryProvider = hasItemsFunction
+ ? QueryProviderWithUtilities
+ : React.Fragment;
return (
-
+
{children}
-
+
);
};
TableStateProviderWrapper.propTypes = {
children: propTypes.node,
isNewContext: propTypes.bool,
+ hasItemsFunction: propTypes.bool,
};
export default TableStateProviderWrapper;
diff --git a/src/components/TableToolsTable/TableToolsTable.js b/src/components/TableToolsTable/TableToolsTable.js
index c4df589..bc34608 100644
--- a/src/components/TableToolsTable/TableToolsTable.js
+++ b/src/components/TableToolsTable/TableToolsTable.js
@@ -24,7 +24,7 @@ const TableToolsTable = ({
total: externalTotal,
columns,
filters,
- options: { treeTable, ...options } = {},
+ options: { treeTable, enablePrimaryToolbar = true, ...options } = {},
// TODO I'm not sure if we need this level of customisation.
// It might actually hurt in the long run. Consider removing until we really have the case where we need this
toolbarProps: toolbarPropsProp,
@@ -59,10 +59,14 @@ const TableToolsTable = ({
return (
<>
-
- {toolbarProps?.children}
- {tableViewToggleProps && }
-
+ {enablePrimaryToolbar && (
+
+ {toolbarProps?.children}
+ {tableViewToggleProps && (
+
+ )}
+
+ )}
{
// TODO This is a bit hackish. We should rather have an indicator if data necessary for the current view is loading.
@@ -147,10 +151,18 @@ TableToolsTable.propTypes = {
* @group Components
*
*/
-const TableToolsTableWithOrWithoutProvider = (props) => (
-
+const TableToolsTableWithOrWithoutProvider = ({ isNewContext, ...props }) => (
+
);
+TableToolsTableWithOrWithoutProvider.propTypes = {
+ isNewContext: propTypes.bool,
+ items: propTypes.oneOfType([propTypes.array, propTypes.func]).isRequired,
+};
+
export default TableToolsTableWithOrWithoutProvider;
diff --git a/src/components/index.js b/src/components/index.js
index e35b5c0..8cc5885 100644
--- a/src/components/index.js
+++ b/src/components/index.js
@@ -4,3 +4,5 @@ export { default as StaticTableToolsTable } from './StaticTableToolsTable';
export { default as NoResultsTable } from './NoResultsTable';
export { default as FilterModal } from './FilterModal';
export { default as TableViewToggle } from './TableViewToggle';
+export { default as BaseTableToolsTable } from './BaseTableToolsTable';
+export { default as QueryProviderWithUtilities } from './QueryProviderWithUtilities';
diff --git a/src/hooks/useExpandable/helpers.js b/src/hooks/useExpandable/helpers.js
index 36ccb64..0af1f7f 100644
--- a/src/hooks/useExpandable/helpers.js
+++ b/src/hooks/useExpandable/helpers.js
@@ -15,13 +15,14 @@ const detailsRowColSpan = (options = {}) => {
);
};
-const detailsRowForRule = (
+const detailsRowForRule = ({
+ runningIndex,
item,
+ detailsProps = {},
DetailsComponent,
+ detailsComponentProps = {},
colSpan,
- runningIndex,
- detailsProps = {},
-) => ({
+}) => ({
parent: runningIndex() - 1,
...detailsProps,
props: {
@@ -30,7 +31,13 @@ const detailsRowForRule = (
},
cells: [
{
- title: ,
+ title: (
+
+ ),
props: {
...(colSpan ? { colSpan } : {}),
// TODO This removes the checkbox, however this should maybe be fixed differently
@@ -40,21 +47,22 @@ const detailsRowForRule = (
],
});
-export const itemDetailsRow = (item, options, runningIndex) =>
- typeof options?.detailsComponent !== 'undefined' &&
- detailsRowForRule(
- item,
- options.detailsComponent,
- detailsRowColSpan(options),
+export const itemDetailsRow = (item, options = {}, runningIndex) =>
+ typeof options.detailsComponent !== 'undefined' &&
+ detailsRowForRule({
runningIndex,
- options?.detailsProps || {},
- );
+ item,
+ detailsProps: options.detailsProps,
+ DetailsComponent: options.detailsComponent,
+ detailsComponentProps: options.detailsComponentProps,
+ colSpan: detailsRowColSpan(options),
+ });
-const expandTreeTableRow = (firstRow, isOpen) => ({
+const expandTreeTableRow = (firstRow, isExpanded) => ({
...firstRow,
props: {
...(firstRow.props || {}),
- isExpanded: isOpen,
+ isExpanded,
},
});
diff --git a/src/support/factories/columns.js b/src/support/factories/columns.js
index 9988810..5e04bf0 100644
--- a/src/support/factories/columns.js
+++ b/src/support/factories/columns.js
@@ -14,6 +14,7 @@ Genre.propTypes = {
};
export const title = {
+ key: 'title',
title: 'Title',
Component: Title,
renderExport: ({ title }) => title,
diff --git a/src/support/factories/filters.js b/src/support/factories/filters.js
index 93666eb..e18fdcb 100644
--- a/src/support/factories/filters.js
+++ b/src/support/factories/filters.js
@@ -6,6 +6,7 @@ import { stringToId } from '~/hooks/useFilterConfig/helpers';
import { genres, items } from './items';
export const title = {
+ key: 'title',
type: 'text',
label: 'Title',
filterAttribute: 'title',
@@ -228,6 +229,7 @@ export const customNumberFilterType = {
export const customNumberFilter = {
type: 'number',
+ key: 'number-filter',
label: 'Custom Number Filter',
filterAttribute: 'rating',
};