From 05d0ccbb6d33f9e43acb46d4cb1fef3e3ac27dd5 Mon Sep 17 00:00:00 2001 From: ghiscoding Date: Fri, 1 Dec 2023 20:34:51 -0500 Subject: [PATCH 1/2] fix: registered external resouces should keep singleton ref - external resources can be provided through the grid options, but these options are sometime deep copied and that might have the side effect of losing the singleton ref of the instantiate services/resources, instead we can simply keep these singleton refs before any grid options merge can happen and that is in the constructor before the grid initializes and before the grid options are merged and sometime deep copied with global options --- src/examples/slickgrid/Example12.tsx | 4 +- src/examples/slickgrid/Example13.tsx | 2 +- src/examples/slickgrid/Example14.tsx | 4 +- src/examples/slickgrid/Example18.tsx | 2 +- src/examples/slickgrid/Example23.tsx | 2 +- src/examples/slickgrid/Example24.tsx | 2 +- src/examples/slickgrid/Example27.tsx | 2 +- src/examples/slickgrid/Example28.tsx | 2 +- src/examples/slickgrid/Example30.tsx | 2 +- src/examples/slickgrid/Example31.tsx | 4 +- src/examples/slickgrid/Example32.tsx | 2 +- src/examples/slickgrid/Example33.tsx | 2 +- src/examples/slickgrid/Example4.tsx | 2 +- src/examples/slickgrid/Example6.tsx | 2 +- .../components/slickgrid-react.tsx | 71 ++++++++++++++----- 15 files changed, 70 insertions(+), 35 deletions(-) diff --git a/src/examples/slickgrid/Example12.tsx b/src/examples/slickgrid/Example12.tsx index b3fa63e7..1b7f15f2 100644 --- a/src/examples/slickgrid/Example12.tsx +++ b/src/examples/slickgrid/Example12.tsx @@ -192,7 +192,7 @@ class Example12 extends React.Component { sanitizeDataExport: true }, excelExportOptions: { exportWithFormatter: true, sanitizeDataExport: true }, - registerExternalResources: [this.excelExportService, this.textExportService], + externalResources: [this.excelExportService, this.textExportService], }; this.setState((state: State) => ({ @@ -336,4 +336,4 @@ class Example12 extends React.Component { } } -export default withTranslation()(Example12); \ No newline at end of file +export default withTranslation()(Example12); diff --git a/src/examples/slickgrid/Example13.tsx b/src/examples/slickgrid/Example13.tsx index c90344c2..5b63f38c 100644 --- a/src/examples/slickgrid/Example13.tsx +++ b/src/examples/slickgrid/Example13.tsx @@ -202,7 +202,7 @@ export default class Example13 extends React.Component { enableTextExport: true, excelExportOptions: { sanitizeDataExport: true }, textExportOptions: { sanitizeDataExport: true }, - registerExternalResources: [this.excelExportService, this.textExportService], + externalResources: [this.excelExportService, this.textExportService], }; this.setState((state: State) => ({ diff --git a/src/examples/slickgrid/Example14.tsx b/src/examples/slickgrid/Example14.tsx index e7e869d2..730e5d5b 100644 --- a/src/examples/slickgrid/Example14.tsx +++ b/src/examples/slickgrid/Example14.tsx @@ -70,7 +70,7 @@ export default class Example14 extends React.Component { excelExportOptions: { exportWithFormatter: false }, - registerExternalResources: [new ExcelExportService()], + externalResources: [new ExcelExportService()], explicitInitialization: true, colspanCallback: this.renderDifferentColspan }; @@ -101,7 +101,7 @@ export default class Example14 extends React.Component { excelExportOptions: { exportWithFormatter: false }, - registerExternalResources: [new ExcelExportService()], + externalResources: [new ExcelExportService()], gridMenu: { hideClearFrozenColumnsCommand: false }, headerMenu: { hideFreezeColumnsCommand: false } }; diff --git a/src/examples/slickgrid/Example18.tsx b/src/examples/slickgrid/Example18.tsx index 7bb7d2ca..f20d2c9d 100644 --- a/src/examples/slickgrid/Example18.tsx +++ b/src/examples/slickgrid/Example18.tsx @@ -250,7 +250,7 @@ export default class Example18 extends React.Component { enableExcelExport: true, excelExportOptions: { sanitizeDataExport: true }, textExportOptions: { sanitizeDataExport: true }, - registerExternalResources: [this.excelExportService, this.textExportService], + externalResources: [this.excelExportService, this.textExportService], }; this.setState((state: State) => ({ diff --git a/src/examples/slickgrid/Example23.tsx b/src/examples/slickgrid/Example23.tsx index d5244027..01711ae6 100644 --- a/src/examples/slickgrid/Example23.tsx +++ b/src/examples/slickgrid/Example23.tsx @@ -213,7 +213,7 @@ class Example23 extends React.Component { { columnId: 'duration', direction: 'ASC' }, ], }, - registerExternalResources: [new SlickCustomTooltip(), new ExcelExportService()], + externalResources: [new SlickCustomTooltip(), new ExcelExportService()], }; this.setState((state: State, props: Props) => ({ diff --git a/src/examples/slickgrid/Example24.tsx b/src/examples/slickgrid/Example24.tsx index be1931b3..7d029866 100644 --- a/src/examples/slickgrid/Example24.tsx +++ b/src/examples/slickgrid/Example24.tsx @@ -304,7 +304,7 @@ class Example24 extends React.Component { // you can customize how the header titles will be styled (defaults to Bold) columnHeaderStyle: { font: { bold: true, italic: true } } }, - registerExternalResources: [new ExcelExportService()], + externalResources: [new ExcelExportService()], i18n: i18next, enableContextMenu: true, diff --git a/src/examples/slickgrid/Example27.tsx b/src/examples/slickgrid/Example27.tsx index 3b94d2d4..90baa50a 100644 --- a/src/examples/slickgrid/Example27.tsx +++ b/src/examples/slickgrid/Example27.tsx @@ -152,7 +152,7 @@ export default class Example27 extends React.Component { }, enableExcelExport: true, excelExportOptions: { exportWithFormatter: true, sanitizeDataExport: true }, - registerExternalResources: [new ExcelExportService()], + externalResources: [new ExcelExportService()], }; this.setState((state: State) => ({ diff --git a/src/examples/slickgrid/Example28.tsx b/src/examples/slickgrid/Example28.tsx index 393181cc..8631bb3c 100644 --- a/src/examples/slickgrid/Example28.tsx +++ b/src/examples/slickgrid/Example28.tsx @@ -153,7 +153,7 @@ export default class Example28 extends React.Component { exportWithFormatter: true, sanitizeDataExport: true }, - registerExternalResources: [new ExcelExportService()], + externalResources: [new ExcelExportService()], enableFiltering: true, enableTreeData: true, // you must enable this flag for the filtering & sorting to work as expected multiColumnSort: false, // multi-column sorting is not supported with Tree Data, so you need to disable it diff --git a/src/examples/slickgrid/Example30.tsx b/src/examples/slickgrid/Example30.tsx index 5a32ce28..da91a068 100644 --- a/src/examples/slickgrid/Example30.tsx +++ b/src/examples/slickgrid/Example30.tsx @@ -403,7 +403,7 @@ export default class Example30 extends React.Component { excelExportOptions: { exportWithFormatter: false }, - registerExternalResources: [new ExcelExportService(), this.compositeEditorInstance], + externalResources: [new ExcelExportService(), this.compositeEditorInstance], enableFiltering: true, rowSelectionOptions: { // True (Single Selection), False (Multiple Selections) diff --git a/src/examples/slickgrid/Example31.tsx b/src/examples/slickgrid/Example31.tsx index 7ccea6cf..4b101258 100644 --- a/src/examples/slickgrid/Example31.tsx +++ b/src/examples/slickgrid/Example31.tsx @@ -163,7 +163,7 @@ export default class Example31 extends React.Component { this.displaySpinner(false); } } as OdataServiceApi, - registerExternalResources: [new RxJsResource()] + externalResources: [new RxJsResource()] }; this.setState((state: State) => ({ @@ -588,4 +588,4 @@ export default class Example31 extends React.Component { ); } -} \ No newline at end of file +} diff --git a/src/examples/slickgrid/Example32.tsx b/src/examples/slickgrid/Example32.tsx index 7515e811..723985bd 100644 --- a/src/examples/slickgrid/Example32.tsx +++ b/src/examples/slickgrid/Example32.tsx @@ -362,7 +362,7 @@ export default class Example32 extends React.Component { excelExportOptions: { exportWithFormatter: false }, - registerExternalResources: [new ExcelExportService()], + externalResources: [new ExcelExportService()], enableFiltering: true, enableRowSelection: true, enableCheckboxSelector: true, diff --git a/src/examples/slickgrid/Example33.tsx b/src/examples/slickgrid/Example33.tsx index 772b11f9..a5d31ec1 100644 --- a/src/examples/slickgrid/Example33.tsx +++ b/src/examples/slickgrid/Example33.tsx @@ -331,7 +331,7 @@ export default class Example32 extends React.Component { exportWithFormatter: true }, // Custom Tooltip options can be defined in a Column or Grid Options or a mixed of both (first options found wins) - registerExternalResources: [new SlickCustomTooltip(), new ExcelExportService()], + externalResources: [new SlickCustomTooltip(), new ExcelExportService()], customTooltip: { formatter: this.tooltipFormatter.bind(this) as Formatter, headerFormatter: this.headerFormatter, diff --git a/src/examples/slickgrid/Example4.tsx b/src/examples/slickgrid/Example4.tsx index 937da861..847b99d6 100644 --- a/src/examples/slickgrid/Example4.tsx +++ b/src/examples/slickgrid/Example4.tsx @@ -235,7 +235,7 @@ export default class Example4 extends React.Component { { columnId: 'complete', direction: 'ASC' } ], }, - registerExternalResources: [new ExcelExportService()], + externalResources: [new ExcelExportService()], }; } diff --git a/src/examples/slickgrid/Example6.tsx b/src/examples/slickgrid/Example6.tsx index deaf19f5..7588d969 100644 --- a/src/examples/slickgrid/Example6.tsx +++ b/src/examples/slickgrid/Example6.tsx @@ -315,7 +315,7 @@ class Example6 extends React.Component { }; }); if (this.state.isWithCursor) { - // When using cursor pagination, the pagination service needs to updated with the PageInfo data from the latest request + // When using cursor pagination, the pagination service needs to be updated with the PageInfo data from the latest request // This might be done automatically if using a framework specific slickgrid library // Note because of this timeout, this may cause race conditions with rapid clicks! this.reactGrid?.paginationService?.setCursorPageInfo((mockedResult.data[GRAPHQL_QUERY_DATASET_NAME].pageInfo)); diff --git a/src/slickgrid-react/components/slickgrid-react.tsx b/src/slickgrid-react/components/slickgrid-react.tsx index 9958fa16..ed97b453 100644 --- a/src/slickgrid-react/components/slickgrid-react.tsx +++ b/src/slickgrid-react/components/slickgrid-react.tsx @@ -275,6 +275,14 @@ export class SlickgridReact extends React.Component // we only want to do this check once in the constructor this._hideHeaderRowAfterPageLoad = (props.gridOptions?.showHeaderRow === false); + // save resource refs to register before the grid options are merged and possibly deep copied + // since a deep copy of grid options would lose original resource refs but we want to keep them as singleton + this._registeredResources = props.gridOptions?.externalResources || props.gridOptions?.registerExternalResources || []; + /* istanbul ignore if */ + if (props.gridOptions?.registerExternalResources) { + console.warn('[Slickgrid-Universal] Please note that the grid option `registerExternalResources` was deprecated, please use `externalResources` instead.'); + } + this._gridOptions = this.mergeGridOptions(props.gridOptions || {}); // initialize and assign all Service Dependencies @@ -384,6 +392,14 @@ export class SlickgridReact extends React.Component } } + // save resource refs to register before the grid options are merged and possibly deep copied + // since a deep copy of grid options would lose original resource refs but we want to keep them as singleton + this._registeredResources = this.gridOptions?.externalResources || this.gridOptions?.registerExternalResources || []; + /* istanbul ignore if */ + if (this.gridOptions?.registerExternalResources) { + console.warn('[Slickgrid-React] Please note that the grid option `registerExternalResources` was deprecated and will be removed in next major, please use `externalResources` instead.'); + } + this.initialization(this._eventHandler); this._isGridInitialized = true; @@ -622,15 +638,7 @@ export class SlickgridReact extends React.Component this.serviceList = []; // dispose all registered external resources - if (Array.isArray(this._registeredResources)) { - while (this._registeredResources.length > 0) { - const resource = this._registeredResources.pop(); - if (resource?.dispose) { - resource.dispose(); - } - } - this._registeredResources = []; - } + this.disposeExternalResources(); // dispose the Components this.slickEmptyWarning?.dispose(); @@ -678,6 +686,18 @@ export class SlickgridReact extends React.Component this.componentWillUnmount(shouldEmptyDomElementContainer); } + disposeExternalResources() { + if (Array.isArray(this._registeredResources)) { + while (this._registeredResources.length > 0) { + const res = this._registeredResources.pop(); + if (res?.dispose) { + res.dispose(); + } + } + } + this._registeredResources = []; + } + componentDidUpdate(prevProps: SlickgridReactProps) { // get the grid options (order of precedence is Global Options first, then user option which could overwrite the Global options) if (this.props.gridOptions !== prevProps.gridOptions) { @@ -1405,10 +1425,21 @@ export class SlickgridReact extends React.Component return options; } + /** Add a register a new external resource, user could also optional dispose all previous resources before pushing any new resources to the resources array list. */ + registerExternalResources(resources: ExternalResource[], disposePreviousResources = false) { + if (disposePreviousResources) { + this.disposeExternalResources(); + } + resources.forEach(res => this._registeredResources.push(res)); + this.initializeExternalResources(resources); + } + + resetExternalResources() { + this._registeredResources = []; + } + /** Pre-Register any Resource that don't require SlickGrid to be instantiated (for example RxJS Resource) */ protected preRegisterResources() { - this._registeredResources = this.gridOptions.registerExternalResources || []; - // bind & initialize all Components/Services that were tagged as enabled // register all services by executing their init method and providing them with the Grid object if (Array.isArray(this._registeredResources)) { @@ -1420,6 +1451,16 @@ export class SlickgridReact extends React.Component } } + protected initializeExternalResources(resources: ExternalResource[]) { + if (Array.isArray(resources)) { + for (const resource of resources) { + if (this.grid && typeof resource.init === 'function') { + resource.init(this.grid, this.props.containerService); + } + } + } + } + protected registerResources() { // at this point, we consider all the registered services as external services, anything else registered afterward aren't external if (Array.isArray(this._registeredResources)) { @@ -1450,13 +1491,7 @@ export class SlickgridReact extends React.Component // bind & initialize all Components/Services that were tagged as enabled // register all services by executing their init method and providing them with the Grid object - if (Array.isArray(this._registeredResources)) { - for (const resource of this._registeredResources) { - if (this.grid && typeof resource.init === 'function') { - resource.init(this.grid, this.props.containerService); - } - } - } + this.initializeExternalResources(this._registeredResources); } /** Register the RxJS Resource in all necessary services which uses */ From 439061a67cfa2f2cb9e313a5417c65273e8293a6 Mon Sep 17 00:00:00 2001 From: ghiscoding Date: Thu, 7 Dec 2023 22:39:53 -0500 Subject: [PATCH 2/2] chore: update all non-major deps --- package.json | 46 +++---- yarn.lock | 373 ++++++++++++++++++++++++++------------------------- 2 files changed, 212 insertions(+), 207 deletions(-) diff --git a/package.json b/package.json index 2a3a302f..ae932004 100644 --- a/package.json +++ b/package.json @@ -91,18 +91,18 @@ ] }, "dependencies": { - "@slickgrid-universal/common": "~3.6.0", - "@slickgrid-universal/custom-footer-component": "~3.6.0", - "@slickgrid-universal/empty-warning-component": "~3.6.0", - "@slickgrid-universal/event-pub-sub": "~3.6.0", - "@slickgrid-universal/pagination-component": "~3.6.0", + "@slickgrid-universal/common": "~3.7.0", + "@slickgrid-universal/custom-footer-component": "~3.7.0", + "@slickgrid-universal/empty-warning-component": "~3.7.0", + "@slickgrid-universal/event-pub-sub": "~3.7.0", + "@slickgrid-universal/pagination-component": "~3.7.0", "dequal": "^2.0.3", "dompurify": "^3.0.6", "font-awesome": "^4.7.0", "i18next": ">=22.5.0", "moment-mini": "^2.29.4", "regenerator-runtime": "^0.14.0", - "sortablejs": "^1.15.0" + "sortablejs": "^1.15.1" }, "devDependencies": { "@4tw/cypress-drag-drop": "^2.2.5", @@ -110,14 +110,14 @@ "@fnando/sparkline": "^0.3.10", "@popperjs/core": "^2.11.8", "@release-it/conventional-changelog": "^8.0.1", - "@slickgrid-universal/composite-editor-component": "~3.6.0", - "@slickgrid-universal/custom-tooltip-plugin": "~3.6.0", - "@slickgrid-universal/excel-export": "~3.6.0", - "@slickgrid-universal/graphql": "~3.6.0", - "@slickgrid-universal/odata": "~3.6.0", - "@slickgrid-universal/rxjs-observable": "~3.6.0", - "@slickgrid-universal/text-export": "~3.6.0", - "@testing-library/jest-dom": "^6.1.4", + "@slickgrid-universal/composite-editor-component": "~3.7.0", + "@slickgrid-universal/custom-tooltip-plugin": "~3.7.0", + "@slickgrid-universal/excel-export": "~3.7.0", + "@slickgrid-universal/graphql": "~3.7.0", + "@slickgrid-universal/odata": "~3.7.0", + "@slickgrid-universal/rxjs-observable": "~3.7.0", + "@slickgrid-universal/text-export": "~3.7.0", + "@testing-library/jest-dom": "^6.1.5", "@testing-library/react": "^14.1.2", "@testing-library/user-event": "^14.5.1", "@types/bluebird": "^3.5.42", @@ -125,15 +125,15 @@ "@types/flatpickr": "^3.1.2", "@types/fnando__sparkline": "^0.3.7", "@types/i18next-xhr-backend": "^1.4.2", - "@types/jest": "^29.5.10", - "@types/node": "^20.10.0", - "@types/react": "^18.2.38", + "@types/jest": "^29.5.11", + "@types/node": "^20.10.4", + "@types/react": "^18.2.42", "@types/react-dom": "^18.2.17", "@types/sortablejs": "^1.15.7", "@types/text-encoding-utf-8": "^1.0.5", "@types/webpack": "^5.28.5", - "@typescript-eslint/eslint-plugin": "^6.12.0", - "@typescript-eslint/parser": "^6.12.0", + "@typescript-eslint/eslint-plugin": "^6.13.2", + "@typescript-eslint/parser": "^6.13.2", "@webpack-cli/serve": "^2.0.5", "bootstrap": "^5.3.2", "clean-webpack-plugin": "^4.0.0", @@ -142,15 +142,15 @@ "copyfiles": "^2.4.1", "css-loader": "^6.8.1", "custom-event-polyfill": "^1.0.7", - "cypress": "^13.6.0", + "cypress": "^13.6.1", "esbuild-loader": "^4.0.2", - "eslint": "^8.54.0", + "eslint": "^8.55.0", "eslint-plugin-import": "^2.29.0", "eslint-plugin-prefer-arrow": "^1.2.3", "fetch-jsonp": "^1.3.0", "font-awesome": "^4.7.0", "html-loader": "4.2.0", - "html-webpack-plugin": "5.5.3", + "html-webpack-plugin": "5.5.4", "i18next-http-backend": "^2.4.2", "isomorphic-fetch": "^3.0.0", "jest": "^29.7.0", @@ -165,7 +165,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-i18next": "^12.3.1", - "react-router-dom": "^6.20.0", + "react-router-dom": "^6.20.1", "release-it": "^17.0.0", "rimraf": "^5.0.5", "rxjs": "^7.8.1", diff --git a/yarn.lock b/yarn.lock index 945431b5..c38eec13 100644 --- a/yarn.lock +++ b/yarn.lock @@ -562,10 +562,10 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8" integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw== -"@eslint/eslintrc@^2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d" - integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -577,10 +577,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.54.0.tgz#4fab9a2ff7860082c304f750e94acd644cf984cf" - integrity sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ== +"@eslint/js@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.55.0.tgz#b721d52060f369aa259cf97392403cb9ce892ec6" + integrity sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA== "@faker-js/faker@^8.3.1": version "8.3.1" @@ -1083,10 +1083,10 @@ conventional-recommended-bump "^9.0.0" semver "^7.5.4" -"@remix-run/router@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.13.0.tgz#7e29c4ee85176d9c08cb0f4456bff74d092c5065" - integrity sha512-5dMOnVnefRsl4uRnAdoWjtVTdh8e6aZqgM4puy9nmEADH72ck+uXwzpJLEKE9Q6F8ZljNewLgmTfkxUrBdv4WA== +"@remix-run/router@1.13.1": + version "1.13.1" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.13.1.tgz#07e2a8006f23a3bc898b3f317e0a58cc8076b86e" + integrity sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q== "@sinclair/typebox@^0.25.16": version "0.25.24" @@ -1122,121 +1122,121 @@ dependencies: "@sinonjs/commons" "^3.0.0" -"@slickgrid-universal/binding@~3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/binding/-/binding-3.6.0.tgz#05e512440e48b8dd86877ef765d69a06b360174a" - integrity sha512-QDwN5kCvazo5IQgaNT6V2l952Ys3iCh2+RazLA/MpECRnHz66dmeDzGpjbhpGnAiOuFJXKSnXoa0VXG02RUtrg== +"@slickgrid-universal/binding@~3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/binding/-/binding-3.7.0.tgz#5cc5b21ae90d2f533ae72dbaebcf3f297624e74d" + integrity sha512-qKCYejhhgY14E+yMdvkrcPppdjL1CEp9pff6tONhUzrm+of40fljtESF6gf4t20GgePiPDXwxdmxdrUcZYYPdg== -"@slickgrid-universal/common@~3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/common/-/common-3.6.0.tgz#39117ceb3d862dc80f118982f0b7f82463b56012" - integrity sha512-fKM35Kof7KEUFn9+XPvQXg1Fy/8smH5D6W7dl/+T3zoPxYDJlk4NG9wPrqBnDwNpY1hBUX0VN4VImc6lOiSkLA== +"@slickgrid-universal/common@~3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/common/-/common-3.7.0.tgz#122dd1f08ecbdaacec03761b45a697249a8b15a9" + integrity sha512-5hh0wWfaK7ttU4EVzAYo+7rFWBfBb1jnjjO4rZjrJXCGx0WIp1qb/qPNSpPldOoLzXZRcickforchsrFQfJBew== dependencies: - "@slickgrid-universal/event-pub-sub" "~3.6.0" - "@slickgrid-universal/utils" "~3.6.0" + "@slickgrid-universal/event-pub-sub" "~3.7.0" + "@slickgrid-universal/utils" "~3.7.0" autocompleter "^9.1.2" dequal "^2.0.3" dompurify "^3.0.6" flatpickr "^4.6.13" moment-mini "^2.29.4" multiple-select-vanilla "^0.6.3" - slickgrid "^4.1.5" - sortablejs "^1.15.0" + slickgrid "^4.1.7" + sortablejs "^1.15.1" un-flatten-tree "^2.0.12" -"@slickgrid-universal/composite-editor-component@~3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/composite-editor-component/-/composite-editor-component-3.6.0.tgz#85dddf6f6207cc4101ef65e9ef02ce3ecdfeafd1" - integrity sha512-OGoNFTGmD+IahoZjmvmvUTTtvyyb54SjjTkwXEyfR6HWDCiLxDaTFq1PM95PNwce0hi39EuoJwdq0w/rGDvi1w== +"@slickgrid-universal/composite-editor-component@~3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/composite-editor-component/-/composite-editor-component-3.7.0.tgz#ab2934c07529e35a9f30ecdc3ab771425d868671" + integrity sha512-FZAmRy3IZqHuU8MC0n+OF5CtHrHGpgDjcy6LWyB1UvN6P1kHLm/ztgboUe2Q+GiYq2LoxyykFNbqPMeG485ciA== dependencies: - "@slickgrid-universal/common" "~3.6.0" - "@slickgrid-universal/utils" "~3.6.0" + "@slickgrid-universal/common" "~3.7.0" + "@slickgrid-universal/utils" "~3.7.0" -"@slickgrid-universal/custom-footer-component@~3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-footer-component/-/custom-footer-component-3.6.0.tgz#b1f9078d2eb4083bef72b7306fa96119979fba25" - integrity sha512-R9tsDKxy+8zvqYBcURfh3ERXQAQYnreoGCZ7qRJQgXFSgl5fD3P6lrbQ6t3g+i/FXRklzDH11HSm6EslSonxjQ== +"@slickgrid-universal/custom-footer-component@~3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-footer-component/-/custom-footer-component-3.7.0.tgz#39b4d3ab1dd8b37dcdc28a9e153ac1a4a5fc587d" + integrity sha512-d12ptYPeLc49KOxjmx4JUrZ0KQ59ZVpATAEXfI52Lt29lTABK3vBL5dx2iUFIRZemNhWIIIs5h4cxCXjvwkggw== dependencies: - "@slickgrid-universal/binding" "~3.6.0" - "@slickgrid-universal/common" "~3.6.0" + "@slickgrid-universal/binding" "~3.7.0" + "@slickgrid-universal/common" "~3.7.0" moment-mini "^2.29.4" -"@slickgrid-universal/custom-tooltip-plugin@~3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-tooltip-plugin/-/custom-tooltip-plugin-3.6.0.tgz#f2010a769a8c3c2bcd2abb576f7db3083c64f8ed" - integrity sha512-pJF/+MwFhR8B0rO6aAGmxEEhKXriFddBLCLvNE/WCkQ1ujP8rxqD4j6/0HB2/uPwfrZO0tVLxk1u4FZw1vp/eA== +"@slickgrid-universal/custom-tooltip-plugin@~3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-tooltip-plugin/-/custom-tooltip-plugin-3.7.0.tgz#b9d53624c24aca42231d337ea66052a7bb2334c0" + integrity sha512-1CgtWRzTD3QiJv31/snLCtnWhllMIzOOi8cDl4Xk4O0qb+Qr/8SHIHVOCVddPtu4CImH1OSLx35r5UVlEVur+g== dependencies: - "@slickgrid-universal/common" "~3.6.0" + "@slickgrid-universal/common" "~3.7.0" dompurify "^3.0.6" -"@slickgrid-universal/empty-warning-component@~3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/empty-warning-component/-/empty-warning-component-3.6.0.tgz#76e94056f23ed019a31f8e437919a26e28570480" - integrity sha512-JXS4bdYPMBWfONWCLCr9D7iALLV1i3jhNh33aGt9FL7eqzaov5hVsACnj9OCaYqvxcKC6aqH0TbNWaXb9OpO2w== +"@slickgrid-universal/empty-warning-component@~3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/empty-warning-component/-/empty-warning-component-3.7.0.tgz#baac3b04fc9b9c39759cb19962f4432be990001b" + integrity sha512-3Nto7+MdRrxHoqI9wfAq2XKMYIj69oyVsVdMEiXEuGh/CSjKwlAMXKyg9/stM090ps+97xQ/01g20m5v1aS3xw== dependencies: - "@slickgrid-universal/common" "~3.6.0" + "@slickgrid-universal/common" "~3.7.0" -"@slickgrid-universal/event-pub-sub@~3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/event-pub-sub/-/event-pub-sub-3.6.0.tgz#98f99120d07ac9f1586190b71789c21d4056c46e" - integrity sha512-d0w+yh96nKT6mCQClGXlWA8rnQhfyNyALg6c8wKgMyO4qtKs9nwuNu23MeBzFhjVHwJjFg/ALc1gAlw6sH8L1w== +"@slickgrid-universal/event-pub-sub@~3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/event-pub-sub/-/event-pub-sub-3.7.0.tgz#3bbae10ecf8a58c0b2e61cc219ca775179a8f6f8" + integrity sha512-Ojm7A2PpshrCw2hZx1FLHFuFSr33H/z8yiR4pl8Z1YpsgGlf9xYXkn6Z3P1g8/tHi7vk0P4qd8x62Wa2tkOyAg== dependencies: - "@slickgrid-universal/utils" "~3.6.0" + "@slickgrid-universal/utils" "~3.7.0" -"@slickgrid-universal/excel-export@~3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/excel-export/-/excel-export-3.6.0.tgz#75ddc791e408243caafd763f1ae47fea11f0f12f" - integrity sha512-dXpNCUrIfqD1Jmt1d28R+ggRd05FPLJr81INSbLlYkZyaA9QIOYiD2Hpe6dmczimxUd2mFjz3dQOXdZ3ab8hVQ== +"@slickgrid-universal/excel-export@~3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/excel-export/-/excel-export-3.7.0.tgz#f846d1db4a15f00f83f329765fbb496e1e0cc447" + integrity sha512-qpFDfzKuabSB/HoGYIkmf8u5FUfg1Xnq6K4Pz+tobGZ+P4WWtdopdGlCI5bkMrrTIkrO6iLJuVxqLA3Mh/z8OA== dependencies: - "@slickgrid-universal/common" "~3.6.0" - "@slickgrid-universal/utils" "~3.6.0" + "@slickgrid-universal/common" "~3.7.0" + "@slickgrid-universal/utils" "~3.7.0" excel-builder-webpacker "^2.1.8" moment-mini "^2.29.4" -"@slickgrid-universal/graphql@~3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/graphql/-/graphql-3.6.0.tgz#13674b0918c1714a85e24c7477509fcb448010a6" - integrity sha512-NJoV5YM5eGFg1t2IohN8ZWc0yZUyYGVGTSVU7Eyaj57G7eY/xwwUHfpynZkmpk4MNDWv61bs5Rn0oegOpNAxsw== +"@slickgrid-universal/graphql@~3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/graphql/-/graphql-3.7.0.tgz#cb112c4984c5c2656665d86eb98e40c4e60e81df" + integrity sha512-UszIoxOBjD3w7EkdK13Gn1etoXq6V9gUEb2JNHiqMTVoDe77US4qQAKLdCPshJjNCfASqcGxcxqTrCq27ScWdQ== dependencies: - "@slickgrid-universal/common" "~3.6.0" + "@slickgrid-universal/common" "~3.7.0" -"@slickgrid-universal/odata@~3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/odata/-/odata-3.6.0.tgz#95cbc3a598c3ab716012a701278a6873ba4965f1" - integrity sha512-mHhe8EifBsrofJ70InefLToWNKHDnx4xjTJFem/jUk+/ZGuJXzRktyOyeoZfWBnFHVknKPOl4fn2q/r0ALuGWw== +"@slickgrid-universal/odata@~3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/odata/-/odata-3.7.0.tgz#9ec7028ff94e0ec5cc7d9f95d4174bf3f034aeda" + integrity sha512-anOpW1qKW9J7peBAEgS6tSpB/UIkv9w+tJAn+tWCQGVEFyxt/VS8n/LuOkwmYxAWJcZAtyS5WJ1ff5QzWRHVJA== dependencies: - "@slickgrid-universal/common" "~3.6.0" - "@slickgrid-universal/utils" "~3.6.0" + "@slickgrid-universal/common" "~3.7.0" + "@slickgrid-universal/utils" "~3.7.0" -"@slickgrid-universal/pagination-component@~3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/pagination-component/-/pagination-component-3.6.0.tgz#05ab3d70e6522273cbc02f523f648662e2fec35c" - integrity sha512-jTQTf7rWw++JopPJIISuBD048pEe5DIgLoDGqCbZ681WreAjOW1lBU3oCXX3UWpLoJGiy0L0123nOcZ2lgAkaQ== +"@slickgrid-universal/pagination-component@~3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/pagination-component/-/pagination-component-3.7.0.tgz#2f43e9d7f55b4164360b57ae6d909975d9c1a6db" + integrity sha512-IjmUkvVTh6LLOeJZ9p3tnbhXbELQgasnloOnsda7uRL9KWHn4c21Ij0o9pSFlbZnqdoWtq7tfKJFIhOVEM+RsQ== dependencies: - "@slickgrid-universal/binding" "~3.6.0" - "@slickgrid-universal/common" "~3.6.0" + "@slickgrid-universal/binding" "~3.7.0" + "@slickgrid-universal/common" "~3.7.0" -"@slickgrid-universal/rxjs-observable@~3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/rxjs-observable/-/rxjs-observable-3.6.0.tgz#53eca5be430a4e5c63099b60fc1963a07b2ea736" - integrity sha512-2TeySsVnCo1v7efcanncuVnnMfYFaBJPpy+ltsQItquidURBTcs/ggrdqH2tKg8rFL04oHC4BgXIPQ7Sglal3A== +"@slickgrid-universal/rxjs-observable@~3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/rxjs-observable/-/rxjs-observable-3.7.0.tgz#22db7f729e061d66a090879ed002ef6a70fa97df" + integrity sha512-mt0Z+PfIeW3ncbNA2Kn4x92VJLluHrqQYUTRz8XyM+qkRCRiEygMu+ZxVHMboaQxCOIStoQZi4b5/pXkSOVsxg== dependencies: - "@slickgrid-universal/common" "~3.6.0" + "@slickgrid-universal/common" "~3.7.0" rxjs "^7.8.1" -"@slickgrid-universal/text-export@~3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/text-export/-/text-export-3.6.0.tgz#218aed5439e0e1a58fb0987768868c22754527b5" - integrity sha512-UPVuJL7fymIrt3eUK9p/AKemQbz3GYoS5cpq8oQsSTMTY1ueycb2VhQ44pgFvCz+nsvbiqf/GAGq/+gQBp3LpA== +"@slickgrid-universal/text-export@~3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/text-export/-/text-export-3.7.0.tgz#d2930df0fbd16865a0619c070042015855d00c92" + integrity sha512-X7Oy5V7mFym6/Fs7vY/kssMRPU0JxkGmWbZhZ4XoqTrz9ZynioUIN/iICypIBwTjlk5Psvq5Yt5dBu5eO2rB0Q== dependencies: - "@slickgrid-universal/common" "~3.6.0" - "@slickgrid-universal/utils" "~3.6.0" + "@slickgrid-universal/common" "~3.7.0" + "@slickgrid-universal/utils" "~3.7.0" text-encoding-utf-8 "^1.0.2" -"@slickgrid-universal/utils@~3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/utils/-/utils-3.6.0.tgz#c586a5c150d687a749f419cb58f62fab5263495b" - integrity sha512-QGc6d+YpKv3tyig+asCObQteUBwBXUPiTp3p7J/cHBfgapzV78WL2olJPK1vJjoXYBvzdY9HERR6wh0jsXaX5w== +"@slickgrid-universal/utils@~3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/utils/-/utils-3.7.0.tgz#0aad56219c4118eae3990a26c4d9fb2a93bcd5ee" + integrity sha512-Hy04lEr4p1HU3ew0OLgJElrCX5gC9nGbnglrXDsQUtJuB7l3pUZ52OEK7pVX8i9UZn5brVWcjw5kRRq8qeWaUw== "@szmarczak/http-timer@^5.0.1": version "5.0.1" @@ -1259,10 +1259,10 @@ lz-string "^1.5.0" pretty-format "^27.0.2" -"@testing-library/jest-dom@^6.1.4": - version "6.1.4" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.1.4.tgz#cf0835c33bc5ef00befb9e672b1e3e6a710e30e3" - integrity sha512-wpoYrCYwSZ5/AxcrjLxJmCU6I5QAJXslEeSiMQqaWmP2Kzpd1LvF/qxmAIW2qposULGWq2gw30GgVNFLSc2Jnw== +"@testing-library/jest-dom@^6.1.5": + version "6.1.5" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.1.5.tgz#0a635d0ad4a1a880089d967299d94e9cfc81fbe1" + integrity sha512-3y04JLW+EceVPy2Em3VwNr95dOKqA8DhR0RJHhHKDZNYXcVXnEK7WIrpj4eYU8SVt/qYZ2aRWt/WgQ+grNES8g== dependencies: "@adobe/css-tools" "^4.3.1" "@babel/runtime" "^7.9.2" @@ -1488,10 +1488,10 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^29.5.10": - version "29.5.10" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.10.tgz#a10fc5bab9e426081c12b2ef73d24d4f0c9b7f50" - integrity sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ== +"@types/jest@^29.5.11": + version "29.5.11" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.11.tgz#0c13aa0da7d0929f078ab080ae5d4ced80fa2f2c" + integrity sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -1540,10 +1540,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.15.tgz#31301a273b9ca7d568fe6d1c35ae52e0fb3f8d6a" integrity sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA== -"@types/node@^20.10.0": - version "20.10.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.0.tgz#16ddf9c0a72b832ec4fcce35b8249cf149214617" - integrity sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ== +"@types/node@^20.10.4": + version "20.10.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.4.tgz#b246fd84d55d5b1b71bf51f964bd514409347198" + integrity sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg== dependencies: undici-types "~5.26.4" @@ -1590,10 +1590,10 @@ "@types/scheduler" "*" csstype "^3.0.2" -"@types/react@^18.2.38": - version "18.2.38" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.38.tgz#3605ca41d3daff2c434e0b98d79a2469d4c2dd52" - integrity sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw== +"@types/react@^18.2.42": + version "18.2.42" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.42.tgz#6f6b11a904f6d96dda3c2920328a97011a00aba7" + integrity sha512-c1zEr96MjakLYus/wPnuWDo1/zErfdU9rNsIGmE+NV71nx88FG9Ttgo5dqorXTu/LImX2f63WBP986gJkMPNbA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -1719,16 +1719,16 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^6.12.0": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.12.0.tgz#2a647d278bb48bf397fef07ba0507612ff9dd812" - integrity sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA== +"@typescript-eslint/eslint-plugin@^6.13.2": + version "6.13.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.2.tgz#2e03506c5362a65e43cb132c37c9ce2d3cb51470" + integrity sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ== dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.12.0" - "@typescript-eslint/type-utils" "6.12.0" - "@typescript-eslint/utils" "6.12.0" - "@typescript-eslint/visitor-keys" "6.12.0" + "@typescript-eslint/scope-manager" "6.13.2" + "@typescript-eslint/type-utils" "6.13.2" + "@typescript-eslint/utils" "6.13.2" + "@typescript-eslint/visitor-keys" "6.13.2" debug "^4.3.4" graphemer "^1.4.0" ignore "^5.2.4" @@ -1736,72 +1736,72 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^6.12.0": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.12.0.tgz#9fb21ed7d88065a4a2ee21eb80b8578debb8217c" - integrity sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg== +"@typescript-eslint/parser@^6.13.2": + version "6.13.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.13.2.tgz#390b79cc9a57a5f904d197a201cc4b6bc4f9afb9" + integrity sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg== dependencies: - "@typescript-eslint/scope-manager" "6.12.0" - "@typescript-eslint/types" "6.12.0" - "@typescript-eslint/typescript-estree" "6.12.0" - "@typescript-eslint/visitor-keys" "6.12.0" + "@typescript-eslint/scope-manager" "6.13.2" + "@typescript-eslint/types" "6.13.2" + "@typescript-eslint/typescript-estree" "6.13.2" + "@typescript-eslint/visitor-keys" "6.13.2" debug "^4.3.4" -"@typescript-eslint/scope-manager@6.12.0": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.12.0.tgz#5833a16dbe19cfbad639d4d33bcca5e755c7044b" - integrity sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw== +"@typescript-eslint/scope-manager@6.13.2": + version "6.13.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz#5fa4e4adace028dafac212c770640b94e7b61052" + integrity sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA== dependencies: - "@typescript-eslint/types" "6.12.0" - "@typescript-eslint/visitor-keys" "6.12.0" + "@typescript-eslint/types" "6.13.2" + "@typescript-eslint/visitor-keys" "6.13.2" -"@typescript-eslint/type-utils@6.12.0": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.12.0.tgz#968f7c95162808d69950ab5dff710ad730e58287" - integrity sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng== +"@typescript-eslint/type-utils@6.13.2": + version "6.13.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.13.2.tgz#ebec2da14a6bb7122e0fd31eea72a382c39c6102" + integrity sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw== dependencies: - "@typescript-eslint/typescript-estree" "6.12.0" - "@typescript-eslint/utils" "6.12.0" + "@typescript-eslint/typescript-estree" "6.13.2" + "@typescript-eslint/utils" "6.13.2" debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/types@6.12.0": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.12.0.tgz#ffc5297bcfe77003c8b7b545b51c2505748314ac" - integrity sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q== +"@typescript-eslint/types@6.13.2": + version "6.13.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.13.2.tgz#c044aac24c2f6cefb8e921e397acad5417dd0ae6" + integrity sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg== -"@typescript-eslint/typescript-estree@6.12.0": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.12.0.tgz#764ccc32598549e5b48ec99e3b85f89b1385310c" - integrity sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw== +"@typescript-eslint/typescript-estree@6.13.2": + version "6.13.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz#ae556ee154c1acf025b48d37c3ef95a1d55da258" + integrity sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w== dependencies: - "@typescript-eslint/types" "6.12.0" - "@typescript-eslint/visitor-keys" "6.12.0" + "@typescript-eslint/types" "6.13.2" + "@typescript-eslint/visitor-keys" "6.13.2" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@6.12.0": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.12.0.tgz#c6ce8c06fe9b0212620e5674a2036f6f8f611754" - integrity sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ== +"@typescript-eslint/utils@6.13.2": + version "6.13.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.13.2.tgz#8eb89e53adc6d703a879b131e528807245486f89" + integrity sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.12.0" - "@typescript-eslint/types" "6.12.0" - "@typescript-eslint/typescript-estree" "6.12.0" + "@typescript-eslint/scope-manager" "6.13.2" + "@typescript-eslint/types" "6.13.2" + "@typescript-eslint/typescript-estree" "6.13.2" semver "^7.5.4" -"@typescript-eslint/visitor-keys@6.12.0": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.12.0.tgz#5877950de42a0f3344261b7a1eee15417306d7e9" - integrity sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw== +"@typescript-eslint/visitor-keys@6.13.2": + version "6.13.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz#e0a4a80cf842bb08e6127b903284166ac4a5594c" + integrity sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw== dependencies: - "@typescript-eslint/types" "6.12.0" + "@typescript-eslint/types" "6.13.2" eslint-visitor-keys "^3.4.1" "@ungap/structured-clone@^1.2.0": @@ -3387,10 +3387,10 @@ custom-event-polyfill@^1.0.7: resolved "https://registry.yarnpkg.com/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz#9bc993ddda937c1a30ccd335614c6c58c4f87aee" integrity sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w== -cypress@^13.6.0: - version "13.6.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.6.0.tgz#b98b7b837679012ed09c7ecee5565bf7b31d4982" - integrity sha512-quIsnFmtj4dBUEJYU4OH0H12bABJpSujvWexC24Ju1gTlKMJbeT6tTO0vh7WNfiBPPjoIXLN+OUqVtiKFs6SGw== +cypress@^13.6.1: + version "13.6.1" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.6.1.tgz#c5f714f08551666ed3ac1fa95718eabb23a416df" + integrity sha512-k1Wl5PQcA/4UoTffYKKaxA0FJKwg8yenYNYRzLt11CUR0Kln+h7Udne6mdU1cUIdXBDTVZWtmiUjzqGs7/pEpw== dependencies: "@cypress/request" "^3.0.0" "@cypress/xvfb" "^1.2.4" @@ -4207,15 +4207,15 @@ eslint-visitor-keys@^3.4.3: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.54.0: - version "8.54.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.54.0.tgz#588e0dd4388af91a2e8fa37ea64924074c783537" - integrity sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA== +eslint@^8.55.0: + version "8.55.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.55.0.tgz#078cb7b847d66f2c254ea1794fa395bf8e7e03f8" + integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.3" - "@eslint/js" "8.54.0" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.55.0" "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -5251,10 +5251,10 @@ html-parse-stringify@^3.0.1: dependencies: void-elements "3.1.0" -html-webpack-plugin@5.5.3: - version "5.5.3" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz#72270f4a78e222b5825b296e5e3e1328ad525a3e" - integrity sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg== +html-webpack-plugin@5.5.4: + version "5.5.4" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.4.tgz#517a48e6f046ff1ae1a172c983cd993eb79d2f6a" + integrity sha512-3wNSaVVxdxcu0jd4FpQFoICdqgxs4zIQQvj+2yQKFfBOnLETQ6X5CDWdeasuGlSsooFlMkEioWDTqBv1wvw5Iw== dependencies: "@types/html-minifier-terser" "^6.0.0" html-minifier-terser "^6.0.2" @@ -8069,20 +8069,20 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-router-dom@^6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.20.0.tgz#7b9527a1e29c7fb90736a5f89d54ca01f40e264b" - integrity sha512-CbcKjEyiSVpA6UtCHOIYLUYn/UJfwzp55va4yEfpk7JBN3GPqWfHrdLkAvNCcpXr8QoihcDMuk0dzWZxtlB/mQ== +react-router-dom@^6.20.1: + version "6.20.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.20.1.tgz#e34f8075b9304221420de3609e072bb349824984" + integrity sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw== dependencies: - "@remix-run/router" "1.13.0" - react-router "6.20.0" + "@remix-run/router" "1.13.1" + react-router "6.20.1" -react-router@6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.20.0.tgz#4275a3567ecc55f7703073158048db10096bb539" - integrity sha512-pVvzsSsgUxxtuNfTHC4IxjATs10UaAtvLGVSA1tbUE4GDaOSU1Esu2xF5nWLz7KPiMuW8BJWuPFdlGYJ7/rW0w== +react-router@6.20.1: + version "6.20.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.20.1.tgz#e8cc326031d235aaeec405bb234af77cf0fe75ef" + integrity sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA== dependencies: - "@remix-run/router" "1.13.0" + "@remix-run/router" "1.13.1" react@^18.2.0: version "18.2.0" @@ -8766,10 +8766,10 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -slickgrid@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/slickgrid/-/slickgrid-4.1.5.tgz#224cbe6bcc93c78d8b55fe09cab6432d5e72016e" - integrity sha512-riHpgidZ2qOinsthGCewFhAYbo7LX/rpXd9B6rGWaVqap1sbL8viGbe8ZCXu2SZvwaGC+LqkGisW77UzMOLoVg== +slickgrid@^4.1.7: + version "4.1.7" + resolved "https://registry.yarnpkg.com/slickgrid/-/slickgrid-4.1.7.tgz#743149e1cefcdb0cd6fba61e3fc7e31b3193dba8" + integrity sha512-dWaJjOlOdBXjQN/ivwzTGlF+Xx3ktKNK+CxejnsMXUybgUj32vqAjwezeTYkiDZDr5K0MMPMXvNysfIhjn79KA== dependencies: sortablejs "^1.15.0" @@ -8809,6 +8809,11 @@ sortablejs@^1.15.0: resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.0.tgz#53230b8aa3502bb77a29e2005808ffdb4a5f7e2a" integrity sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w== +sortablejs@^1.15.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.1.tgz#9a35f52cdff449fb42ea8ecf222f3468d76e0a47" + integrity sha512-P5Cjvb0UG1ZVNiDPj/n4V+DinttXG6K8n7vM/HQf0C25K3YKQTQY6fsr/sEGsJGpQ9exmPxluHxKBc0mLKU1lQ== + source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"