aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsrichman333 <sarah_n_richman@brown.edu>2024-02-19 10:56:45 -0500
committersrichman333 <sarah_n_richman@brown.edu>2024-02-19 10:56:45 -0500
commit89bb6c977e57f696fd96e9e79bcb44840b20cb49 (patch)
treebea14fd2f1ca3faf0bd1b2cb9b96a4404d2340f1
parenta1939f7547413aa97c8d8967f57b4bb5aea0cdef (diff)
parent6641de1eec4ee71fa08baa0600d0dcb2a3b03a4a (diff)
Merge branch 'master' into data-visualization-sarah
-rw-r--r--package-lock.json3993
-rw-r--r--package.json12
-rw-r--r--src/Utils.ts8
-rw-r--r--src/client/documents/Documents.ts47
-rw-r--r--src/client/util/CurrentUserUtils.ts92
-rw-r--r--src/client/util/DocumentManager.ts55
-rw-r--r--src/client/util/DragManager.ts4
-rw-r--r--src/client/util/DropConverter.ts17
-rw-r--r--src/client/util/LinkManager.ts4
-rw-r--r--src/client/util/Scripting.ts3
-rw-r--r--src/client/util/SearchUtil.ts7
-rw-r--r--src/client/util/SelectionManager.ts9
-rw-r--r--src/client/util/SettingsManager.tsx12
-rw-r--r--src/client/views/ContextMenu.tsx18
-rw-r--r--src/client/views/DocComponent.tsx10
-rw-r--r--src/client/views/DocumentDecorations.tsx5
-rw-r--r--src/client/views/FilterPanel.tsx6
-rw-r--r--src/client/views/GlobalKeyHandler.ts2
-rw-r--r--src/client/views/InkControlPtHandles.tsx2
-rw-r--r--src/client/views/MainView.tsx5
-rw-r--r--src/client/views/PropertiesButtons.tsx2
-rw-r--r--src/client/views/PropertiesDocBacklinksSelector.tsx2
-rw-r--r--src/client/views/PropertiesDocContextSelector.tsx6
-rw-r--r--src/client/views/PropertiesSection.scss26
-rw-r--r--src/client/views/PropertiesView.tsx180
-rw-r--r--src/client/views/StyleProvider.scss9
-rw-r--r--src/client/views/StyleProvider.tsx28
-rw-r--r--src/client/views/collections/CollectionDockingView.tsx2
-rw-r--r--src/client/views/collections/CollectionStackingView.tsx12
-rw-r--r--src/client/views/collections/CollectionTimeView.tsx7
-rw-r--r--src/client/views/collections/CollectionTreeView.tsx73
-rw-r--r--src/client/views/collections/TabDocView.tsx1
-rw-r--r--src/client/views/collections/TreeView.scss10
-rw-r--r--src/client/views/collections/TreeView.tsx34
-rw-r--r--src/client/views/collections/collectionFreeForm/CollectionFreeFormLinkView.scss12
-rw-r--r--src/client/views/collections/collectionFreeForm/CollectionFreeFormLinkView.tsx318
-rw-r--r--src/client/views/collections/collectionFreeForm/CollectionFreeFormLinksView.scss13
-rw-r--r--src/client/views/collections/collectionFreeForm/CollectionFreeFormLinksView.tsx25
-rw-r--r--src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx82
-rw-r--r--src/client/views/collections/collectionFreeForm/index.ts12
-rw-r--r--src/client/views/collections/collectionSchema/CollectionSchemaView.scss7
-rw-r--r--src/client/views/collections/collectionSchema/SchemaRowBox.tsx2
-rw-r--r--src/client/views/collections/collectionSchema/SchemaTableCell.tsx39
-rw-r--r--src/client/views/global/globalScripts.ts38
-rw-r--r--src/client/views/linking/LinkMenuItem.scss32
-rw-r--r--src/client/views/linking/LinkMenuItem.tsx36
-rw-r--r--src/client/views/nodes/CollectionFreeFormDocumentView.tsx15
-rw-r--r--src/client/views/nodes/DataVizBox/components/Histogram.tsx6
-rw-r--r--src/client/views/nodes/DataVizBox/components/LineChart.tsx6
-rw-r--r--src/client/views/nodes/DataVizBox/components/PieChart.tsx6
-rw-r--r--src/client/views/nodes/DocumentLinksButton.tsx2
-rw-r--r--src/client/views/nodes/DocumentView.tsx99
-rw-r--r--src/client/views/nodes/FontIconBox/FontIconBox.scss10
-rw-r--r--src/client/views/nodes/FontIconBox/FontIconBox.tsx8
-rw-r--r--src/client/views/nodes/LabelBox.tsx2
-rw-r--r--src/client/views/nodes/LinkBox.scss25
-rw-r--r--src/client/views/nodes/LinkBox.tsx281
-rw-r--r--src/client/views/nodes/LinkDescriptionPopup.tsx18
-rw-r--r--src/client/views/nodes/LinkDocPreview.tsx4
-rw-r--r--src/client/views/nodes/formattedText/DashDocCommentView.tsx39
-rw-r--r--src/client/views/nodes/formattedText/DashFieldView.scss10
-rw-r--r--src/client/views/nodes/formattedText/DashFieldView.tsx27
-rw-r--r--src/client/views/nodes/formattedText/FormattedTextBox.tsx65
-rw-r--r--src/client/views/nodes/formattedText/RichTextMenu.tsx16
-rw-r--r--src/client/views/nodes/formattedText/RichTextRules.ts151
-rw-r--r--src/client/views/nodes/formattedText/marks_rts.ts5
-rw-r--r--src/client/views/nodes/formattedText/nodes_rts.ts12
-rw-r--r--src/client/views/nodes/trails/PresBox.tsx7
-rw-r--r--src/fields/Doc.ts45
-rw-r--r--src/fields/DocSymbols.ts1
-rw-r--r--src/fields/List.ts2
-rw-r--r--src/server/DashUploadUtils.ts25
72 files changed, 2749 insertions, 3457 deletions
diff --git a/package-lock.json b/package-lock.json
index 3564c4f1f..1f1c994c3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -26,7 +26,6 @@
"@fullcalendar/daygrid": "^6.1.10",
"@fullcalendar/multimonth": "^6.1.10",
"@internationalized/date": "^3.5.0",
- "@mapbox/mapbox-gl-geocoder": "^5.0.2",
"@mui/icons-material": "^5.14.19",
"@mui/material": "^5.14.19",
"@octokit/core": "^5.0.2",
@@ -48,7 +47,7 @@
"@types/pdf-parse": "^1.1.4",
"@types/reveal": "^4.2.0",
"@types/supercluster": "^7.1.3",
- "@types/web": "^0.0.135",
+ "@types/web": "^0.0.138",
"@webscopeio/react-textarea-autocomplete": "^4.9.2",
"adm-zip": "^0.5.10",
"archiver": "^6.0.1",
@@ -104,7 +103,7 @@
"function-plot": "^1.23.3",
"golden-layout": "^2.6.0",
"google-auth-library": "^9.4.1",
- "googleapis": "^129.0.0",
+ "googleapis": "^133.0.0",
"googlephotos": "^0.3.5",
"got": "^14.0.0",
"howler": "^2.2.4",
@@ -154,7 +153,7 @@
"prosemirror-commands": "^1.5.2",
"prosemirror-find-replace": "^0.9.0",
"prosemirror-history": "^1.3.2",
- "prosemirror-inputrules": "^1.3.0",
+ "prosemirror-inputrules": "^1.4.0",
"prosemirror-keymap": "^1.2.2",
"prosemirror-model": "^1.19.3",
"prosemirror-schema-list": "^1.3.0",
@@ -171,7 +170,7 @@
"react-awesome-reveal": "^4.2.7",
"react-color": "^2.19.3",
"react-compound-slider": "^3.4.0",
- "react-datepicker": "^4.24.0",
+ "react-datepicker": "^6.1.0",
"react-dom": "^18.2.0",
"react-grid-layout": "^1.4.4",
"react-icons": "^5.0.1",
@@ -182,6 +181,7 @@
"react-measure": "^2.5.2",
"react-resizable": "^3.0.5",
"react-select": "^5.8.0",
+ "react-xarrows": "^2.0.2",
"readline": "^1.3.0",
"recharts": "^2.10.3",
"rehype-raw": "^7.0.0",
@@ -280,7 +280,7 @@
"eslint-plugin-prettier": "^5.0.1",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-react-hooks": "^4.6.0",
- "jsdom": "^23.0.1",
+ "jsdom": "^24.0.0",
"mocha": "^10.2.0",
"prettier": "^3.1.0",
"react-type-animation": "^3.2.0",
@@ -304,66 +304,67 @@
}
},
"node_modules/@adobe/react-spectrum": {
- "version": "3.33.1",
- "resolved": "https://registry.npmjs.org/@adobe/react-spectrum/-/react-spectrum-3.33.1.tgz",
- "integrity": "sha512-HykNYBivG5YQjpsXZELSamGc2h2mJrfwD8cp31zIrcKBpTbkbGZgq+EVYzGCVzWdkp8R5CW4N0r8h7kj26fpww==",
+ "version": "3.34.0",
+ "resolved": "https://registry.npmjs.org/@adobe/react-spectrum/-/react-spectrum-3.34.0.tgz",
+ "integrity": "sha512-FI+kUI/SefYXCBdmKTwASijMuyaXONgU6uuBt0rddaasiHWytTVzxWHMRAZlxixQHks9nfvD11+DXvI58rNZNw==",
"dependencies": {
"@internationalized/string": "^3.2.0",
- "@react-aria/i18n": "^3.10.0",
+ "@react-aria/i18n": "^3.10.1",
"@react-aria/ssr": "^3.9.1",
- "@react-aria/utils": "^3.23.0",
- "@react-aria/visually-hidden": "^3.8.8",
- "@react-spectrum/actionbar": "^3.4.1",
- "@react-spectrum/actiongroup": "^3.10.1",
- "@react-spectrum/avatar": "^3.0.8",
- "@react-spectrum/badge": "^3.1.9",
- "@react-spectrum/breadcrumbs": "^3.9.3",
- "@react-spectrum/button": "^3.16.0",
- "@react-spectrum/buttongroup": "^3.6.9",
- "@react-spectrum/calendar": "^3.4.5",
- "@react-spectrum/checkbox": "^3.9.2",
- "@react-spectrum/combobox": "^3.12.1",
- "@react-spectrum/contextualhelp": "^3.6.7",
- "@react-spectrum/datepicker": "^3.9.2",
- "@react-spectrum/dialog": "^3.8.7",
- "@react-spectrum/divider": "^3.5.9",
- "@react-spectrum/dnd": "^3.3.6",
- "@react-spectrum/form": "^3.7.2",
- "@react-spectrum/icon": "^3.7.9",
- "@react-spectrum/illustratedmessage": "^3.4.9",
- "@react-spectrum/image": "^3.4.9",
- "@react-spectrum/inlinealert": "^3.2.1",
- "@react-spectrum/labeledvalue": "^3.1.10",
- "@react-spectrum/layout": "^3.6.1",
- "@react-spectrum/link": "^3.6.3",
- "@react-spectrum/list": "^3.7.6",
- "@react-spectrum/listbox": "^3.12.5",
- "@react-spectrum/menu": "^3.17.0",
- "@react-spectrum/meter": "^3.4.9",
- "@react-spectrum/numberfield": "^3.8.2",
- "@react-spectrum/overlays": "^5.5.3",
- "@react-spectrum/picker": "^3.14.1",
- "@react-spectrum/progress": "^3.7.3",
- "@react-spectrum/provider": "^3.9.3",
- "@react-spectrum/radio": "^3.7.2",
- "@react-spectrum/searchfield": "^3.8.2",
- "@react-spectrum/slider": "^3.6.5",
- "@react-spectrum/statuslight": "^3.5.9",
- "@react-spectrum/switch": "^3.5.1",
- "@react-spectrum/table": "^3.12.6",
- "@react-spectrum/tabs": "^3.8.6",
- "@react-spectrum/tag": "^3.2.2",
- "@react-spectrum/text": "^3.5.1",
- "@react-spectrum/textfield": "^3.11.2",
+ "@react-aria/utils": "^3.23.1",
+ "@react-aria/visually-hidden": "^3.8.9",
+ "@react-spectrum/actionbar": "^3.4.2",
+ "@react-spectrum/actiongroup": "^3.10.2",
+ "@react-spectrum/avatar": "^3.0.9",
+ "@react-spectrum/badge": "^3.1.10",
+ "@react-spectrum/breadcrumbs": "^3.9.4",
+ "@react-spectrum/button": "^3.16.1",
+ "@react-spectrum/buttongroup": "^3.6.10",
+ "@react-spectrum/calendar": "^3.4.6",
+ "@react-spectrum/checkbox": "^3.9.3",
+ "@react-spectrum/combobox": "^3.12.2",
+ "@react-spectrum/contextualhelp": "^3.6.8",
+ "@react-spectrum/datepicker": "^3.9.3",
+ "@react-spectrum/dialog": "^3.8.8",
+ "@react-spectrum/divider": "^3.5.10",
+ "@react-spectrum/dnd": "^3.3.7",
+ "@react-spectrum/form": "^3.7.3",
+ "@react-spectrum/icon": "^3.7.10",
+ "@react-spectrum/illustratedmessage": "^3.4.10",
+ "@react-spectrum/image": "^3.4.10",
+ "@react-spectrum/inlinealert": "^3.2.2",
+ "@react-spectrum/labeledvalue": "^3.1.11",
+ "@react-spectrum/layout": "^3.6.2",
+ "@react-spectrum/link": "^3.6.4",
+ "@react-spectrum/list": "^3.7.7",
+ "@react-spectrum/listbox": "^3.12.6",
+ "@react-spectrum/menu": "^3.18.0",
+ "@react-spectrum/meter": "^3.4.10",
+ "@react-spectrum/numberfield": "^3.9.0",
+ "@react-spectrum/overlays": "^5.5.4",
+ "@react-spectrum/picker": "^3.14.2",
+ "@react-spectrum/progress": "^3.7.4",
+ "@react-spectrum/provider": "^3.9.4",
+ "@react-spectrum/radio": "^3.7.3",
+ "@react-spectrum/searchfield": "^3.8.3",
+ "@react-spectrum/slider": "^3.6.6",
+ "@react-spectrum/statuslight": "^3.5.10",
+ "@react-spectrum/switch": "^3.5.2",
+ "@react-spectrum/table": "^3.12.7",
+ "@react-spectrum/tabs": "^3.8.7",
+ "@react-spectrum/tag": "^3.2.3",
+ "@react-spectrum/text": "^3.5.2",
+ "@react-spectrum/textfield": "^3.11.3",
"@react-spectrum/theme-dark": "^3.5.7",
"@react-spectrum/theme-default": "^3.5.7",
"@react-spectrum/theme-light": "^3.4.7",
- "@react-spectrum/tooltip": "^3.6.3",
- "@react-spectrum/view": "^3.6.6",
- "@react-spectrum/well": "^3.4.9",
+ "@react-spectrum/tooltip": "^3.6.4",
+ "@react-spectrum/view": "^3.6.7",
+ "@react-spectrum/well": "^3.4.10",
"@react-stately/collections": "^3.10.4",
- "@react-stately/data": "^3.11.0",
- "@react-types/shared": "^3.22.0"
+ "@react-stately/data": "^3.11.1",
+ "@react-types/shared": "^3.22.0",
+ "client-only": "^0.0.1"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0",
@@ -401,17 +402,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/@asamuzakjp/dom-selector": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-2.0.2.tgz",
- "integrity": "sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==",
- "dev": true,
- "dependencies": {
- "bidi-js": "^1.0.3",
- "css-tree": "^2.3.1",
- "is-potential-custom-element-name": "^1.0.1"
- }
- },
"node_modules/@azure/abort-controller": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz",
@@ -424,16 +414,27 @@
}
},
"node_modules/@azure/core-auth": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.5.0.tgz",
- "integrity": "sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.6.0.tgz",
+ "integrity": "sha512-3X9wzaaGgRaBCwhLQZDtFp5uLIXCPrGbwJNWPPugvL4xbIGgScv77YzzxToKGLAKvG9amDoofMoP+9hsH1vs1w==",
"dependencies": {
- "@azure/abort-controller": "^1.0.0",
+ "@azure/abort-controller": "^2.0.0",
"@azure/core-util": "^1.1.0",
"tslib": "^2.2.0"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.0.0.tgz",
+ "integrity": "sha512-RP/mR/WJchR+g+nQFJGOec+nzeN/VvjlwbinccoqfhTsTHbb8X5+mLDp48kHT0ueyum0BNSwGm0kX0UZuIqTGg==",
+ "dependencies": {
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@azure/core-http": {
@@ -469,17 +470,28 @@
}
},
"node_modules/@azure/core-lro": {
- "version": "2.5.4",
- "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.5.4.tgz",
- "integrity": "sha512-3GJiMVH7/10bulzOKGrrLeG/uCBH/9VtxqaMcB9lIqAeamI/xYQSHJL/KcsLDuH+yTjYpro/u6D/MuRe4dN70Q==",
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.6.0.tgz",
+ "integrity": "sha512-PyRNcaIOfMgoUC01/24NoG+k8O81VrKxYARnDlo+Q2xji0/0/j2nIt8BwQh294pb1c5QnXTDPbNR4KzoDKXEoQ==",
"dependencies": {
- "@azure/abort-controller": "^1.0.0",
+ "@azure/abort-controller": "^2.0.0",
"@azure/core-util": "^1.2.0",
"@azure/logger": "^1.0.0",
"tslib": "^2.2.0"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/core-lro/node_modules/@azure/abort-controller": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.0.0.tgz",
+ "integrity": "sha512-RP/mR/WJchR+g+nQFJGOec+nzeN/VvjlwbinccoqfhTsTHbb8X5+mLDp48kHT0ueyum0BNSwGm0kX0UZuIqTGg==",
+ "dependencies": {
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@azure/core-paging": {
@@ -506,15 +518,26 @@
}
},
"node_modules/@azure/core-util": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.6.1.tgz",
- "integrity": "sha512-h5taHeySlsV9qxuK64KZxy4iln1BtMYlNt5jbuEFN3UFSAd1EwKg/Gjl5a6tZ/W8t6li3xPnutOx7zbDyXnPmQ==",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.7.0.tgz",
+ "integrity": "sha512-Zq2i3QO6k9DA8vnm29mYM4G8IE9u1mhF1GUabVEqPNX8Lj833gdxQ2NAFxt2BZsfAL+e9cT8SyVN7dFVJ/Hf0g==",
"dependencies": {
- "@azure/abort-controller": "^1.0.0",
+ "@azure/abort-controller": "^2.0.0",
"tslib": "^2.2.0"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/core-util/node_modules/@azure/abort-controller": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.0.0.tgz",
+ "integrity": "sha512-RP/mR/WJchR+g+nQFJGOec+nzeN/VvjlwbinccoqfhTsTHbb8X5+mLDp48kHT0ueyum0BNSwGm0kX0UZuIqTGg==",
+ "dependencies": {
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@azure/logger": {
@@ -648,9 +671,9 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.9.tgz",
- "integrity": "sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw==",
+ "version": "7.23.10",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz",
+ "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-environment-visitor": "^7.22.20",
@@ -2525,28 +2548,42 @@
}
},
"node_modules/@floating-ui/core": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz",
- "integrity": "sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz",
+ "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==",
"dependencies": {
- "@floating-ui/utils": "^0.2.0"
+ "@floating-ui/utils": "^0.2.1"
}
},
"node_modules/@floating-ui/dom": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.4.tgz",
- "integrity": "sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==",
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz",
+ "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==",
"dependencies": {
- "@floating-ui/core": "^1.5.3",
+ "@floating-ui/core": "^1.0.0",
"@floating-ui/utils": "^0.2.0"
}
},
+ "node_modules/@floating-ui/react": {
+ "version": "0.26.9",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.9.tgz",
+ "integrity": "sha512-p86wynZJVEkEq2BBjY/8p2g3biQ6TlgT4o/3KgFKyTWoJLU1GZ8wpctwRqtkEl2tseYA+kw7dBAIDFcednfI5w==",
+ "dependencies": {
+ "@floating-ui/react-dom": "^2.0.8",
+ "@floating-ui/utils": "^0.2.1",
+ "tabbable": "^6.0.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
"node_modules/@floating-ui/react-dom": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.6.tgz",
- "integrity": "sha512-IB8aCRFxr8nFkdYZgH+Otd9EVQPJoynxeFRGTB8voPoZMRWo8XjYuCRgpI1btvuKY69XMiLnW+ym7zoBHM90Rw==",
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz",
+ "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==",
"dependencies": {
- "@floating-ui/dom": "^1.5.4"
+ "@floating-ui/dom": "^1.6.1"
},
"peerDependencies": {
"react": ">=16.8.0",
@@ -2576,19 +2613,19 @@
}
},
"node_modules/@formatjs/icu-messageformat-parser": {
- "version": "2.7.5",
- "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.5.tgz",
- "integrity": "sha512-zCB53HdGDibh6/2ISEN3TGsFQruQ6gGKMFV94qHNyVrs0tNO6ncKhV0vq0n3Ydz8ipIQ2GaYAvfCoimNOVvKqA==",
+ "version": "2.7.6",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz",
+ "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==",
"dependencies": {
"@formatjs/ecma402-abstract": "1.18.2",
- "@formatjs/icu-skeleton-parser": "1.7.2",
+ "@formatjs/icu-skeleton-parser": "1.8.0",
"tslib": "^2.4.0"
}
},
"node_modules/@formatjs/icu-skeleton-parser": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.7.2.tgz",
- "integrity": "sha512-nlIXVv280bjGW3ail5Np1+xgGKBnMhwQQIivgbk9xX0af8ESQO+y2VW9TOY7mCrs3WH786uVpZlLimXAlXH7SA==",
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz",
+ "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==",
"dependencies": {
"@formatjs/ecma402-abstract": "1.18.2",
"tslib": "^2.4.0"
@@ -2707,9 +2744,9 @@
}
},
"node_modules/@googlemaps/markerclusterer": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/@googlemaps/markerclusterer/-/markerclusterer-2.3.2.tgz",
- "integrity": "sha512-zb9OQP8XscZp2Npt1uQUYnGKu1miuq4DPP28JyDuFd6HV17HCEcjV9MtBi4muG/iVRXXvuHW9bRCnHbao9ITfw==",
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@googlemaps/markerclusterer/-/markerclusterer-2.5.3.tgz",
+ "integrity": "sha512-x7lX0R5yYOoiNectr10wLgCBasNcXFHiADIBdmn7jQllF2B5ENQw5XtZK+hIw4xnV0Df0xhN4LN98XqA5jaiOw==",
"dependencies": {
"fast-deep-equal": "^3.1.3",
"supercluster": "^8.0.1"
@@ -3302,9 +3339,9 @@
}
},
"node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
- "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"engines": {
"node": ">=6.0.0"
}
@@ -3351,15 +3388,6 @@
"integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==",
"dev": true
},
- "node_modules/@mapbox/fusspot": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@mapbox/fusspot/-/fusspot-0.4.0.tgz",
- "integrity": "sha512-6sys1vUlhNCqMvJOqPEPSi0jc9tg7aJ//oG1A16H3PXoIt9whtNngD7UzBHUVTH15zunR/vRvMtGNVsogm1KzA==",
- "dependencies": {
- "is-plain-obj": "^1.1.0",
- "xtend": "^4.0.1"
- }
- },
"node_modules/@mapbox/geojson-rewind": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz",
@@ -3391,194 +3419,11 @@
"node": ">= 0.6"
}
},
- "node_modules/@mapbox/mapbox-gl-geocoder": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-geocoder/-/mapbox-gl-geocoder-5.0.2.tgz",
- "integrity": "sha512-o+2atyKKsfbiI2/iutQ/razt5O++kfi9oxwaXSfKc6m/9NudJnQm3rpGB0GagA+becq2NU4U99E9Yzv+UcMCBQ==",
- "dependencies": {
- "@mapbox/mapbox-sdk": "^0.13.7",
- "events": "^3.3.0",
- "lodash.debounce": "^4.0.6",
- "nanoid": "^3.1.31",
- "subtag": "^0.5.0",
- "suggestions": "^1.6.0",
- "xtend": "^4.0.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/@mapbox/mapbox-gl-supported": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-2.0.1.tgz",
"integrity": "sha512-HP6XvfNIzfoMVfyGjBckjiAOQK9WfX0ywdLubuPMPv+Vqf5fj0uCbgBQYpiqcWZT6cbyyRnTSXDheT1ugvF6UQ=="
},
- "node_modules/@mapbox/mapbox-sdk": {
- "version": "0.13.7",
- "resolved": "https://registry.npmjs.org/@mapbox/mapbox-sdk/-/mapbox-sdk-0.13.7.tgz",
- "integrity": "sha512-JZjBsAVSBv7lX7gQPOQwftBGHIUcvL/tPKFxAL+SCT7u1n+eRH052XebOTkl28pNm7Du6DpKAs1GvgUnDcFFDQ==",
- "dependencies": {
- "@mapbox/fusspot": "^0.4.0",
- "@mapbox/parse-mapbox-token": "^0.2.0",
- "@mapbox/polyline": "^1.0.0",
- "eventemitter3": "^3.1.0",
- "form-data": "^3.0.0",
- "got": "^11.8.5",
- "is-plain-obj": "^1.1.0",
- "xtend": "^4.0.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@mapbox/mapbox-sdk/node_modules/@sindresorhus/is": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
- "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/is?sponsor=1"
- }
- },
- "node_modules/@mapbox/mapbox-sdk/node_modules/@szmarczak/http-timer": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
- "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
- "dependencies": {
- "defer-to-connect": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@mapbox/mapbox-sdk/node_modules/cacheable-lookup": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
- "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
- "engines": {
- "node": ">=10.6.0"
- }
- },
- "node_modules/@mapbox/mapbox-sdk/node_modules/cacheable-request": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
- "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
- "dependencies": {
- "clone-response": "^1.0.2",
- "get-stream": "^5.1.0",
- "http-cache-semantics": "^4.0.0",
- "keyv": "^4.0.0",
- "lowercase-keys": "^2.0.0",
- "normalize-url": "^6.0.1",
- "responselike": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@mapbox/mapbox-sdk/node_modules/form-data": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
- "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@mapbox/mapbox-sdk/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@mapbox/mapbox-sdk/node_modules/got": {
- "version": "11.8.6",
- "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
- "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
- "dependencies": {
- "@sindresorhus/is": "^4.0.0",
- "@szmarczak/http-timer": "^4.0.5",
- "@types/cacheable-request": "^6.0.1",
- "@types/responselike": "^1.0.0",
- "cacheable-lookup": "^5.0.3",
- "cacheable-request": "^7.0.2",
- "decompress-response": "^6.0.0",
- "http2-wrapper": "^1.0.0-beta.5.2",
- "lowercase-keys": "^2.0.0",
- "p-cancelable": "^2.0.0",
- "responselike": "^2.0.0"
- },
- "engines": {
- "node": ">=10.19.0"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/got?sponsor=1"
- }
- },
- "node_modules/@mapbox/mapbox-sdk/node_modules/http2-wrapper": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
- "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
- "dependencies": {
- "quick-lru": "^5.1.1",
- "resolve-alpn": "^1.0.0"
- },
- "engines": {
- "node": ">=10.19.0"
- }
- },
- "node_modules/@mapbox/mapbox-sdk/node_modules/lowercase-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
- "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@mapbox/mapbox-sdk/node_modules/normalize-url": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
- "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@mapbox/mapbox-sdk/node_modules/p-cancelable": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
- "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@mapbox/mapbox-sdk/node_modules/responselike": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
- "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
- "dependencies": {
- "lowercase-keys": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/@mapbox/node-pre-gyp": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
@@ -3663,9 +3508,9 @@
}
},
"node_modules/@mapbox/node-pre-gyp/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -3681,30 +3526,11 @@
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
- "node_modules/@mapbox/parse-mapbox-token": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/@mapbox/parse-mapbox-token/-/parse-mapbox-token-0.2.0.tgz",
- "integrity": "sha512-BjeuG4sodYaoTygwXIuAWlZV6zUv4ZriYAQhXikzx+7DChycMUQ9g85E79Htat+AsBg+nStFALehlOhClYm5cQ==",
- "dependencies": {
- "base-64": "^0.1.0"
- }
- },
"node_modules/@mapbox/point-geometry": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz",
"integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ=="
},
- "node_modules/@mapbox/polyline": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@mapbox/polyline/-/polyline-1.2.1.tgz",
- "integrity": "sha512-sn0V18O3OzW4RCcPoUIVDWvEGQaBNH9a0y5lgqrf5hUycyw1CzrhEoxV5irzrMNXKCkw1xRsZXcaVbsVZggHXA==",
- "dependencies": {
- "meow": "^9.0.0"
- },
- "bin": {
- "polyline": "bin/polyline.bin.js"
- }
- },
"node_modules/@mapbox/tiny-sdf": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz",
@@ -3758,14 +3584,14 @@
}
},
"node_modules/@mui/base": {
- "version": "5.0.0-beta.33",
- "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.33.tgz",
- "integrity": "sha512-WcSpoJUw/UYHXpvgtl4HyMar2Ar97illUpqiS/X1gtSBp6sdDW6kB2BJ9OlVQ+Kk/RL2GDp/WHA9sbjAYV35ow==",
+ "version": "5.0.0-beta.36",
+ "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.36.tgz",
+ "integrity": "sha512-6A8fYiXgjqTO6pgj31Hc8wm1M3rFYCxDRh09dBVk0L0W4cb2lnurRJa3cAyic6hHY+we1S58OdGYRbKmOsDpGQ==",
"dependencies": {
- "@babel/runtime": "^7.23.8",
- "@floating-ui/react-dom": "^2.0.6",
+ "@babel/runtime": "^7.23.9",
+ "@floating-ui/react-dom": "^2.0.8",
"@mui/types": "^7.2.13",
- "@mui/utils": "^5.15.6",
+ "@mui/utils": "^5.15.9",
"@popperjs/core": "^2.11.8",
"clsx": "^2.1.0",
"prop-types": "^15.8.1"
@@ -3789,20 +3615,20 @@
}
},
"node_modules/@mui/core-downloads-tracker": {
- "version": "5.15.6",
- "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.6.tgz",
- "integrity": "sha512-0aoWS4qvk1uzm9JBs83oQmIMIQeTBUeqqu8u+3uo2tMznrB5fIKqQVCbCgq+4Tm4jG+5F7dIvnjvQ2aV7UKtdw==",
+ "version": "5.15.10",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.10.tgz",
+ "integrity": "sha512-qPv7B+LeMatYuzRjB3hlZUHqinHx/fX4YFBiaS19oC02A1e9JFuDKDvlyRQQ5oRSbJJt0QlaLTlr0IcauVcJRQ==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mui-org"
}
},
"node_modules/@mui/icons-material": {
- "version": "5.15.6",
- "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.15.6.tgz",
- "integrity": "sha512-GnkxMtlhs+8ieHLmCytg00ew0vMOiXGFCw8Ra9nxMsBjBqnrOI5gmXqUm+sGggeEU/HG8HyeqC1MX/IxOBJHzA==",
+ "version": "5.15.10",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.15.10.tgz",
+ "integrity": "sha512-9cF8oUHZKo9oQ7EQ3pxPELaZuZVmphskU4OI6NiJNDVN7zcuvrEsuWjYo1Zh4fLiC39Nrvm30h/B51rcUjvSGA==",
"dependencies": {
- "@babel/runtime": "^7.23.8"
+ "@babel/runtime": "^7.23.9"
},
"engines": {
"node": ">=12.0.0"
@@ -3823,19 +3649,19 @@
}
},
"node_modules/@mui/material": {
- "version": "5.15.6",
- "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.6.tgz",
- "integrity": "sha512-rw7bDdpi2kzfmcDN78lHp8swArJ5sBCKsn+4G3IpGfu44ycyWAWX0VdlvkjcR9Yrws2KIm7c+8niXpWHUDbWoA==",
- "dependencies": {
- "@babel/runtime": "^7.23.8",
- "@mui/base": "5.0.0-beta.33",
- "@mui/core-downloads-tracker": "^5.15.6",
- "@mui/system": "^5.15.6",
+ "version": "5.15.10",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.10.tgz",
+ "integrity": "sha512-YJJGHjwDOucecjDEV5l9ISTCo+l9YeWrho623UajzoHRYxuKUmwrGVYOW4PKwGvCx9SU9oklZnbbi2Clc5XZHw==",
+ "dependencies": {
+ "@babel/runtime": "^7.23.9",
+ "@mui/base": "5.0.0-beta.36",
+ "@mui/core-downloads-tracker": "^5.15.10",
+ "@mui/system": "^5.15.9",
"@mui/types": "^7.2.13",
- "@mui/utils": "^5.15.6",
+ "@mui/utils": "^5.15.9",
"@types/react-transition-group": "^4.4.10",
"clsx": "^2.1.0",
- "csstype": "^3.1.2",
+ "csstype": "^3.1.3",
"prop-types": "^15.8.1",
"react-is": "^18.2.0",
"react-transition-group": "^4.4.5"
@@ -3867,12 +3693,12 @@
}
},
"node_modules/@mui/private-theming": {
- "version": "5.15.6",
- "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.6.tgz",
- "integrity": "sha512-ZBX9E6VNUSscUOtU8uU462VvpvBS7eFl5VfxAzTRVQBHflzL+5KtnGrebgf6Nd6cdvxa1o0OomiaxSKoN2XDmg==",
+ "version": "5.15.9",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.9.tgz",
+ "integrity": "sha512-/aMJlDOxOTAXyp4F2rIukW1O0anodAMCkv1DfBh/z9vaKHY3bd5fFf42wmP+0GRmwMinC5aWPpNfHXOED1fEtg==",
"dependencies": {
- "@babel/runtime": "^7.23.8",
- "@mui/utils": "^5.15.6",
+ "@babel/runtime": "^7.23.9",
+ "@mui/utils": "^5.15.9",
"prop-types": "^15.8.1"
},
"engines": {
@@ -3893,13 +3719,13 @@
}
},
"node_modules/@mui/styled-engine": {
- "version": "5.15.6",
- "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.6.tgz",
- "integrity": "sha512-KAn8P8xP/WigFKMlEYUpU9z2o7jJnv0BG28Qu1dhNQVutsLVIFdRf5Nb+0ijp2qgtcmygQ0FtfRuXv5LYetZTg==",
+ "version": "5.15.9",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.9.tgz",
+ "integrity": "sha512-NRKtYkL5PZDH7dEmaLEIiipd3mxNnQSO+Yo8rFNBNptY8wzQnQ+VjayTq39qH7Sast5cwHKYFusUrQyD+SS4Og==",
"dependencies": {
- "@babel/runtime": "^7.23.8",
+ "@babel/runtime": "^7.23.9",
"@emotion/cache": "^11.11.0",
- "csstype": "^3.1.2",
+ "csstype": "^3.1.3",
"prop-types": "^15.8.1"
},
"engines": {
@@ -3950,17 +3776,17 @@
}
},
"node_modules/@mui/system": {
- "version": "5.15.6",
- "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.6.tgz",
- "integrity": "sha512-J01D//u8IfXvaEHMBQX5aO2l7Q+P15nt96c4NskX7yp5/+UuZP8XCQJhtBtLuj+M2LLyXHYGmCPeblsmmscP2Q==",
+ "version": "5.15.9",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.9.tgz",
+ "integrity": "sha512-SxkaaZ8jsnIJ77bBXttfG//LUf6nTfOcaOuIgItqfHv60ZCQy/Hu7moaob35kBb+guxVJnoSZ+7vQJrA/E7pKg==",
"dependencies": {
- "@babel/runtime": "^7.23.8",
- "@mui/private-theming": "^5.15.6",
- "@mui/styled-engine": "^5.15.6",
+ "@babel/runtime": "^7.23.9",
+ "@mui/private-theming": "^5.15.9",
+ "@mui/styled-engine": "^5.15.9",
"@mui/types": "^7.2.13",
- "@mui/utils": "^5.15.6",
+ "@mui/utils": "^5.15.9",
"clsx": "^2.1.0",
- "csstype": "^3.1.2",
+ "csstype": "^3.1.3",
"prop-types": "^15.8.1"
},
"engines": {
@@ -4002,11 +3828,11 @@
}
},
"node_modules/@mui/utils": {
- "version": "5.15.6",
- "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.6.tgz",
- "integrity": "sha512-qfEhf+zfU9aQdbzo1qrSWlbPQhH1nCgeYgwhOVnj9Bn39shJQitEnXpSQpSNag8+uty5Od6PxmlNKPTnPySRKA==",
+ "version": "5.15.9",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.9.tgz",
+ "integrity": "sha512-yDYfr61bCYUz1QtwvpqYy/3687Z8/nS4zv7lv/ih/6ZFGMl1iolEvxRmR84v2lOYxlds+kq1IVYbXxDKh8Z9sg==",
"dependencies": {
- "@babel/runtime": "^7.23.8",
+ "@babel/runtime": "^7.23.9",
"@types/prop-types": "^15.7.11",
"prop-types": "^15.8.1",
"react-is": "^18.2.0"
@@ -4119,9 +3945,9 @@
"integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw=="
},
"node_modules/@octokit/request": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.6.tgz",
- "integrity": "sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.2.0.tgz",
+ "integrity": "sha512-exPif6x5uwLqv1N1irkLG1zZNJkOtj8bZxuVHd71U5Ftuxf2wGNvAJyNBcPbPC+EBzwYEbBDdSFb8EPcjpYxPQ==",
"dependencies": {
"@octokit/endpoint": "^9.0.0",
"@octokit/request-error": "^5.0.0",
@@ -4192,14 +4018,14 @@
}
},
"node_modules/@react-aria/actiongroup": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/@react-aria/actiongroup/-/actiongroup-3.7.1.tgz",
- "integrity": "sha512-gZ6q2Z4Fxo/3qPibHrMFlQIA6F6t5Mm0cBzjsOypP0bfm79El49uk3eLWkFDI2EIsstlif3t16ZAqJgW3VWiKQ==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@react-aria/actiongroup/-/actiongroup-3.7.2.tgz",
+ "integrity": "sha512-H8VLxkelhppaFGuPCOuZVryKBUeKVhCtkRIlR3ZnVcNR5jV9Qlc1J3rWOmMNJxcVTszXEbOcJL+/xX1fpBhA5g==",
"dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/list": "^3.10.2",
"@react-types/actiongroup": "^3.4.6",
"@react-types/shared": "^3.22.0",
@@ -4211,13 +4037,13 @@
}
},
"node_modules/@react-aria/breadcrumbs": {
- "version": "3.5.9",
- "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.9.tgz",
- "integrity": "sha512-asbXTL5NjeHl1+YIF0K70y8tNHk8Lb6VneYH8yOkpLO49ejyNDYBK0tp0jtI9IZAQiTa2qkhYq58c9LloTwebQ==",
+ "version": "3.5.10",
+ "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.10.tgz",
+ "integrity": "sha512-Z6UMVvobmBg4uLewAXkp9/X6AFN+S/4uHk3IShHCaI8ONNZrIewbPYR1B9qNsgMMnYWmDfaOp40krdJSgYdGUw==",
"dependencies": {
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/link": "^3.6.3",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/link": "^3.6.4",
+ "@react-aria/utils": "^3.23.1",
"@react-types/breadcrumbs": "^3.7.2",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -4227,14 +4053,14 @@
}
},
"node_modules/@react-aria/button": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.9.1.tgz",
- "integrity": "sha512-nAnLMUAnwIVcRkKzS1G2IU6LZSkIWPJGu9amz/g7Y02cGUwFp3lk5bEw2LdoaXiSDJNSX8g0SZFU8FROg57jfQ==",
+ "version": "3.9.2",
+ "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.9.2.tgz",
+ "integrity": "sha512-7ZVUASmdOdi1FNP528oDggxO1SNoAhyuMutaJd7nNBjAJ4Zagi/T9qaAFoVha1hyejfLY/ZzXRdWhnkUYljSbA==",
"dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
- "@react-stately/toggle": "^3.7.0",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
+ "@react-stately/toggle": "^3.7.1",
"@react-types/button": "^3.9.1",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -4244,15 +4070,15 @@
}
},
"node_modules/@react-aria/calendar": {
- "version": "3.5.4",
- "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.5.4.tgz",
- "integrity": "sha512-8k7khgea5kwfWriZJWCADNB0R2d7g5A6tTjUEktK4FFZcTb0RCubFejts4hRyzKlF9XHUro2dfh6sbZrzfMKDQ==",
+ "version": "3.5.5",
+ "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.5.5.tgz",
+ "integrity": "sha512-9CmW7mwIJwuM8wsw4W8ads3mxUftaSSfYaWH1h+m0C9ycNJ1FP2QO+re4I821+LhuuyJTj1GOUJ7Tzk+c9yWJA==",
"dependencies": {
"@internationalized/date": "^3.5.1",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
"@react-aria/live-announcer": "^3.3.1",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/calendar": "^3.4.3",
"@react-types/button": "^3.9.1",
"@react-types/calendar": "^3.4.3",
@@ -4265,18 +4091,19 @@
}
},
"node_modules/@react-aria/checkbox": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.13.0.tgz",
- "integrity": "sha512-eylJwtADIPKJ1Y5rITNJm/8JD8sXG2nhiZBIg1ko44Szxrpu+Le53NoGtg8nlrfh9vbUrXVvuFtf2jxbPXR5Jw==",
- "dependencies": {
- "@react-aria/form": "^3.0.1",
- "@react-aria/label": "^3.7.4",
- "@react-aria/toggle": "^3.10.0",
- "@react-aria/utils": "^3.23.0",
- "@react-stately/checkbox": "^3.6.1",
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.14.0.tgz",
+ "integrity": "sha512-eOIeIIhnoQkin+1kmz+pv/YjRSkMWAF4uyi1THwkTlLZmpJvxUqEbSzQhfBEH30tKAlFLAcpY3+XOUCm74tHng==",
+ "dependencies": {
+ "@react-aria/form": "^3.0.2",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/label": "^3.7.5",
+ "@react-aria/toggle": "^3.10.1",
+ "@react-aria/utils": "^3.23.1",
+ "@react-stately/checkbox": "^3.6.2",
"@react-stately/form": "^3.0.0",
- "@react-stately/toggle": "^3.7.0",
- "@react-types/checkbox": "^3.6.0",
+ "@react-stately/toggle": "^3.7.1",
+ "@react-types/checkbox": "^3.7.0",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
},
@@ -4285,18 +4112,18 @@
}
},
"node_modules/@react-aria/combobox": {
- "version": "3.8.2",
- "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.8.2.tgz",
- "integrity": "sha512-q8Kdw1mx6nSSydXqRagRuyKH1NPGvpSOFjUfgxdO8ZqaEEuZX3ObOoiO/DLtXDndViNc03dMbMpfuJoLYXfCtg==",
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.8.3.tgz",
+ "integrity": "sha512-7SteX1MjDV0077IZVMuaXAuIiSaQeGYh1sT5Y6eDOCiOArkPaEmXWzCjBDkLYex0jl6z51gl0gLU3dwq9kB6Gw==",
"dependencies": {
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/listbox": "^3.11.3",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/listbox": "^3.11.4",
"@react-aria/live-announcer": "^3.3.1",
- "@react-aria/menu": "^3.12.0",
- "@react-aria/overlays": "^3.20.0",
- "@react-aria/selection": "^3.17.3",
- "@react-aria/textfield": "^3.14.1",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/menu": "^3.13.0",
+ "@react-aria/overlays": "^3.21.0",
+ "@react-aria/selection": "^3.17.4",
+ "@react-aria/textfield": "^3.14.2",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/collections": "^3.10.4",
"@react-stately/combobox": "^3.8.1",
"@react-stately/form": "^3.0.0",
@@ -4311,20 +4138,20 @@
}
},
"node_modules/@react-aria/datepicker": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.9.1.tgz",
- "integrity": "sha512-bdlY2H/zwe3hQf64Lp1oGTf7Va8ennDyAv4Ffowb+BOoL8+FB9smtGyONKe87zXu7VJL2M5xYAi4n7c004PM+w==",
+ "version": "3.9.2",
+ "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.9.2.tgz",
+ "integrity": "sha512-8iTfhHEfPPmf7DmqnzCttvzZms15CstAVdvbOVqUuBqH8Ai693aIuVfOEkyqL5Vqohy4/+ViA5LZ3WM4m7QLiQ==",
"dependencies": {
"@internationalized/date": "^3.5.1",
"@internationalized/number": "^3.5.0",
"@internationalized/string": "^3.2.0",
- "@react-aria/focus": "^3.16.0",
- "@react-aria/form": "^3.0.1",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/label": "^3.7.4",
- "@react-aria/spinbutton": "^3.6.1",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/form": "^3.0.2",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/label": "^3.7.5",
+ "@react-aria/spinbutton": "^3.6.2",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/datepicker": "^3.9.1",
"@react-stately/form": "^3.0.0",
"@react-types/button": "^3.9.1",
@@ -4340,13 +4167,13 @@
}
},
"node_modules/@react-aria/dialog": {
- "version": "3.5.10",
- "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.10.tgz",
- "integrity": "sha512-H2BNVLOfaum6/4irH5XUU/wIcXSs/ymxmTPGmucRG1hzaUh8H3tupdl/qCZ+SsW9oYDFlphY172uM1nsPjBMiQ==",
+ "version": "3.5.11",
+ "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.11.tgz",
+ "integrity": "sha512-oT+FBOtPZRWVBxPt1K8F5XaKGYpi+ZV3oFFzub8w+D6m+9WN4pktUx7YBz95Kunw7M1HcAsyQZX0fsAuDPL7Rw==",
"dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/overlays": "^3.20.0",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/overlays": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
"@react-types/dialog": "^3.5.7",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -4357,16 +4184,16 @@
}
},
"node_modules/@react-aria/dnd": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/@react-aria/dnd/-/dnd-3.5.1.tgz",
- "integrity": "sha512-7OPGePdle+xNYHAIAUOvIETRMfnkRt7h/C0bCkxUR2GYefEbTzfraso4ppNH2JZ7fCRd0K/Qe+jvQklwusHAKA==",
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/@react-aria/dnd/-/dnd-3.5.2.tgz",
+ "integrity": "sha512-isEYONbkZMvx1DUmeAo/NwazFz9ZEKdosszWDhzxSk6a38C5kAHBIV2GBntwsL3W9EQn1fzUY/X13ykcHvjJAA==",
"dependencies": {
"@internationalized/string": "^3.2.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
"@react-aria/live-announcer": "^3.3.1",
- "@react-aria/overlays": "^3.20.0",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/overlays": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/dnd": "^3.2.7",
"@react-types/button": "^3.9.1",
"@react-types/shared": "^3.22.0",
@@ -4378,12 +4205,12 @@
}
},
"node_modules/@react-aria/focus": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.16.0.tgz",
- "integrity": "sha512-GP6EYI07E8NKQQcXHjpIocEU0vh0oi0Vcsd+/71fKS0NnTR0TUOEeil0JuuQ9ymkmPDTu51Aaaa4FxVsuN/23A==",
+ "version": "3.16.1",
+ "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.16.1.tgz",
+ "integrity": "sha512-3ZEYc+hWqDQX7fA54ZOTkED8OGXs9+K9fYmjD1IdjZJAJS/2/AJ95PgIQ29zBkl9D9TAi4Nb3tJ/3+H/02UzoA==",
"dependencies": {
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0",
"clsx": "^2.0.0"
@@ -4393,12 +4220,12 @@
}
},
"node_modules/@react-aria/form": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.0.1.tgz",
- "integrity": "sha512-6586oODMDR4/ciGRwXjpvEAg7tWGSDrXE//waK0n5e5sMuzlPOo1DHc5SpPTvz0XdJsu6VDt2rHdVWVIC9LEyw==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.0.2.tgz",
+ "integrity": "sha512-iQBbol9vSPd+s2rNlkmu646wGlrDNr/u+Uf/NRXNl5MNvDIWAQ3mliGL1ERGtT5GGq0WzSka4hjbzwf67BdQKw==",
"dependencies": {
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/form": "^3.0.0",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -4408,21 +4235,21 @@
}
},
"node_modules/@react-aria/grid": {
- "version": "3.8.6",
- "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.8.6.tgz",
- "integrity": "sha512-JlQDkdm5heG1FfRyy5KnB8b6s/hRqSI6Xt2xN2AccLX5kcbfFr2/d5KVxyf6ahfa4Gfd46alN6477ju5eTWJew==",
+ "version": "3.8.7",
+ "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.8.7.tgz",
+ "integrity": "sha512-gpWiZptCA+65jVbCu9vzkfBfzfgLucSOZFy9P+fVrGB6fE6pDGj13oyyr+Nmr6jihQmOv+y9eJsU7u9Xlyl2Xg==",
"dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
"@react-aria/live-announcer": "^3.3.1",
- "@react-aria/selection": "^3.17.3",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/selection": "^3.17.4",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/collections": "^3.10.4",
"@react-stately/grid": "^3.8.4",
"@react-stately/selection": "^3.14.2",
- "@react-stately/virtualizer": "^3.6.6",
- "@react-types/checkbox": "^3.6.0",
+ "@react-stately/virtualizer": "^3.6.7",
+ "@react-types/checkbox": "^3.7.0",
"@react-types/grid": "^3.2.3",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -4433,16 +4260,16 @@
}
},
"node_modules/@react-aria/gridlist": {
- "version": "3.7.3",
- "resolved": "https://registry.npmjs.org/@react-aria/gridlist/-/gridlist-3.7.3.tgz",
- "integrity": "sha512-rkkepYM7xJiebR0g3uC4zzkdR7a8z0fLaM+sg9lSTbdElHMLAlrebS2ytEyZnhiu9nbOnw13GN1OC4/ZenzbHQ==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/grid": "^3.8.6",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/selection": "^3.17.3",
- "@react-aria/utils": "^3.23.0",
+ "version": "3.7.4",
+ "resolved": "https://registry.npmjs.org/@react-aria/gridlist/-/gridlist-3.7.4.tgz",
+ "integrity": "sha512-9GeKXfMd4WqyaRs7PMvuL9ryLND0EBkgf14dycbZCb/QKxgNYRLPFZN6fV3LiMh2CiqAXEpmDOo60PxSxh618A==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/grid": "^3.8.7",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/selection": "^3.17.4",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/list": "^3.10.2",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -4453,16 +4280,16 @@
}
},
"node_modules/@react-aria/i18n": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.10.0.tgz",
- "integrity": "sha512-sviD5Y1pLPG49HHRmVjR+5nONrp0HK219+nu9Y7cDfUhXu2EjyhMS9t/n9/VZ69hHChZ2PnHYLEE2visu9CuCg==",
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.10.1.tgz",
+ "integrity": "sha512-o05AozIXhropvN8vg0YD0Z0vajYuaALxB1+Km00FE5uGim4u2UKeBXqAk+8QsOs4CHg91paa3C15DcTDDEMJSg==",
"dependencies": {
"@internationalized/date": "^3.5.1",
"@internationalized/message": "^3.1.1",
"@internationalized/number": "^3.5.0",
"@internationalized/string": "^3.2.0",
"@react-aria/ssr": "^3.9.1",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/utils": "^3.23.1",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
},
@@ -4471,12 +4298,12 @@
}
},
"node_modules/@react-aria/interactions": {
- "version": "3.20.1",
- "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.20.1.tgz",
- "integrity": "sha512-PLNBr87+SzRhe9PvvF9qvzYeP4ofTwfKSorwmO+hjr3qoczrSXf4LRQlb27wB6hF10C7ZE/XVbUI1lj4QQrZ/g==",
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.21.0.tgz",
+ "integrity": "sha512-sPuzEl4Xq/BR5gbYr2R/sDzwlX9NdJ02i8Ew2rEy2hLMlf1jAeUAdTg/G+K9baWJ8acV9fZv6h/mdV3dXGLPSg==",
"dependencies": {
"@react-aria/ssr": "^3.9.1",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/utils": "^3.23.1",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
},
@@ -4485,11 +4312,11 @@
}
},
"node_modules/@react-aria/label": {
- "version": "3.7.4",
- "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.4.tgz",
- "integrity": "sha512-3Y0yyrqpLzZdzHw+TOyzwuyx5wa2ujU5DGfKuL5GFnU9Ii4DtdwBGSYS7Yu7qadU+eQmG4OGhAgFVswbIgIwJw==",
+ "version": "3.7.5",
+ "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.5.tgz",
+ "integrity": "sha512-1hlTer4X9zlzC2PHC9SlAeY/E55dYyzxxpM75kqhtma8XFgDUB0Rztvi+R/Uenl0VDuy1Ny95OdhBM0j70qBnA==",
"dependencies": {
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/utils": "^3.23.1",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
},
@@ -4498,13 +4325,13 @@
}
},
"node_modules/@react-aria/link": {
- "version": "3.6.3",
- "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.6.3.tgz",
- "integrity": "sha512-8kPWc4u/lDow3Ll0LDxeMgaxt9Y3sl8UldKLGli8tzRSltYFugNh/n+i9sCnmo4Qv9Tp9kYv+yxBK50Uk9sINw==",
+ "version": "3.6.4",
+ "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.6.4.tgz",
+ "integrity": "sha512-oCUWAvnJYD7IUR6ujQJqCChiSFJMsBncoInMvfbnlD3ZX5AqLWEPkJUZ7aM8XB6fGEapiYoY1IUHzOM63XsmjQ==",
"dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
"@react-types/link": "^3.5.2",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -4514,14 +4341,14 @@
}
},
"node_modules/@react-aria/listbox": {
- "version": "3.11.3",
- "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.11.3.tgz",
- "integrity": "sha512-PBrnldmyEYUUJvfDeljW8ITvZyBTfGpLNf0b5kfBPK3TDgRH4niEH2vYEcaZvSqb0FrpdvcunuTRXcOpfb+gCQ==",
+ "version": "3.11.4",
+ "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.11.4.tgz",
+ "integrity": "sha512-ml2dUy1R0kSuDmFrW0xtAnI04nZBfzLLmINSl1k9N5Tr/PVZ/TVGjFimHfpG7g3uvTxGXpjFfA9DR+2Nyuj/SA==",
"dependencies": {
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/label": "^3.7.4",
- "@react-aria/selection": "^3.17.3",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/label": "^3.7.5",
+ "@react-aria/selection": "^3.17.4",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/collections": "^3.10.4",
"@react-stately/list": "^3.10.2",
"@react-types/listbox": "^3.4.6",
@@ -4542,16 +4369,16 @@
}
},
"node_modules/@react-aria/menu": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.12.0.tgz",
- "integrity": "sha512-Nsujv3b61WR0gybDKnBjAeyxDVJOfPLMggRUf9SQDfPWnrPXEsAFxaPaVcAkzlfI4HiQs1IxNwsKFNpc3PPZTQ==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/overlays": "^3.20.0",
- "@react-aria/selection": "^3.17.3",
- "@react-aria/utils": "^3.23.0",
+ "version": "3.13.0",
+ "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.13.0.tgz",
+ "integrity": "sha512-2vNZV77I36sbAINj3QVbq4yxOfytzQpdQAhHy7QFr7WjvTYqPAVNuD4LgiGn97I5skLRakCs+tGiLgIQGY/0Ig==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/overlays": "^3.21.0",
+ "@react-aria/selection": "^3.17.4",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/collections": "^3.10.4",
"@react-stately/menu": "^3.6.0",
"@react-stately/tree": "^3.7.5",
@@ -4566,11 +4393,11 @@
}
},
"node_modules/@react-aria/meter": {
- "version": "3.4.9",
- "resolved": "https://registry.npmjs.org/@react-aria/meter/-/meter-3.4.9.tgz",
- "integrity": "sha512-1/FHFmFmSyfQBJ2oH152lp4nps76v1UdhnFbIsmRIH+0g0IfMv1yDT2M9dIZ/b9DgVZSx527FmWOXm0eHGKD6w==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@react-aria/meter/-/meter-3.4.10.tgz",
+ "integrity": "sha512-8x4Y9NKRzJNPlcU9kn0kflYSLCyMwaIAx0JJFL576+HdZhyIbEPFk/vaaYWbyJgo5xYsicaeynwJ7j6lCyxF8w==",
"dependencies": {
- "@react-aria/progress": "^3.4.9",
+ "@react-aria/progress": "^3.4.10",
"@react-types/meter": "^3.3.6",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -4580,19 +4407,19 @@
}
},
"node_modules/@react-aria/numberfield": {
- "version": "3.10.2",
- "resolved": "https://registry.npmjs.org/@react-aria/numberfield/-/numberfield-3.10.2.tgz",
- "integrity": "sha512-KjGTXq3lIhN4DEdEeHzfS/k9Qq0sDEpLgLr/hgSfGN4Q7Syu4Ck/n2HXmrDn//z08/wNvcukuP6Ioers138DcQ==",
- "dependencies": {
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/spinbutton": "^3.6.1",
- "@react-aria/textfield": "^3.14.1",
- "@react-aria/utils": "^3.23.0",
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/@react-aria/numberfield/-/numberfield-3.11.0.tgz",
+ "integrity": "sha512-fdl+d6sIwHRMiraXMQ5JyPlrmsQ3YECh9W7fzbY3CBcsG9mXVQjoQ50cV7u5VeakLXaBsgL4EmVe/zmTk2G0Aw==",
+ "dependencies": {
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/spinbutton": "^3.6.2",
+ "@react-aria/textfield": "^3.14.2",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/form": "^3.0.0",
- "@react-stately/numberfield": "^3.8.0",
+ "@react-stately/numberfield": "^3.9.0",
"@react-types/button": "^3.9.1",
- "@react-types/numberfield": "^3.7.0",
+ "@react-types/numberfield": "^3.8.0",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
},
@@ -4602,16 +4429,16 @@
}
},
"node_modules/@react-aria/overlays": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.20.0.tgz",
- "integrity": "sha512-2m7MpRJL5UucbEuu08lMHsiFJoDowkJV4JAIFBZYK1NzVH0vF/A+w9HRNM7jRwx2DUxE+iIsZnl8yKV/7KY8OQ==",
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.21.0.tgz",
+ "integrity": "sha512-ulE5RQP3ZUFqY6Zok4L/CCZW5HCPZeuyDEezPw4/4Y/WD6TjGZ1ChbPuGsAl+X+fo/iKTpe7joN4kYrKmTb5WA==",
"dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
"@react-aria/ssr": "^3.9.1",
- "@react-aria/utils": "^3.23.0",
- "@react-aria/visually-hidden": "^3.8.8",
+ "@react-aria/utils": "^3.23.1",
+ "@react-aria/visually-hidden": "^3.8.9",
"@react-stately/overlays": "^3.6.4",
"@react-types/button": "^3.9.1",
"@react-types/overlays": "^3.8.4",
@@ -4624,13 +4451,13 @@
}
},
"node_modules/@react-aria/progress": {
- "version": "3.4.9",
- "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.9.tgz",
- "integrity": "sha512-CME1ZLsJHOmSgK8IAPOC/+vYO5Oc614mkEw5MluT/yclw5rMyjAkK1XsHLjEXy81uwPeiRyoQQIMPKG2/sMxFQ==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.10.tgz",
+ "integrity": "sha512-q82LbDjimIo5a21Kg9aUYG94oFsDtpAwaQDj2YPVDt9kNie4BHOLHnHZWYk8jPoZDHMEk80jZBKWcDnk8+wWtw==",
"dependencies": {
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/label": "^3.7.4",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/label": "^3.7.5",
+ "@react-aria/utils": "^3.23.1",
"@react-types/progress": "^3.5.1",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -4640,16 +4467,16 @@
}
},
"node_modules/@react-aria/radio": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.10.0.tgz",
- "integrity": "sha512-6NaKzdGymdcVWLYgHT0cHsVmNzPOp89o8r41w29OPBQWu8w2c9mxg4366OiIZn/uXIBS4abhQ4nL4toBRLgBrg==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/form": "^3.0.1",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/label": "^3.7.4",
- "@react-aria/utils": "^3.23.0",
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.10.1.tgz",
+ "integrity": "sha512-UEeQncLloHz/H4iwHbiBXiYLCDsMmRDkL/GMcpUCx0OaQSuKB/kJTOR0rFEMVyCiDVXx7hJ16fcSh1lXpLL9gA==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/form": "^3.0.2",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/label": "^3.7.5",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/radio": "^3.10.1",
"@react-types/radio": "^3.7.0",
"@react-types/shared": "^3.22.0",
@@ -4660,13 +4487,13 @@
}
},
"node_modules/@react-aria/searchfield": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/@react-aria/searchfield/-/searchfield-3.7.1.tgz",
- "integrity": "sha512-ebhnV/reNByIZzpcQLHIo1RQ+BrYS8HdwX624i9R7dep1gxGHXYEaqL9aSY+RdngNerB4OeiWmB75em9beSpjQ==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@react-aria/searchfield/-/searchfield-3.7.2.tgz",
+ "integrity": "sha512-YpmvbWOgECTK9KjMYqWwSFPi57b7m0rdAQPMjB3Call0CE7tQiSP5TbwkpOa4Id8Kghm8ySV5fNkBKP2xhHxdg==",
"dependencies": {
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/textfield": "^3.14.1",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/textfield": "^3.14.2",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/searchfield": "^3.5.0",
"@react-types/button": "^3.9.1",
"@react-types/searchfield": "^3.5.2",
@@ -4678,19 +4505,19 @@
}
},
"node_modules/@react-aria/select": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/@react-aria/select/-/select-3.14.1.tgz",
- "integrity": "sha512-pAy/+Xbj11Lx6bi/O1hWH0NSIDRxFb6V7N0ry2L8x7MALljh516VbpnAc5RgvbjbuKq0cHUAcdINOzOzpYWm4A==",
- "dependencies": {
- "@react-aria/form": "^3.0.1",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/label": "^3.7.4",
- "@react-aria/listbox": "^3.11.3",
- "@react-aria/menu": "^3.12.0",
- "@react-aria/selection": "^3.17.3",
- "@react-aria/utils": "^3.23.0",
- "@react-aria/visually-hidden": "^3.8.8",
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/@react-aria/select/-/select-3.14.2.tgz",
+ "integrity": "sha512-8kwqzNwJI+oC8PqotElEeWF24Ae58nnyeujcM0yCnuglTGqacGqCHmAOFHb99SxxSXmNC6OppAZNmRV3kUxdLA==",
+ "dependencies": {
+ "@react-aria/form": "^3.0.2",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/label": "^3.7.5",
+ "@react-aria/listbox": "^3.11.4",
+ "@react-aria/menu": "^3.13.0",
+ "@react-aria/selection": "^3.17.4",
+ "@react-aria/utils": "^3.23.1",
+ "@react-aria/visually-hidden": "^3.8.9",
"@react-stately/select": "^3.6.1",
"@react-types/button": "^3.9.1",
"@react-types/select": "^3.9.1",
@@ -4703,14 +4530,14 @@
}
},
"node_modules/@react-aria/selection": {
- "version": "3.17.3",
- "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.17.3.tgz",
- "integrity": "sha512-xl2sgeGH61ngQeE05WOWWPVpGRTPMjQEFmsAWEprArFi4Z7ihSZgpGX22l1w7uSmtXM/eN/v0W8hUYUju5iXlQ==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
+ "version": "3.17.4",
+ "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.17.4.tgz",
+ "integrity": "sha512-COq5qGbJebn9Wbo/3UGluhYLK4uUijuacew/7PgLArHIjiqPvK7kqcQA5Kdwrxzv4Z94f2x9fVf8Uf65zB543Q==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/selection": "^3.14.2",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -4721,11 +4548,11 @@
}
},
"node_modules/@react-aria/separator": {
- "version": "3.3.9",
- "resolved": "https://registry.npmjs.org/@react-aria/separator/-/separator-3.3.9.tgz",
- "integrity": "sha512-1wEXiaSJjq2+DR5TC0RKnUBsfZN+YXTzyI7XMzjQoc3YlclumX8wQtzPAOGOEjHB1JKUgo1Gw70FtupVXz58QQ==",
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/@react-aria/separator/-/separator-3.3.10.tgz",
+ "integrity": "sha512-/wM8yOY0XPWDJXbyiKo9lgDTePDCa0ZDoXAn+Hg4dwh6lQLBmEQBugN5sVJJ4BBdbyQbcRZcI2+eM4DfcU2kNg==",
"dependencies": {
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/utils": "^3.23.1",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
},
@@ -4734,16 +4561,16 @@
}
},
"node_modules/@react-aria/slider": {
- "version": "3.7.4",
- "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.7.4.tgz",
- "integrity": "sha512-OFJWeGSL2duVDFs/kcjlWsY6bqCVKZgM0aFn2QN4wmID+vfBvBnqGHAgWv3BCePTAPS3+GBjMN002TrftorjwQ==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/label": "^3.7.4",
- "@react-aria/utils": "^3.23.0",
- "@react-stately/slider": "^3.5.0",
+ "version": "3.7.5",
+ "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.7.5.tgz",
+ "integrity": "sha512-AV0ZDWmdO8mvh3wS09uOAoenRCxkqaN7ZYb0rQLRvP2vhZJzaJPaN7/0f9/TLnvrZmmUspm4IqXD+Ci9q49lWA==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/label": "^3.7.5",
+ "@react-aria/utils": "^3.23.1",
+ "@react-stately/slider": "^3.5.1",
"@react-types/shared": "^3.22.0",
"@react-types/slider": "^3.7.0",
"@swc/helpers": "^0.5.0"
@@ -4753,13 +4580,13 @@
}
},
"node_modules/@react-aria/spinbutton": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.6.1.tgz",
- "integrity": "sha512-u5GuOP3k4Zis055iY0fZJNHU7dUNCoSfUq5LKwJ1iNaCqDcavdstAnAg+X1a7rhpp5zCnJmAMseo3Qmzi9P+Ew==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.6.2.tgz",
+ "integrity": "sha512-ivrSmyjm/FSEBBD/Io3cwad88Kx8CiulLXZNJPvvEsTrsowDIyaLZ55oTrNIXXQZJY4Ns9ccaQUwD+QGBX/eIQ==",
"dependencies": {
- "@react-aria/i18n": "^3.10.0",
+ "@react-aria/i18n": "^3.10.1",
"@react-aria/live-announcer": "^3.3.1",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/utils": "^3.23.1",
"@react-types/button": "^3.9.1",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -4784,12 +4611,12 @@
}
},
"node_modules/@react-aria/switch": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.6.0.tgz",
- "integrity": "sha512-YNWc5fGLNXE4XlmDAKyqAdllRiClGR7ki4KGFY7nL+xR5jxzjCGU3S3ToMK5Op3QSMGZLxY/aYmC4O+MvcoADQ==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.6.1.tgz",
+ "integrity": "sha512-WaDJ4KJlrYvkLK4h3/KRGRfHlYjPmqDEh83ya0wtkZbKZte7/2+a1bnpwcrQeTmuDVSPthiieL1dQggg8sOuxA==",
"dependencies": {
- "@react-aria/toggle": "^3.10.0",
- "@react-stately/toggle": "^3.7.0",
+ "@react-aria/toggle": "^3.10.1",
+ "@react-stately/toggle": "^3.7.1",
"@react-types/switch": "^3.5.0",
"@swc/helpers": "^0.5.0"
},
@@ -4798,22 +4625,22 @@
}
},
"node_modules/@react-aria/table": {
- "version": "3.13.3",
- "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.13.3.tgz",
- "integrity": "sha512-AzmETpyxwNqISTzwHJPs85x9gujG40IIsSOBUdp49oKhB85RbPLvMwhadp4wCVAoHw3erOC/TJxHtVc7o2K1LA==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/grid": "^3.8.6",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
+ "version": "3.13.4",
+ "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.13.4.tgz",
+ "integrity": "sha512-dhYumqv2kCH3LOtmXJlq0Qc3VVFwaDaHaTV6xgen2EZxUZQa3mZDoCoxSu8/w3LvKwQAk+NAOqmrOHzMMyOlOQ==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/grid": "^3.8.7",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
"@react-aria/live-announcer": "^3.3.1",
- "@react-aria/utils": "^3.23.0",
- "@react-aria/visually-hidden": "^3.8.8",
+ "@react-aria/utils": "^3.23.1",
+ "@react-aria/visually-hidden": "^3.8.9",
"@react-stately/collections": "^3.10.4",
"@react-stately/flags": "^3.0.0",
- "@react-stately/table": "^3.11.4",
- "@react-stately/virtualizer": "^3.6.6",
- "@react-types/checkbox": "^3.6.0",
+ "@react-stately/table": "^3.11.5",
+ "@react-stately/virtualizer": "^3.6.7",
+ "@react-types/checkbox": "^3.7.0",
"@react-types/grid": "^3.2.3",
"@react-types/shared": "^3.22.0",
"@react-types/table": "^3.9.2",
@@ -4825,14 +4652,14 @@
}
},
"node_modules/@react-aria/tabs": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.8.3.tgz",
- "integrity": "sha512-Plw0K/5Qv35vYq7pHZFfQB2BF5OClFx4Abzo9hLVx4oMy3qb7i5lxmLBVbt81yPX/MdjYeP4zO1EHGBl4zMRhA==",
+ "version": "3.8.4",
+ "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.8.4.tgz",
+ "integrity": "sha512-q8c3QorgVqi9hxa1FisWuZ5rRkS0EyzynmJ2hNhyznIlGuMP30HsnsTIf1Y+hNNj3ofL04Xc5BkJpLrQvsBPAQ==",
"dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/selection": "^3.17.3",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/selection": "^3.17.4",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/tabs": "^3.6.3",
"@react-types/shared": "^3.22.0",
"@react-types/tabs": "^3.3.4",
@@ -4844,16 +4671,16 @@
}
},
"node_modules/@react-aria/tag": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/@react-aria/tag/-/tag-3.3.1.tgz",
- "integrity": "sha512-w7d8sVZqxTo8VFfeg2ixLp5kawtrcguGznVY4mt5aE6K8LMJOeNVDqNNfolfyia80VjOWjeX+RpVdVJRdrv/GQ==",
- "dependencies": {
- "@react-aria/gridlist": "^3.7.3",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/label": "^3.7.4",
- "@react-aria/selection": "^3.17.3",
- "@react-aria/utils": "^3.23.0",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/@react-aria/tag/-/tag-3.3.2.tgz",
+ "integrity": "sha512-AWgwRBwhhrmfdvvV7cSp3VTsLkw1e04IKQCKss3hF7zd75T+LfwvCa8g4CUDsFXx3lvIh0rB/6evhBfn3D0rDw==",
+ "dependencies": {
+ "@react-aria/gridlist": "^3.7.4",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/label": "^3.7.5",
+ "@react-aria/selection": "^3.17.4",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/list": "^3.10.2",
"@react-types/button": "^3.9.1",
"@react-types/shared": "^3.22.0",
@@ -4865,14 +4692,14 @@
}
},
"node_modules/@react-aria/textfield": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.14.1.tgz",
- "integrity": "sha512-UMepuYtDdCgrUF4dMphNxrUm23xOmR54aZD1pbp9cJyfioVkJN35BTXZVkD0D07gHLn4RhxKIZxBortQQrLB9g==",
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.14.2.tgz",
+ "integrity": "sha512-l9FulRr7Kpchy+dt0hIZ7rMwMReJrZnjeWT7iwmZWFMleEYjSuRUnmM+L82oZBY9BSwftJ5kk6vG4AP7MLBulg==",
"dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/form": "^3.0.1",
- "@react-aria/label": "^3.7.4",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/form": "^3.0.2",
+ "@react-aria/label": "^3.7.5",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/form": "^3.0.0",
"@react-stately/utils": "^3.9.0",
"@react-types/shared": "^3.22.0",
@@ -4884,15 +4711,15 @@
}
},
"node_modules/@react-aria/toggle": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.10.0.tgz",
- "integrity": "sha512-6cUf4V9TuG2J7AvXUdU/GspEPFCubUOID3mrselSe563RViy+mMZk0vUEOdyoNanDcEXl58W4dE3SGWxFn71vg==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
- "@react-stately/toggle": "^3.7.0",
- "@react-types/checkbox": "^3.6.0",
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.10.1.tgz",
+ "integrity": "sha512-Z+T/fyWvglLDMsNDCee/OF3Josntzlfq1/Iez+ShqIaSI/FgZIjglQbEFqXvM9gSGOX1fYfv9n4Ztj6DDT6J2Q==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
+ "@react-stately/toggle": "^3.7.1",
+ "@react-types/checkbox": "^3.7.0",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -4900,13 +4727,13 @@
}
},
"node_modules/@react-aria/tooltip": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.7.0.tgz",
- "integrity": "sha512-+u9Sftkfe09IDyPEnbbreFKS50vh9X/WTa7n1u2y3PenI9VreLpUR6czyzda4BlvQ95e9jQz1cVxUjxTNaZmBw==",
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.7.1.tgz",
+ "integrity": "sha512-2lf72hIw3gfQLvKU9SHkh3a/CP8GJ3MbKlPq8x0gX7444zaYII/UDqIkde1TiR2fB71I/MqKSOx6mg28B9lj4w==",
"dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
"@react-stately/tooltip": "^3.4.6",
"@react-types/shared": "^3.22.0",
"@react-types/tooltip": "^3.4.6",
@@ -4917,9 +4744,9 @@
}
},
"node_modules/@react-aria/utils": {
- "version": "3.23.0",
- "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.23.0.tgz",
- "integrity": "sha512-fJA63/VU4iQNT8WUvrmll3kvToqMurD69CcgVmbQ56V7ZbvlzFi44E7BpnoaofScYLLtFWRjVdaHsohT6O/big==",
+ "version": "3.23.1",
+ "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.23.1.tgz",
+ "integrity": "sha512-iXibf9ojqdoygbvy/++v5cKLKgjc/5ZmKV8/9u/2Hkpha1cf5Td/Z+Vl42B6giUBAsuDio5kuZYfYC7Uk+t8ag==",
"dependencies": {
"@react-aria/ssr": "^3.9.1",
"@react-stately/utils": "^3.9.0",
@@ -4932,14 +4759,14 @@
}
},
"node_modules/@react-aria/virtualizer": {
- "version": "3.9.8",
- "resolved": "https://registry.npmjs.org/@react-aria/virtualizer/-/virtualizer-3.9.8.tgz",
- "integrity": "sha512-AHmziZZQPoK3buFgoEtGEKZZCYfskYskqHEHrFJxnO5tRPOd71ZWAR3nyjKpHRcQNbNCBrsj5ks1Uo2PPtruMA==",
- "dependencies": {
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
- "@react-stately/virtualizer": "^3.6.6",
+ "version": "3.9.9",
+ "resolved": "https://registry.npmjs.org/@react-aria/virtualizer/-/virtualizer-3.9.9.tgz",
+ "integrity": "sha512-nso567w/vEd5wRLqF2tJF24XYx9wnf0NxrJZW/26xUVSUBgIy4QkYjxb2ylWQCLiRe8iA6xfC27dyvJVeQXwUg==",
+ "dependencies": {
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
+ "@react-stately/virtualizer": "^3.6.7",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
},
@@ -4949,12 +4776,12 @@
}
},
"node_modules/@react-aria/visually-hidden": {
- "version": "3.8.8",
- "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.8.tgz",
- "integrity": "sha512-Cn2PYKD4ijGDtF0+dvsh8qa4y7KTNAlkTG6h20r8Q+6UTyRNmtE2/26QEaApRF8CBiNy9/BZC/ZC4FK2OjvCoA==",
+ "version": "3.8.9",
+ "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.9.tgz",
+ "integrity": "sha512-yUUj4M8YjtwzS45n0nB4bCKCYd3Dl6wmCZKAcAqZG9hMh6DUAcSp2xqYKOAzvNrtZZmAoopgMP4UC9hKlY6swQ==",
"dependencies": {
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
},
@@ -4963,15 +4790,15 @@
}
},
"node_modules/@react-google-maps/api": {
- "version": "2.19.2",
- "resolved": "https://registry.npmjs.org/@react-google-maps/api/-/api-2.19.2.tgz",
- "integrity": "sha512-Vt57XWzCKfsUjKOmFUl2erVVfOePkPK5OigF/f+q7UuV/Nm9KDDy1PMFBx+wNahEqOd6a32BxfsykEhBnbU9wQ==",
+ "version": "2.19.3",
+ "resolved": "https://registry.npmjs.org/@react-google-maps/api/-/api-2.19.3.tgz",
+ "integrity": "sha512-jiLqvuOt5lOowkLeq7d077AByTyJp+s6hZVlLhlq7SBacBD37aUNpXBz2OsazfeR6Aw4a+9RRhAEjEFvrR1f5A==",
"dependencies": {
"@googlemaps/js-api-loader": "1.16.2",
- "@googlemaps/markerclusterer": "2.3.2",
+ "@googlemaps/markerclusterer": "2.5.3",
"@react-google-maps/infobox": "2.19.2",
"@react-google-maps/marker-clusterer": "2.19.2",
- "@types/google.maps": "3.53.5",
+ "@types/google.maps": "3.55.2",
"invariant": "2.2.4"
},
"peerDependencies": {
@@ -4990,24 +4817,24 @@
"integrity": "sha512-x9ibmsP0ZVqzyCo1Pitbw+4b6iEXRw/r1TCy3vOUR3eKrzWLnHYZMR325BkZW2r8fnuWE/V3Fp4QZOP9qYORCw=="
},
"node_modules/@react-spectrum/actionbar": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@react-spectrum/actionbar/-/actionbar-3.4.1.tgz",
- "integrity": "sha512-dJpcwSjdzm9UjlR+/V6j09USD/+OlwTcct+GcyjqKYEFze1JuNeRVrLRucja1LOqdKXrXRV/JL41opeX1LtLlQ==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/actionbar/-/actionbar-3.4.2.tgz",
+ "integrity": "sha512-7vgDP/Q+GbkZN5bMspqUnpVBXDysaznN15s0ZtShOwfWSqbBFHFzMSKcH7IzQoF1C49TWOKwy6LEOGAsfG0RnA==",
"dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
"@react-aria/live-announcer": "^3.3.1",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/actiongroup": "^3.10.1",
- "@react-spectrum/button": "^3.16.0",
- "@react-spectrum/overlays": "^5.5.3",
- "@react-spectrum/text": "^3.5.1",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/actiongroup": "^3.10.2",
+ "@react-spectrum/button": "^3.16.1",
+ "@react-spectrum/overlays": "^5.5.4",
+ "@react-spectrum/text": "^3.5.2",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/collections": "^3.10.4",
"@react-types/actionbar": "^3.1.4",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5017,25 +4844,25 @@
}
},
"node_modules/@react-spectrum/actiongroup": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/@react-spectrum/actiongroup/-/actiongroup-3.10.1.tgz",
- "integrity": "sha512-fdGCy589WZgaxRvCfsKHXVP8Py0/7Q+P7Uj98dKDrXnDSrRdEBuB/2+MB0LDIX3cTVIdm8jNVWIbuyX2uPKguQ==",
- "dependencies": {
- "@react-aria/actiongroup": "^3.7.1",
- "@react-aria/focus": "^3.16.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/button": "^3.16.0",
- "@react-spectrum/menu": "^3.17.0",
- "@react-spectrum/text": "^3.5.1",
- "@react-spectrum/tooltip": "^3.6.3",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/actiongroup/-/actiongroup-3.10.2.tgz",
+ "integrity": "sha512-8IslvMwN0c0+PaZfn6zdQokefpUynyQjUPOJMrDcP6CFUKrNkjEexxwipSmgw0OGb1AdGCzCAXpqNXGS0OwBVw==",
+ "dependencies": {
+ "@react-aria/actiongroup": "^3.7.2",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/button": "^3.16.1",
+ "@react-spectrum/menu": "^3.18.0",
+ "@react-spectrum/text": "^3.5.2",
+ "@react-spectrum/tooltip": "^3.6.4",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/collections": "^3.10.4",
"@react-stately/list": "^3.10.2",
"@react-types/actiongroup": "^3.4.6",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
- "@spectrum-icons/workflow": "^4.2.8",
+ "@spectrum-icons/ui": "^3.6.4",
+ "@spectrum-icons/workflow": "^4.2.9",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5045,12 +4872,12 @@
}
},
"node_modules/@react-spectrum/avatar": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@react-spectrum/avatar/-/avatar-3.0.8.tgz",
- "integrity": "sha512-52qR5I9B3cPc0WE4EhGF2G4Zd6vzV5DZovoQA+YHR9Ko0xtOwSZiOIl6s8n88yupGTlNLw3NuPkVOKmAmo/8IQ==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/avatar/-/avatar-3.0.9.tgz",
+ "integrity": "sha512-zGgfK7tAFOJ9FvJdlvpi++L6YF/RFBONlfJ/acCcls/ki+spzzlmmtml/RFzzO//4vsw/5iayfknWsYdSAl/2g==",
"dependencies": {
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/avatar": "^3.0.4",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -5061,13 +4888,13 @@
}
},
"node_modules/@react-spectrum/badge": {
- "version": "3.1.9",
- "resolved": "https://registry.npmjs.org/@react-spectrum/badge/-/badge-3.1.9.tgz",
- "integrity": "sha512-IcA2IBj5gMHPlCOBGfHDh06I0oJ9mQmLRpgmcCXdoRubzQs18PQ86VzyEjrHG290sk5sbEtNSlPP/bSTOEDmHA==",
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/badge/-/badge-3.1.10.tgz",
+ "integrity": "sha512-XsdwwbtIP0rxI2tRGrA3Nf46GSsekoO0tt1A/69P7dU230LkxTdILMLABCblP/lb6gxa1ksXkbWvB93L9ScDzw==",
"dependencies": {
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/text": "^3.5.1",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/text": "^3.5.2",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/badge": "^3.1.6",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -5078,22 +4905,22 @@
}
},
"node_modules/@react-spectrum/breadcrumbs": {
- "version": "3.9.3",
- "resolved": "https://registry.npmjs.org/@react-spectrum/breadcrumbs/-/breadcrumbs-3.9.3.tgz",
- "integrity": "sha512-VTyGfNNpYcXph1P8Z5aRYo4I5yO/vwuvPSrLrk8uga9BRBX34XiyW12vP/BMKabw8QzIMuDSpzkMxnV0a9nmfA==",
- "dependencies": {
- "@react-aria/breadcrumbs": "^3.5.9",
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/button": "^3.16.0",
- "@react-spectrum/menu": "^3.17.0",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.9.4",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/breadcrumbs/-/breadcrumbs-3.9.4.tgz",
+ "integrity": "sha512-IYo+N6hp6FjZFYZu3eD2tiGDNX+XXluxVKRVX0wCKo7jjylRrEUhaDe0vJ9OZjtmU3RRUzczUHmsnn4maSuAqw==",
+ "dependencies": {
+ "@react-aria/breadcrumbs": "^3.5.10",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/button": "^3.16.1",
+ "@react-spectrum/menu": "^3.18.0",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/collections": "^3.10.4",
"@react-types/breadcrumbs": "^3.7.2",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5103,22 +4930,22 @@
}
},
"node_modules/@react-spectrum/button": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/@react-spectrum/button/-/button-3.16.0.tgz",
- "integrity": "sha512-zKBApZMMdTC+vYLl/QxI00ysEohnoVRVRN6ZktHHDXMQ2e//h3TfH24l1PZOZlOdeyDiIBDQsh2eTaT/s7M0yA==",
- "dependencies": {
- "@react-aria/button": "^3.9.1",
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/progress": "^3.7.3",
- "@react-spectrum/text": "^3.5.1",
- "@react-spectrum/utils": "^3.11.3",
- "@react-stately/toggle": "^3.7.0",
+ "version": "3.16.1",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/button/-/button-3.16.1.tgz",
+ "integrity": "sha512-B1U4Mwq1BMId4pWJdDG0sgHDC05Ccu2ofoe3iR2444A4yzKpKC5OFr4lZXlevkxrwSLPwCmIBvpkGHxZswvJSA==",
+ "dependencies": {
+ "@react-aria/button": "^3.9.2",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/progress": "^3.7.4",
+ "@react-spectrum/text": "^3.5.2",
+ "@react-spectrum/utils": "^3.11.4",
+ "@react-stately/toggle": "^3.7.1",
"@react-types/button": "^3.9.1",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5127,12 +4954,12 @@
}
},
"node_modules/@react-spectrum/buttongroup": {
- "version": "3.6.9",
- "resolved": "https://registry.npmjs.org/@react-spectrum/buttongroup/-/buttongroup-3.6.9.tgz",
- "integrity": "sha512-Odq1nL50GVBLsErJhtGsUasnJkVs9IIo+rUEhok0OslEFw1eQ7TFAsnim+73eCbvIWbgvIh8MzBB6RnaHAHQHg==",
+ "version": "3.6.10",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/buttongroup/-/buttongroup-3.6.10.tgz",
+ "integrity": "sha512-UunM+1u8Fwc5K6Th07ld2JbbP5PEpwt8ezQ+imA2YIeGXS+uKDi36ZCO0BM0VqZ92bd9k2UarZQwza4oRuIWYw==",
"dependencies": {
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/buttongroup": "^3.3.6",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -5143,25 +4970,25 @@
}
},
"node_modules/@react-spectrum/calendar": {
- "version": "3.4.5",
- "resolved": "https://registry.npmjs.org/@react-spectrum/calendar/-/calendar-3.4.5.tgz",
- "integrity": "sha512-vf5pAEvT0G/4mK6917Wf4rNonxbPcOFtLAr0p+GSMgFg7xYlWqNEh8gcMeDGVX2Qr7xOjKrEmEmFj0aR4K6VZw==",
+ "version": "3.4.6",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/calendar/-/calendar-3.4.6.tgz",
+ "integrity": "sha512-uwBOyctISMNgZwpC33tvi5ResoKkcwRmUt8ifQwaYPxUHfUJCja30IQbsIbQ3EcWFkIJsdWgyqOGIhD04XNlPg==",
"dependencies": {
"@internationalized/date": "^3.5.1",
- "@react-aria/calendar": "^3.5.4",
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
- "@react-aria/visually-hidden": "^3.8.8",
- "@react-spectrum/button": "^3.16.0",
- "@react-spectrum/label": "^3.16.2",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/calendar": "^3.5.5",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
+ "@react-aria/visually-hidden": "^3.8.9",
+ "@react-spectrum/button": "^3.16.1",
+ "@react-spectrum/label": "^3.16.3",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/calendar": "^3.4.3",
"@react-types/button": "^3.9.1",
"@react-types/calendar": "^3.4.3",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5171,21 +4998,21 @@
}
},
"node_modules/@react-spectrum/checkbox": {
- "version": "3.9.2",
- "resolved": "https://registry.npmjs.org/@react-spectrum/checkbox/-/checkbox-3.9.2.tgz",
- "integrity": "sha512-7ZcO3QXO1IBK5shUf50Oc271qDA6GphltYV7pl8fS9vr3wbPjcp3sNh0JAfInsaZvSS9puX1iwvon26XXmHy5A==",
- "dependencies": {
- "@react-aria/checkbox": "^3.13.0",
- "@react-aria/focus": "^3.16.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-spectrum/form": "^3.7.2",
- "@react-spectrum/label": "^3.16.2",
- "@react-spectrum/utils": "^3.11.3",
- "@react-stately/checkbox": "^3.6.1",
- "@react-stately/toggle": "^3.7.0",
- "@react-types/checkbox": "^3.6.0",
+ "version": "3.9.3",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/checkbox/-/checkbox-3.9.3.tgz",
+ "integrity": "sha512-cho26UkAaIldsmHxueLUyjI6LJVAW+8n+M+wibZTW2QAI456G/NS9+bUC1ZRbK+d49meHOk9y6rcKUnzcTq5jg==",
+ "dependencies": {
+ "@react-aria/checkbox": "^3.14.0",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-spectrum/form": "^3.7.3",
+ "@react-spectrum/label": "^3.16.3",
+ "@react-spectrum/utils": "^3.11.4",
+ "@react-stately/checkbox": "^3.6.2",
+ "@react-stately/toggle": "^3.7.1",
+ "@react-types/checkbox": "^3.7.0",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5194,34 +5021,34 @@
}
},
"node_modules/@react-spectrum/combobox": {
- "version": "3.12.1",
- "resolved": "https://registry.npmjs.org/@react-spectrum/combobox/-/combobox-3.12.1.tgz",
- "integrity": "sha512-Ttq8KfwzUJEENyPgRMQtgLhCXXLSWsIloozH+LUfWUNUTmUK0ySceElbI8cPJEI1UJw4HYQGWJJiCRL5LwG8Wg==",
- "dependencies": {
- "@react-aria/button": "^3.9.1",
- "@react-aria/combobox": "^3.8.2",
- "@react-aria/dialog": "^3.5.10",
- "@react-aria/focus": "^3.16.0",
- "@react-aria/form": "^3.0.1",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/label": "^3.7.4",
- "@react-aria/overlays": "^3.20.0",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/button": "^3.16.0",
- "@react-spectrum/form": "^3.7.2",
- "@react-spectrum/label": "^3.16.2",
- "@react-spectrum/listbox": "^3.12.5",
- "@react-spectrum/overlays": "^5.5.3",
- "@react-spectrum/progress": "^3.7.3",
- "@react-spectrum/textfield": "^3.11.2",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.12.2",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/combobox/-/combobox-3.12.2.tgz",
+ "integrity": "sha512-w3z9myQ/NYpxh0UQoVhWB9b1QV3wguR+bb3KdBBp3ECgGAOsN7eSe5A+pIWFAjgbBxHWK/JuY0agFs9IWkauOA==",
+ "dependencies": {
+ "@react-aria/button": "^3.9.2",
+ "@react-aria/combobox": "^3.8.3",
+ "@react-aria/dialog": "^3.5.11",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/form": "^3.0.2",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/label": "^3.7.5",
+ "@react-aria/overlays": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/button": "^3.16.1",
+ "@react-spectrum/form": "^3.7.3",
+ "@react-spectrum/label": "^3.16.3",
+ "@react-spectrum/listbox": "^3.12.6",
+ "@react-spectrum/overlays": "^5.5.4",
+ "@react-spectrum/progress": "^3.7.4",
+ "@react-spectrum/textfield": "^3.11.3",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/collections": "^3.10.4",
"@react-stately/combobox": "^3.8.1",
"@react-types/button": "^3.9.1",
"@react-types/combobox": "^3.10.0",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5231,18 +5058,18 @@
}
},
"node_modules/@react-spectrum/contextualhelp": {
- "version": "3.6.7",
- "resolved": "https://registry.npmjs.org/@react-spectrum/contextualhelp/-/contextualhelp-3.6.7.tgz",
- "integrity": "sha512-1fDL8mWfNiZgb/GX92KLYFtZfqnbFgPlX4ubu9miU+DZQhr/mD5YuxcDxqjoL7PPWANdEPl2O25m9JZoc96yDg==",
- "dependencies": {
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/button": "^3.16.0",
- "@react-spectrum/dialog": "^3.8.7",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.6.8",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/contextualhelp/-/contextualhelp-3.6.8.tgz",
+ "integrity": "sha512-3o1zCtDeDd3KGoKDS8uAdKcbUke1FPMErjPjhU/viKR/RY2uA2pjpPBpLSLKG3jV2IWOojAnCPvdOk3FVB7dKQ==",
+ "dependencies": {
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/button": "^3.16.1",
+ "@react-spectrum/dialog": "^3.8.8",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/contextualhelp": "^3.2.7",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/workflow": "^4.2.8",
+ "@spectrum-icons/workflow": "^4.2.9",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5252,29 +5079,29 @@
}
},
"node_modules/@react-spectrum/datepicker": {
- "version": "3.9.2",
- "resolved": "https://registry.npmjs.org/@react-spectrum/datepicker/-/datepicker-3.9.2.tgz",
- "integrity": "sha512-D4pdZUt7zuSDT/9ygeP+/eLNSpNW3AoRYy/9comGG1alsBwd8ihgGOC9o/cpo7youfvYtP93ra9Y3DWDyNs6Eg==",
+ "version": "3.9.3",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/datepicker/-/datepicker-3.9.3.tgz",
+ "integrity": "sha512-d8JCrgF7UyET+7tfaNKO+7/vTZ6LDgUqQ7yfMorh/IdM9o8PH1IpRLQlYY3E2o9PFGiP90raI37JEoeoLd0Rwg==",
"dependencies": {
"@internationalized/date": "^3.5.1",
- "@react-aria/datepicker": "^3.9.1",
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/button": "^3.16.0",
- "@react-spectrum/calendar": "^3.4.5",
- "@react-spectrum/dialog": "^3.8.7",
- "@react-spectrum/form": "^3.7.2",
- "@react-spectrum/label": "^3.16.2",
- "@react-spectrum/layout": "^3.6.1",
- "@react-spectrum/utils": "^3.11.3",
- "@react-spectrum/view": "^3.6.6",
+ "@react-aria/datepicker": "^3.9.2",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/button": "^3.16.1",
+ "@react-spectrum/calendar": "^3.4.6",
+ "@react-spectrum/dialog": "^3.8.8",
+ "@react-spectrum/form": "^3.7.3",
+ "@react-spectrum/label": "^3.16.3",
+ "@react-spectrum/layout": "^3.6.2",
+ "@react-spectrum/utils": "^3.11.4",
+ "@react-spectrum/view": "^3.6.7",
"@react-stately/datepicker": "^3.9.1",
"@react-types/datepicker": "^3.7.1",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
- "@spectrum-icons/workflow": "^4.2.8",
+ "@spectrum-icons/ui": "^3.6.4",
+ "@spectrum-icons/workflow": "^4.2.9",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5284,28 +5111,28 @@
}
},
"node_modules/@react-spectrum/dialog": {
- "version": "3.8.7",
- "resolved": "https://registry.npmjs.org/@react-spectrum/dialog/-/dialog-3.8.7.tgz",
- "integrity": "sha512-RJe8kEGqp23tLZ6y9tu4uvrf11+Dg+gFO6dLAomE0RWINYhNrAMh0PmvcMLDfrehcFR4dExsHFm3Br54TtZnaQ==",
- "dependencies": {
- "@react-aria/dialog": "^3.5.10",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/overlays": "^3.20.0",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/button": "^3.16.0",
- "@react-spectrum/buttongroup": "^3.6.9",
- "@react-spectrum/divider": "^3.5.9",
- "@react-spectrum/layout": "^3.6.1",
- "@react-spectrum/overlays": "^5.5.3",
- "@react-spectrum/text": "^3.5.1",
- "@react-spectrum/utils": "^3.11.3",
- "@react-spectrum/view": "^3.6.6",
+ "version": "3.8.8",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/dialog/-/dialog-3.8.8.tgz",
+ "integrity": "sha512-4FJG/B287UKh67+3QQfJ6ZoTS0PSZ+H7DTbtRgS0+t47EL8R1z09LsPSLysB7s9ZUUTvYgYfUqCJwADHipe/ng==",
+ "dependencies": {
+ "@react-aria/dialog": "^3.5.11",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/overlays": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/button": "^3.16.1",
+ "@react-spectrum/buttongroup": "^3.6.10",
+ "@react-spectrum/divider": "^3.5.10",
+ "@react-spectrum/layout": "^3.6.2",
+ "@react-spectrum/overlays": "^5.5.4",
+ "@react-spectrum/text": "^3.5.2",
+ "@react-spectrum/utils": "^3.11.4",
+ "@react-spectrum/view": "^3.6.7",
"@react-stately/overlays": "^3.6.4",
"@react-types/button": "^3.9.1",
"@react-types/dialog": "^3.5.7",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5315,12 +5142,12 @@
}
},
"node_modules/@react-spectrum/divider": {
- "version": "3.5.9",
- "resolved": "https://registry.npmjs.org/@react-spectrum/divider/-/divider-3.5.9.tgz",
- "integrity": "sha512-0oMU8EW9D7Zze9TrLmVDk03KoXkk12GX6kN6yHZZyQxbhj+9dF5elOSFIaC+miry12qN8fC4YkEIX2IW5Ne+rQ==",
+ "version": "3.5.10",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/divider/-/divider-3.5.10.tgz",
+ "integrity": "sha512-KcvVGd0fKwsveD7JPtz6DY/VBzI/kRWqr9kX7tC5dhSB/ob5C9EPABePQk1ei2C02/VX7GUF5zpL1PxpRZlxOg==",
"dependencies": {
- "@react-aria/separator": "^3.3.9",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/separator": "^3.3.10",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/divider": "^3.3.6",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -5330,11 +5157,11 @@
}
},
"node_modules/@react-spectrum/dnd": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/@react-spectrum/dnd/-/dnd-3.3.6.tgz",
- "integrity": "sha512-Y2srQgwEZ5tlmpgxxaKbW5wOIV9s1tmxgRrwL9pYN8yE8cs8L6X4QLikBS8+p5qJTcpZw9iXFyB+nhAE5ywQfQ==",
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/dnd/-/dnd-3.3.7.tgz",
+ "integrity": "sha512-PxODjyRbBLvHmE8ivsvm8BL+pkmyyG1HhlqvxFdlYq6wkWNwINuMBvn531B5AgJb2wwz6jKZ2PSAxegTxaxFrw==",
"dependencies": {
- "@react-aria/dnd": "^3.5.1",
+ "@react-aria/dnd": "^3.5.2",
"@react-stately/dnd": "^3.2.7",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -5346,12 +5173,12 @@
}
},
"node_modules/@react-spectrum/form": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/@react-spectrum/form/-/form-3.7.2.tgz",
- "integrity": "sha512-g0j8v0zhBaiQ3f2yEZURRrQS3HoXXMUPosoyYL83zP9etgo0LbVJrJ0RAvjPpGiyxhTOYS4rM06bg9ey3VA/ng==",
+ "version": "3.7.3",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/form/-/form-3.7.3.tgz",
+ "integrity": "sha512-KYnRXwYPpEnFLxLMm2GQwXwA3RvNNilLdLykksH2N0x30YYKU+QCU+6RMVKv1jpTSTXdFK8q+pjXMpmbEDib3g==",
"dependencies": {
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/form": "^3.0.0",
"@react-types/form": "^3.7.1",
"@react-types/shared": "^3.22.0",
@@ -5363,12 +5190,12 @@
}
},
"node_modules/@react-spectrum/icon": {
- "version": "3.7.9",
- "resolved": "https://registry.npmjs.org/@react-spectrum/icon/-/icon-3.7.9.tgz",
- "integrity": "sha512-x6axFuTTcucpB7kQ9bCPFGuHz7dTOZFpMliC33N+JbCPMgFyJ/QRBwWLJYBg+Z4SdNxm34dJmFbBUsw3Jl1Vtg==",
+ "version": "3.7.10",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/icon/-/icon-3.7.10.tgz",
+ "integrity": "sha512-vz5vaFeJK9trnzKCzCusHZbk62c0x7CYznBthxXUj+8vLr5VBfwHxsdJe20dcOyjEj3klA/nUTtUf2GZ6jPWEg==",
"dependencies": {
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
},
@@ -5378,13 +5205,13 @@
}
},
"node_modules/@react-spectrum/illustratedmessage": {
- "version": "3.4.9",
- "resolved": "https://registry.npmjs.org/@react-spectrum/illustratedmessage/-/illustratedmessage-3.4.9.tgz",
- "integrity": "sha512-TAX7lojPYpwQCVq4a/Qa3/2ugtMF9sRlVD5NR3Xy9SbOHUaRi1M6YhxqR41u0i/fbh42K2OGUHSKrCJ6N+UVNA==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/illustratedmessage/-/illustratedmessage-3.4.10.tgz",
+ "integrity": "sha512-Kl6MYZ2FYsXT9/G+VZ2fwZIENhWtVEGiXLqBww7oeSUw1S9HuCQU4xhvp1Jln3/4RUihEiaKbCukJtzwSIohBA==",
"dependencies": {
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/layout": "^3.6.1",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/layout": "^3.6.2",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/illustratedmessage": "^3.3.6",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -5395,12 +5222,12 @@
}
},
"node_modules/@react-spectrum/image": {
- "version": "3.4.9",
- "resolved": "https://registry.npmjs.org/@react-spectrum/image/-/image-3.4.9.tgz",
- "integrity": "sha512-CDiS6963UfsIF0dATu4gnKB690FIyyEceh7MRr7uwiERfI3F8ZY8HeyHrmy586Y5I3nFIN0GVs6Tmf4oojKeXg==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/image/-/image-3.4.10.tgz",
+ "integrity": "sha512-r7guBwH6sjx/GlGwT/qGYO3T+IZHczrkMKleWS1mxB/8lc75R9+4lxD7AY/DZzgyvKMvX+hJltakPMFN/eCdJA==",
"dependencies": {
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/image": "^3.3.6",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -5411,17 +5238,17 @@
}
},
"node_modules/@react-spectrum/inlinealert": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/@react-spectrum/inlinealert/-/inlinealert-3.2.1.tgz",
- "integrity": "sha512-UlonCPDJGo0hqzgSOaxEXJlimTc5oRdM4rTXQ0Qre6nXHOhim0wfk/qp6qATKoXhGgoGqImNemqZDOwDllieUw==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/layout": "^3.6.1",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/inlinealert/-/inlinealert-3.2.2.tgz",
+ "integrity": "sha512-PZsHIeMsrZy66WyXmYlWd1RCISulz4Afloslg3mHHsJC6nsafbqXxDLoDZM+8BvH8eXRV0zroBG22nbY3V+5Og==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/layout": "^3.6.2",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5430,18 +5257,18 @@
}
},
"node_modules/@react-spectrum/label": {
- "version": "3.16.2",
- "resolved": "https://registry.npmjs.org/@react-spectrum/label/-/label-3.16.2.tgz",
- "integrity": "sha512-9d+Poz9tNylrks4MV/yA5T+uE70IvgIdD1WJloysluX9rAwXgbU45oB02tg6AMAPeuGVjZEQJN838jf7vBchhw==",
- "dependencies": {
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/form": "^3.7.2",
- "@react-spectrum/layout": "^3.6.1",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.16.3",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/label/-/label-3.16.3.tgz",
+ "integrity": "sha512-RR/oEICzx2GeEC2w4CV5hoodv2Iz8bmb5z8yF98190yOBGWq8ai+gq0JXYOwqBj2McRmp5AaWgecj8HhGmdV2Q==",
+ "dependencies": {
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/form": "^3.7.3",
+ "@react-spectrum/layout": "^3.6.2",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/label": "^3.9.0",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5450,15 +5277,15 @@
}
},
"node_modules/@react-spectrum/labeledvalue": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/@react-spectrum/labeledvalue/-/labeledvalue-3.1.10.tgz",
- "integrity": "sha512-DEuQTb6F8yvpWEEZjIlhIoy5CBkofKy7aajgjxtLe4fVzBo69QMfxTul5RuS5SPEgXPbshMGeRPBn0Ygbg16+g==",
+ "version": "3.1.11",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/labeledvalue/-/labeledvalue-3.1.11.tgz",
+ "integrity": "sha512-OW4fHEVoVhp/A/urNSns9mvrBYmBNDgvR4R4fCpfio5AXevYUqgIzYmTSMY8LUWa9+EkbtCnp5JSmD3KM25wrA==",
"dependencies": {
"@internationalized/date": "^3.5.1",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/label": "^3.16.2",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/label": "^3.16.3",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
},
@@ -5468,12 +5295,12 @@
}
},
"node_modules/@react-spectrum/layout": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/@react-spectrum/layout/-/layout-3.6.1.tgz",
- "integrity": "sha512-QbSDVYwqc84g+3Dyl8NFujUMGf3BDDV2VWe8jT1QVM+8v/bqwGeKcKKh22FEECCAM++qRlXU8ginOvNsK1B5NA==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/layout/-/layout-3.6.2.tgz",
+ "integrity": "sha512-B5asGN+uFlfThTms4KraAU4OapMmN9Ryr1uj5uhHLtCwyQcLphg1Q+LMX8LfrNr7vPLxgoZ4L3em7ohkSb8Okg==",
"dependencies": {
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/layout": "^3.3.12",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -5484,15 +5311,15 @@
}
},
"node_modules/@react-spectrum/link": {
- "version": "3.6.3",
- "resolved": "https://registry.npmjs.org/@react-spectrum/link/-/link-3.6.3.tgz",
- "integrity": "sha512-/TYkneDrPrMBO5+t2Loe0M9/BSBsGPVqunV6xLHTJksRVxe2SL6n6H1iYH5LPDo4/VWjI7q/30QiahtEor8Aow==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/link": "^3.6.3",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.6.4",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/link/-/link-3.6.4.tgz",
+ "integrity": "sha512-qxTCuGJuQd88j/Cq9yRTu3h48QV1h8Y9GVBoEVHnNQ4HGQjpDLkQkAFQwIZHku87RKhVY9LgA3YmBuo/1AJbsg==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/link": "^3.6.4",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/link": "^3.5.2",
"@swc/helpers": "^0.5.0"
},
@@ -5502,30 +5329,30 @@
}
},
"node_modules/@react-spectrum/list": {
- "version": "3.7.6",
- "resolved": "https://registry.npmjs.org/@react-spectrum/list/-/list-3.7.6.tgz",
- "integrity": "sha512-S+bdbkNR1MKlsatGup7y9db/oETg02E6X4T7/L1+1RP7uYK/cQDE9TZvTHLU0/T01Qv+xeFphGikYyCHOGstIw==",
- "dependencies": {
- "@react-aria/button": "^3.9.1",
- "@react-aria/focus": "^3.16.0",
- "@react-aria/gridlist": "^3.7.3",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/utils": "^3.23.0",
- "@react-aria/virtualizer": "^3.9.8",
- "@react-aria/visually-hidden": "^3.8.8",
- "@react-spectrum/checkbox": "^3.9.2",
- "@react-spectrum/dnd": "^3.3.6",
- "@react-spectrum/layout": "^3.6.1",
- "@react-spectrum/progress": "^3.7.3",
- "@react-spectrum/text": "^3.5.1",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.7.7",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/list/-/list-3.7.7.tgz",
+ "integrity": "sha512-qL3lKLUauZ8fZsujPWa8K/Rz+zsY5eRktdqckQGVKBRLGOTc/WQcn9csb2hNOBSlYX5rYUabU5Ia7yGfMMauuA==",
+ "dependencies": {
+ "@react-aria/button": "^3.9.2",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/gridlist": "^3.7.4",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
+ "@react-aria/virtualizer": "^3.9.9",
+ "@react-aria/visually-hidden": "^3.8.9",
+ "@react-spectrum/checkbox": "^3.9.3",
+ "@react-spectrum/dnd": "^3.3.7",
+ "@react-spectrum/layout": "^3.6.2",
+ "@react-spectrum/progress": "^3.7.4",
+ "@react-spectrum/text": "^3.5.2",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/collections": "^3.10.4",
- "@react-stately/layout": "^3.13.5",
+ "@react-stately/layout": "^3.13.6",
"@react-stately/list": "^3.10.2",
"@react-types/grid": "^3.2.3",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0",
"react-transition-group": "^4.4.5"
},
@@ -5536,27 +5363,27 @@
}
},
"node_modules/@react-spectrum/listbox": {
- "version": "3.12.5",
- "resolved": "https://registry.npmjs.org/@react-spectrum/listbox/-/listbox-3.12.5.tgz",
- "integrity": "sha512-8P5Fgx0Ej/EJShNIeMxqrZrjDc4fDi2JF2iYFS6eFoYzM7ryIwc/UXsfVu30R6X9+tLfhbJI9tIFB//sP3sWDQ==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/listbox": "^3.11.3",
- "@react-aria/utils": "^3.23.0",
- "@react-aria/virtualizer": "^3.9.8",
- "@react-spectrum/layout": "^3.6.1",
- "@react-spectrum/progress": "^3.7.3",
- "@react-spectrum/text": "^3.5.1",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.12.6",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/listbox/-/listbox-3.12.6.tgz",
+ "integrity": "sha512-PXGxWtPIbWjFxAnBOkUHlcoqy6QfvHYPwoGnS0cObEwPP6J4Int9MynMVg1S3wwxKl8quYPojoidsrp04CGmIA==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/listbox": "^3.11.4",
+ "@react-aria/utils": "^3.23.1",
+ "@react-aria/virtualizer": "^3.9.9",
+ "@react-spectrum/layout": "^3.6.2",
+ "@react-spectrum/progress": "^3.7.4",
+ "@react-spectrum/text": "^3.5.2",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/collections": "^3.10.4",
- "@react-stately/layout": "^3.13.5",
+ "@react-stately/layout": "^3.13.6",
"@react-stately/list": "^3.10.2",
- "@react-stately/virtualizer": "^3.6.6",
+ "@react-stately/virtualizer": "^3.6.7",
"@react-types/listbox": "^3.4.6",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5566,22 +5393,22 @@
}
},
"node_modules/@react-spectrum/menu": {
- "version": "3.17.0",
- "resolved": "https://registry.npmjs.org/@react-spectrum/menu/-/menu-3.17.0.tgz",
- "integrity": "sha512-3utyUPsvwVPb+xdwYv7JEfhPjptY8c5Icocl8eN5f9A4BW6sUgw4gh+epE35+vA4kle/RUHirwzQLFqC+0xh2w==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/menu": "^3.12.0",
- "@react-aria/overlays": "^3.20.0",
- "@react-aria/separator": "^3.3.9",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/button": "^3.16.0",
- "@react-spectrum/layout": "^3.6.1",
- "@react-spectrum/overlays": "^5.5.3",
- "@react-spectrum/text": "^3.5.1",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.18.0",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/menu/-/menu-3.18.0.tgz",
+ "integrity": "sha512-LSCvhs1IoEYZs798VzOPJia4V1/xGMbKIF0Ai7xqi+9DU+M/PSzWlhIRa1Ya/nTRxdUNOygG13CaY+WYnjYzEA==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/menu": "^3.13.0",
+ "@react-aria/overlays": "^3.21.0",
+ "@react-aria/separator": "^3.3.10",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/button": "^3.16.1",
+ "@react-spectrum/layout": "^3.6.2",
+ "@react-spectrum/overlays": "^5.5.4",
+ "@react-spectrum/text": "^3.5.2",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/collections": "^3.10.4",
"@react-stately/menu": "^3.6.0",
"@react-stately/overlays": "^3.6.4",
@@ -5589,8 +5416,8 @@
"@react-types/menu": "^3.9.6",
"@react-types/overlays": "^3.8.4",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
- "@spectrum-icons/workflow": "^4.2.8",
+ "@spectrum-icons/ui": "^3.6.4",
+ "@spectrum-icons/workflow": "^4.2.9",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5600,13 +5427,13 @@
}
},
"node_modules/@react-spectrum/meter": {
- "version": "3.4.9",
- "resolved": "https://registry.npmjs.org/@react-spectrum/meter/-/meter-3.4.9.tgz",
- "integrity": "sha512-YJfZzO0mIlBAcTWYp7K7XjPYs0dRr/oV3Rf8zeaS65yOwrqN5uSMVUQvCsHEeFLTsXxW1sFlPAv8r+sW/UJuqA==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/meter/-/meter-3.4.10.tgz",
+ "integrity": "sha512-cC4WnAoUSTD7ikGN4KSS92Dd3XRFxkzYlSQYt/ijBg3RR8k2sIerqbv6eEbYqMoErt6a0VXgBqSdon9Qj1jkuQ==",
"dependencies": {
- "@react-aria/meter": "^3.4.9",
- "@react-spectrum/progress": "^3.7.3",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/meter": "^3.4.10",
+ "@react-spectrum/progress": "^3.7.4",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/meter": "^3.3.6",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -5617,26 +5444,26 @@
}
},
"node_modules/@react-spectrum/numberfield": {
- "version": "3.8.2",
- "resolved": "https://registry.npmjs.org/@react-spectrum/numberfield/-/numberfield-3.8.2.tgz",
- "integrity": "sha512-GnQ4zILR+O4sxkHT1CREOUOSacxLDwaUM8wrbnP5ITkv2jeSJAw0PNM+JG67R+RjSYFfnDaqOasfiwAKaFsXCg==",
- "dependencies": {
- "@react-aria/button": "^3.9.1",
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/numberfield": "^3.10.2",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/form": "^3.7.2",
- "@react-spectrum/label": "^3.16.2",
- "@react-spectrum/textfield": "^3.11.2",
- "@react-spectrum/utils": "^3.11.3",
- "@react-stately/numberfield": "^3.8.0",
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/numberfield/-/numberfield-3.9.0.tgz",
+ "integrity": "sha512-Zj51Q3mm7LSCClaN6StYAj11hXf23RD/KiBiKRb+0q2OfJAszAgxVzx71BWOHj0OnK5INlF5INp7GWhiVZ7rJQ==",
+ "dependencies": {
+ "@react-aria/button": "^3.9.2",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/numberfield": "^3.11.0",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/form": "^3.7.3",
+ "@react-spectrum/label": "^3.16.3",
+ "@react-spectrum/textfield": "^3.11.3",
+ "@react-spectrum/utils": "^3.11.4",
+ "@react-stately/numberfield": "^3.9.0",
"@react-types/button": "^3.9.1",
- "@react-types/numberfield": "^3.7.0",
+ "@react-types/numberfield": "^3.8.0",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
- "@spectrum-icons/workflow": "^4.2.8",
+ "@spectrum-icons/ui": "^3.6.4",
+ "@spectrum-icons/workflow": "^4.2.9",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5646,14 +5473,14 @@
}
},
"node_modules/@react-spectrum/overlays": {
- "version": "5.5.3",
- "resolved": "https://registry.npmjs.org/@react-spectrum/overlays/-/overlays-5.5.3.tgz",
- "integrity": "sha512-AiRWM+IHeSALlGSE682yIiYSK0hiThstWDpF9oV4MnYowHCY8emoanHnuDhQf5HPn43m0CJrrpGa/MPqKMHsyA==",
- "dependencies": {
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/overlays": "^3.20.0",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "5.5.4",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/overlays/-/overlays-5.5.4.tgz",
+ "integrity": "sha512-xiIm84B1YbUOh8LxdpLMQN220/E6dyqTqB4KCTZ89YiKygJiEH9YPqM1GBsOEcpVUT+MEDPASixh2ADjY/YeIA==",
+ "dependencies": {
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/overlays": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/overlays": "^3.6.4",
"@react-types/overlays": "^3.8.4",
"@react-types/shared": "^3.22.0",
@@ -5667,27 +5494,27 @@
}
},
"node_modules/@react-spectrum/picker": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/@react-spectrum/picker/-/picker-3.14.1.tgz",
- "integrity": "sha512-DetwJqmZPhldbw0+qKFCn0aylpC64qOpS5hWKlffKfRW6tE7/VigOJVGCZqTJH6HD+mxct3yoqMpUiNJqI8Shw==",
- "dependencies": {
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/select": "^3.14.1",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/button": "^3.16.0",
- "@react-spectrum/form": "^3.7.2",
- "@react-spectrum/label": "^3.16.2",
- "@react-spectrum/listbox": "^3.12.5",
- "@react-spectrum/overlays": "^5.5.3",
- "@react-spectrum/progress": "^3.7.3",
- "@react-spectrum/text": "^3.5.1",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/picker/-/picker-3.14.2.tgz",
+ "integrity": "sha512-ZswvbG+2u6+c6qdy6wjh9IinT/Bkt1+Q7tuLGSTsPPAtWJoFEKQ9tntuvtYJx23vBZ2lrtGOWidJOeqKlOfshQ==",
+ "dependencies": {
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/select": "^3.14.2",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/button": "^3.16.1",
+ "@react-spectrum/form": "^3.7.3",
+ "@react-spectrum/label": "^3.16.3",
+ "@react-spectrum/listbox": "^3.12.6",
+ "@react-spectrum/overlays": "^5.5.4",
+ "@react-spectrum/progress": "^3.7.4",
+ "@react-spectrum/text": "^3.5.2",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/collections": "^3.10.4",
"@react-stately/select": "^3.6.1",
"@react-types/select": "^3.9.1",
"@react-types/shared": "^3.22.0",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5697,13 +5524,13 @@
}
},
"node_modules/@react-spectrum/progress": {
- "version": "3.7.3",
- "resolved": "https://registry.npmjs.org/@react-spectrum/progress/-/progress-3.7.3.tgz",
- "integrity": "sha512-A6jusguAVArGFcamUvf7KlgXmHGPiaHMP+Wl+7isK6VC5PC8jHQSFL8NJ9kCm0zTuXLd2hxqvrC6l9bhdNX7Dg==",
+ "version": "3.7.4",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/progress/-/progress-3.7.4.tgz",
+ "integrity": "sha512-xEz8RX54rPPw/WS6bgBpop2C3s7wjakwOT42KIZz0vVQrRCa596Mtmy7IrLLtyfHuIgNgNHs/BVaH46Nzrr9Uw==",
"dependencies": {
- "@react-aria/progress": "^3.4.9",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/progress": "^3.4.10",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/progress": "^3.5.1",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -5714,14 +5541,14 @@
}
},
"node_modules/@react-spectrum/provider": {
- "version": "3.9.3",
- "resolved": "https://registry.npmjs.org/@react-spectrum/provider/-/provider-3.9.3.tgz",
- "integrity": "sha512-QtZxUXiGoFtpIBeImW/omE/KooRsz4XGlwM8VKQRXwfgAQNtoZEs7dhYG4CQHJA4mRkvtxtHMjPN95fx2orprA==",
- "dependencies": {
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/overlays": "^3.20.0",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.9.4",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/provider/-/provider-3.9.4.tgz",
+ "integrity": "sha512-GEfmQCC/s0JRxMR7WA41vyGnSPssJTA1+ijTkDLGbhCyKmUq6pmNFaCj3WRW/ki+Gg42eWaNXth5sPexbxr9qA==",
+ "dependencies": {
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/overlays": "^3.21.0",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/provider": "^3.7.1",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0",
@@ -5733,16 +5560,16 @@
}
},
"node_modules/@react-spectrum/radio": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/@react-spectrum/radio/-/radio-3.7.2.tgz",
- "integrity": "sha512-wm4EAVvq2xMAuq9HrYVl73DWFs8dWhg3WA3J/IvsQ7XzDSv1oJ0yiwxWQwKQO592QboiiL4tYyXCVDxISO7z/A==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/radio": "^3.10.0",
- "@react-spectrum/form": "^3.7.2",
- "@react-spectrum/label": "^3.16.2",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.7.3",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/radio/-/radio-3.7.3.tgz",
+ "integrity": "sha512-wi0ielcjBbsDm3kgDXutWyJVQa31+8r2++1N+omj0zkffOiHqK5m+9faUikX7DKwQ4d/CkbAegrkN6q4yxkwbw==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/radio": "^3.10.1",
+ "@react-spectrum/form": "^3.7.3",
+ "@react-spectrum/label": "^3.16.3",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/radio": "^3.10.1",
"@react-types/radio": "^3.7.0",
"@react-types/shared": "^3.22.0",
@@ -5754,19 +5581,19 @@
}
},
"node_modules/@react-spectrum/searchfield": {
- "version": "3.8.2",
- "resolved": "https://registry.npmjs.org/@react-spectrum/searchfield/-/searchfield-3.8.2.tgz",
- "integrity": "sha512-eYrm45D3G9JF3MkLcjpup/MD59+sTNZLX/+2A6w2E6vyiLXR0kohYscHlwj9yN1NeHIw3h8XjnnqDDwXKTKqWw==",
- "dependencies": {
- "@react-aria/searchfield": "^3.7.1",
- "@react-spectrum/button": "^3.16.0",
- "@react-spectrum/form": "^3.7.2",
- "@react-spectrum/textfield": "^3.11.2",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/searchfield/-/searchfield-3.8.3.tgz",
+ "integrity": "sha512-eHdfbQn2Jp2/USsKHOjLlVTqcnPHKUYa9f4bW9cXO0y08gfI1CSOhNlK3TYs625lvsRGCraCpsi6X2oStRWb8w==",
+ "dependencies": {
+ "@react-aria/searchfield": "^3.7.2",
+ "@react-spectrum/button": "^3.16.1",
+ "@react-spectrum/form": "^3.7.3",
+ "@react-spectrum/textfield": "^3.11.3",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/searchfield": "^3.5.0",
"@react-types/searchfield": "^3.5.2",
"@react-types/textfield": "^3.9.0",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5775,18 +5602,18 @@
}
},
"node_modules/@react-spectrum/slider": {
- "version": "3.6.5",
- "resolved": "https://registry.npmjs.org/@react-spectrum/slider/-/slider-3.6.5.tgz",
- "integrity": "sha512-ca7QxmgYTtJD76SpAvGVJgAQQktrSxEP2ib3t/j8Ok3N+CEScPusKoH1/KGEocPSERH+JC0o33N3kFwnSp2+Kg==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/slider": "^3.7.4",
- "@react-aria/utils": "^3.23.0",
- "@react-aria/visually-hidden": "^3.8.8",
- "@react-spectrum/utils": "^3.11.3",
- "@react-stately/slider": "^3.5.0",
+ "version": "3.6.6",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/slider/-/slider-3.6.6.tgz",
+ "integrity": "sha512-Meav6BLiTuuGxk+qFM3MJJubSIdBytb+Cfa3SIsZ8zx1X0O3eY517byJYjOVLo/FhzloWWNupr7aMPAGfOKb2A==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/slider": "^3.7.5",
+ "@react-aria/utils": "^3.23.1",
+ "@react-aria/visually-hidden": "^3.8.9",
+ "@react-spectrum/utils": "^3.11.4",
+ "@react-stately/slider": "^3.5.1",
"@react-types/shared": "^3.22.0",
"@react-types/slider": "^3.7.0",
"@swc/helpers": "^0.5.0"
@@ -5797,12 +5624,12 @@
}
},
"node_modules/@react-spectrum/statuslight": {
- "version": "3.5.9",
- "resolved": "https://registry.npmjs.org/@react-spectrum/statuslight/-/statuslight-3.5.9.tgz",
- "integrity": "sha512-9fMIVwO4qdwsuh2sBfkOpaDurGn/jCA9uQ6VN5xEe74qHs98C21r5LfzqnxwF7NQH8bP1+WPRRe/l1ZfZCbxdA==",
+ "version": "3.5.10",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/statuslight/-/statuslight-3.5.10.tgz",
+ "integrity": "sha512-s697KmFlwF1dbM0nTNDanL6jqqC6da86tu8sqU7IWqowymbpkIdorFFHuFDiOUg+rKa+QXKzeLicaxH75o6oyw==",
"dependencies": {
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/shared": "^3.22.0",
"@react-types/statuslight": "^3.3.6",
"@swc/helpers": "^0.5.0"
@@ -5813,15 +5640,15 @@
}
},
"node_modules/@react-spectrum/switch": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/@react-spectrum/switch/-/switch-3.5.1.tgz",
- "integrity": "sha512-eqCrQkRF7HB5jzPZiWY0Z9wQTd3RL/Avj2OntL7YMYnxYnwm+nTa6GYn2SR4uBk6y1pZfBpvyWuryGRYSTE6PA==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/switch": "^3.6.0",
- "@react-spectrum/utils": "^3.11.3",
- "@react-stately/toggle": "^3.7.0",
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/switch/-/switch-3.5.2.tgz",
+ "integrity": "sha512-gpxgU5z0BlaorNjCw6J9c2kSQA9ZR7tjg3hF3491i+h2+xc2NuTQe18WYEHTXFTmlXVEEXE97BEtoX4KY7YU0g==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/switch": "^3.6.1",
+ "@react-spectrum/utils": "^3.11.4",
+ "@react-stately/toggle": "^3.7.1",
"@react-types/shared": "^3.22.0",
"@react-types/switch": "^3.5.0",
"@swc/helpers": "^0.5.0"
@@ -5832,33 +5659,33 @@
}
},
"node_modules/@react-spectrum/table": {
- "version": "3.12.6",
- "resolved": "https://registry.npmjs.org/@react-spectrum/table/-/table-3.12.6.tgz",
- "integrity": "sha512-Cqd9yGMgeIGd5l2hkLsXI0m9bNnM7QdLDhVMZnYIN8etcjWzpoUSS2jTvyRaOQg6m+kTaTEVdk4Ury/guOGFKQ==",
- "dependencies": {
- "@react-aria/button": "^3.9.1",
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/table": "^3.13.3",
- "@react-aria/utils": "^3.23.0",
- "@react-aria/virtualizer": "^3.9.8",
- "@react-aria/visually-hidden": "^3.8.8",
- "@react-spectrum/checkbox": "^3.9.2",
- "@react-spectrum/dnd": "^3.3.6",
- "@react-spectrum/layout": "^3.6.1",
- "@react-spectrum/menu": "^3.17.0",
- "@react-spectrum/progress": "^3.7.3",
- "@react-spectrum/tooltip": "^3.6.3",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.12.7",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/table/-/table-3.12.7.tgz",
+ "integrity": "sha512-A+jirOXULysnKvrN0Q8hS4t64I8fFoyyXYAlfSTnza3n2hXKxYnYenKP/VjB7PvdFwZiBAY4+VVg37E0JfFUWw==",
+ "dependencies": {
+ "@react-aria/button": "^3.9.2",
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/table": "^3.13.4",
+ "@react-aria/utils": "^3.23.1",
+ "@react-aria/virtualizer": "^3.9.9",
+ "@react-aria/visually-hidden": "^3.8.9",
+ "@react-spectrum/checkbox": "^3.9.3",
+ "@react-spectrum/dnd": "^3.3.7",
+ "@react-spectrum/layout": "^3.6.2",
+ "@react-spectrum/menu": "^3.18.0",
+ "@react-spectrum/progress": "^3.7.4",
+ "@react-spectrum/tooltip": "^3.6.4",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/flags": "^3.0.0",
- "@react-stately/layout": "^3.13.5",
- "@react-stately/table": "^3.11.4",
- "@react-stately/virtualizer": "^3.6.6",
+ "@react-stately/layout": "^3.13.6",
+ "@react-stately/table": "^3.11.5",
+ "@react-stately/virtualizer": "^3.6.7",
"@react-types/grid": "^3.2.3",
"@react-types/shared": "^3.22.0",
"@react-types/table": "^3.9.2",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5868,18 +5695,18 @@
}
},
"node_modules/@react-spectrum/tabs": {
- "version": "3.8.6",
- "resolved": "https://registry.npmjs.org/@react-spectrum/tabs/-/tabs-3.8.6.tgz",
- "integrity": "sha512-R8IHKe3TTkK3qeLa8uJspBryzXPszN84W3+F4dR4n75fmp+0FZzL+yd3a9RjnUxp2Gz6rv/wc1iozvXz6QcgtA==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/tabs": "^3.8.3",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/picker": "^3.14.1",
- "@react-spectrum/text": "^3.5.1",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.8.7",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/tabs/-/tabs-3.8.7.tgz",
+ "integrity": "sha512-DcPn/pcYuXiS6cwuMT4k3tusDoMuUTjWUYpAcHwDue9xcUGsb6BrNmMxrQ6J08nQN6DhUizqtGA9CCTS9NwcnA==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/tabs": "^3.8.4",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/picker": "^3.14.2",
+ "@react-spectrum/text": "^3.5.2",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/collections": "^3.10.4",
"@react-stately/list": "^3.10.2",
"@react-stately/tabs": "^3.6.3",
@@ -5895,21 +5722,21 @@
}
},
"node_modules/@react-spectrum/tag": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/@react-spectrum/tag/-/tag-3.2.2.tgz",
- "integrity": "sha512-hFaVpK9H2SCAcPcEqvsoPZJ4FKOMGb/meSAfwZVL8cO1LcQO9Xe9OJPSCrHOeKjGQp/hnC8p96EmtLbM9X7nEg==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/i18n": "^3.10.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/selection": "^3.17.3",
- "@react-aria/tag": "^3.3.1",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/button": "^3.16.0",
- "@react-spectrum/form": "^3.7.2",
- "@react-spectrum/label": "^3.16.2",
- "@react-spectrum/text": "^3.5.1",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/tag/-/tag-3.2.3.tgz",
+ "integrity": "sha512-9LZ6SplsNUtvH3VjWZEMpDxbcQSNLNUuoYp9mISzeD8Zf2aNhHLIzm5kyB29hZcZO7lZzZY8GdX44a5awmKLZw==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/i18n": "^3.10.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/selection": "^3.17.4",
+ "@react-aria/tag": "^3.3.2",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/button": "^3.16.1",
+ "@react-spectrum/form": "^3.7.3",
+ "@react-spectrum/label": "^3.16.3",
+ "@react-spectrum/text": "^3.5.2",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/collections": "^3.10.4",
"@react-stately/list": "^3.10.2",
"@react-types/shared": "^3.22.0",
@@ -5922,12 +5749,12 @@
}
},
"node_modules/@react-spectrum/text": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/@react-spectrum/text/-/text-3.5.1.tgz",
- "integrity": "sha512-ldpMMtVC3XOV5mutErEjeYDk9weMjVAhtv2AxdcOGyeUCofkjqu/wzZJ6AYuuG723YpFkKcxpP89GnZzcnsN+Q==",
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/text/-/text-3.5.2.tgz",
+ "integrity": "sha512-cv2WrZrM24btD2zRDs/Qg5n/1+EE2D69RbGySQrJWerohPRJzYoID/ZXPsn0W6gKVivbn6lRQ1+c9ptoXA7b8Q==",
"dependencies": {
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/shared": "^3.22.0",
"@react-types/text": "^3.3.6",
"@swc/helpers": "^0.5.0"
@@ -5938,21 +5765,21 @@
}
},
"node_modules/@react-spectrum/textfield": {
- "version": "3.11.2",
- "resolved": "https://registry.npmjs.org/@react-spectrum/textfield/-/textfield-3.11.2.tgz",
- "integrity": "sha512-1lq29oKiwO+RjW9/VKV63YpO+F2fecb9PtxfzMIFTZFFZBgcuHx+21wEITR4GKX/Lj65m6K2Ri9b71Zi4JVjxg==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/interactions": "^3.20.1",
- "@react-aria/textfield": "^3.14.1",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/form": "^3.7.2",
- "@react-spectrum/label": "^3.16.2",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.11.3",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/textfield/-/textfield-3.11.3.tgz",
+ "integrity": "sha512-859j6VUgXYdF/LoYnindXTirZHfyhX22/6BreQl7mxJT0JDqYn8G/k7pauRSGyw+Di3zuvujEKu8ZdJAMm/0JA==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/interactions": "^3.21.0",
+ "@react-aria/textfield": "^3.14.2",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/form": "^3.7.3",
+ "@react-spectrum/label": "^3.16.3",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/utils": "^3.9.0",
"@react-types/shared": "^3.22.0",
"@react-types/textfield": "^3.9.0",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5997,21 +5824,21 @@
}
},
"node_modules/@react-spectrum/tooltip": {
- "version": "3.6.3",
- "resolved": "https://registry.npmjs.org/@react-spectrum/tooltip/-/tooltip-3.6.3.tgz",
- "integrity": "sha512-9T6OWTA19gEhZuhpVKfZK99QBDuJRQVdzb0+3cim9Cv5D7PvzhvbGvKxTYa+4zKhWsjQaRR7fk1sCT3zbxaTPQ==",
- "dependencies": {
- "@react-aria/focus": "^3.16.0",
- "@react-aria/overlays": "^3.20.0",
- "@react-aria/tooltip": "^3.7.0",
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/overlays": "^5.5.3",
- "@react-spectrum/utils": "^3.11.3",
+ "version": "3.6.4",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/tooltip/-/tooltip-3.6.4.tgz",
+ "integrity": "sha512-z8RGtQjUHRT2haI1tz7lB9STuv6kj8GBGr++Zo5xE8nhY2QASRXE4gZ16YnGI8l2c7EFyLFstAEtbrxt835GWQ==",
+ "dependencies": {
+ "@react-aria/focus": "^3.16.1",
+ "@react-aria/overlays": "^3.21.0",
+ "@react-aria/tooltip": "^3.7.1",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/overlays": "^5.5.4",
+ "@react-spectrum/utils": "^3.11.4",
"@react-stately/tooltip": "^3.4.6",
"@react-types/overlays": "^3.8.4",
"@react-types/shared": "^3.22.0",
"@react-types/tooltip": "^3.4.6",
- "@spectrum-icons/ui": "^3.6.3",
+ "@spectrum-icons/ui": "^3.6.4",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -6021,13 +5848,13 @@
}
},
"node_modules/@react-spectrum/utils": {
- "version": "3.11.3",
- "resolved": "https://registry.npmjs.org/@react-spectrum/utils/-/utils-3.11.3.tgz",
- "integrity": "sha512-XGhR16OFdEkwxGUOLJqWG3ZmvE9JRB0L0gKokJjeDAUlmcqxOJdQOcQ+8PWr40uESoflUqn7pdN9copgjIG+1Q==",
+ "version": "3.11.4",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/utils/-/utils-3.11.4.tgz",
+ "integrity": "sha512-x1GfD25riFzbkscmLR7EUVDJolwjz7QSn8udtAW09kCcpCBjyA+SMmjt+rCpzYM4mtGfPlcJJrYDGDarGjNWxQ==",
"dependencies": {
- "@react-aria/i18n": "^3.10.0",
+ "@react-aria/i18n": "^3.10.1",
"@react-aria/ssr": "^3.9.1",
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/utils": "^3.23.1",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0",
"clsx": "^2.0.0"
@@ -6037,12 +5864,12 @@
}
},
"node_modules/@react-spectrum/view": {
- "version": "3.6.6",
- "resolved": "https://registry.npmjs.org/@react-spectrum/view/-/view-3.6.6.tgz",
- "integrity": "sha512-Or1Xj66Q+G7azJr0/L5liYV127i6AUiwm/iszPG0Hl0GUOZUMeM8Jmg/ma6qNZ0Pz8DDucoIV781d46AUKO9WA==",
+ "version": "3.6.7",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/view/-/view-3.6.7.tgz",
+ "integrity": "sha512-eCwFfoMN7j4G44GZfGmFM+jWsD4zBxbmLsbrm6H1kEmxeeJkCM1jwF2H3Vc4WJxaBuOBY7tce8IHBRwQ3l0Wng==",
"dependencies": {
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/shared": "^3.22.0",
"@react-types/view": "^3.4.6",
"@swc/helpers": "^0.5.0"
@@ -6053,12 +5880,12 @@
}
},
"node_modules/@react-spectrum/well": {
- "version": "3.4.9",
- "resolved": "https://registry.npmjs.org/@react-spectrum/well/-/well-3.4.9.tgz",
- "integrity": "sha512-dDVJvrp9BWYPl7l80S//xpoObDabJAeosrDjPmL75SGootjH9o6s8VpbMVad2/qRsJLkQA9uhlRvgAGWz7u7XQ==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@react-spectrum/well/-/well-3.4.10.tgz",
+ "integrity": "sha512-k1xnXk75R7V2DEbI8+rejT3d2pQR5j6DHZt/JzBbpmuGxvKqlkMgr364vBmusOEu8lvUE5/Q6O+qdnNTZeirWw==",
"dependencies": {
- "@react-aria/utils": "^3.23.0",
- "@react-spectrum/utils": "^3.11.3",
+ "@react-aria/utils": "^3.23.1",
+ "@react-spectrum/utils": "^3.11.4",
"@react-types/shared": "^3.22.0",
"@react-types/well": "^3.3.6",
"@swc/helpers": "^0.5.0"
@@ -6083,13 +5910,13 @@
}
},
"node_modules/@react-stately/checkbox": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.6.1.tgz",
- "integrity": "sha512-rOjFeVBy32edYwhKiHj3ZLdLeO+xZ2fnBwxnOBjcygnw4Neygm8FJH/dB1J0hdYYR349yby86ED2x0wRc84zPw==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.6.2.tgz",
+ "integrity": "sha512-IzeyGd3MKoOAzvgbmds8wnCWRFUmQUznXEMxl1DbpqYpB+OH4nMS81D7yLSVeQPRtxcqKCSx+/98oycMThCilw==",
"dependencies": {
"@react-stately/form": "^3.0.0",
"@react-stately/utils": "^3.9.0",
- "@react-types/checkbox": "^3.6.0",
+ "@react-types/checkbox": "^3.7.0",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
},
@@ -6129,9 +5956,9 @@
}
},
"node_modules/@react-stately/data": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/@react-stately/data/-/data-3.11.0.tgz",
- "integrity": "sha512-0BlPT58WrAtUvpiEfUuyvIsGFTzp/9vA5y+pk53kGJhOdc5tqBGHi9cg40pYE/i1vdHJGMpyHGRD9nkQb8wN3Q==",
+ "version": "3.11.1",
+ "resolved": "https://registry.npmjs.org/@react-stately/data/-/data-3.11.1.tgz",
+ "integrity": "sha512-JedDhZ5e6Qetf+TGXKBdVVEvB50BymNJHKRFRQ9E3mmh/KFeY4V8THHKrNE/BhzB6Z3onsp5r14Z66Nku+klTg==",
"dependencies": {
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
@@ -6216,13 +6043,13 @@
}
},
"node_modules/@react-stately/layout": {
- "version": "3.13.5",
- "resolved": "https://registry.npmjs.org/@react-stately/layout/-/layout-3.13.5.tgz",
- "integrity": "sha512-JuT7nC+1tUdn2YdJAGCMV4EtGRfwdSTixcxZTuVppDU3xJ3PtIHWJQXiEKIGcAkPe9YV2k3omWcopfXvTXy11A==",
+ "version": "3.13.6",
+ "resolved": "https://registry.npmjs.org/@react-stately/layout/-/layout-3.13.6.tgz",
+ "integrity": "sha512-lfkLbPjwsvmA/Rk4OodtrBfFNiApvk5t2cehYHtUU5OFvHGaqt/n//dZ85XI2ooUq1FwfBZZ0ZXAAvJeaWR1QA==",
"dependencies": {
"@react-stately/collections": "^3.10.4",
- "@react-stately/table": "^3.11.4",
- "@react-stately/virtualizer": "^3.6.6",
+ "@react-stately/table": "^3.11.5",
+ "@react-stately/virtualizer": "^3.6.7",
"@react-types/grid": "^3.2.3",
"@react-types/shared": "^3.22.0",
"@react-types/table": "^3.9.2",
@@ -6262,14 +6089,14 @@
}
},
"node_modules/@react-stately/numberfield": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.8.0.tgz",
- "integrity": "sha512-1XvB8tDOvZKcFnMM6qNLEaTVJcIc0jRFS/9jtS8MzalZvh8DbKi0Ucm1bGU7S5rkCx2QWqZ0rGOIm2h/RlcpkA==",
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.9.0.tgz",
+ "integrity": "sha512-8O802S38e1htZbSzpPjbbIGAGxGC/DIzcW8H03UmBXiIFosEjpdmm8qRrJbhGfJGpwnehtzJQ6EaOLgLZMCFKg==",
"dependencies": {
"@internationalized/number": "^3.5.0",
"@react-stately/form": "^3.0.0",
"@react-stately/utils": "^3.9.0",
- "@react-types/numberfield": "^3.7.0",
+ "@react-types/numberfield": "^3.8.0",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -6348,9 +6175,9 @@
}
},
"node_modules/@react-stately/slider": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.5.0.tgz",
- "integrity": "sha512-dOVpIxb7XKuiRxgpHt1bUSlsklciFki100tKIyBPR+Okar9iC/CwLYROYgVfLkGe77jEBNkor9tDLjDGEWcc1w==",
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.5.1.tgz",
+ "integrity": "sha512-NRZ5m1wOVxGZF1CQC6hOzt/LmHNUF2xpFSkzN29fW/InPH4jb3BuOkRbbWv76QaVe0Kdg2ZLWcMl2+Qt6adIeQ==",
"dependencies": {
"@react-stately/utils": "^3.9.0",
"@react-types/shared": "^3.22.0",
@@ -6362,9 +6189,9 @@
}
},
"node_modules/@react-stately/table": {
- "version": "3.11.4",
- "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.11.4.tgz",
- "integrity": "sha512-dWINJIEOKQl4qq3moq+S8xCD3m+yJqBj0dahr+rOkS+t2uqORwzsusTM35D2T/ZHZi49S2GpE7QuDa+edCynPw==",
+ "version": "3.11.5",
+ "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.11.5.tgz",
+ "integrity": "sha512-l84iZJxpR0vlprHNEeGCVZTjOivP5fLpllmG+GswGxN4JXDqCEZ6gCQzpXxLyQTyBZ8lTRmmmmW20V2nCmDO4w==",
"dependencies": {
"@react-stately/collections": "^3.10.4",
"@react-stately/flags": "^3.0.0",
@@ -6395,12 +6222,12 @@
}
},
"node_modules/@react-stately/toggle": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.0.tgz",
- "integrity": "sha512-TRksHkCJk/Xogq4181g3CYgJf+EfsJCqX5UZDSw1Z1Kgpvonjmdf6FAfQfCh9QR2OuXUL6hOLUDVLte5OPI+5g==",
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.1.tgz",
+ "integrity": "sha512-pZyhPJNdhidm/Uq/Pt58H0I6CUNyfnhfGAAn9Et6T3/SymcX1Zti5mZg5gXgICFlwGbucfLBe+Jt691Rnt2vaA==",
"dependencies": {
"@react-stately/utils": "^3.9.0",
- "@react-types/checkbox": "^3.6.0",
+ "@react-types/checkbox": "^3.7.0",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -6447,11 +6274,11 @@
}
},
"node_modules/@react-stately/virtualizer": {
- "version": "3.6.6",
- "resolved": "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-3.6.6.tgz",
- "integrity": "sha512-9hWvfITdE/028q4YFve6FxlmA3PdSMkUwpYA+vfaGCXI/4DFZIssBMspUeu4PTRJoV+k+m0z1wYHPmufrq6a3g==",
+ "version": "3.6.7",
+ "resolved": "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-3.6.7.tgz",
+ "integrity": "sha512-huhQSrfwiUq2idceSE2aQ54d9gttAovKDtw7uERWFt+UAxiprWq8hr6sl7rTdN2NB7fz/t+MAJJuwWMkzLUlOw==",
"dependencies": {
- "@react-aria/utils": "^3.23.0",
+ "@react-aria/utils": "^3.23.1",
"@react-types/shared": "^3.22.0",
"@swc/helpers": "^0.5.0"
},
@@ -6550,9 +6377,9 @@
}
},
"node_modules/@react-types/checkbox": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.6.0.tgz",
- "integrity": "sha512-vgbuJzQpVCNT5AZWV0OozXCnihqrXxoZKfJFIw0xro47pT2sn3t5UC4RA9wfjDGMoK4frw1K/4HQLsQIOsPBkw==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.7.0.tgz",
+ "integrity": "sha512-3ZW/+Fh5GkL7mQhayyESB9+YQ6y7nImLQ8jB2lg42esaK5UF7IpG3xlrYm2z4KWLvQFXncX7SJsnwzYiBMLY+g==",
"dependencies": {
"@react-types/shared": "^3.22.0"
},
@@ -6732,9 +6559,9 @@
}
},
"node_modules/@react-types/numberfield": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.7.0.tgz",
- "integrity": "sha512-gaGi+vqm1Y8LCWRsWYUjcGftPIzl+8W2VOfkgKMLM8y76nnwTPtmAqs+Ap1cg7sEJSfsiKMq93e9yvP3udrC2w==",
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.8.0.tgz",
+ "integrity": "sha512-2xnVvOVVSnvzT5JxldJdVRh/IMry9//PyQ5VcK3ze0m+bcD6zZspIdspzu8jiYyUPmZLHN1cZzx5GZSak1V6ig==",
"dependencies": {
"@react-types/shared": "^3.22.0"
},
@@ -6966,12 +6793,12 @@
"integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
},
"node_modules/@spectrum-icons/ui": {
- "version": "3.6.3",
- "resolved": "https://registry.npmjs.org/@spectrum-icons/ui/-/ui-3.6.3.tgz",
- "integrity": "sha512-eBifZgyUYIbNr3v2qytTKBs3paqZcJoHkt5pfNpwTXhK3DbCkXNMOWRCVcCaiU9olKiG0vSzsJE6mlw7P5VmfQ==",
+ "version": "3.6.4",
+ "resolved": "https://registry.npmjs.org/@spectrum-icons/ui/-/ui-3.6.4.tgz",
+ "integrity": "sha512-ojjICGgVaBeMKbeMB9/KCAs7l2ToJlNrJUVljkLv2Os6fukGHsAgVgO6wyw9diUIZGgentpx441+CQLooi9J6w==",
"dependencies": {
"@adobe/react-spectrum-ui": "1.2.0",
- "@react-spectrum/icon": "^3.7.9",
+ "@react-spectrum/icon": "^3.7.10",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -6980,12 +6807,12 @@
}
},
"node_modules/@spectrum-icons/workflow": {
- "version": "4.2.8",
- "resolved": "https://registry.npmjs.org/@spectrum-icons/workflow/-/workflow-4.2.8.tgz",
- "integrity": "sha512-j7M5yPVRKMHwPItcELNG2+BxQKBPiRVm3oMbqVP4pUTRk/aMAhWVNFd/GDnJOAgR2x8o/mnMmagbrrJzyh9Rgg==",
+ "version": "4.2.9",
+ "resolved": "https://registry.npmjs.org/@spectrum-icons/workflow/-/workflow-4.2.9.tgz",
+ "integrity": "sha512-JdDzhnI7ASToodB1V5iy/CZNNHXxE7fwaPCS4+BpdwoibowgK5c1tnu1nHhzMHilw94UosYQjPbf3zzjSSYbjw==",
"dependencies": {
"@adobe/react-spectrum-workflow": "2.3.4",
- "@react-spectrum/icon": "^3.7.9",
+ "@react-spectrum/icon": "^3.7.10",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -6994,9 +6821,9 @@
}
},
"node_modules/@swc/helpers": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz",
- "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==",
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz",
+ "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==",
"dependencies": {
"tslib": "^2.4.0"
}
@@ -8679,17 +8506,6 @@
"@types/node": "*"
}
},
- "node_modules/@types/cacheable-request": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
- "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
- "dependencies": {
- "@types/http-cache-semantics": "*",
- "@types/keyv": "^3.1.4",
- "@types/node": "*",
- "@types/responselike": "^1.0.0"
- }
- },
"node_modules/@types/caseless": {
"version": "0.12.5",
"resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz",
@@ -8935,9 +8751,9 @@
}
},
"node_modules/@types/d3-path": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.2.tgz",
- "integrity": "sha512-WAIEVlOCdd/NKRYTsqCpOMHQHemKBEINf8YXMYOtXH0GA7SY0dqMB78P3Uhgfy+4X+/Mlw2wDtlETkN6kQUCMA=="
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz",
+ "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ=="
},
"node_modules/@types/d3-polygon": {
"version": "3.0.2",
@@ -9056,9 +8872,9 @@
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
},
"node_modules/@types/estree-jsx": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.3.tgz",
- "integrity": "sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.4.tgz",
+ "integrity": "sha512-5idy3hvI9lAMqsyilBM+N+boaCf1MgoefbDxN6KEO5aK17TOHwFAYT9sjxzeKAiIWRUBgLxmZ9mPcnzZXtTcRQ==",
"dependencies": {
"@types/estree": "*"
}
@@ -9085,9 +8901,9 @@
}
},
"node_modules/@types/express-serve-static-core": {
- "version": "4.17.41",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz",
- "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==",
+ "version": "4.17.43",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz",
+ "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==",
"dev": true,
"dependencies": {
"@types/node": "*",
@@ -9133,9 +8949,9 @@
}
},
"node_modules/@types/geojson": {
- "version": "7946.0.13",
- "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.13.tgz",
- "integrity": "sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ=="
+ "version": "7946.0.14",
+ "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz",
+ "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg=="
},
"node_modules/@types/glob": {
"version": "7.2.0",
@@ -9156,14 +8972,14 @@
}
},
"node_modules/@types/google.maps": {
- "version": "3.53.5",
- "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.53.5.tgz",
- "integrity": "sha512-HoRq4Te8J6krH7hj+TfdYepqegoKZCj3kkaK5gf+ySFSHLvyqYkDvkrtbcVJXQ6QBphQ0h1TF7p4J6sOh4r/zg=="
+ "version": "3.55.2",
+ "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.55.2.tgz",
+ "integrity": "sha512-JcTwzkxskR8DN/nnX96Pie3gGN3WHiPpuxzuQ9z3516o1bB243d8w8DHUJ8BohuzoT1o3HUFta2ns/mkZC8KRw=="
},
"node_modules/@types/hast": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
- "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
+ "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
"dependencies": {
"@types/unist": "*"
}
@@ -9241,14 +9057,6 @@
"integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==",
"dev": true
},
- "node_modules/@types/keyv": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
- "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@types/libxmljs": {
"version": "0.18.12",
"resolved": "https://registry.npmjs.org/@types/libxmljs/-/libxmljs-0.18.12.tgz",
@@ -9265,9 +9073,9 @@
"dev": true
},
"node_modules/@types/mapbox-gl": {
- "version": "2.7.19",
- "resolved": "https://registry.npmjs.org/@types/mapbox-gl/-/mapbox-gl-2.7.19.tgz",
- "integrity": "sha512-pkRdlhQJNbtwcKJSVC4uuOA6M3OlOObIMhNecqHB991oeaDF5XkjSIRaTE0lh5p4KClptSCxW6MBiREVRHrl2A==",
+ "version": "2.7.21",
+ "resolved": "https://registry.npmjs.org/@types/mapbox-gl/-/mapbox-gl-2.7.21.tgz",
+ "integrity": "sha512-Dx9MuF2kKgT/N22LsMUB4b3acFZh9clVqz9zv1fomoiPoBrJolwYxpWA/9LPO/2N0xWbKi4V+pkjTaFkkx/4wA==",
"dependencies": {
"@types/geojson": "*"
}
@@ -9292,11 +9100,6 @@
"integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
"dev": true
},
- "node_modules/@types/minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag=="
- },
"node_modules/@types/mocha": {
"version": "10.0.6",
"resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz",
@@ -9309,9 +9112,9 @@
"integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
},
"node_modules/@types/node": {
- "version": "20.11.6",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.6.tgz",
- "integrity": "sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q==",
+ "version": "20.11.18",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.18.tgz",
+ "integrity": "sha512-ABT5VWnnYneSBcNWYSCuR05M826RoMyMSGiFivXGx6ZUIsXb9vn4643IEwkg2zbEOSgAiSogtapN2fgc4mAPlw==",
"dependencies": {
"undici-types": "~5.26.4"
}
@@ -9343,11 +9146,6 @@
"@types/node": "*"
}
},
- "node_modules/@types/normalize-package-data": {
- "version": "2.4.4",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
- "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA=="
- },
"node_modules/@types/oauth": {
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/@types/oauth/-/oauth-0.9.4.tgz",
@@ -9451,9 +9249,9 @@
}
},
"node_modules/@types/react": {
- "version": "18.2.48",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz",
- "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==",
+ "version": "18.2.55",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.55.tgz",
+ "integrity": "sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==",
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -9480,9 +9278,9 @@
}
},
"node_modules/@types/react-datepicker": {
- "version": "4.19.5",
- "resolved": "https://registry.npmjs.org/@types/react-datepicker/-/react-datepicker-4.19.5.tgz",
- "integrity": "sha512-tKpuj19p9T4sBQm3Bw13CPuhalo4CFOe/LcSUGJ5z6DmHoiBX3uq33iMKePeSEq7OxyU8O1rh5emAm92nyXZLg==",
+ "version": "4.19.6",
+ "resolved": "https://registry.npmjs.org/@types/react-datepicker/-/react-datepicker-4.19.6.tgz",
+ "integrity": "sha512-uH5fzxt9eXxnc+hDCy/iRSFqU2+9lR/q2lAmaG4WILMai1o3IOdpcV+VSypzBFJLTEC2jrfeDXcdol0CJVMq4g==",
"dev": true,
"dependencies": {
"@popperjs/core": "^2.9.2",
@@ -9492,9 +9290,9 @@
}
},
"node_modules/@types/react-dom": {
- "version": "18.2.18",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz",
- "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==",
+ "version": "18.2.19",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz",
+ "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==",
"dev": true,
"dependencies": {
"@types/react": "*"
@@ -9589,14 +9387,6 @@
"node": ">= 0.12"
}
},
- "node_modules/@types/responselike": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
- "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==",
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@types/retry": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
@@ -9712,9 +9502,9 @@
"integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
},
"node_modules/@types/uuid": {
- "version": "9.0.7",
- "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz",
- "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==",
+ "version": "9.0.8",
+ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz",
+ "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==",
"dev": true
},
"node_modules/@types/valid-url": {
@@ -9724,9 +9514,9 @@
"dev": true
},
"node_modules/@types/web": {
- "version": "0.0.135",
- "resolved": "https://registry.npmjs.org/@types/web/-/web-0.0.135.tgz",
- "integrity": "sha512-3fNGUqpXzakTUJ9FQVoplG+fpzVn1WhQRz3eIE7dTGY4uI8/ngi9KbAtaK4nrIUk8dAI0qYPMIvq2ydTLYbJyA=="
+ "version": "0.0.138",
+ "resolved": "https://registry.npmjs.org/@types/web/-/web-0.0.138.tgz",
+ "integrity": "sha512-oQD74hl+cNCZdSWIupJCXZ2azTuB3MJ/mrWlgYt+v4pD7/Dr78gl5hKAdieZNf9NrAqwUez79bHtnFVSNSscWA=="
},
"node_modules/@types/webidl-conversions": {
"version": "7.0.3",
@@ -9784,55 +9574,55 @@
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
},
"node_modules/@vue/compiler-core": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.15.tgz",
- "integrity": "sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==",
+ "version": "3.4.19",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.19.tgz",
+ "integrity": "sha512-gj81785z0JNzRcU0Mq98E56e4ltO1yf8k5PQ+tV/7YHnbZkrM0fyFyuttnN8ngJZjbpofWE/m4qjKBiLl8Ju4w==",
"dependencies": {
- "@babel/parser": "^7.23.6",
- "@vue/shared": "3.4.15",
+ "@babel/parser": "^7.23.9",
+ "@vue/shared": "3.4.19",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.0.2"
}
},
"node_modules/@vue/compiler-dom": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz",
- "integrity": "sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==",
+ "version": "3.4.19",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.19.tgz",
+ "integrity": "sha512-vm6+cogWrshjqEHTzIDCp72DKtea8Ry/QVpQRYoyTIg9k7QZDX6D8+HGURjtmatfgM8xgCFtJJaOlCaRYRK3QA==",
"dependencies": {
- "@vue/compiler-core": "3.4.15",
- "@vue/shared": "3.4.15"
+ "@vue/compiler-core": "3.4.19",
+ "@vue/shared": "3.4.19"
}
},
"node_modules/@vue/compiler-sfc": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.15.tgz",
- "integrity": "sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==",
- "dependencies": {
- "@babel/parser": "^7.23.6",
- "@vue/compiler-core": "3.4.15",
- "@vue/compiler-dom": "3.4.15",
- "@vue/compiler-ssr": "3.4.15",
- "@vue/shared": "3.4.15",
+ "version": "3.4.19",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.19.tgz",
+ "integrity": "sha512-LQ3U4SN0DlvV0xhr1lUsgLCYlwQfUfetyPxkKYu7dkfvx7g3ojrGAkw0AERLOKYXuAGnqFsEuytkdcComei3Yg==",
+ "dependencies": {
+ "@babel/parser": "^7.23.9",
+ "@vue/compiler-core": "3.4.19",
+ "@vue/compiler-dom": "3.4.19",
+ "@vue/compiler-ssr": "3.4.19",
+ "@vue/shared": "3.4.19",
"estree-walker": "^2.0.2",
- "magic-string": "^0.30.5",
+ "magic-string": "^0.30.6",
"postcss": "^8.4.33",
"source-map-js": "^1.0.2"
}
},
"node_modules/@vue/compiler-ssr": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.15.tgz",
- "integrity": "sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==",
+ "version": "3.4.19",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.19.tgz",
+ "integrity": "sha512-P0PLKC4+u4OMJ8sinba/5Z/iDT84uMRRlrWzadgLA69opCpI1gG4N55qDSC+dedwq2fJtzmGald05LWR5TFfLw==",
"dependencies": {
- "@vue/compiler-dom": "3.4.15",
- "@vue/shared": "3.4.15"
+ "@vue/compiler-dom": "3.4.19",
+ "@vue/shared": "3.4.19"
}
},
"node_modules/@vue/shared": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.15.tgz",
- "integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g=="
+ "version": "3.4.19",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.19.tgz",
+ "integrity": "sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw=="
},
"node_modules/@webassemblyjs/ast": {
"version": "1.11.6",
@@ -10384,13 +10174,16 @@
}
},
"node_modules/array-buffer-byte-length": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
- "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
+ "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "is-array-buffer": "^3.0.1"
+ "call-bind": "^1.0.5",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -10436,17 +10229,36 @@
"node": ">=8"
}
},
- "node_modules/array.prototype.findlastindex": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz",
- "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==",
+ "node_modules/array.prototype.filter": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz",
+ "integrity": "sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
"es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0",
- "get-intrinsic": "^1.2.1"
+ "es-array-method-boxes-properly": "^1.0.0",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.findlastindex": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz",
+ "integrity": "sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.3.0",
+ "es-shim-unscopables": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -10492,30 +10304,31 @@
}
},
"node_modules/array.prototype.tosorted": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz",
- "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz",
+ "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0",
- "get-intrinsic": "^1.2.1"
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.1.0",
+ "es-shim-unscopables": "^1.0.2"
}
},
"node_modules/arraybuffer.prototype.slice": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz",
- "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
+ "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
"dev": true,
"dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1",
- "is-array-buffer": "^3.0.2",
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.2.1",
+ "get-intrinsic": "^1.2.3",
+ "is-array-buffer": "^3.0.4",
"is-shared-array-buffer": "^1.0.2"
},
"engines": {
@@ -10525,14 +10338,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -10622,9 +10427,9 @@
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"node_modules/available-typed-arrays": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
- "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz",
+ "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==",
"engines": {
"node": ">= 0.4"
},
@@ -10655,9 +10460,9 @@
}
},
"node_modules/axios": {
- "version": "1.6.6",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.6.tgz",
- "integrity": "sha512-XZLZDFfXKM9U/Y/B4nNynfCRUqNyVZ4sBC/n9GDRCkq9vd2mIvKjKKsbIh1WPmHmNbg6ND7cTBY3Y2+u1G3/2Q==",
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz",
+ "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==",
"dependencies": {
"follow-redirects": "^1.15.4",
"form-data": "^4.0.0",
@@ -10674,9 +10479,9 @@
}
},
"node_modules/b4a": {
- "version": "1.6.4",
- "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
- "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw=="
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
+ "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg=="
},
"node_modules/babel": {
"version": "6.23.0",
@@ -10831,6 +10636,12 @@
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
+ "node_modules/bare-events": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.0.tgz",
+ "integrity": "sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==",
+ "optional": true
+ },
"node_modules/base-64": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz",
@@ -10915,15 +10726,6 @@
"url": "https://github.com/Pomax/bezierjs/blob/master/FUNDING.md"
}
},
- "node_modules/bidi-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz",
- "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==",
- "dev": true,
- "dependencies": {
- "require-from-string": "^2.0.2"
- }
- },
"node_modules/big.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
@@ -14001,9 +13803,9 @@
"dev": true
},
"node_modules/browserslist": {
- "version": "4.22.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
- "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
+ "version": "4.23.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
+ "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
"funding": [
{
"type": "opencollective",
@@ -14019,8 +13821,8 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001565",
- "electron-to-chromium": "^1.4.601",
+ "caniuse-lite": "^1.0.30001587",
+ "electron-to-chromium": "^1.4.668",
"node-releases": "^2.0.14",
"update-browserslist-db": "^1.0.13"
},
@@ -14032,9 +13834,9 @@
}
},
"node_modules/bson": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/bson/-/bson-6.2.0.tgz",
- "integrity": "sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q==",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-6.3.0.tgz",
+ "integrity": "sha512-balJfqwwTBddxfnidJZagCBPP/f48zj9Sdp3OJswREOgsJzHiQSaOIAtApSgDQFYgHqAvFkp53AFSqjMDZoTFw==",
"engines": {
"node": ">=16.20.1"
}
@@ -14166,13 +13968,18 @@
}
},
"node_modules/call-bind": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
- "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
"function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.1",
- "set-function-length": "^1.1.1"
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -14214,38 +14021,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/camelcase-keys": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
- "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
- "dependencies": {
- "camelcase": "^5.3.1",
- "map-obj": "^4.0.0",
- "quick-lru": "^4.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/camelcase-keys/node_modules/camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camelcase-keys/node_modules/quick-lru": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
- "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/camelize": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
@@ -14255,9 +14030,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001580",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001580.tgz",
- "integrity": "sha512-mtj5ur2FFPZcCEpXFy8ADXbDACuNFXg6mxVDqp7tqooX6l3zwm+d8EPoeOSIFRDvHs8qu7/SLFOGniULkcH2iA==",
+ "version": "1.0.30001587",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001587.tgz",
+ "integrity": "sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==",
"funding": [
{
"type": "opencollective",
@@ -14302,9 +14077,9 @@
}
},
"node_modules/chai": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/chai/-/chai-5.0.3.tgz",
- "integrity": "sha512-wKGCtYv2kVY5WEjKqQ3fSIZWtTFveZCtzinhTZbx3/trVkxefiwovhpU9kRVCwxvKKCEjTWXPdM1/T7zPoDgow==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.0.tgz",
+ "integrity": "sha512-kDZ7MZyM6Q1DhR9jy7dalKohXQ2yrlXkk59CR52aRKxJrobmlBNqnFQxX9xOX8w+4mz8SYlKJa/7D7ddltFXCw==",
"dev": true,
"dependencies": {
"assertion-error": "^2.0.1",
@@ -14427,15 +14202,9 @@
"integrity": "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g=="
},
"node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -14448,6 +14217,9 @@
"engines": {
"node": ">= 8.10.0"
},
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
"optionalDependencies": {
"fsevents": "~2.3.2"
}
@@ -14529,6 +14301,11 @@
"node": ">= 10"
}
},
+ "node_modules/client-only": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
+ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
+ },
"node_modules/cliss": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/cliss/-/cliss-0.0.2.tgz",
@@ -14616,25 +14393,6 @@
"node": ">=6"
}
},
- "node_modules/clone-response": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
- "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
- "dependencies": {
- "mimic-response": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/clone-response/node_modules/mimic-response": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
- "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/clsx": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz",
@@ -14997,9 +14755,9 @@
}
},
"node_modules/core-js": {
- "version": "3.35.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.35.1.tgz",
- "integrity": "sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw==",
+ "version": "3.36.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.0.tgz",
+ "integrity": "sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
@@ -15007,11 +14765,11 @@
}
},
"node_modules/core-js-compat": {
- "version": "3.35.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.1.tgz",
- "integrity": "sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==",
+ "version": "3.36.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz",
+ "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==",
"dependencies": {
- "browserslist": "^4.22.2"
+ "browserslist": "^4.22.3"
},
"funding": {
"type": "opencollective",
@@ -15019,9 +14777,9 @@
}
},
"node_modules/core-js-pure": {
- "version": "3.35.1",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.35.1.tgz",
- "integrity": "sha512-zcIdi/CL3MWbBJYo5YCeVAAx+Sy9yJE9I3/u9LkFABwbeaPhTMRWraM8mYFp9jW5Z50hOy7FVzCc8dCrpZqtIQ==",
+ "version": "3.36.0",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.36.0.tgz",
+ "integrity": "sha512-cN28qmhRNgbMZZMc/RFu5w8pK9VJzpb2rJVR/lHuZJKwmXnoWOpXmMkxqBB514igkp1Hu8WGROsiOAzUcKdHOQ==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
@@ -15145,9 +14903,9 @@
}
},
"node_modules/css-loader": {
- "version": "6.9.1",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.9.1.tgz",
- "integrity": "sha512-OzABOh0+26JKFdMzlK6PY1u5Zx8+Ck7CVRlcGNZoY9qwJjdfu2VWFuprTIpPW+Av5TZTVViYWcFQaEEQURLknQ==",
+ "version": "6.10.0",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz",
+ "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==",
"dependencies": {
"icss-utils": "^5.1.0",
"postcss": "^8.4.33",
@@ -15166,7 +14924,16 @@
"url": "https://opencollective.com/webpack"
},
"peerDependencies": {
+ "@rspack/core": "0.x || 1.x",
"webpack": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@rspack/core": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
}
},
"node_modules/css-loader/node_modules/lru-cache": {
@@ -15181,9 +14948,9 @@
}
},
"node_modules/css-loader/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -15272,19 +15039,6 @@
"postcss-value-parser": "^4.0.2"
}
},
- "node_modules/css-tree": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
- "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
- "dev": true,
- "dependencies": {
- "mdn-data": "2.0.30",
- "source-map-js": "^1.0.1"
- },
- "engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
- }
- },
"node_modules/css-what": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
@@ -15800,6 +15554,7 @@
"version": "2.30.0",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
"integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
+ "dev": true,
"dependencies": {
"@babel/runtime": "^7.21.0"
},
@@ -15827,37 +15582,6 @@
}
}
},
- "node_modules/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/decamelize-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
- "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
- "dependencies": {
- "decamelize": "^1.1.0",
- "map-obj": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/decamelize-keys/node_modules/map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/decimal.js": {
"version": "10.4.3",
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
@@ -15985,16 +15709,19 @@
}
},
"node_modules/define-data-property": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
- "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
"dependencies": {
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/define-lazy-prop": {
@@ -16101,9 +15828,9 @@
}
},
"node_modules/depcheck/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -16327,15 +16054,15 @@
}
},
"node_modules/dotenv": {
- "version": "16.4.1",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.1.tgz",
- "integrity": "sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==",
+ "version": "16.4.4",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.4.tgz",
+ "integrity": "sha512-XvPXc8XAQThSjAbY6cQ/9PcBXmFoWuw1sQ3b8HqUCR6ziGXjkTi//kB9SWa2UwqlgdAIuRqAa/9hVljzPehbYg==",
"dev": true,
"engines": {
"node": ">=12"
},
"funding": {
- "url": "https://github.com/motdotla/dotenv?sponsor=1"
+ "url": "https://dotenvx.com"
}
},
"node_modules/double-bits": {
@@ -16385,9 +16112,9 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/electron-to-chromium": {
- "version": "1.4.645",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.645.tgz",
- "integrity": "sha512-EeS1oQDCmnYsRDRy2zTeC336a/4LZ6WKqvSaM1jLocEk5ZuyszkQtCpsqvuvaIXGOUjwtvF6LTcS8WueibXvSw=="
+ "version": "1.4.670",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.670.tgz",
+ "integrity": "sha512-hcijYOWjOtjKrKPtNA6tuLlA/bTLO3heFG8pQA6mLpq7dRydSWicXova5lyxDzp1iVJaYhK7J2OQlGE52KYn7A=="
},
"node_modules/emoji-regex": {
"version": "9.2.2",
@@ -16410,14 +16137,6 @@
"node": ">= 0.8"
}
},
- "node_modules/end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dependencies": {
- "once": "^1.4.0"
- }
- },
"node_modules/engine.io": {
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz",
@@ -16471,9 +16190,9 @@
}
},
"node_modules/engine.io-parser": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz",
- "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==",
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz",
+ "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==",
"engines": {
"node": ">=10.0.0"
}
@@ -16522,9 +16241,9 @@
}
},
"node_modules/envinfo": {
- "version": "7.11.0",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz",
- "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==",
+ "version": "7.11.1",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz",
+ "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==",
"bin": {
"envinfo": "dist/cli.js"
},
@@ -16541,50 +16260,52 @@
}
},
"node_modules/es-abstract": {
- "version": "1.22.3",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz",
- "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==",
- "dev": true,
- "dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "arraybuffer.prototype.slice": "^1.0.2",
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.5",
- "es-set-tostringtag": "^2.0.1",
+ "version": "1.22.4",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz",
+ "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "arraybuffer.prototype.slice": "^1.0.3",
+ "available-typed-arrays": "^1.0.6",
+ "call-bind": "^1.0.7",
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "es-set-tostringtag": "^2.0.2",
"es-to-primitive": "^1.2.1",
"function.prototype.name": "^1.1.6",
- "get-intrinsic": "^1.2.2",
- "get-symbol-description": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "get-symbol-description": "^1.0.2",
"globalthis": "^1.0.3",
"gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0",
+ "has-property-descriptors": "^1.0.2",
"has-proto": "^1.0.1",
"has-symbols": "^1.0.3",
- "hasown": "^2.0.0",
- "internal-slot": "^1.0.5",
- "is-array-buffer": "^3.0.2",
+ "hasown": "^2.0.1",
+ "internal-slot": "^1.0.7",
+ "is-array-buffer": "^3.0.4",
"is-callable": "^1.2.7",
"is-negative-zero": "^2.0.2",
"is-regex": "^1.1.4",
"is-shared-array-buffer": "^1.0.2",
"is-string": "^1.0.7",
- "is-typed-array": "^1.1.12",
+ "is-typed-array": "^1.1.13",
"is-weakref": "^1.0.2",
"object-inspect": "^1.13.1",
"object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.5.1",
- "safe-array-concat": "^1.0.1",
- "safe-regex-test": "^1.0.0",
+ "object.assign": "^4.1.5",
+ "regexp.prototype.flags": "^1.5.2",
+ "safe-array-concat": "^1.1.0",
+ "safe-regex-test": "^1.0.3",
"string.prototype.trim": "^1.2.8",
"string.prototype.trimend": "^1.0.7",
"string.prototype.trimstart": "^1.0.7",
- "typed-array-buffer": "^1.0.0",
+ "typed-array-buffer": "^1.0.1",
"typed-array-byte-length": "^1.0.0",
"typed-array-byte-offset": "^1.0.0",
"typed-array-length": "^1.0.4",
"unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.13"
+ "which-typed-array": "^1.1.14"
},
"engines": {
"node": ">= 0.4"
@@ -16593,26 +16314,55 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/es-array-method-boxes-properly": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
+ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
+ "dev": true
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/es-iterator-helpers": {
- "version": "1.0.15",
- "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz",
- "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==",
+ "version": "1.0.17",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz",
+ "integrity": "sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==",
"dev": true,
"dependencies": {
"asynciterator.prototype": "^1.0.0",
- "call-bind": "^1.0.2",
+ "call-bind": "^1.0.7",
"define-properties": "^1.2.1",
- "es-abstract": "^1.22.1",
- "es-set-tostringtag": "^2.0.1",
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.2.1",
+ "es-abstract": "^1.22.4",
+ "es-errors": "^1.3.0",
+ "es-set-tostringtag": "^2.0.2",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
"globalthis": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
+ "has-property-descriptors": "^1.0.2",
"has-proto": "^1.0.1",
"has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
+ "internal-slot": "^1.0.7",
"iterator.prototype": "^1.1.2",
- "safe-array-concat": "^1.0.1"
+ "safe-array-concat": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
}
},
"node_modules/es-module-lexer": {
@@ -16666,9 +16416,9 @@
"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
},
"node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
"engines": {
"node": ">=6"
}
@@ -18319,11 +18069,6 @@
"node": ">=6"
}
},
- "node_modules/eventemitter3": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
- "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q=="
- },
"node_modules/events": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
@@ -18462,12 +18207,12 @@
}
},
"node_modules/express-session": {
- "version": "1.17.3",
- "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz",
- "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==",
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.18.0.tgz",
+ "integrity": "sha512-m93QLWr0ju+rOwApSsyso838LQwgfs44QtOP/WBiwtAgPIo/SAh1a5c6nn2BR6mFNZehTpqKDESzP+fRHVbxwQ==",
"dependencies": {
- "cookie": "0.4.2",
- "cookie-signature": "1.0.6",
+ "cookie": "0.6.0",
+ "cookie-signature": "1.0.7",
"debug": "2.6.9",
"depd": "~2.0.0",
"on-headers": "~1.0.2",
@@ -18480,13 +18225,18 @@
}
},
"node_modules/express-session/node_modules/cookie": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
- "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
"engines": {
"node": ">= 0.6"
}
},
+ "node_modules/express-session/node_modules/cookie-signature": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz",
+ "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA=="
+ },
"node_modules/express-session/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -18648,9 +18398,9 @@
}
},
"node_modules/fastq": {
- "version": "1.16.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz",
- "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==",
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
"dev": true,
"dependencies": {
"reusify": "^1.0.4"
@@ -19267,9 +19017,9 @@
}
},
"node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -19438,9 +19188,9 @@
}
},
"node_modules/function-plot": {
- "version": "1.24.0",
- "resolved": "https://registry.npmjs.org/function-plot/-/function-plot-1.24.0.tgz",
- "integrity": "sha512-xurR8bHYgLkf/ypRm8EdyqPCG9lGs+nWs+hVRChCTwi7RHEqpcoPPeOxiUVbhYtEiyRVe5m+pSAgTp35SukJrg==",
+ "version": "1.24.4",
+ "resolved": "https://registry.npmjs.org/function-plot/-/function-plot-1.24.4.tgz",
+ "integrity": "sha512-qlAfK6AENICh0HWiwx6h0aIAq/l/4YYNxConi89Bs7w4W+Jj5t548U6bPRbNR667N0hBLCSYOyYE2VsmRrflGg==",
"dependencies": {
"built-in-math-eval": "^0.3.0",
"d3-axis": "^3.0.0",
@@ -19487,14 +19237,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/fuzzy": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz",
- "integrity": "sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w==",
- "engines": {
- "node": ">= 0.6.0"
- }
- },
"node_modules/gauge": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
@@ -19515,9 +19257,9 @@
}
},
"node_modules/gaxios": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.1.1.tgz",
- "integrity": "sha512-bw8smrX+XlAoo9o1JAksBwX+hi/RG15J+NTSxmNPIclKC3ZVK6C2afwY8OSdRvOK0+ZLecUJYtj2MmjOt3Dm0w==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.2.0.tgz",
+ "integrity": "sha512-H6+bHeoEAU5D6XNc6mPKeN5dLZqEDs9Gpk6I+SZBEzK5So58JVrHPmevNi35fRl1J9Y5TaeLW0kYx3pCJ1U2mQ==",
"dependencies": {
"extend": "^3.0.2",
"https-proxy-agent": "^7.0.1",
@@ -19540,9 +19282,9 @@
}
},
"node_modules/gaxios/node_modules/https-proxy-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==",
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.3.tgz",
+ "integrity": "sha512-kCnwztfX0KZJSLOBrcL0emLeFako55NWMovvyPP2AjsghNk9RB1yjSI+jVumPHYZsNXegNoqupSW9IY3afSH8w==",
"dependencies": {
"agent-base": "^7.0.2",
"debug": "4"
@@ -19646,15 +19388,19 @@
}
},
"node_modules/get-intrinsic": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
- "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
"dependencies": {
+ "es-errors": "^1.3.0",
"function-bind": "^1.1.2",
"has-proto": "^1.0.1",
"has-symbols": "^1.0.3",
"hasown": "^2.0.0"
},
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -19692,13 +19438,14 @@
}
},
"node_modules/get-symbol-description": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
- "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
+ "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
+ "call-bind": "^1.0.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4"
},
"engines": {
"node": ">= 0.4"
@@ -19860,9 +19607,9 @@
"integrity": "sha512-sIVQCiRWOymHbVD1Aw/T9/ijbPYAVGBlgGYd1N9MRKfcyBNSpjr87Vg9nSHm+RCT8ELrvK8IJYJV0QRJuVUkCQ=="
},
"node_modules/google-auth-library": {
- "version": "9.4.2",
- "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.4.2.tgz",
- "integrity": "sha512-rTLO4gjhqqo3WvYKL5IdtlCvRqeQ4hxUx/p4lObobY2xotFW3bCQC+Qf1N51CYOfiqfMecdMwW9RIo7dFWYjqw==",
+ "version": "9.6.3",
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.6.3.tgz",
+ "integrity": "sha512-4CacM29MLC2eT9Cey5GDVK4Q8t+MMp8+OEdOaqD9MG6b0dOyLORaaeJMPQ7EESVgm/+z5EKYyFLxgzBJlJgyHQ==",
"dependencies": {
"base64-js": "^1.3.0",
"ecdsa-sig-formatter": "^1.0.11",
@@ -19888,9 +19635,9 @@
}
},
"node_modules/googleapis": {
- "version": "129.0.0",
- "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-129.0.0.tgz",
- "integrity": "sha512-gFatrzby+oh/GxEeMhJOKzgs9eG7yksRcTon9b+kPie4ZnDSgGQ85JgtUaBtLSBkcKpUKukdSP6Km1aCjs4y4Q==",
+ "version": "133.0.0",
+ "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-133.0.0.tgz",
+ "integrity": "sha512-6xyc49j+x7N4smawJs/q1i7mbSkt6SYUWWd9RbsmmDW7gRv+mhwZ4xT+XkPihZcNyo/diF//543WZq4szdS74w==",
"dependencies": {
"google-auth-library": "^9.0.0",
"googleapis-common": "^7.0.0"
@@ -19940,9 +19687,9 @@
}
},
"node_modules/got": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/got/-/got-14.0.0.tgz",
- "integrity": "sha512-X01vTgaX9SwaMq5DfImvS+3GMQFFs5HtrrlS9CuzUSzkxAf/tWGEyynuI+Qy7BjciMczZGjyVSmawYbP4eYhYA==",
+ "version": "14.2.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-14.2.0.tgz",
+ "integrity": "sha512-dBq2KkHcQl3AwPoIWsLsQScCPpUgRulz1qZVthjPYKYOPmYfBnekR3vxecjZbm91Vc3JUGnV9mqFX7B+Fe2quw==",
"dependencies": {
"@sindresorhus/is": "^6.1.0",
"@szmarczak/http-timer": "^5.0.1",
@@ -19980,9 +19727,9 @@
"integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA=="
},
"node_modules/gtoken": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.0.1.tgz",
- "integrity": "sha512-KcFVtoP1CVFtQu0aSk3AyAt2og66PFhZAlkUOuWKwzMLoulHXG5W5wE5xAnHb+yl3/wEFoqGW7/cDGMU8igDZQ==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz",
+ "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==",
"dependencies": {
"gaxios": "^6.0.0",
"jws": "^4.0.0"
@@ -20018,14 +19765,6 @@
"node": ">=6"
}
},
- "node_modules/hard-rejection": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
- "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/has-bigints": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
@@ -20044,11 +19783,11 @@
}
},
"node_modules/has-property-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
- "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
"dependencies": {
- "get-intrinsic": "^1.2.2"
+ "es-define-property": "^1.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -20077,11 +19816,11 @@
}
},
"node_modules/has-tostringtag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"dependencies": {
- "has-symbols": "^1.0.2"
+ "has-symbols": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
@@ -20096,9 +19835,9 @@
"integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
},
"node_modules/hasown": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
- "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz",
+ "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==",
"dependencies": {
"function-bind": "^1.1.2"
},
@@ -20273,33 +20012,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/hosted-git-info": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/hosted-git-info/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/hosted-git-info/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/howler": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/howler/-/howler-2.2.4.tgz",
@@ -20552,9 +20264,9 @@
}
},
"node_modules/http-proxy-agent": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz",
- "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.1.tgz",
+ "integrity": "sha512-My1KCEPs6A0hb4qCVzYp8iEvA8j8YqcvXLZZH8C9OFuTYpYjHE7N2dtG3mRl1HMD4+VGXpF3XcDVcxGBT7yDZQ==",
"dev": true,
"dependencies": {
"agent-base": "^7.1.0",
@@ -20750,9 +20462,9 @@
]
},
"node_modules/ignore": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
- "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
+ "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
"engines": {
"node": ">= 4"
}
@@ -20886,7 +20598,7 @@
"node_modules/image-size-stream/node_modules/image-size": {
"version": "0.3.5",
"resolved": "git+ssh://git@github.com/netroy/image-size.git#da2c863807a3e9602617bdd357b0de3ab4a064c1",
- "integrity": "sha512-nF4/PT7i5t72LJKRBAXfM8PCzUDQurOUzPsNUjQDpUhFpLNuCpSY0+XIHNcc/LtoU3GqSCK3wQDU+CCty3Bfcw==",
+ "integrity": "sha512-bOV/01RFEAMM7OJU4alHoipipEYAdVk1W9rto2aN1ZnEZsZ1A1OCVJJ2iMaaJIKidVXGZNbP9knmW/3wWTZ4/Q==",
"license": "MIT",
"bin": {
"image-size": "bin/image-size"
@@ -20922,9 +20634,9 @@
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
},
"node_modules/immutable": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz",
- "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA=="
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz",
+ "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw=="
},
"node_modules/import-fresh": {
"version": "3.3.0",
@@ -21035,14 +20747,6 @@
"node": ">=0.8.19"
}
},
- "node_modules/indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -21300,12 +21004,12 @@
}
},
"node_modules/internal-slot": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz",
- "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
+ "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
"dev": true,
"dependencies": {
- "get-intrinsic": "^1.2.2",
+ "es-errors": "^1.3.0",
"hasown": "^2.0.0",
"side-channel": "^1.0.4"
},
@@ -21356,13 +21060,13 @@
}
},
"node_modules/intl-messageformat": {
- "version": "10.5.10",
- "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.10.tgz",
- "integrity": "sha512-3yzwX6t/my9WRtNiqP05r+/UkpWxwstQiwaHAiuHmDRt7ykzWJ+nceOVjNLZYYWGiSltY+C+Likd8OIVkASepw==",
+ "version": "10.5.11",
+ "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz",
+ "integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==",
"dependencies": {
"@formatjs/ecma402-abstract": "1.18.2",
"@formatjs/fast-memoize": "2.2.0",
- "@formatjs/icu-messageformat-parser": "2.7.5",
+ "@formatjs/icu-messageformat-parser": "2.7.6",
"tslib": "^2.4.0"
}
},
@@ -21420,14 +21124,16 @@
}
},
"node_modules/is-array-buffer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
- "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
+ "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "is-typed-array": "^1.1.10"
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -21705,14 +21411,6 @@
"node": ">=8"
}
},
- "node_modules/is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-plain-object": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
@@ -21813,11 +21511,11 @@
}
},
"node_modules/is-typed-array": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
- "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+ "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
"dependencies": {
- "which-typed-array": "^1.1.11"
+ "which-typed-array": "^1.1.14"
},
"engines": {
"node": ">= 0.4"
@@ -22119,12 +21817,11 @@
"integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg=="
},
"node_modules/jsdom": {
- "version": "23.2.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.2.0.tgz",
- "integrity": "sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==",
+ "version": "24.0.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.0.0.tgz",
+ "integrity": "sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==",
"dev": true,
"dependencies": {
- "@asamuzakjp/dom-selector": "^2.0.1",
"cssstyle": "^4.0.1",
"data-urls": "^5.0.0",
"decimal.js": "^10.4.3",
@@ -22133,6 +21830,7 @@
"http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.2",
"is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.7",
"parse5": "^7.1.2",
"rrweb-cssom": "^0.6.0",
"saxes": "^6.0.0",
@@ -22171,9 +21869,9 @@
}
},
"node_modules/jsdom/node_modules/https-proxy-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==",
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.3.tgz",
+ "integrity": "sha512-kCnwztfX0KZJSLOBrcL0emLeFako55NWMovvyPP2AjsghNk9RB1yjSI+jVumPHYZsNXegNoqupSW9IY3afSH8w==",
"dev": true,
"dependencies": {
"agent-base": "^7.0.2",
@@ -22833,9 +22531,9 @@
}
},
"node_modules/magic-string": {
- "version": "0.30.5",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
- "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
+ "version": "0.30.7",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz",
+ "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15"
},
@@ -22935,21 +22633,10 @@
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
"dev": true
},
- "node_modules/map-obj": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
- "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/mapbox-gl": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-3.1.1.tgz",
- "integrity": "sha512-sjtKnddDKrPUHYP6lhFYrit+qJkfPC+PVmbGF0VFhHHKCPy4iOFEMCdFgOv2F7AfA1CHK66Kx2Cjau6q8uTTEg==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-3.1.2.tgz",
+ "integrity": "sha512-+KoLEqZM8GxO/ViPz9tKgGURteKne+Y0pXiVCNsowymiZFH3FiL6dt9oZE95owMg5XqD3Kygz5mfchR1ZgmWlA==",
"dependencies": {
"@mapbox/geojson-rewind": "^0.5.2",
"@mapbox/jsonlint-lines-primitives": "^2.0.2",
@@ -23195,9 +22882,9 @@
}
},
"node_modules/mdast-util-mdx-jsx": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.0.0.tgz",
- "integrity": "sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.0.tgz",
+ "integrity": "sha512-A8AJHlR7/wPQ3+Jre1+1rq040fX9A4Q1jG8JxmSNp/PLPHg80A6475wxTp3KzHpApFH6yWxFotHrJQA3dXP6/w==",
"dependencies": {
"@types/estree-jsx": "^1.0.0",
"@types/hast": "^3.0.0",
@@ -23236,9 +22923,9 @@
}
},
"node_modules/mdast-util-phrasing": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz",
- "integrity": "sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
+ "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
"dependencies": {
"@types/mdast": "^4.0.0",
"unist-util-is": "^6.0.0"
@@ -23299,12 +22986,6 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/mdn-data": {
- "version": "2.0.30",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
- "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
- "dev": true
- },
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -23342,31 +23023,6 @@
"node": ">= 0.10.0"
}
},
- "node_modules/meow": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
- "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
- "dependencies": {
- "@types/minimist": "^1.2.0",
- "camelcase-keys": "^6.2.2",
- "decamelize": "^1.2.0",
- "decamelize-keys": "^1.1.0",
- "hard-rejection": "^2.1.0",
- "minimist-options": "4.1.0",
- "normalize-package-data": "^3.0.0",
- "read-pkg-up": "^7.0.1",
- "redent": "^3.0.0",
- "trim-newlines": "^3.0.0",
- "type-fest": "^0.18.0",
- "yargs-parser": "^20.2.3"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -23669,9 +23325,9 @@
}
},
"node_modules/micromark-util-character": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz",
- "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
+ "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -23990,14 +23646,6 @@
"dom-walk": "^0.1.0"
}
},
- "node_modules/min-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
@@ -24025,19 +23673,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/minimist-options": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
- "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
- "dependencies": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0",
- "kind-of": "^6.0.3"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/minipass": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
@@ -24156,9 +23791,9 @@
}
},
"node_modules/mocha": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz",
- "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==",
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz",
+ "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==",
"dev": true,
"dependencies": {
"ansi-colors": "4.1.1",
@@ -24168,13 +23803,12 @@
"diff": "5.0.0",
"escape-string-regexp": "4.0.0",
"find-up": "5.0.0",
- "glob": "7.2.0",
+ "glob": "8.1.0",
"he": "1.2.0",
"js-yaml": "4.1.0",
"log-symbols": "4.1.0",
"minimatch": "5.0.1",
"ms": "2.1.3",
- "nanoid": "3.3.3",
"serialize-javascript": "6.0.0",
"strip-json-comments": "3.1.1",
"supports-color": "8.1.1",
@@ -24189,10 +23823,6 @@
},
"engines": {
"node": ">= 14.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/mochajs"
}
},
"node_modules/mocha/node_modules/argparse": {
@@ -24201,46 +23831,43 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
- "node_modules/mocha/node_modules/glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+ "node_modules/mocha/node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
"dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
},
"engines": {
- "node": "*"
+ "node": ">= 8.10.0"
},
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/mocha/node_modules/glob/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
}
},
- "node_modules/mocha/node_modules/glob/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/mocha/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "is-glob": "^4.0.1"
},
"engines": {
- "node": "*"
+ "node": ">= 6"
}
},
"node_modules/mocha/node_modules/has-flag": {
@@ -24282,18 +23909,6 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
- "node_modules/mocha/node_modules/nanoid": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz",
- "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==",
- "dev": true,
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
"node_modules/mocha/node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
@@ -24396,9 +24011,9 @@
}
},
"node_modules/mongoose": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.1.1.tgz",
- "integrity": "sha512-DbLb0NsiEXmaqLOpEz+AtAsgwhRw6f25gwa1dF5R7jj6lS1D8X6uTdhBSC8GDVtOwe5Tfw2EL7nTn6hiJT3Bgg==",
+ "version": "8.1.2",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.1.2.tgz",
+ "integrity": "sha512-5KMq7k6KmFCIB8/YMKMFsWdsdNkBwuARDRHDRpp5GKC78eT0LwHIaMEKo6gDUg3zBuMoy9OdcM/6f4dkW06C/A==",
"dependencies": {
"bson": "^6.2.0",
"kareem": "2.5.1",
@@ -24706,9 +24321,9 @@
}
},
"node_modules/nodemailer": {
- "version": "6.9.8",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.8.tgz",
- "integrity": "sha512-cfrYUk16e67Ks051i4CntM9kshRYei1/o/Gi8K1d+R34OIs21xdFnW7Pt7EucmVKA0LKtqUGNcjMZ7ehjl49mQ==",
+ "version": "6.9.9",
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.9.tgz",
+ "integrity": "sha512-dexTll8zqQoVJEZPwQAKzxxtFn0qTnjdQTchoU6Re9BUUGBJiOy3YMn/0ShTW6J5M0dfQ1NeDeRTTl4oIWgQMA==",
"engines": {
"node": ">=6.0.0"
}
@@ -24772,9 +24387,9 @@
}
},
"node_modules/nodemon/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -24804,50 +24419,6 @@
"node": ">=6"
}
},
- "node_modules/normalize-package-data": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
- "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
- "dependencies": {
- "hosted-git-info": "^4.0.1",
- "is-core-module": "^2.5.0",
- "semver": "^7.3.4",
- "validate-npm-package-license": "^3.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/normalize-package-data/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/normalize-package-data/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -27434,10 +27005,16 @@
"url": "https://github.com/fb55/nth-check?sponsor=1"
}
},
+ "node_modules/nwsapi": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz",
+ "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==",
+ "dev": true
+ },
"node_modules/oauth": {
- "version": "0.9.15",
- "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz",
- "integrity": "sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA=="
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.10.0.tgz",
+ "integrity": "sha512-1orQ9MT1vHFGQxhuy7E/0gECD3fd2fCC+PIX+/jgmU/gI3EpRocXtmtvxCO5x3WZ443FLTLFWNDjl5MPJf9u+Q=="
},
"node_modules/oauth-sign": {
"version": "0.9.0",
@@ -27595,15 +27172,16 @@
}
},
"node_modules/object.groupby": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz",
- "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.2.tgz",
+ "integrity": "sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1"
+ "array.prototype.filter": "^1.0.3",
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.0.0"
}
},
"node_modules/object.hasown": {
@@ -27707,9 +27285,9 @@
}
},
"node_modules/openai": {
- "version": "4.25.0",
- "resolved": "https://registry.npmjs.org/openai/-/openai-4.25.0.tgz",
- "integrity": "sha512-qLMFOizjxKuDfQkBrczZPYo6XVL4bdcuz9MR11Q+M91kGcs8dQw+O90nRcC+qWuhaGphQkfXQJMn4cd7Yew3Kg==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/openai/-/openai-4.28.0.tgz",
+ "integrity": "sha512-JM8fhcpmpGN0vrUwGquYIzdcEQHtFuom6sRCbbCM6CfzZXNuRk33G7KfeRAIfnaCxSpzrP5iHtwJzIm6biUZ2Q==",
"dependencies": {
"@types/node": "^18.11.18",
"@types/node-fetch": "^2.6.4",
@@ -27726,9 +27304,9 @@
}
},
"node_modules/openai/node_modules/@types/node": {
- "version": "18.19.9",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.9.tgz",
- "integrity": "sha512-oZFKlC8l5YtzGQNT4zC2PiSSKzQVZ8bAwwd+EYdPLtyk0nSEq6O16SkK+rkkT2eflDAbormJgEF3QnH3oDrTSw==",
+ "version": "18.19.16",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.16.tgz",
+ "integrity": "sha512-mjtrR7Wco9ZwcGBc1zre6fENlj9z42/+0W26lBGtGBTPiR3Zm9iZAaiPhxreG6magwGCILLVYwlQ48GjAaqM6w==",
"dependencies": {
"undici-types": "~5.26.4"
}
@@ -27905,24 +27483,12 @@
"integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA=="
},
"node_modules/parse-bmfont-xml": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz",
- "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.5.tgz",
+ "integrity": "sha512-wgM+ANC5G5Yu08/IEFMxr9x+PpHg+R8jf8U8q0P91TBDaTdjcf4IwupUiPwEcJJKNqSshC2tOkDQW3Q30s1efQ==",
"dependencies": {
"xml-parse-from-string": "^1.0.0",
- "xml2js": "^0.4.5"
- }
- },
- "node_modules/parse-bmfont-xml/node_modules/xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
- "dependencies": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~11.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
+ "xml2js": "^0.5.0"
}
},
"node_modules/parse-entities": {
@@ -28059,12 +27625,12 @@
}
},
"node_modules/passport-oauth2": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.7.0.tgz",
- "integrity": "sha512-j2gf34szdTF2Onw3+76alNnaAExlUmHvkc7cL+cmaS5NzHzDP/BvFHJruueQ9XAeNOdpI+CH+PWid8RA7KCwAQ==",
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.8.0.tgz",
+ "integrity": "sha512-cjsQbOrXIDE4P8nNb3FQRCCmJJ/utnFKEz2NX209f7KOHPoX18gF7gBzBbLLsj2/je4KrgiwLLGjf0lm9rtTBA==",
"dependencies": {
"base64url": "3.x.x",
- "oauth": "0.9.x",
+ "oauth": "0.10.x",
"passport-strategy": "1.x.x",
"uid2": "0.0.x",
"utils-merge": "1.x.x"
@@ -28135,9 +27701,9 @@
}
},
"node_modules/path-scurry/node_modules/lru-cache": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
- "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
+ "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
"engines": {
"node": "14 || >=16.14"
}
@@ -28441,9 +28007,9 @@
"integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
},
"node_modules/postcss": {
- "version": "8.4.33",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz",
- "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==",
+ "version": "8.4.35",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz",
+ "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==",
"funding": [
{
"type": "opencollective",
@@ -28563,9 +28129,9 @@
}
},
"node_modules/prettier": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz",
- "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==",
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz",
+ "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==",
"dev": true,
"bin": {
"prettier": "bin/prettier.cjs"
@@ -28699,9 +28265,9 @@
}
},
"node_modules/prosemirror-inputrules": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.3.0.tgz",
- "integrity": "sha512-z1GRP2vhh5CihYMQYsJSa1cOwXb3SYxALXOIfAkX8nZserARtl9LiL+CEl+T+OFIsXc3mJIHKhbsmRzC0HDAXA==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz",
+ "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==",
"dependencies": {
"prosemirror-state": "^1.0.0",
"prosemirror-transform": "^1.0.0"
@@ -28906,15 +28472,6 @@
"resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz",
"integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ=="
},
- "node_modules/pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -29180,9 +28737,9 @@
}
},
"node_modules/react-awesome-reveal": {
- "version": "4.2.7",
- "resolved": "https://registry.npmjs.org/react-awesome-reveal/-/react-awesome-reveal-4.2.7.tgz",
- "integrity": "sha512-5vETORNz6df0+N+RdPlInw73WBeccfFh73JamnhfbQWwcqCmdeL0Ap5pX9RyRlTMdag5yXAH+FWN8qrnIsyWVA==",
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/react-awesome-reveal/-/react-awesome-reveal-4.2.8.tgz",
+ "integrity": "sha512-G961DVTMwFbkmg7z+M5omz8Y+iicLc9gKm8hmtwJ/lFnYx9fEg7lSY/AyaNZFXYKNfAS5lv/WzL72kNRMCJDZA==",
"funding": [
{
"type": "github",
@@ -29194,7 +28751,7 @@
}
],
"dependencies": {
- "react-intersection-observer": "^9.5.3",
+ "react-intersection-observer": "^9.6.0",
"react-is": "^18.2.0"
},
"peerDependencies": {
@@ -29246,22 +28803,30 @@
"integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
},
"node_modules/react-datepicker": {
- "version": "4.25.0",
- "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.25.0.tgz",
- "integrity": "sha512-zB7CSi44SJ0sqo8hUQ3BF1saE/knn7u25qEMTO1CQGofY1VAKahO8k9drZtp0cfW1DMfoYLR3uSY1/uMvbEzbg==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-6.1.0.tgz",
+ "integrity": "sha512-8uz+hAOpvHqZGvD4Ky1hJ0/tLI4S9B0Gu9LV7LtLxRKXODs/xrxEay0aMVp7AW9iizTeImZh/6aA00fFaRZpJw==",
"dependencies": {
- "@popperjs/core": "^2.11.8",
+ "@floating-ui/react": "^0.26.2",
"classnames": "^2.2.6",
- "date-fns": "^2.30.0",
+ "date-fns": "^3.3.1",
"prop-types": "^15.7.2",
- "react-onclickoutside": "^6.13.0",
- "react-popper": "^2.3.0"
+ "react-onclickoutside": "^6.13.0"
},
"peerDependencies": {
"react": "^16.9.0 || ^17 || ^18",
"react-dom": "^16.9.0 || ^17 || ^18"
}
},
+ "node_modules/react-datepicker/node_modules/date-fns": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.3.1.tgz",
+ "integrity": "sha512-y8e109LYGgoQDveiEBD3DYXKba1jWf5BA8YU1FL5Tvm0BTdEfy54WLCwnuYWZNnzzvALy/QQ4Hov+Q9RVRv+Zw==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/kossnocorp"
+ }
+ },
"node_modules/react-dom": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
@@ -29298,7 +28863,8 @@
"node_modules/react-fast-compare": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
- "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
+ "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==",
+ "dev": true
},
"node_modules/react-grid-layout": {
"version": "1.4.4",
@@ -29326,11 +28892,17 @@
}
},
"node_modules/react-intersection-observer": {
- "version": "9.5.3",
- "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.5.3.tgz",
- "integrity": "sha512-NJzagSdUPS5rPhaLsHXYeJbsvdpbJwL6yCHtMk91hc0ufQ2BnXis+0QQ9NBh6n9n+Q3OyjR6OQLShYbaNBkThQ==",
+ "version": "9.8.0",
+ "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.8.0.tgz",
+ "integrity": "sha512-wXHvMQUsTagh3X0Z6jDtGkIXc3VVCd2tjDRYR9kII3GKrZr0XF0xtpfdamo2n8BSF+zzfeeBVOTjxZWpBp9X0g==",
"peerDependencies": {
- "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
+ "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "react-dom": {
+ "optional": true
+ }
}
},
"node_modules/react-is": {
@@ -29379,11 +28951,6 @@
"@types/react": "^17"
}
},
- "node_modules/react-lifecycles-compat": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
- "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
- },
"node_modules/react-loading": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/react-loading/-/react-loading-2.0.3.tgz",
@@ -29473,6 +29040,7 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz",
"integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==",
+ "dev": true,
"dependencies": {
"react-fast-compare": "^3.0.1",
"warning": "^4.0.2"
@@ -29516,25 +29084,17 @@
}
},
"node_modules/react-smooth": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-2.0.5.tgz",
- "integrity": "sha512-BMP2Ad42tD60h0JW6BFaib+RJuV5dsXJK9Baxiv/HlNFjvRLqA9xrNKxVWnUIZPQfzUwGXIlU/dSYLU+54YGQA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.0.tgz",
+ "integrity": "sha512-2NMXOBY1uVUQx1jBeENGA497HK20y6CPGYL1ZnJLeoQ8rrc3UfmOM82sRxtzpcoCkUMy4CS0RGylfuVhuFjBgg==",
"dependencies": {
- "fast-equals": "^5.0.0",
- "react-transition-group": "2.9.0"
+ "fast-equals": "^5.0.1",
+ "prop-types": "^15.8.1",
+ "react-transition-group": "^4.4.5"
},
"peerDependencies": {
- "prop-types": "^15.6.0",
- "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/react-smooth/node_modules/dom-helpers": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz",
- "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==",
- "dependencies": {
- "@babel/runtime": "^7.1.2"
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/react-smooth/node_modules/fast-equals": {
@@ -29545,21 +29105,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/react-smooth/node_modules/react-transition-group": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz",
- "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==",
- "dependencies": {
- "dom-helpers": "^3.4.0",
- "loose-envify": "^1.4.0",
- "prop-types": "^15.6.2",
- "react-lifecycles-compat": "^3.0.4"
- },
- "peerDependencies": {
- "react": ">=15.0.0",
- "react-dom": ">=15.0.0"
- }
- },
"node_modules/react-themeable": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/react-themeable/-/react-themeable-1.1.0.tgz",
@@ -29602,130 +29147,29 @@
"react-dom": ">= 15.0.0"
}
},
- "node_modules/reactcss": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz",
- "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==",
- "dependencies": {
- "lodash": "^4.0.1"
- }
- },
- "node_modules/read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "dependencies": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "dependencies": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-pkg-up/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg-up/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "node_modules/react-xarrows": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/react-xarrows/-/react-xarrows-2.0.2.tgz",
+ "integrity": "sha512-tDlAqaxHNmy0vegW/6NdhoWyXJq1LANX/WUAlHyzoHe9BwFVnJPPDghmDjYeVr7XWFmBrVTUrHsrW7GKYI6HtQ==",
"dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
+ "@types/prop-types": "^15.7.3",
+ "lodash": "^4.17.21",
+ "prop-types": "^15.7.2"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dependencies": {
- "p-limit": "^2.2.0"
+ "type": "individual",
+ "url": "https://www.paypal.com/donate?hosted_button_id=CRQ343F9VTRS8"
},
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg-up/node_modules/type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "engines": {
- "node": ">=8"
+ "peerDependencies": {
+ "react": ">=16.8.0"
}
},
- "node_modules/read-pkg/node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
- },
- "node_modules/read-pkg/node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "node_modules/reactcss": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz",
+ "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==",
"dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/read-pkg/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/read-pkg/node_modules/type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
- "engines": {
- "node": ">=8"
+ "lodash": "^4.0.1"
}
},
"node_modules/readable-stream": {
@@ -29792,15 +29236,15 @@
"integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg=="
},
"node_modules/recharts": {
- "version": "2.10.4",
- "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.10.4.tgz",
- "integrity": "sha512-/Q7/wdf8bW91lN3NEeCjL9RWfaiXQViJFgdnas4Eix/I8B9HAI3tHHK/CW/zDfgRMh4fzW1zlfjoz1IAapLO1Q==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.12.0.tgz",
+ "integrity": "sha512-rVNcdNQ5b7+40Ue7mcEKZJyEv+3SUk2bDEVvOyXPDXXVE7TU3lrvnJUgAvO36hSzhRP2DnAamKXvHLFIFOU0Ww==",
"dependencies": {
"clsx": "^2.0.0",
"eventemitter3": "^4.0.1",
"lodash": "^4.17.19",
"react-is": "^16.10.2",
- "react-smooth": "^2.0.5",
+ "react-smooth": "^4.0.0",
"recharts-scale": "^0.4.4",
"tiny-invariant": "^1.3.1",
"victory-vendor": "^36.6.8"
@@ -29809,7 +29253,6 @@
"node": ">=14"
},
"peerDependencies": {
- "prop-types": "^15.6.0",
"react": "^16.0.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0"
}
@@ -29843,18 +29286,6 @@
"node": ">= 0.10"
}
},
- "node_modules/redent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
- "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
- "dependencies": {
- "indent-string": "^4.0.0",
- "strip-indent": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/reduce-flatten": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz",
@@ -29864,15 +29295,16 @@
}
},
"node_modules/reflect.getprototypeof": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz",
- "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz",
+ "integrity": "sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1",
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.0.0",
+ "get-intrinsic": "^1.2.3",
"globalthis": "^1.0.3",
"which-builtin-type": "^1.1.3"
},
@@ -29913,13 +29345,14 @@
}
},
"node_modules/regexp.prototype.flags": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
- "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==",
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
+ "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "set-function-name": "^2.0.0"
+ "call-bind": "^1.0.6",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "set-function-name": "^2.0.1"
},
"engines": {
"node": ">= 0.4"
@@ -30560,13 +29993,13 @@
]
},
"node_modules/safe-regex-test": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.2.tgz",
- "integrity": "sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
+ "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.5",
- "get-intrinsic": "^1.2.2",
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
"is-regex": "^1.1.4"
},
"engines": {
@@ -30919,13 +30352,14 @@
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
},
"node_modules/set-function-length": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz",
- "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz",
+ "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==",
"dependencies": {
- "define-data-property": "^1.1.1",
+ "define-data-property": "^1.1.2",
+ "es-errors": "^1.3.0",
"function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.2",
+ "get-intrinsic": "^1.2.3",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.1"
},
@@ -31075,13 +30509,17 @@
}
},
"node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz",
+ "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==",
"dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -31184,9 +30622,9 @@
}
},
"node_modules/simple-update-notifier/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -31403,34 +30841,6 @@
"memory-pager": "^1.0.2"
}
},
- "node_modules/spdx-correct": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
- "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-exceptions": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz",
- "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw=="
- },
- "node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.16",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz",
- "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw=="
- },
"node_modules/spdy": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
@@ -31602,12 +31012,15 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/streamx": {
- "version": "2.15.6",
- "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz",
- "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==",
+ "version": "2.15.8",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.8.tgz",
+ "integrity": "sha512-6pwMeMY/SuISiRsuS8TeIrAzyFbG5gGPHFQsYjUr/pbBadaL1PCWmzKw+CHZSwainfvcF6Si6cVLq4XTEwswFQ==",
"dependencies": {
"fast-fifo": "^1.1.0",
"queue-tick": "^1.0.1"
+ },
+ "optionalDependencies": {
+ "bare-events": "^2.2.0"
}
},
"node_modules/strict-uri-encode": {
@@ -31829,17 +31242,6 @@
"node": ">=6"
}
},
- "node_modules/strip-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
- "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
- "dependencies": {
- "min-indent": "^1.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -31971,20 +31373,6 @@
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
"integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
},
- "node_modules/subtag": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/subtag/-/subtag-0.5.0.tgz",
- "integrity": "sha512-CaIBcTSb/nyk4xiiSOtZYz1B+F12ZxW8NEp54CdT+84vmh/h4sUnHGC6+KQXUfED8u22PQjCYWfZny8d2ELXwg=="
- },
- "node_modules/suggestions": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/suggestions/-/suggestions-1.7.1.tgz",
- "integrity": "sha512-gl5YPAhPYl07JZ5obiD9nTZsg4SyZswAQU/NNtnYiSnFkI3+ZHuXAiEsYm7AaZ71E0LXSFaGVaulGSWN3Gd71A==",
- "dependencies": {
- "fuzzy": "^0.1.1",
- "xtend": "^4.0.0"
- }
- },
"node_modules/supercluster": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz",
@@ -32037,6 +31425,11 @@
"url": "https://opencollective.com/unts"
}
},
+ "node_modules/tabbable": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
+ "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew=="
+ },
"node_modules/table": {
"version": "5.4.6",
"resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
@@ -32157,9 +31550,9 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/terser": {
- "version": "5.27.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz",
- "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==",
+ "version": "5.27.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.1.tgz",
+ "integrity": "sha512-29wAr6UU/oQpnTw5HoadwjUZnFQXGdOfj0LjZ4sVxzqwHh/QVkvr7m8y9WoR4iN3FRitVduTc6KdjcW38Npsug==",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
"acorn": "^8.8.2",
@@ -32239,7 +31632,8 @@
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
},
"node_modules/textarea-caret": {
"version": "3.1.0",
@@ -32470,18 +31864,10 @@
"url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/trim-newlines": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
- "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/trough": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz",
- "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
+ "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
@@ -32583,9 +31969,9 @@
}
},
"node_modules/ts-loader/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
@@ -33093,17 +32479,6 @@
"node": ">= 0.8.0"
}
},
- "node_modules/type-fest": {
- "version": "0.18.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
- "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
@@ -33117,14 +32492,14 @@
}
},
"node_modules/typed-array-buffer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz",
- "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz",
+ "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.1",
- "is-typed-array": "^1.1.10"
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.13"
},
"engines": {
"node": ">= 0.4"
@@ -33199,9 +32574,9 @@
"integrity": "sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ=="
},
"node_modules/typescript-language-server": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/typescript-language-server/-/typescript-language-server-4.3.1.tgz",
- "integrity": "sha512-DyRbGI9bM35tRq7THqOEUkksng73iZt7s4sfdrqjoX6Ij3BXV2rT95V5x20A0I8jUCV/DU3osOMC+2wPL+WXNQ==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/typescript-language-server/-/typescript-language-server-4.3.3.tgz",
+ "integrity": "sha512-3QLj57Ru9S6zv10sa4z1pA3TIR1Rdkd04Ke0EszbO4fx5PLdlYhlC/PMxwlyxls9wrZs7wPCME1Ru0s1Gabz4Q==",
"bin": {
"typescript-language-server": "lib/cli.mjs"
},
@@ -33686,15 +33061,6 @@
"resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz",
"integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA=="
},
- "node_modules/validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
"node_modules/validator": {
"version": "13.11.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz",
@@ -33765,9 +33131,9 @@
}
},
"node_modules/victory-vendor": {
- "version": "36.8.2",
- "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.8.2.tgz",
- "integrity": "sha512-NfSQi7ISCdBbDpn3b6rg+8RpFZmWIM9mcks48BbogHE2F6h1XKdA34oiCKP5hP1OGvTotDRzsexiJKzrK4Exuw==",
+ "version": "36.9.1",
+ "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.1.tgz",
+ "integrity": "sha512-+pZIP+U3pEJdDCeFmsXwHzV7vNHQC/eIbHklfe2ZCZqayYRH7lQbHcVgsJ0XOOv27hWs4jH4MONgXxHMObTMSA==",
"dependencies": {
"@types/d3-array": "^3.0.3",
"@types/d3-ease": "^3.0.0",
@@ -33883,9 +33249,9 @@
}
},
"node_modules/webpack": {
- "version": "5.90.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.0.tgz",
- "integrity": "sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w==",
+ "version": "5.90.1",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.1.tgz",
+ "integrity": "sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==",
"dependencies": {
"@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.5",
@@ -34032,12 +33398,13 @@
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
},
"node_modules/webpack-dev-middleware/node_modules/json-joy": {
- "version": "9.9.1",
- "resolved": "https://registry.npmjs.org/json-joy/-/json-joy-9.9.1.tgz",
- "integrity": "sha512-/d7th2nbQRBQ/nqTkBe6KjjvDciSwn9UICmndwk3Ed/Bk9AqkTRm4PnLVfXG4DKbT0rEY0nKnwE7NqZlqKE6kg==",
+ "version": "11.28.0",
+ "resolved": "https://registry.npmjs.org/json-joy/-/json-joy-11.28.0.tgz",
+ "integrity": "sha512-WTq2tYD2r+0rUFId4gtUjwejV20pArh4q2WRJKxJdwLlPFHyW94HwwB2vUr5lUJTVkehhhWEVLwOUI0MSacNIw==",
"dependencies": {
"arg": "^5.0.2",
- "hyperdyperid": "^1.2.0"
+ "hyperdyperid": "^1.2.0",
+ "thingies": "^1.14.1"
},
"bin": {
"jj": "bin/jj.js",
@@ -34062,11 +33429,11 @@
}
},
"node_modules/webpack-dev-middleware/node_modules/memfs": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.6.0.tgz",
- "integrity": "sha512-I6mhA1//KEZfKRQT9LujyW6lRbX7RkC24xKododIDO3AGShcaFAMKElv1yFGWX8fD4UaSiwasr3NeQ5TdtHY1A==",
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.7.0.tgz",
+ "integrity": "sha512-FGbf9Yz2gzXCUmpymkKnzAQOitriZQlIMtmnzb2LOcT0FTUdzL6AAwNGQrSOACx/UiW7XQsG65vrIA9+L01Edw==",
"dependencies": {
- "json-joy": "^9.2.0",
+ "json-joy": "^11.0.0",
"thingies": "^1.11.1"
},
"engines": {
@@ -34238,9 +33605,9 @@
}
},
"node_modules/webpack-hot-middleware": {
- "version": "2.26.0",
- "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.0.tgz",
- "integrity": "sha512-okzjec5sAEy4t+7rzdT8eRyxsk0FDSmBPN2KwX4Qd+6+oQCfe5Ve07+u7cJvofgB+B4w5/4dO4Pz0jhhHyyPLQ==",
+ "version": "2.26.1",
+ "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz",
+ "integrity": "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==",
"dev": true,
"dependencies": {
"ansi-html-community": "0.0.8",
@@ -34469,15 +33836,15 @@
}
},
"node_modules/which-typed-array": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz",
- "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz",
+ "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==",
"dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.4",
+ "available-typed-arrays": "^1.0.6",
+ "call-bind": "^1.0.5",
"for-each": "^0.3.3",
"gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0"
+ "has-tostringtag": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
diff --git a/package.json b/package.json
index 760099bd5..b27d50d54 100644
--- a/package.json
+++ b/package.json
@@ -77,7 +77,7 @@
"eslint-plugin-prettier": "^5.0.1",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-react-hooks": "^4.6.0",
- "jsdom": "^23.0.1",
+ "jsdom": "^24.0.0",
"mocha": "^10.2.0",
"prettier": "^3.1.0",
"react-type-animation": "^3.2.0",
@@ -109,7 +109,6 @@
"@fullcalendar/daygrid": "^6.1.10",
"@fullcalendar/multimonth": "^6.1.10",
"@internationalized/date": "^3.5.0",
- "@mapbox/mapbox-gl-geocoder": "^5.0.2",
"@mui/icons-material": "^5.14.19",
"@mui/material": "^5.14.19",
"@octokit/core": "^5.0.2",
@@ -131,7 +130,7 @@
"@types/pdf-parse": "^1.1.4",
"@types/reveal": "^4.2.0",
"@types/supercluster": "^7.1.3",
- "@types/web": "^0.0.135",
+ "@types/web": "^0.0.138",
"@webscopeio/react-textarea-autocomplete": "^4.9.2",
"adm-zip": "^0.5.10",
"archiver": "^6.0.1",
@@ -187,7 +186,7 @@
"function-plot": "^1.23.3",
"golden-layout": "^2.6.0",
"google-auth-library": "^9.4.1",
- "googleapis": "^129.0.0",
+ "googleapis": "^133.0.0",
"googlephotos": "^0.3.5",
"got": "^14.0.0",
"howler": "^2.2.4",
@@ -237,7 +236,7 @@
"prosemirror-commands": "^1.5.2",
"prosemirror-find-replace": "^0.9.0",
"prosemirror-history": "^1.3.2",
- "prosemirror-inputrules": "^1.3.0",
+ "prosemirror-inputrules": "^1.4.0",
"prosemirror-keymap": "^1.2.2",
"prosemirror-model": "^1.19.3",
"prosemirror-schema-list": "^1.3.0",
@@ -254,7 +253,7 @@
"react-awesome-reveal": "^4.2.7",
"react-color": "^2.19.3",
"react-compound-slider": "^3.4.0",
- "react-datepicker": "^4.24.0",
+ "react-datepicker": "^6.1.0",
"react-dom": "^18.2.0",
"react-grid-layout": "^1.4.4",
"react-icons": "^5.0.1",
@@ -265,6 +264,7 @@
"react-measure": "^2.5.2",
"react-resizable": "^3.0.5",
"react-select": "^5.8.0",
+ "react-xarrows": "^2.0.2",
"readline": "^1.3.0",
"recharts": "^2.10.3",
"rehype-raw": "^7.0.0",
diff --git a/src/Utils.ts b/src/Utils.ts
index 502cf7db7..e8bd35ac4 100644
--- a/src/Utils.ts
+++ b/src/Utils.ts
@@ -514,8 +514,8 @@ export function intersectRect(r1: { left: number; top: number; width: number; he
return !(r2.left > r1.left + r1.width || r2.left + r2.width < r1.left || r2.top > r1.top + r1.height || r2.top + r2.height < r1.top);
}
-export function stringHash(s?:string) {
- return !s? undefined: Math.abs(s.split('').reduce((a: any, b: any) => ((a) => a & a)((a << 5) - a + b.charCodeAt(0)),0));
+export function stringHash(s?: string) {
+ return !s ? undefined : Math.abs(s.split('').reduce((a: any, b: any) => (a => a & a)((a << 5) - a + b.charCodeAt(0)), 0));
}
export function percent2frac(percent: string) {
@@ -852,9 +852,11 @@ export function setupMoveUpEvents(
(target as any)._downX = (target as any)._lastX = e.clientX;
(target as any)._downY = (target as any)._lastY = e.clientY;
(target as any)._noClick = false;
+ var moving = false;
const _moveEvent = (e: PointerEvent): void => {
- if (Math.abs(e.clientX - (target as any)._downX) > Utils.DRAG_THRESHOLD || Math.abs(e.clientY - (target as any)._downY) > Utils.DRAG_THRESHOLD) {
+ if (moving || Math.abs(e.clientX - (target as any)._downX) > Utils.DRAG_THRESHOLD || Math.abs(e.clientY - (target as any)._downY) > Utils.DRAG_THRESHOLD) {
+ moving = true;
if ((target as any)._doubleTime) {
clearTimeout((target as any)._doubleTime);
(target as any)._doubleTime = undefined;
diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts
index ac418ecfe..2d2f5fe4a 100644
--- a/src/client/documents/Documents.ts
+++ b/src/client/documents/Documents.ts
@@ -252,6 +252,7 @@ export class DocumentOptions {
layout_hideDecorationTitle?: BOOLt = new BoolInfo('whether to suppress the document decortations title when selected');
_layout_hideContextMenu?: BOOLt = new BoolInfo('whether the context menu can be shown');
layout_borderRounding?: string;
+ _layout_modificationDate?: DATEt = new DateInfo('last modification date of doc layout', false);
_layout_nativeDimEditable?: BOOLt = new BoolInfo('native dimensions can be modified using document decoration reizers', false);
_layout_reflowVertical?: BOOLt = new BoolInfo('native height can be changed independent of width by dragging decoration resizers');
_layout_reflowHorizontal?: BOOLt = new BoolInfo('whether a doc with a native size can be horizonally resized, causing some form of reflow');
@@ -437,7 +438,7 @@ export class DocumentOptions {
clickFactory?: DOCt = new DocInfo('document to create when clicking on a button with a suitable onClick script', false);
onDragStart?: ScriptField; //script to execute at start of drag operation -- e.g., when a "creator" button is dragged this script generates a different document to drop
target?: Doc; // available for use in scripts. used to provide a document parameter to the script (Note, this is a convenience entry since any field could be used for parameterizing a script)
-
+ tags?: LISTt = new ListInfo('hashtags added to document, typically using a text view', true);
treeView_HideTitle?: BOOLt = new BoolInfo('whether to hide the top document title of a tree view');
treeView_HideUnrendered?: BOOLt = new BoolInfo("tells tree view not to display documents that have an 'layout_unrendered' tag unless they also have a treeView_FieldKey tag (presBox)");
treeView_HideHeaderIfTemplate?: BOOLt = new BoolInfo('whether to hide the header for a document in a tree view only if a childLayoutTemplate is provided (presBox)');
@@ -594,13 +595,12 @@ export namespace Docs {
layout: { view: LinkBox, dataField: 'link' },
options: {
childDontRegisterViews: true,
- onClick: FollowLinkScript(),
layout_hideLinkAnchors: true,
_height: 1,
_width: 1,
link: '',
link_description: '',
- backgroundColor: 'lightblue', // lightblue is default color for linking dot and link documents text comment area
+ color: 'lightBlue', // lightblue is default color for linking dot and link documents text comment area
_dropPropertiesToRemove: new List(['onClick']),
},
},
@@ -1459,7 +1459,7 @@ export namespace DocUtils {
const makeLink = action((linkDoc: Doc, showPopup?: number[]) => {
if (showPopup) {
- LinkManager.currentLink = linkDoc;
+ LinkManager.Instance.currentLink = linkDoc;
TaskCompletionBox.textDisplayed = 'Link Created';
TaskCompletionBox.popupX = showPopup[0];
@@ -1667,10 +1667,37 @@ export namespace DocUtils {
}
export function addDocumentCreatorMenuItems(docTextAdder: (d: Doc) => void, docAdder: (d: Doc) => void, x: number, y: number, simpleMenu: boolean = false, pivotField?: string, pivotValue?: string): void {
+ const documentList: ContextMenuProps[] = DocListCast(DocListCast(Doc.MyTools?.data)[0]?.data)
+ .filter(btnDoc => !btnDoc.hidden)
+ .map(btnDoc => Cast(btnDoc?.dragFactory, Doc, null))
+ .filter(doc => doc && doc !== Doc.UserDoc().emptyTrail && doc.title)
+ .map((dragDoc, i) => ({
+ description: ':' + StrCast(dragDoc.title).replace('Untitled ', ''),
+ event: undoable((args: { x: number; y: number }) => {
+ const newDoc = DocUtils.copyDragFactory(dragDoc);
+ if (newDoc) {
+ newDoc.author = Doc.CurrentUserEmail;
+ newDoc.x = x;
+ newDoc.y = y;
+ EquationBox.SelectOnLoad = newDoc[Id];
+ if (newDoc.type === DocumentType.RTF) FormattedTextBox.SetSelectOnLoad(newDoc);
+ if (pivotField) {
+ newDoc[pivotField] = pivotValue;
+ }
+ docAdder?.(newDoc);
+ }
+ }, StrCast(dragDoc.title)),
+ icon: Doc.toIcon(dragDoc),
+ })) as ContextMenuProps[];
+ ContextMenu.Instance.addItem({
+ description: 'Create document',
+ subitems: documentList,
+ icon: 'file',
+ });
!simpleMenu &&
ContextMenu.Instance.addItem({
- description: 'Quick Notes',
- subitems: DocListCast((Doc.UserDoc()['template_notes'] as Doc).data).map((note, i) => ({
+ description: 'Styled Notes',
+ subitems: DocListCast((Doc.UserDoc().template_notes as Doc).data).map((note, i) => ({
description: ':' + StrCast(note.title),
event: undoable((args: { x: number; y: number }) => {
const textDoc = Docs.Create.TextDocument('', {
@@ -1691,14 +1718,14 @@ export namespace DocUtils {
})) as ContextMenuProps[],
icon: 'sticky-note',
});
- const documentList: ContextMenuProps[] = DocListCast(DocListCast(Doc.MyTools?.data)[0]?.data)
+ const userDocList: ContextMenuProps[] = DocListCast(DocListCast(Doc.MyTools?.data)[1]?.data)
.filter(btnDoc => !btnDoc.hidden)
.map(btnDoc => Cast(btnDoc?.dragFactory, Doc, null))
.filter(doc => doc && doc !== Doc.UserDoc().emptyTrail && doc !== Doc.UserDoc().emptyNote && doc.title)
.map((dragDoc, i) => ({
description: ':' + StrCast(dragDoc.title).replace('Untitled ', ''),
event: undoable((args: { x: number; y: number }) => {
- const newDoc = DocUtils.copyDragFactory(dragDoc);
+ const newDoc = DocUtils.delegateDragFactory(dragDoc);
if (newDoc) {
newDoc.author = Doc.CurrentUserEmail;
newDoc.x = x;
@@ -1714,8 +1741,8 @@ export namespace DocUtils {
icon: Doc.toIcon(dragDoc),
})) as ContextMenuProps[];
ContextMenu.Instance.addItem({
- description: 'Create document',
- subitems: documentList,
+ description: 'User Templates',
+ subitems: userDocList,
icon: 'file',
});
} // applies a custom template to a document. the template is identified by it's short name (e.g, slideView not layout_slideView)
diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts
index 8f46f844c..714e33d25 100644
--- a/src/client/util/CurrentUserUtils.ts
+++ b/src/client/util/CurrentUserUtils.ts
@@ -17,7 +17,7 @@ import { CollectionViewType, DocumentType } from "../documents/DocumentTypes";
import { DocUtils, Docs, DocumentOptions, FInfo } from "../documents/Documents";
import { DashboardView } from "../views/DashboardView";
import { OverlayView } from "../views/OverlayView";
-import { TreeViewType } from "../views/collections/CollectionTreeView";
+import { CollectionTreeView, TreeViewType } from "../views/collections/CollectionTreeView";
import { Colors } from "../views/global/globalEnums";
import { media_state } from "../views/nodes/AudioBox";
import { OpenWhere } from "../views/nodes/DocumentView";
@@ -61,49 +61,16 @@ export let resolvedPorts: { server: number, socket: number };
export class CurrentUserUtils {
// initializes experimental advanced template views - slideView, headerView
- static setupExperimentalTemplateButtons(doc: Doc, tempDocs:Opt<Doc>, userBtns:Doc[]) {
- const requiredTypeNameFields:{btnOpts:DocumentOptions, templateOpts:DocumentOptions, template:(opts:DocumentOptions) => Doc}[] = [
- {
- btnOpts: { title: "slide", icon: "address-card" },
- templateOpts: { _width: 400, _height: 300, title: "slideView", _xMargin: 3, _yMargin: 3, isSystem: true },
- template: (opts:DocumentOptions) => Docs.Create.MultirowDocument(
- [
- Docs.Create.MulticolumnDocument([], { title: "hero", _height: 200, isSystem: true }),
- Docs.Create.TextDocument("", { title: "text", _layout_fitWidth:true, _height: 100, isSystem: true, _text_fontFamily: StrCast(Doc.UserDoc().fontFamily), _text_fontSize: StrCast(Doc.UserDoc().fontSize) })
- ], opts)
- },
- {
- btnOpts: { title: "mobile", icon: "mobile" },
- templateOpts: { title: "NEW MOBILE BUTTON", onClick: undefined, },
- template: (opts:DocumentOptions) => this.mobileButton(opts,
- [this.createToolButton({ ignoreClick: true, icon: "mobile", backgroundColor: "transparent" }),
- this.mobileTextContainer({},
- [this.mobileButtonText({}, "NEW MOBILE BUTTON"), this.mobileButtonInfo({}, "You can customize this button and make it your own.")])
- ]
- )
- },
- ];
- const requiredTypes = [...requiredTypeNameFields.map(({ btnOpts, template, templateOpts }) => {
- const tempBtn = DocListCast(tempDocs?.data)?.find(doc => doc.title === btnOpts.title);
- const reqdScripts = { onDragStart: '{ return copyDragFactory(this.dragFactory,this.openFactoryAsDelegate); }' };
- const assignBtnAndTempOpts = (templateBtn:Opt<Doc>, btnOpts:DocumentOptions, templateOptions:DocumentOptions) => {
- if (templateBtn) {
- DocUtils.AssignOpts(templateBtn,btnOpts);
- DocUtils.AssignDocField(templateBtn, "dragFactory", opts => template(opts), templateOptions);
- }
- return templateBtn;
- };
- return DocUtils.AssignScripts(assignBtnAndTempOpts(tempBtn, btnOpts, templateOpts) ?? this.createToolButton( {...btnOpts, dragFactory: MakeTemplate(template(templateOpts))}), reqdScripts);
- }), ...userBtns];
-
+ static setupUserDocumentCreatorButtons(doc: Doc, userDocTemplates: Opt<Doc>) {
+ const userTemplates = DocListCast(userDocTemplates?.data).filter(doc => !Doc.IsSystem(doc));
const reqdOpts:DocumentOptions = {
- title: "Experimental Tools", _xMargin: 0, _layout_showTitle: "title", _chromeHidden: true,
+ title: "User Tools", _xMargin: 0, _layout_showTitle: "title", _chromeHidden: true, hidden: false,
_dragOnlyWithinContainer: true, _layout_hideContextMenu: true, isSystem: true, _forceActive: true,
_layout_autoHeight: true, _width: 500, _height: 300, _layout_fitWidth: true, _columnWidth: 35, ignoreClick: true, _lockedPosition: true,
};
const reqdScripts = { dropConverter : "convertToButtons(dragData)" };
- const reqdFuncs = { hidden: "IsNoviceMode()" };
- return DocUtils.AssignScripts(DocUtils.AssignOpts(tempDocs, reqdOpts, requiredTypes) ?? Docs.Create.MasonryDocument(requiredTypes, reqdOpts), reqdScripts, reqdFuncs);
+ const reqdFuncs = { /* hidden: "IsNoviceMode()" */ };
+ return DocUtils.AssignScripts(DocUtils.AssignOpts(userDocTemplates, reqdOpts, userTemplates) ?? Docs.Create.MasonryDocument(userTemplates, reqdOpts), reqdScripts, reqdFuncs);
}
/// Initializes templates for editing click funcs of a document
@@ -111,7 +78,7 @@ export class CurrentUserUtils {
const tempClicks = DocCast(doc[field]);
const reqdClickOpts:DocumentOptions = {_width: 300, _height:200, isSystem: true};
const reqdTempOpts:{opts:DocumentOptions, script: string}[] = [
- { opts: { title: "Open In Target", targetScriptKey: "onChildClick"}, script: "docCastAsync(documentView?.containerViewPath().lastElement()?.Document.target).then((target) => target && (target.proto.data = new List([self])))"},
+ { opts: { title: "Open In Target", targetScriptKey: "onChildClick"}, script: "docCastAsync(documentView?.containerViewPath().lastElement()?.Document.target).then((target) => target && (target.proto.data = new List([this])))"},
{ opts: { title: "Open Detail On Right", targetScriptKey: "onChildDoubleClick"}, script: `openDoc(this.doubleClickView.${OpenWhere.addRight})`}];
const reqdClickList = reqdTempOpts.map(opts => {
const allOpts = {...reqdClickOpts, ...opts.opts};
@@ -148,7 +115,7 @@ export class CurrentUserUtils {
static setupNoteTemplates(doc: Doc, field="template_notes") {
const tempNotes = DocCast(doc[field]);
const reqdTempOpts:DocumentOptions[] = [
- { noteType: "Note", backgroundColor: "yellow", icon: "sticky-note"},
+ { noteType: "Postit", backgroundColor: "yellow", icon: "sticky-note"},
{ noteType: "Idea", backgroundColor: "pink", icon: "lightbulb" },
{ noteType: "Topic", backgroundColor: "lightblue", icon: "book-open" }];
const reqdNoteList = reqdTempOpts.map(opts => {
@@ -257,6 +224,16 @@ export class CurrentUserUtils {
MakeTemplate(Doc.GetProto(header), true, "Untitled Header");
return header;
}
+ const slideView = (opts:DocumentOptions) => {
+ const slide = Docs.Create.MultirowDocument(
+ [
+ Docs.Create.MulticolumnDocument([], { title: "hero", _height: 200, isSystem: true }),
+ Docs.Create.TextDocument("", { title: "text", _layout_fitWidth:true, _height: 100, isSystem: true, _text_fontFamily: StrCast(Doc.UserDoc().fontFamily), _text_fontSize: StrCast(Doc.UserDoc().fontSize) })
+ ], opts);
+
+ MakeTemplate(Doc.GetProto(slide), true, "Untitled Slide View");
+ return slide;
+ }
const emptyThings:{key:string, // the field name where the empty thing will be stored
opts:DocumentOptions, // the document options that are required for the empty thing
funcs?:{[key:string]: any}, // computed fields that are rquired for the empth thing
@@ -279,6 +256,7 @@ export class CurrentUserUtils {
{key: "Script", creator: opts => Docs.Create.ScriptingDocument(null, opts), opts: { _width: 200, _height: 250, }},
{key: "DataViz", creator: opts => Docs.Create.DataVizDocument("/users/rz/Downloads/addresses.csv", opts), opts: { _width: 300, _height: 300 }},
{key: "Header", creator: headerTemplate, opts: { _width: 300, _height: 70, _headerPointerEvents: "all", _headerHeight: 12, _headerFontSize: 9, _layout_autoHeight: true, treeView_HideUnrendered: true}},
+ {key: "ViewSlide", creator: slideView, opts: { _width: 400, _height: 300, _xMargin: 3, _yMargin: 3,}},
{key: "Trail", creator: Docs.Create.PresDocument, opts: { _width: 400, _height: 30, _type_collection: CollectionViewType.Stacking, dropAction: "embed" as dropActionType, treeView_HideTitle: true, _layout_fitWidth:true, layout_boxShadow: "0 0" }},
{key: "Tab", creator: opts => Docs.Create.FreeformDocument([], opts), opts: { _width: 500, _height: 800, _layout_fitWidth: true, _freeform_backgroundGrid: true, }},
{key: "Slide", creator: opts => Docs.Create.TreeDocument([], opts), opts: { _width: 300, _height: 200, _type_collection: CollectionViewType.Tree,
@@ -307,6 +285,7 @@ export class CurrentUserUtils {
{ toolTip: "Tap or drag to create a scripting box", title: "Script", icon: "terminal", dragFactory: doc.emptyScript as Doc, clickFactory: DocCast(doc.emptyScript), funcs: { hidden: "IsNoviceMode()"}},
{ toolTip: "Tap or drag to create a data viz node", title: "DataViz", icon: "chart-bar", dragFactory: doc.emptyDataViz as Doc, clickFactory: DocCast(doc.emptyDataViz)},
{ toolTip: "Tap or drag to create a bullet slide", title: "PPT Slide", icon: "file", dragFactory: doc.emptySlide as Doc, clickFactory: DocCast(doc.emptySlide), openFactoryLocation: OpenWhere.overlay, funcs: { hidden: "IsNoviceMode()"}},
+ { toolTip: "Tap or drag to create a view slide", title: "View Slide", icon: "address-card", dragFactory: doc.emptyViewSlide as Doc,clickFactory: DocCast(doc.emptyViewSlide),openFactoryLocation: OpenWhere.overlay,funcs: { hidden: "IsNoviceMode()"}},
{ toolTip: "Tap or drag to create a data note", title: "DataNote", icon: "window-maximize",dragFactory: doc.emptyHeader as Doc,clickFactory: DocCast(doc.emptyHeader), openFactoryAsDelegate: true, funcs: { hidden: "IsNoviceMode()"} },
{ toolTip: "Toggle a Calculator REPL", title: "replviewer", icon: "calculator", clickFactory: '<ScriptingRepl />' as any, openFactoryLocation: OpenWhere.overlay}, // hack: clickFactory is not a Doc but will get interpreted as a custom UI by the openDoc() onClick script
// { toolTip: "Toggle an UndoStack", title: "undostacker", icon: "calculator", clickFactory: "<UndoStack />" as any, openFactoryLocation: OpenWhere.overlay},
@@ -330,7 +309,7 @@ export class CurrentUserUtils {
});
const reqdOpts:DocumentOptions = {
- title: "Basic Item Creators", _layout_showTitle: "title", _xMargin: 0, _dragOnlyWithinContainer: true, _layout_hideContextMenu: true, _chromeHidden: true, isSystem: true,
+ title: "Document Creators", _layout_showTitle: "title", _xMargin: 0, _dragOnlyWithinContainer: true, _layout_hideContextMenu: true, _chromeHidden: true, isSystem: true,
_layout_autoHeight: true, _width: 500, _height: 300, _layout_fitWidth: true, _columnWidth: 40, ignoreClick: true, _lockedPosition: true, _forceActive: true,
childDragAction: 'embed'
};
@@ -464,16 +443,17 @@ export class CurrentUserUtils {
/// Initializes the panel of draggable tools that is opened from the left sidebar.
static setupToolsBtnPanel(doc: Doc, field:string) {
const myTools = DocCast(doc[field]);
- const creatorBtns = CurrentUserUtils.setupCreatorButtons(doc, DocListCast(myTools?.data)?.length ? DocListCast(myTools.data)[0]:undefined);
- const tempBtns = DocListCast(myTools?.data)?.length > 1 ? DocListCast(myTools.data)[1]:undefined;
- const userTemplateBtns = DocListCast(tempBtns?.data).filter(btn => !btn.isSystem);
- const templateBtns = CurrentUserUtils.setupExperimentalTemplateButtons(doc, tempBtns, userTemplateBtns);
+ const allTools = DocListCast(myTools?.data);
+ const creatorBtns = CurrentUserUtils.setupCreatorButtons(doc, allTools?.length ? allTools[0]:undefined);
+ const userTools = allTools && allTools?.length > 1 ? allTools[1]:undefined;
+ const userBtns = CurrentUserUtils.setupUserDocumentCreatorButtons(doc, userTools);
+ //doc.myUserBtns = new PrefetchProxy(userBtns);
const reqdToolOps:DocumentOptions = {
title: "My Tools", isSystem: true, ignoreClick: true, layout_boxShadow: "0 0",
layout_explainer: "This is a palette of documents that can be created.",
_layout_showTitle: "title", _width: 500, _yMargin: 20, _lockedPosition: true, _forceActive: true, _dragOnlyWithinContainer: true, _layout_hideContextMenu: true, _chromeHidden: true,
};
- return DocUtils.AssignDocField(doc, field, (opts, items) => Docs.Create.StackingDocument(items??[], opts), reqdToolOps, [creatorBtns, templateBtns]);
+ return DocUtils.AssignDocField(doc, field, (opts, items) => Docs.Create.StackingDocument(items??[], opts), reqdToolOps, [creatorBtns, userBtns]);
}
/// initializes the left sidebar dashboard pane
@@ -522,29 +502,21 @@ export class CurrentUserUtils {
static setupFilesystem(doc: Doc, field:string) {
var myFilesystem = DocCast(doc[field]);
- const newFolder = `TreeView_addNewFolder()`;
const newFolderOpts: DocumentOptions = {
- _forceActive: true, _dragOnlyWithinContainer: true, _layout_hideContextMenu: true, _width: 30, _height: 30, undoIgnoreFields:new List<string>(['treeView_SortCriterion']),
+ _forceActive: true, _dragOnlyWithinContainer: true, _embedContainer: Doc.MyFilesystem, _layout_hideContextMenu: true, _width: 30, _height: 30, undoIgnoreFields:new List<string>(['treeView_SortCriterion']),
title: "New folder", color: Colors.BLACK, btnType: ButtonType.ClickButton, toolTip: "Create new folder", buttonText: "New folder", icon: "folder-plus", isSystem: true
};
- const newFolderScript = { onClick: newFolder};
+ const newFolderScript = { onClick: CollectionTreeView.AddTreeFunc};
const newFolderButton = DocUtils.AssignScripts(DocUtils.AssignOpts(DocCast(myFilesystem?.layout_headerButton), newFolderOpts) ?? Docs.Create.FontIconDocument(newFolderOpts), newFolderScript);
const reqdOpts:DocumentOptions = { _layout_showTitle: "title", _height: 100, _forceActive: true,
title: "My Documents", layout_headerButton: newFolderButton, treeView_HideTitle: true, dropAction: 'add', isSystem: true,
isFolder: true, treeView_Type: TreeViewType.fileSystem, childHideLinkButton: true, layout_boxShadow: "0 0", childDontRegisterViews: true,
treeView_TruncateTitleWidth: 350, ignoreClick: true, childDragAction: "embed",
- childContextMenuLabels: new List<string>(["Create new folder"]),
- childContextMenuIcons: new List<string>(["plus"]),
layout_explainer: "This is your file manager where you can create folders to keep track of documents independently of your dashboard."
};
const fileFolders = new Set(DocListCast(DocCast(doc[field])?.data));
- myFilesystem = DocUtils.AssignDocField(doc, field, (opts, items) => Docs.Create.TreeDocument(items??[], opts), reqdOpts, Array.from(fileFolders));
- const childContextMenuScripts = [newFolder];
- if (Cast(myFilesystem.childContextMenuScripts, listSpec(ScriptField), null)?.length !== childContextMenuScripts.length) {
- myFilesystem.childContextMenuScripts = new List<ScriptField>(childContextMenuScripts.map(script => ScriptField.MakeFunction(script)!));
- }
- return myFilesystem;
+ return DocUtils.AssignDocField(doc, field, (opts, items) => Docs.Create.TreeDocument(items??[], opts), reqdOpts, Array.from(fileFolders));
}
/// initializes the panel displaying docs that have been recently closed
@@ -564,8 +536,8 @@ export class CurrentUserUtils {
toolTip: "Empty recently closed",};
DocUtils.AssignDocField(recentlyClosed, "layout_headerButton", (opts) => Docs.Create.FontIconDocument(opts), clearBtnsOpts, undefined, {onClick: clearAll("this.target")});
- if (!Cast(recentlyClosed.contextMenuScripts, listSpec(ScriptField),null)?.find((script) => script?.script.originalScript === clearAll("self"))) {
- recentlyClosed.contextMenuScripts = new List<ScriptField>([ScriptField.MakeScript(clearAll("self"))!])
+ if (!Cast(recentlyClosed.contextMenuScripts, listSpec(ScriptField),null)?.find((script) => script?.script.originalScript === clearAll("this"))) {
+ recentlyClosed.contextMenuScripts = new List<ScriptField>([ScriptField.MakeScript(clearAll("this"))!])
}
return recentlyClosed;
}
diff --git a/src/client/util/DocumentManager.ts b/src/client/util/DocumentManager.ts
index f730d17fe..7407fa2b3 100644
--- a/src/client/util/DocumentManager.ts
+++ b/src/client/util/DocumentManager.ts
@@ -1,6 +1,6 @@
import { Howl } from 'howler';
import { action, computed, makeObservable, observable, ObservableSet, observe } from 'mobx';
-import { Doc, DocListCast, Opt } from '../../fields/Doc';
+import { Doc, Opt } from '../../fields/Doc';
import { AclAdmin, AclEdit, Animation, DocData } from '../../fields/DocSymbols';
import { Id } from '../../fields/FieldSymbols';
import { listSpec } from '../../fields/Schema';
@@ -28,8 +28,6 @@ export class DocumentManager {
//global holds all of the nodes (regardless of which collection they're in)
@observable _documentViews = new Set<DocumentView>();
@observable.shallow public CurrentlyLoading: Doc[] = [];
- @observable.shallow public LinkAnchorBoxViews: DocumentView[] = [];
- @observable.shallow public LinkedDocumentViews: { a: DocumentView; b: DocumentView; l: Doc }[] = [];
@computed public get DocumentViews() {
return Array.from(this._documentViews).filter(view => !(view.ComponentView instanceof KeyValueBox) && (!LightboxView.LightboxDoc || LightboxView.Contains(view)));
}
@@ -90,37 +88,14 @@ export class DocumentManager {
@action
public AddView = (view: DocumentView) => {
- if (view._props.LayoutTemplateString?.includes(KeyValueBox.name)) return;
- if (view._props.LayoutTemplateString?.includes(LinkAnchorBox.name)) {
- const viewAnchorIndex = view._props.LayoutTemplateString.includes('link_anchor_2') ? 'link_anchor_2' : 'link_anchor_1';
- const link = view.Document;
- this.LinkAnchorBoxViews?.filter(dv => Doc.AreProtosEqual(dv.Document, link) && !dv._props.LayoutTemplateString?.includes(viewAnchorIndex)).forEach(otherView =>
- this.LinkedDocumentViews.push({
- a: viewAnchorIndex === 'link_anchor_2' ? otherView : view,
- b: viewAnchorIndex === 'link_anchor_2' ? view : otherView,
- l: link,
- })
- );
- this.LinkAnchorBoxViews.push(view);
- } else {
+ if (!view._props.LayoutTemplateString?.includes(KeyValueBox.name) &&
+ !view._props.LayoutTemplateString?.includes(LinkAnchorBox.name)) {
this.AddDocumentView(view);
- }
- this.callAddViewFuncs(view);
+ this.callAddViewFuncs(view);
+ } // prettier-ignore
};
public RemoveView = action((view: DocumentView) => {
- this.LinkedDocumentViews.slice().forEach(
- action(pair => {
- if (pair.a === view || pair.b === view) {
- const li = this.LinkedDocumentViews.indexOf(pair);
- li !== -1 && this.LinkedDocumentViews.splice(li, 1);
- }
- })
- );
-
- if (view._props.LayoutTemplateString?.includes(LinkAnchorBox.name)) {
- const index = this.LinkAnchorBoxViews.indexOf(view);
- this.LinkAnchorBoxViews.splice(index, 1);
- } else {
+ if (!view._props.LayoutTemplateString?.includes(KeyValueBox.name) && !view._props.LayoutTemplateString?.includes(LinkAnchorBox.name)) {
this.DeleteDocumentView(view);
}
SelectionManager.DeselectView(view);
@@ -234,6 +209,20 @@ export class DocumentManager {
finished?.();
};
+ public static LinkCommonAncestor(linkDoc: Doc) {
+ const anchor = (which: number) => {
+ const anch = DocCast(linkDoc['link_anchor_' + which]);
+ const anchor = anch?.layout_unrendered ? DocCast(anch.annotationOn) : anch;
+ return DocumentManager.Instance.getDocumentView(anchor);
+ };
+ const anchor1 = anchor(1);
+ const anchor2 = anchor(2);
+ return anchor1
+ ?.docViewPath()
+ .reverse()
+ .find(ancestor => anchor2?.docViewPath().includes(ancestor));
+ }
+
// shows a documentView by:
// traverses down through the viewPath of contexts to the view:
// focusing on each context
@@ -355,8 +344,8 @@ export function DocFocusOrOpen(doc: Doc, options: FocusViewOptions = { willZoomC
});
}
};
- if (Doc.IsDataProto(doc) && DocListCast(doc.proto_embeddings).some(embed => embed.hidden && [AclAdmin, AclEdit].includes(GetEffectiveAcl(embed)))) {
- doc = DocListCast(doc.proto_embeddings).find(embed => embed.hidden && [AclAdmin, AclEdit].includes(GetEffectiveAcl(embed)))!;
+ if (Doc.IsDataProto(doc) && Doc.GetEmbeddings(doc).some(embed => embed.hidden && [AclAdmin, AclEdit].includes(GetEffectiveAcl(embed)))) {
+ doc = Doc.GetEmbeddings(doc).find(embed => embed.hidden && [AclAdmin, AclEdit].includes(GetEffectiveAcl(embed)))!;
}
if (doc.hidden) {
doc.hidden = false;
diff --git a/src/client/util/DragManager.ts b/src/client/util/DragManager.ts
index a6ad0f1b3..1f093a33c 100644
--- a/src/client/util/DragManager.ts
+++ b/src/client/util/DragManager.ts
@@ -504,9 +504,9 @@ export namespace DragManager {
const moveHandler = (e: PointerEvent) => {
e.preventDefault(); // required or dragging text menu link item ends up dragging the link button as native drag/drop
if (dragData instanceof DocumentDragData) {
- dragData.userDropAction = e.ctrlKey && e.altKey ? 'copy' : e.ctrlKey ? 'embed' : dragData.defaultDropAction;
+ dragData.userDropAction = e.ctrlKey && e.altKey ? 'copy' : e.shiftKey ? 'move' : e.ctrlKey ? 'embed' : dragData.defaultDropAction;
}
- if (((e.target as any)?.className === 'lm_tabs' || (e.target as any)?.className === 'lm_header') && dragData.draggedDocuments.length === 1) {
+ if (['lm_tab', 'lm_title_wrap', 'lm_tabs', 'lm_header'].includes(typeof (e.target as any).className === 'string' ? (e.target as any)?.className : '') && dragData.draggedDocuments.length === 1) {
if (!startWindowDragTimer) {
startWindowDragTimer = setTimeout(async () => {
startWindowDragTimer = undefined;
diff --git a/src/client/util/DropConverter.ts b/src/client/util/DropConverter.ts
index 8c3b56452..54066d267 100644
--- a/src/client/util/DropConverter.ts
+++ b/src/client/util/DropConverter.ts
@@ -3,7 +3,7 @@ import { DocData } from '../../fields/DocSymbols';
import { ObjectField } from '../../fields/ObjectField';
import { RichTextField } from '../../fields/RichTextField';
import { listSpec } from '../../fields/Schema';
-import { ScriptField } from '../../fields/ScriptField';
+import { ComputedField, ScriptField } from '../../fields/ScriptField';
import { Cast, StrCast } from '../../fields/Types';
import { ImageField } from '../../fields/URLField';
import { Docs } from '../documents/Documents';
@@ -39,15 +39,12 @@ function makeTemplate(doc: Doc, first: boolean = true, rename: Opt<string> = und
any = makeTemplate(d, false) || any;
}
});
- if (first) {
- if (!docs.length) {
- // bcz: feels hacky : if the root level document has items, it's not a field template
- any = Doc.MakeMetadataFieldTemplate(doc, layoutDoc[DocData]) || any;
- }
- }
- if (layoutDoc[fieldKey] instanceof RichTextField || layoutDoc[fieldKey] instanceof ImageField) {
+ if (first && !docs.length) {
+ // bcz: feels hacky : if the root level document has items, it's not a field template
+ any = Doc.MakeMetadataFieldTemplate(doc, layoutDoc[DocData], true) || any;
+ } else if (layoutDoc[fieldKey] instanceof RichTextField || layoutDoc[fieldKey] instanceof ImageField) {
if (!StrCast(layoutDoc.title).startsWith('-')) {
- any = Doc.MakeMetadataFieldTemplate(layoutDoc, layoutDoc[DocData]);
+ any = Doc.MakeMetadataFieldTemplate(layoutDoc, layoutDoc[DocData], true);
}
}
rename && (doc.title = rename);
@@ -76,12 +73,14 @@ export function convertDropDataToButtons(data: DragManager.DocumentDragData) {
_nativeHeight: 100,
_width: 100,
_height: 100,
+ _layout_hideContextMenu: true,
backgroundColor: StrCast(doc.backgroundColor),
title: StrCast(layoutDoc.title),
btnType: ButtonType.ClickButton,
icon: 'bolt',
isSystem: false,
});
+ dbox.title = ComputedField.MakeFunction('this.dragFactory.title');
dbox.dragFactory = layoutDoc;
dbox.dropPropertiesToRemove = doc.dropPropertiesToRemove instanceof ObjectField ? ObjectField.MakeCopy(doc.dropPropertiesToRemove) : undefined;
dbox.onDragStart = ScriptField.MakeFunction('makeDelegate(this.dragFactory)');
diff --git a/src/client/util/LinkManager.ts b/src/client/util/LinkManager.ts
index 353f28a92..dd3b9bd07 100644
--- a/src/client/util/LinkManager.ts
+++ b/src/client/util/LinkManager.ts
@@ -23,8 +23,8 @@ import { ScriptingGlobals } from './ScriptingGlobals';
export class LinkManager {
@observable static _instance: LinkManager;
@observable.shallow userLinkDBs: Doc[] = [];
- @observable public static currentLink: Opt<Doc> = undefined;
- @observable public static currentLinkAnchor: Opt<Doc> = undefined;
+ @observable public currentLink: Opt<Doc> = undefined;
+ @observable public currentLinkAnchor: Opt<Doc> = undefined;
public static get Instance() {
return LinkManager._instance;
}
diff --git a/src/client/util/Scripting.ts b/src/client/util/Scripting.ts
index dfaacf318..f5e162d16 100644
--- a/src/client/util/Scripting.ts
+++ b/src/client/util/Scripting.ts
@@ -61,7 +61,8 @@ function Run(script: string | undefined, customParams: string[], diagnostics: an
const compiledFunction = (() => {
try {
return new Function(...paramNames, `return ${script}`);
- } catch {
+ } catch (e) {
+ console.log(e);
return undefined;
}
})();
diff --git a/src/client/util/SearchUtil.ts b/src/client/util/SearchUtil.ts
index 218667d3e..fff2737b6 100644
--- a/src/client/util/SearchUtil.ts
+++ b/src/client/util/SearchUtil.ts
@@ -8,7 +8,7 @@ import { DocOptions, FInfo } from '../documents/Documents';
export namespace SearchUtil {
export type HighlightingResult = { [id: string]: { [key: string]: string[] } };
- export function SearchCollection(collectionDoc: Opt<Doc>, query: string, matchKeyNames: boolean) {
+ export function SearchCollection(collectionDoc: Opt<Doc>, query: string, matchKeyNames: boolean, onlyKeys?: string[]) {
const blockedTypes = [DocumentType.PRESELEMENT, DocumentType.CONFIG, DocumentType.KVP, DocumentType.FONTICON, DocumentType.BUTTON, DocumentType.SCRIPTING];
const blockedKeys = matchKeyNames
? []
@@ -27,8 +27,9 @@ export namespace SearchUtil {
const dtype = StrCast(doc.type) as DocumentType;
if (dtype && !blockedTypes.includes(dtype) && !docIDs.includes(doc[Id]) && depth >= 0) {
const hlights = new Set<string>();
- SearchUtil.documentKeys(doc).forEach(
- key => (val => (exact ? val === query.toLowerCase() : val.includes(query.toLowerCase())))(
+ (onlyKeys ?? SearchUtil.documentKeys(doc)).forEach(
+ key =>
+ (val => (exact ? val === query.toLowerCase() : val.includes(query.toLowerCase())))(
matchKeyNames ? key : Field.toString(doc[key] as Field))
&& hlights.add(key)
); // prettier-ignore
diff --git a/src/client/util/SelectionManager.ts b/src/client/util/SelectionManager.ts
index f2a327445..36b926053 100644
--- a/src/client/util/SelectionManager.ts
+++ b/src/client/util/SelectionManager.ts
@@ -38,6 +38,7 @@ export class SelectionManager {
this.Instance.SelectedViews.push(docView);
docView.IsSelected = true;
docView._props.whenChildContentsActiveChanged(true);
+ docView.ComponentView?.select?.(false, false);
}
});
@@ -51,9 +52,11 @@ export class SelectionManager {
public static DeselectAll = (except?: Doc): void => {
const found = this.Instance.SelectedViews.find(dv => dv.Document === except);
- LinkManager.currentLink = undefined;
- LinkManager.currentLinkAnchor = undefined;
- runInAction(() => (this.Instance.SelectedSchemaDocument = undefined));
+ runInAction(() => {
+ LinkManager.Instance.currentLink = undefined;
+ LinkManager.Instance.currentLinkAnchor = undefined;
+ this.Instance.SelectedSchemaDocument = undefined;
+ });
this.Instance.SelectedViews.forEach(dv => {
dv.IsSelected = false;
dv._props.whenChildContentsActiveChanged(false);
diff --git a/src/client/util/SettingsManager.tsx b/src/client/util/SettingsManager.tsx
index 5bf9e5b00..682704770 100644
--- a/src/client/util/SettingsManager.tsx
+++ b/src/client/util/SettingsManager.tsx
@@ -317,7 +317,17 @@ export class SettingsManager extends React.Component<{}> {
<div className="tab-column-content">
{/* <NumberInput/> */}
<Group formLabel={'Default Font'}>
- <NumberDropdown color={SettingsManager.userColor} numberDropdownType={'input'} min={0} max={50} step={2} type={Type.TERT} number={0} unit={'px'} setNumber={() => {}} />
+ <NumberDropdown
+ color={SettingsManager.userColor}
+ numberDropdownType="slider"
+ min={0}
+ max={50}
+ step={2}
+ type={Type.PRIM}
+ number={NumCast(Doc.UserDoc().fontSize, Number(StrCast(Doc.UserDoc().fontSize).replace('px', '')))}
+ unit={'px'}
+ setNumber={val => (Doc.UserDoc().fontSize = val + 'px')}
+ />
<Dropdown
items={fontFamilies.map(val => {
return {
diff --git a/src/client/views/ContextMenu.tsx b/src/client/views/ContextMenu.tsx
index 8dcdd80e5..8c3c9df2e 100644
--- a/src/client/views/ContextMenu.tsx
+++ b/src/client/views/ContextMenu.tsx
@@ -183,11 +183,12 @@ export class ContextMenu extends ObservableReactComponent<{}> {
@computed get menuItems() {
if (!this._searchString) {
- return this._items.map((item, ind) => <ContextMenuItem {...item} noexpand={this.itemsNeedSearch ? true : (item as any).noexpand} key={ind + item.description} closeMenu={this.closeMenu} />);
+ return this._items.map((item, ind) => <ContextMenuItem key={item.description + ind} {...item} noexpand={this.itemsNeedSearch ? true : (item as any).noexpand} closeMenu={this.closeMenu} />);
}
return this.filteredItems.map((value, index) =>
Array.isArray(value) ? (
<div
+ key={index + value.join(' -> ')}
className="contextMenu-group"
style={{
background: StrCast(SettingsManager.userVariantColor),
@@ -204,7 +205,10 @@ export class ContextMenu extends ObservableReactComponent<{}> {
return this._showSearch ? 1 : this._items.reduce((p, mi) => p + ((mi as any).noexpand ? 1 : (mi as any).subitems?.length || 1), 0) > 15;
}
+ _searchRef = React.createRef<HTMLInputElement>(); // bcz: we shouldn't need this, since we set autoFocus on the <input> tag, but for some reason we do...
+
render() {
+ this.itemsNeedSearch && setTimeout(() => this._searchRef.current?.focus());
return (
<div
className="contextMenu-cont"
@@ -226,7 +230,17 @@ export class ContextMenu extends ObservableReactComponent<{}> {
<span className="icon-background">
<FontAwesomeIcon icon="search" size="lg" />
</span>
- <input style={{ color: 'black' }} className="contextMenu-item contextMenu-description search" type="text" placeholder="Filter Menu..." value={this._searchString} onKeyDown={this.onKeyDown} onChange={this.onChange} autoFocus />
+ <input
+ ref={this._searchRef}
+ style={{ color: 'black' }}
+ className="contextMenu-item contextMenu-description search"
+ type="text"
+ placeholder="Filter Menu..."
+ value={this._searchString}
+ onKeyDown={this.onKeyDown}
+ onChange={this.onChange}
+ autoFocus
+ />
</span>
)}
{this.menuItems}
diff --git a/src/client/views/DocComponent.tsx b/src/client/views/DocComponent.tsx
index 73fa6709c..3d5a5b945 100644
--- a/src/client/views/DocComponent.tsx
+++ b/src/client/views/DocComponent.tsx
@@ -33,8 +33,10 @@ export interface ViewBoxInterface {
getView?: (doc: Doc, options: FocusViewOptions) => Promise<Opt<DocumentView>>; // returns a nested DocumentView for the specified doc or undefined
addDocTab?: (doc: Doc, where: OpenWhere) => boolean; // determines how to add a document - used in following links to open the target ina local lightbox
addDocument?: (doc: Doc | Doc[], annotationKey?: string) => boolean; // add a document (used only by collections)
+ removeDocument?: (doc: Doc | Doc[], annotationKey?: string, leavePushpin?: boolean, dontAddToRemoved?: boolean) => boolean; // add a document (used only by collections)
select?: (ctrlKey: boolean, shiftKey: boolean) => void;
focus?: (textAnchor: Doc, options: FocusViewOptions) => Opt<number>;
+ viewTransition?: () => Opt<string>; // duration of a view transition animation
isAnyChildContentActive?: () => boolean; // is any child content of the document active
onClickScriptDisable?: () => 'never' | 'always'; // disable click scripts : never, always, or undefined = only when selected
getKeyFrameEditing?: () => boolean; // whether the document is in keyframe editing mode (if it is, then all hidden documents that are not active at the keyframe time will still be shown)
@@ -47,17 +49,17 @@ export interface ViewBoxInterface {
setData?: (data: Field | Promise<RefField | undefined>) => boolean;
componentUI?: (boundsLeft: number, boundsTop: number) => JSX.Element | null;
dragStarting?: (snapToDraggedDoc: boolean, showGroupDragTarget: boolean, visited: Set<Doc>) => void;
- dragConfig?: (dragData: DragManager.DocumentDragData) => void;
+ dragConfig?: (dragData: DragManager.DocumentDragData) => void; // function to setup dragData in custom way (see TreeViews which add a tree view flag)
incrementalRendering?: () => void;
infoUI?: () => JSX.Element | null;
- screenBounds?: () => Opt<{ left: number; top: number; right: number; bottom: number; center?: { X: number; Y: number } }>;
+ screenBounds?: () => Opt<{ left: number; top: number; right: number; bottom: number; transition?: string }>;
ptToScreen?: (pt: { X: number; Y: number }) => { X: number; Y: number };
ptFromScreen?: (pt: { X: number; Y: number }) => { X: number; Y: number };
snapPt?: (pt: { X: number; Y: number }, excludeSegs?: number[]) => { nearestPt: { X: number; Y: number }; distance: number };
search?: (str: string, bwd?: boolean, clear?: boolean) => boolean;
}
/**
- * DocComponent returns a React base class used by Doc views with accessors for unpacking he Document,layoutDoc, and dataDoc's
+ * DocComponent returns a React base class used by Doc views with accessors for unpacking the Document,layoutDoc, and dataDoc's
* (note: this should not be used for the 'Box' views that render the contents of Doc views)
* Example derived views: CollectionFreeFormDocumentView, DocumentView, DocumentViewInternal)
* */
@@ -189,7 +191,7 @@ export function ViewBoxAnnotatableComponent<P extends FieldViewProps>() {
toRemove.forEach(doc => {
leavePushpin && DocUtils.LeavePushpin(doc, annotationKey ?? this.annotationKey);
Doc.RemoveDocFromList(targetDataDoc, annotationKey ?? this.annotationKey, doc, true);
- Doc.RemoveDocFromList(doc[DocData], 'proto_embeddings', doc, true);
+ Doc.RemoveEmbedding(doc, doc);
doc.embedContainer = undefined;
if (recent && !dontAddToRemoved) {
doc.type !== DocumentType.LOADING && Doc.AddDocToList(recent, 'data', doc, undefined, true, true);
diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx
index 2193acf62..e9c4d9cc5 100644
--- a/src/client/views/DocumentDecorations.tsx
+++ b/src/client/views/DocumentDecorations.tsx
@@ -114,6 +114,9 @@ export class DocumentDecorations extends ObservableReactComponent<DocumentDecora
if (this._accumulatedTitle.startsWith('#') || this._accumulatedTitle.startsWith('=')) {
this._titleControlString = this._accumulatedTitle;
} else if (this._titleControlString.startsWith('#')) {
+ if (this._accumulatedTitle.startsWith('-->#')) {
+ SelectionManager.Docs.forEach(doc => (doc[DocData].onViewMounted = ScriptField.MakeScript(`updateTagsCollection(this)`)));
+ }
const titleFieldKey = this._titleControlString.substring(1);
UndoManager.RunInBatch(
() =>
@@ -283,7 +286,7 @@ export class DocumentDecorations extends ObservableReactComponent<DocumentDecora
} else {
var openDoc = selectedDocs[0].Document;
if (openDoc.layout_fieldKey === 'layout_icon') {
- openDoc = DocListCast(openDoc.proto_embeddings).find(embedding => !embedding.embedContainer) ?? Doc.MakeEmbedding(openDoc);
+ openDoc = Doc.GetEmbeddings(openDoc).find(embedding => !embedding.embedContainer) ?? Doc.MakeEmbedding(openDoc);
Doc.deiconifyView(openDoc);
}
LightboxView.Instance.SetLightboxDoc(
diff --git a/src/client/views/FilterPanel.tsx b/src/client/views/FilterPanel.tsx
index c4f65a5ca..818c81c9a 100644
--- a/src/client/views/FilterPanel.tsx
+++ b/src/client/views/FilterPanel.tsx
@@ -117,8 +117,8 @@ export class FilterPanel extends ObservableReactComponent<filterProps> {
// return this.activeFilters.map(filter => filter.split(Doc.FilterSep)[0]);
// }
- gatherFieldValues(childDocs: Doc[], facetKey: string) {
- const valueSet = new Set<string>(StrListCast(this.targetDoc.childFilters).map(filter => filter.split(Doc.FilterSep)[1]));
+ static gatherFieldValues(childDocs: Doc[], facetKey: string, childFilters: string[]) {
+ const valueSet = new Set<string>(childFilters.map(filter => filter.split(Doc.FilterSep)[1]));
let rtFields = 0;
let subDocs = childDocs;
if (subDocs.length > 0) {
@@ -165,7 +165,7 @@ export class FilterPanel extends ObservableReactComponent<filterProps> {
@computed get activeRenderedFacetInfos() {
return new Set(
Array.from(new Set(Array.from(this._selectedFacetHeaders).concat(this.activeFacetHeaders))).map(facetHeader => {
- const facetValues = this.gatherFieldValues(this.targetDocChildren, facetHeader);
+ const facetValues = FilterPanel.gatherFieldValues(this.targetDocChildren, facetHeader, StrListCast(this.targetDoc.childFilters));
let nonNumbers = 0;
let minVal = Number.MAX_VALUE,
diff --git a/src/client/views/GlobalKeyHandler.ts b/src/client/views/GlobalKeyHandler.ts
index d134d9e7b..733383002 100644
--- a/src/client/views/GlobalKeyHandler.ts
+++ b/src/client/views/GlobalKeyHandler.ts
@@ -160,7 +160,7 @@ export class KeyManager {
if (LightboxView.LightboxDoc) {
LightboxView.Instance.SetLightboxDoc(undefined);
SelectionManager.DeselectAll();
- } else DocumentDecorations.Instance.onCloseClick(true);
+ } else if (!window.getSelection()?.toString()) DocumentDecorations.Instance.onCloseClick(true);
return { stopPropagation: true, preventDefault: true };
}
break;
diff --git a/src/client/views/InkControlPtHandles.tsx b/src/client/views/InkControlPtHandles.tsx
index 7dd57e04d..31b13d2c8 100644
--- a/src/client/views/InkControlPtHandles.tsx
+++ b/src/client/views/InkControlPtHandles.tsx
@@ -189,6 +189,7 @@ export class InkEndPtHandles extends React.Component<InkEndProps> {
@observable _overStart: boolean = false;
@observable _overEnd: boolean = false;
+ _throttle = 0; // need to throttle dragging since the position may change when the control points change. this allows the stroke to settle so that we don't get increasingly bad jitter
@action
dragRotate = (e: React.PointerEvent, pt1: () => { X: number; Y: number }, pt2: () => { X: number; Y: number }) => {
SnappingManager.SetIsDragging(true);
@@ -196,6 +197,7 @@ export class InkEndPtHandles extends React.Component<InkEndProps> {
this,
e,
action(e => {
+ if (this._throttle++ % 2 !== 0) return false;
if (!this.props.inkView.controlUndo) this.props.inkView.controlUndo = UndoManager.StartBatch('stretch ink');
// compute stretch factor by finding scaling along axis between start and end points
const p1 = pt1();
diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx
index eca0aca4c..b6cb845a6 100644
--- a/src/client/views/MainView.tsx
+++ b/src/client/views/MainView.tsx
@@ -10,6 +10,7 @@ import * as React from 'react';
import '../../../node_modules/browndash-components/dist/styles/global.min.css';
import { Utils, emptyFunction, lightOrDark, returnEmptyDoclist, returnEmptyFilter, returnFalse, returnTrue, returnZero, setupMoveUpEvents } from '../../Utils';
import { Doc, DocListCast, Opt } from '../../fields/Doc';
+import { DocData } from '../../fields/DocSymbols';
import { DocCast, StrCast } from '../../fields/Types';
import { DocServer } from '../DocServer';
import { GoogleAuthenticationManager } from '../apis/GoogleAuthenticationManager';
@@ -50,7 +51,6 @@ import { CollectionDockingView } from './collections/CollectionDockingView';
import { CollectionMenu } from './collections/CollectionMenu';
import { TabDocView } from './collections/TabDocView';
import './collections/TreeView.scss';
-import { CollectionFreeFormLinksView } from './collections/collectionFreeForm';
import { MarqueeOptionsMenu } from './collections/collectionFreeForm/MarqueeOptionsMenu';
import { CollectionLinearView } from './collections/collectionLinear';
import { LinkMenu } from './linking/LinkMenu';
@@ -72,7 +72,6 @@ import { PresBox } from './nodes/trails';
import { AnchorMenu } from './pdf/AnchorMenu';
import { GPTPopup } from './pdf/GPTPopup/GPTPopup';
import { TopBar } from './topbar/TopBar';
-import { DocData } from '../../fields/DocSymbols';
const { default: { LEFT_MENU_WIDTH, TOPBAR_HEIGHT } } = require('./global/globalCssVariables.module.scss'); // prettier-ignore
const _global = (window /* browser */ || global) /* node */ as any;
@@ -641,7 +640,6 @@ export class MainView extends ObservableReactComponent<{}> {
}
@computed get mainDocView() {
const headerBar = this._hideUI || !this.headerBarDocHeight?.() ? null : this.headerBarDocView;
- console.log('Header = ' + this._hideUI + ' ' + this.headerBarDocHeight?.() + ' ' + headerBar);
return (
<>
{headerBar}
@@ -1037,7 +1035,6 @@ export class MainView extends ObservableReactComponent<{}> {
{/* <InkTranscription /> */}
{this.snapLines}
<LightboxView key="lightbox" PanelWidth={this._windowWidth} PanelHeight={this._windowHeight} maxBorder={[200, 50]} />
- <CollectionFreeFormLinksView />
<OverlayView />
<GPTPopup key="gptpopup" />
<SchemaCSVPopUp key="schemacsvpopup" />
diff --git a/src/client/views/PropertiesButtons.tsx b/src/client/views/PropertiesButtons.tsx
index bba6285c2..cb38ab602 100644
--- a/src/client/views/PropertiesButtons.tsx
+++ b/src/client/views/PropertiesButtons.tsx
@@ -411,7 +411,7 @@ export class PropertiesButtons extends React.Component<{}, {}> {
docView.noOnClick();
switch (onClick) {
case 'enterPortal':
- docView.makeIntoPortal();
+ DocUtils.makeIntoPortal(docView.Document, docView.layoutDoc, docView.allLinks);
break;
case 'toggleDetail':
docView.setToggleDetail();
diff --git a/src/client/views/PropertiesDocBacklinksSelector.tsx b/src/client/views/PropertiesDocBacklinksSelector.tsx
index 244cd4aa0..cf5105efc 100644
--- a/src/client/views/PropertiesDocBacklinksSelector.tsx
+++ b/src/client/views/PropertiesDocBacklinksSelector.tsx
@@ -25,7 +25,7 @@ export class PropertiesDocBacklinksSelector extends React.Component<PropertiesDo
const linkAnchor = this.props.Document;
const other = LinkManager.getOppositeAnchor(link, linkAnchor);
const otherdoc = !other ? undefined : other.annotationOn && other.type !== DocumentType.RTF ? Cast(other.annotationOn, Doc, null) : other;
- LinkManager.currentLink = link;
+ LinkManager.Instance.currentLink = link;
if (otherdoc) {
otherdoc.hidden = false;
this.props.addDocTab(Doc.IsDataProto(otherdoc) ? Doc.MakeDelegate(otherdoc) : otherdoc, OpenWhere.toggleRight);
diff --git a/src/client/views/PropertiesDocContextSelector.tsx b/src/client/views/PropertiesDocContextSelector.tsx
index 54f141a36..361451c4d 100644
--- a/src/client/views/PropertiesDocContextSelector.tsx
+++ b/src/client/views/PropertiesDocContextSelector.tsx
@@ -28,14 +28,14 @@ export class PropertiesDocContextSelector extends ObservableReactComponent<Prope
if (!this._props.DocView) return [];
const target = this._props.DocView._props.Document;
const targetContext = this._props.DocView.containerViewPath?.().lastElement()?.Document;
- const embeddings = DocListCast(target.proto_embeddings);
+ const embeddings = Doc.GetEmbeddings(target);
const containerProtos = embeddings.filter(embedding => embedding.embedContainer && embedding.embedContainer instanceof Doc).reduce((set, embedding) => set.add(Cast(embedding.embedContainer, Doc, null)), new Set<Doc>());
- const containerSets = Array.from(containerProtos.keys()).map(container => DocListCast(container.proto_embeddings));
+ const containerSets = Array.from(containerProtos.keys()).map(container => Doc.GetEmbeddings(container));
const containers = containerSets.reduce((p, set) => {
set.map(s => p.add(s));
return p;
}, new Set<Doc>());
- const doclayoutSets = Array.from(containers.keys()).map(dp => DocListCast(dp.proto_embeddings));
+ const doclayoutSets = Array.from(containers.keys()).map(dp => Doc.GetEmbeddings(dp));
const doclayouts = Array.from(
doclayoutSets
.reduce((p, set) => {
diff --git a/src/client/views/PropertiesSection.scss b/src/client/views/PropertiesSection.scss
index 3f92a70f8..d32da1bf1 100644
--- a/src/client/views/PropertiesSection.scss
+++ b/src/client/views/PropertiesSection.scss
@@ -4,20 +4,20 @@
.propertiesView-content {
padding: 10px;
}
+}
- .propertiesView-sectionTitle {
- text-align: center;
- display: flex;
- padding: 3px 10px;
- font-size: 14px;
- font-weight: bold;
- justify-content: space-between;
- align-items: center;
+.propertiesView-sectionTitle {
+ text-align: center;
+ display: flex;
+ padding: 3px 10px;
+ font-size: 14px;
+ font-weight: bold;
+ justify-content: space-between;
+ align-items: center;
- .propertiesView-sectionTitle-icon {
- width: 20px;
- height: 20px;
- align-items: flex-end;
- }
+ .propertiesView-sectionTitle-icon {
+ width: 20px;
+ height: 20px;
+ align-items: flex-end;
}
}
diff --git a/src/client/views/PropertiesView.tsx b/src/client/views/PropertiesView.tsx
index 208ed56c9..e4e7bec32 100644
--- a/src/client/views/PropertiesView.tsx
+++ b/src/client/views/PropertiesView.tsx
@@ -41,6 +41,7 @@ import { DocumentView, OpenWhere } from './nodes/DocumentView';
import { StyleProviderFuncType } from './nodes/FieldView';
import { KeyValueBox } from './nodes/KeyValueBox';
import { PresBox, PresEffect, PresEffectDirection } from './nodes/trails';
+import { LinkBox } from './nodes/LinkBox';
const _global = (window /* browser */ || global) /* node */ as any;
interface PropertiesViewProps {
@@ -69,6 +70,10 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
return SelectionManager.SelectedSchemaDoc || this.selectedDocumentView?.Document || Doc.ActiveDashboard;
}
+ @computed get selectedLink() {
+ return this.selectedDocumentView?.ComponentView instanceof LinkBox ? this.selectedDocumentView.Document : LinkManager.Instance.currentLink;
+ }
+
@computed get selectedLayoutDoc() {
return SelectionManager.SelectedSchemaDoc || this.selectedDocumentView?.layoutDoc || Doc.ActiveDashboard;
}
@@ -110,7 +115,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
componentDidMount() {
this._disposers.link = reaction(
- () => LinkManager.currentLink,
+ () => this.selectedLink,
link => {
link && this.CloseAll();
link && (this.openLinks = true);
@@ -173,10 +178,14 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
if (this.dataDoc && this.selectedDoc) {
const ids = new Set<string>(reqdKeys);
const docs: Doc[] = SelectionManager.Views.length < 2 ? [this.layoutFields ? Doc.Layout(this.selectedDoc) : this.dataDoc] : SelectionManager.Views.map(dv => (this.layoutFields ? dv.layoutDoc : dv.dataDoc));
- docs.forEach(doc => Object.keys(doc).forEach(key => doc[key] !== ComputedField.undefined && ids.add(key)));
+ docs.forEach(doc =>
+ Object.keys(doc)
+ .filter(filter)
+ .forEach(key => doc[key] !== ComputedField.undefined && key && ids.add(key))
+ );
// prettier-ignore
- Array.from(ids).filter(filter).sort().map(key => {
+ Array.from(ids).sort().map(key => {
const multiple = Array.from(docs.reduce((set,doc) => set.add(doc[key]), new Set<FieldResult>()).keys()).length > 1;
const editableContents = multiple ? '-multiple-' : Field.toKeyValueString(docs[0], key);
const displayContents = multiple ? '-multiple-' : Field.toString(docs[0][key] as Field);
@@ -263,20 +272,19 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
@computed get contextCount() {
if (this.selectedDocumentView) {
const target = this.selectedDocumentView.Document;
- const embeddings = DocListCast(target.proto_embeddings);
- return embeddings.length - 1;
+ return Doc.GetEmbeddings(target).length - 1;
} else {
return 0;
}
}
@computed get links() {
- const selAnchor = this.selectedDocumentView?.anchorViewDoc ?? LinkManager.currentLinkAnchor ?? this.selectedDoc;
+ const selAnchor = this.selectedDocumentView?.anchorViewDoc ?? LinkManager.Instance.currentLinkAnchor ?? this.selectedDoc;
return !selAnchor ? null : <PropertiesDocBacklinksSelector Document={selAnchor} hideTitle={true} addDocTab={this._props.addDocTab} />;
}
@computed get linkCount() {
- const selAnchor = this.selectedDocumentView?.anchorViewDoc ?? LinkManager.currentLinkAnchor ?? this.selectedDoc;
+ const selAnchor = this.selectedDocumentView?.anchorViewDoc ?? LinkManager.Instance.currentLinkAnchor ?? this.selectedDoc;
var counter = 0;
LinkManager.Links(selAnchor).forEach((l, i) => counter++);
@@ -572,19 +580,19 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
return (
<div>
<EditableText val={title} setVal={this.setTitle} color={this.color} type={Type.SEC} formLabel={'Title'} fillWidth />
- {LinkManager.currentLinkAnchor ? (
+ {LinkManager.Instance.currentLinkAnchor ? (
<p className="propertiesView-titleExtender">
<>
<b>Anchor:</b>
- {LinkManager.currentLinkAnchor.title}
+ {LinkManager.Instance.currentLinkAnchor.title}
</>
</p>
) : null}
- {LinkManager.currentLink?.title ? (
+ {this.selectedLink?.title ? (
<p className="propertiesView-titleExtender">
<>
<b>Link:</b>
- {LinkManager.currentLink.title}
+ {this.selectedLink.title}
</>
</p>
) : null}
@@ -738,7 +746,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
switch (field) {
case 'Xps': selDoc.x = NumCast(this.selectedDoc?.x) + (dirs === 'up' ? 10 : -10); break;
case 'Yps': selDoc.y = NumCast(this.selectedDoc?.y) + (dirs === 'up' ? 10 : -10); break;
- case 'stk': selDoc.stroke_width = NumCast(this.selectedDoc?.stroke_width) + (dirs === 'up' ? 0.1 : -0.1); break;
+ case 'stk': selDoc.stroke_width = NumCast(this.selectedDoc?.[DocData].stroke_width) + (dirs === 'up' ? 0.1 : -0.1); break;
case 'wid':
const oldWidth = NumCast(selDoc._width);
const oldHeight = NumCast(selDoc._height);
@@ -783,7 +791,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
};
getField(key: string) {
- return Field.toString(this.selectedDoc?.[key] as Field);
+ return Field.toString(this.selectedDoc?.[DocData][key] as Field);
}
@computed get shapeXps() {
@@ -798,6 +806,9 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
@computed get shapeWid() {
return NumCast(this.selectedDoc?._width);
}
+ @computed get strokeThk() {
+ return NumCast(this.selectedDoc?.[DocData].stroke_width);
+ }
set shapeXps(value) {
this.selectedDoc && (this.selectedDoc.x = Math.round(value * 100) / 100);
}
@@ -810,6 +821,9 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
set shapeHgt(value) {
this.selectedDoc && (this.selectedDoc._height = Math.round(value * 100) / 100);
}
+ set strokeThk(value) {
+ this.selectedDoc && (this.selectedDoc[DocData].stroke_width = Math.round(value * 100) / 100);
+ }
@computed get hgtInput() {
return this.inputBoxDuo(
@@ -842,16 +856,16 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
private _lastDash: any = '2';
@computed get colorFil() {
- return StrCast(this.selectedDoc?.fillColor);
+ return StrCast(this.selectedDoc?.[DocData].fillColor);
}
@computed get colorStk() {
- return StrCast(this.selectedDoc?.color);
+ return StrCast(this.selectedDoc?.[DocData].color);
}
set colorFil(value) {
- this.selectedDoc && (this.selectedDoc.fillColor = value ? value : undefined);
+ this.selectedDoc && (this.selectedDoc[DocData].fillColor = value ? value : undefined);
}
set colorStk(value) {
- this.selectedDoc && (this.selectedDoc.color = value ? value : undefined);
+ this.selectedDoc && (this.selectedDoc[DocData].color = value ? value : undefined);
}
colorButton(value: string, type: string, setter: () => void) {
@@ -940,19 +954,19 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
}
set dashdStk(value) {
value && (this._lastDash = value);
- this.selectedDoc && (this.selectedDoc.stroke_dash = value ? this._lastDash : undefined);
+ this.selectedDoc && (this.selectedDoc[DocData].stroke_dash = value ? this._lastDash : undefined);
}
set markScal(value) {
- this.selectedDoc && (this.selectedDoc.stroke_markerScale = Number(value));
+ this.selectedDoc && (this.selectedDoc[DocData].stroke_markerScale = Number(value));
}
set widthStk(value) {
- this.selectedDoc && (this.selectedDoc.stroke_width = Number(value));
+ this.selectedDoc && (this.selectedDoc[DocData].stroke_width = Number(value));
}
set markHead(value) {
- this.selectedDoc && (this.selectedDoc.stroke_startMarker = value);
+ this.selectedDoc && (this.selectedDoc[DocData].stroke_startMarker = value);
}
set markTail(value) {
- this.selectedDoc && (this.selectedDoc.stroke_endMarker = value);
+ this.selectedDoc && (this.selectedDoc[DocData].stroke_endMarker = value);
}
@computed get stkInput() {
@@ -993,53 +1007,11 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
@computed get widthAndDash() {
return (
<div className="widthAndDash">
- <div className="width">
- <div className="width-top">
- <div className="width-title">Width:</div>
- <div className="width-input">{this.stkInput}</div>
- </div>
- <input
- className="width-range"
- type="range"
- style={{ color: SettingsManager.userColor, backgroundColor: SettingsManager.userBackgroundColor }}
- defaultValue={Number(this.widthStk)}
- min={1}
- max={100}
- onChange={action(e => (this.widthStk = e.target.value))}
- onMouseDown={e => {
- this._widthUndo = UndoManager.StartBatch('width undo');
- }}
- onMouseUp={e => {
- this._widthUndo?.end();
- this._widthUndo = undefined;
- }}
- />
- </div>
+ <div className="width">{this.getNumber('Thickness', '', 0, Math.max(50, this.strokeThk), this.strokeThk, (val: number) => !isNaN(val) && (this.strokeThk = val), 50, 1)}</div>
+ <div className="width">{this.getNumber('Arrow Scale', '', 0, Math.max(10, this.markScal), this.markScal, (val: number) => !isNaN(val) && (this.markScal = val), 10, 1)}</div>
<div className="arrows">
<div className="arrows-head">
- <div className="width-top">
- <div className="width-title">Arrow Scale:</div>
- {/* <div className="width-input">{this.markScalInput}</div> */}
- </div>
- <input
- className="width-range"
- type="range"
- defaultValue={this.markScal}
- style={{ color: SettingsManager.userColor, backgroundColor: SettingsManager.userBackgroundColor }}
- min={0}
- max={10}
- onChange={action(e => (this.markScal = +e.target.value))}
- onMouseDown={e => {
- this._widthUndo = UndoManager.StartBatch('scale undo');
- }}
- onMouseUp={e => {
- this._widthUndo?.end();
- this._widthUndo = undefined;
- }}
- />
- </div>
- <div className="arrows-head">
<div className="arrows-head-title">Arrow Head: </div>
<input key="markHead" className="arrows-head-input" type="checkbox" checked={this.markHead !== ''} onChange={undoBatch(action(() => (this.markHead = this.markHead ? '' : 'arrow')))} />
</div>
@@ -1223,10 +1195,10 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
}
@computed get description() {
- return Field.toString(LinkManager.currentLink?.link_description as any as Field);
+ return Field.toString(this.selectedLink?.link_description as any as Field);
}
@computed get relationship() {
- return StrCast(LinkManager.currentLink?.link_relationship);
+ return StrCast(this.selectedLink?.link_relationship);
}
@observable private relationshipButtonColor: string = '';
@@ -1236,7 +1208,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
handleDescriptionChange = undoable(
action((value: string) => {
- if (LinkManager.currentLink && this.selectedDoc) {
+ if (this.selectedLink) {
this.setDescripValue(value);
}
}),
@@ -1245,7 +1217,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
handlelinkRelationshipChange = undoable(
action((value: string) => {
- if (LinkManager.currentLink && this.selectedDoc) {
+ if (this.selectedLink) {
this.setlinkRelationshipValue(value);
}
}),
@@ -1254,17 +1226,17 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
@undoBatch
setDescripValue = action((value: string) => {
- if (LinkManager.currentLink) {
- Doc.GetProto(LinkManager.currentLink).link_description = value;
+ if (this.selectedLink) {
+ this.selectedLink[DocData].link_description = value;
}
});
@undoBatch
setlinkRelationshipValue = action((value: string) => {
- if (LinkManager.currentLink) {
- const prevRelationship = StrCast(LinkManager.currentLink.link_relationship);
- LinkManager.currentLink.link_relationship = value;
- Doc.GetProto(LinkManager.currentLink).link_relationship = value;
+ if (this.selectedLink) {
+ const prevRelationship = StrCast(this.selectedLink.link_relationship);
+ this.selectedLink.link_relationship = value;
+ Doc.GetProto(this.selectedLink).link_relationship = value;
const linkRelationshipList = StrListCast(Doc.UserDoc().link_relationshipList);
const linkRelationshipSizes = NumListCast(Doc.UserDoc().link_relationshipSizes);
const linkColorList = StrListCast(Doc.UserDoc().link_ColorList);
@@ -1348,20 +1320,20 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
};
toggleLinkProp = (e: React.PointerEvent, prop: string) => {
- setupMoveUpEvents(this, e, returnFalse, emptyFunction, undoBatch(action(() => LinkManager.currentLink && (LinkManager.currentLink[prop] = !LinkManager.currentLink[prop]))));
+ setupMoveUpEvents(this, e, returnFalse, emptyFunction, undoBatch(action(() => this.selectedLink && (this.selectedLink[prop] = !this.selectedLink[prop]))));
};
@computed get destinationAnchor() {
- const ldoc = LinkManager.currentLink;
- const lanch = this.selectedDocumentView?.anchorViewDoc ?? LinkManager.currentLinkAnchor;
+ const ldoc = this.selectedLink;
+ const lanch = this.selectedDocumentView?.anchorViewDoc ?? LinkManager.Instance.currentLinkAnchor;
if (ldoc && lanch) return LinkManager.getOppositeAnchor(ldoc, lanch) ?? lanch;
return ldoc ? DocCast(ldoc.link_anchor_2) : ldoc;
}
@computed get sourceAnchor() {
- const selAnchor = this.selectedDocumentView?.anchorViewDoc ?? LinkManager.currentLinkAnchor;
+ const selAnchor = this.selectedDocumentView?.anchorViewDoc ?? LinkManager.Instance.currentLinkAnchor;
- return selAnchor ?? (LinkManager.currentLink && this.destinationAnchor ? LinkManager.getOppositeAnchor(LinkManager.currentLink, this.destinationAnchor) : LinkManager.currentLink);
+ return selAnchor ?? (this.selectedLink && this.destinationAnchor ? LinkManager.getOppositeAnchor(this.selectedLink, this.destinationAnchor) : this.selectedLink);
}
toggleAnchorProp = (e: React.PointerEvent, prop: string, anchor?: Doc, value: any = true, ovalue: any = false, cb: (val: any) => any = val => val) => {
@@ -1387,7 +1359,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
style={{ color: SettingsManager.userColor, backgroundColor: SettingsManager.userBackgroundColor }}
autoComplete={'off'}
id="link_relationship_input"
- value={StrCast(LinkManager.currentLink?.link_relationship)}
+ value={StrCast(this.selectedLink?.link_relationship)}
onKeyDown={this.onRelationshipKey}
onBlur={this.onSelectOutRelationship}
onChange={e => this.handlelinkRelationshipChange(e.currentTarget.value)}
@@ -1404,7 +1376,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
autoComplete="off"
style={{ textAlign: 'left', color: SettingsManager.userColor, backgroundColor: SettingsManager.userBackgroundColor }}
id="link_description_input"
- value={StrCast(LinkManager.currentLink?.link_description)}
+ value={StrCast(this.selectedLink?.link_description)}
onKeyDown={this.onDescriptionKey}
onBlur={this.onSelectOutDesc}
onChange={e => this.handleDescriptionChange(e.currentTarget.value)}
@@ -1426,7 +1398,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
const zoom = Number((NumCast(this.sourceAnchor?.followLinkZoomScale, 1) * 100).toPrecision(3));
const targZoom = this.sourceAnchor?.followLinkZoom;
const indent = 30;
- const hasSelectedAnchor = LinkManager.Links(this.sourceAnchor).includes(LinkManager.currentLink!);
+ const hasSelectedAnchor = LinkManager.Links(this.sourceAnchor).includes(this.selectedLink!);
return (
<>
@@ -1439,36 +1411,6 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
<p>Description</p>
{this.editDescription}
</div>
- <div className="propertiesView-input inline">
- <p>Show link</p>
- <button
- style={{ background: !LinkManager.currentLink?.link_displayLine ? '' : '#4476f7', borderRadius: 3 }}
- onPointerDown={e => this.toggleLinkProp(e, 'link_displayLine')}
- onClick={e => e.stopPropagation()}
- className="propertiesButton">
- <FontAwesomeIcon className="fa-icon" icon={faArrowRight as IconLookup} size="lg" />
- </button>
- </div>
- <div className="propertiesView-input inline" style={{ marginLeft: 10 }}>
- <p>Auto-move anchors</p>
- <button
- style={{ background: !LinkManager.currentLink?.link_autoMoveAnchors ? '' : '#4476f7', borderRadius: 3 }}
- onPointerDown={e => this.toggleLinkProp(e, 'link_autoMoveAnchors')}
- onClick={e => e.stopPropagation()}
- className="propertiesButton">
- <FontAwesomeIcon className="fa-icon" icon={faAnchor as IconLookup} size="lg" />
- </button>
- </div>
- <div className="propertiesView-input inline" style={{ marginLeft: 10 }}>
- <p>Display arrow</p>
- <button
- style={{ background: !LinkManager.currentLink?.link_displayArrow ? '' : '#4476f7', borderRadius: 3 }}
- onPointerDown={e => this.toggleLinkProp(e, 'link_displayArrow')}
- onClick={e => e.stopPropagation()}
- className="propertiesButton">
- <FontAwesomeIcon className="fa-icon" icon={faArrowRight as IconLookup} size="lg" />
- </button>
- </div>
</div>
{!hasSelectedAnchor ? null : (
<div className="propertiesView-section">
@@ -1487,7 +1429,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
<option value={OpenWhere.add}>Opening in new tab</option>
<option value={OpenWhere.replace}>Replacing current tab</option>
<option value={OpenWhere.inParent}>Opening in same collection</option>
- {LinkManager.currentLink?.linksToAnnotation ? <option value="openExternal">Open in external page</option> : null}
+ {this.selectedLink?.linksToAnnotation ? <option value="openExternal">Open in external page</option> : null}
</select>
</div>
<div className="propertiesView-input inline first" style={{ display: 'grid', gridTemplateColumns: '84px calc(100% - 134px) 50px' }}>
@@ -1672,7 +1614,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
render() {
const isNovice = Doc.noviceMode;
- const hasSelectedAnchor = LinkManager.Links(this.sourceAnchor).includes(LinkManager.currentLink!);
+ const hasSelectedAnchor = LinkManager.Links(this.sourceAnchor).includes(this.selectedLink!);
if (!this.selectedDoc && !this.isPres) {
return (
<div className="propertiesView" style={{ width: this._props.width }}>
@@ -1693,7 +1635,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
minWidth: this._props.width,
}}>
<div className="propertiesView-propAndInfoGrouping">
- <div className="propertiesView-title" style={{ width: this._props.width }}>
+ <div className="propertiesView-sectionTitle" style={{ width: this._props.width }}>
Properties
<div className="propertiesView-info" onClick={() => window.open('https://brown-dash.github.io/Dash-Documentation/properties')}>
<IconButton icon={<FontAwesomeIcon icon="info-circle" />} color={SettingsManager.userColor} />
@@ -1703,12 +1645,12 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps
<div className="propertiesView-name">{this.editableTitle}</div>
<div className="propertiesView-type"> {this.currentType} </div>
+ {this.fieldsSubMenu}
{this.optionsSubMenu}
{this.linksSubMenu}
- {!LinkManager.currentLink || !this.openLinks ? null : this.linkProperties}
+ {!this.selectedLink || !this.openLinks ? null : this.linkProperties}
{this.inkSubMenu}
{this.contextsSubMenu}
- {this.fieldsSubMenu}
{isNovice ? null : this.sharingSubMenu}
{this.filtersSubMenu}
{isNovice ? null : this.layoutSubMenu}
diff --git a/src/client/views/StyleProvider.scss b/src/client/views/StyleProvider.scss
index 4d3096f71..30a026dbc 100644
--- a/src/client/views/StyleProvider.scss
+++ b/src/client/views/StyleProvider.scss
@@ -1,5 +1,7 @@
.styleProvider-filter,
.styleProvider-audio,
+.styleProvider-paint,
+.styleProvider-paint-selected,
.styleProvider-lock {
font-size: 10;
width: 15;
@@ -28,6 +30,13 @@
.styleProvider-audio {
right: 30;
}
+.styleProvider-paint-selected,
+.styleProvider-paint {
+ top: 15;
+}
+.styleProvider-paint-selected {
+ right: -30;
+}
.styleProvider-lock:hover,
.styleProvider-audio:hover,
.styleProvider-filter:hover {
diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx
index 5a0167338..0794efe4c 100644
--- a/src/client/views/StyleProvider.tsx
+++ b/src/client/views/StyleProvider.tsx
@@ -9,7 +9,7 @@ import { BsArrowDown, BsArrowDownUp, BsArrowUp } from 'react-icons/bs';
import { FaFilter } from 'react-icons/fa';
import { Doc, Opt, StrListCast } from '../../fields/Doc';
import { DocViews } from '../../fields/DocSymbols';
-import { BoolCast, Cast, DocCast, ImageCast, NumCast, StrCast } from '../../fields/Types';
+import { BoolCast, Cast, DocCast, ImageCast, NumCast, ScriptCast, StrCast } from '../../fields/Types';
import { DashColor, lightOrDark, Utils } from '../../Utils';
import { CollectionViewType, DocumentType } from '../documents/DocumentTypes';
import { DocFocusOrOpen, DocumentManager } from '../util/DocumentManager';
@@ -53,6 +53,16 @@ export enum StyleProp {
function toggleLockedPosition(doc: Doc) {
UndoManager.RunInBatch(() => Doc.toggleLockedPosition(doc), 'toggleBackground');
}
+function togglePaintView(e: React.MouseEvent, doc: Opt<Doc>, props: Opt<FieldViewProps & DocumentViewProps>) {
+ const scriptProps = {
+ this: doc,
+ _readOnly_: false,
+ documentView: props?.DocumentView?.(),
+ value: undefined,
+ };
+ e.stopPropagation();
+ UndoManager.RunInBatch(() => doc && ScriptCast(doc.onPaint).script.run(scriptProps), 'togglePaintView');
+}
export function wavyBorderPath(pw: number, ph: number, inset: number = 0.05) {
return `M ${pw * 0.5} ${ph * inset} C ${pw * 0.6} ${ph * inset} ${pw * (1 - 2 * inset)} 0 ${pw * (1 - inset)} ${ph * inset} C ${pw} ${ph * (2 * inset)} ${pw * (1 - inset)} ${ph * 0.25} ${pw * (1 - inset)} ${ph * 0.3} C ${
@@ -121,10 +131,10 @@ export function DefaultStyleProvider(doc: Opt<Doc>, props: Opt<FieldViewProps &
case StyleProp.DocContents:return undefined;
case StyleProp.WidgetColor:return isAnnotated ? Colors.LIGHT_BLUE : 'dimgrey';
case StyleProp.Opacity: return props?.LayoutTemplateString?.includes(KeyValueBox.name) ? 1 : doc?.text_inlineAnnotations ? 0 : Cast(doc?._opacity, "number", Cast(doc?.opacity, 'number', null));
- case StyleProp.FontSize: return StrCast(doc?.[fieldKey + 'fontSize'], StrCast(doc?._text_fontSize, StrCast(Doc.UserDoc().fontSize)));
- case StyleProp.FontFamily: return StrCast(doc?.[fieldKey + 'fontFamily'], StrCast(doc?._text_fontFamily, StrCast(Doc.UserDoc().fontFamily)));
- case StyleProp.FontWeight: return StrCast(doc?.[fieldKey + 'fontWeight'], StrCast(doc?._text_fontWeight, StrCast(Doc.UserDoc().fontWeight)));
- case StyleProp.FillColor: return StrCast(doc?._fillColor, StrCast(doc?.fillColor, 'transparent'));
+ case StyleProp.FontSize: return StrCast(doc?.[fieldKey + 'fontSize'], StrCast(Doc.UserDoc().fontSize));
+ case StyleProp.FontFamily: return StrCast(doc?.[fieldKey + 'fontFamily'], StrCast(Doc.UserDoc().fontFamily));
+ case StyleProp.FontWeight: return StrCast(doc?.[fieldKey + 'fontWeight'], StrCast(Doc.UserDoc().fontWeight));
+ case StyleProp.FillColor: return StrCast(doc?._fillColor, StrCast(doc?.fillColor, StrCast(doc?.backgroundColor, 'transparent')));
case StyleProp.ShowCaption:return props?.hideCaptions || doc?._type_collection === CollectionViewType.Carousel ? undefined: StrCast(doc?._layout_showCaption);
case StyleProp.TitleHeight:return (props?.ScreenToLocalTransform().Scale ?? 1) * NumCast(Doc.UserDoc().headerHeight,30);
case StyleProp.ShowTitle:
@@ -181,7 +191,7 @@ export function DefaultStyleProvider(doc: Opt<Doc>, props: Opt<FieldViewProps &
: 0;
case StyleProp.BackgroundColor: {
if (SettingsManager.Instance.LastPressedBtn === doc) return SettingsManager.userColor; // hack to indicate active menu panel item
- let docColor: Opt<string> = StrCast(doc?.[fieldKey + 'backgroundColor'], StrCast(doc?._backgroundColor, isCaption ? 'rgba(0,0,0,0.4)' : ''));
+ let docColor: Opt<string> = StrCast(doc?.[fieldKey + 'backgroundColor'], StrCast(doc?.backgroundColor, isCaption ? 'rgba(0,0,0,0.4)' : ''));
// prettier-ignore
switch (doc?.type) {
case DocumentType.PRESELEMENT: docColor = docColor || ""; break;
@@ -267,6 +277,11 @@ export function DefaultStyleProvider(doc: Opt<Doc>, props: Opt<FieldViewProps &
<FontAwesomeIcon icon='lock' size="lg" />
</div>
);
+ const paint = () => !doc?.onPaint ? null : (
+ <div className={`styleProvider-paint${props?.DocumentView?.().IsSelected ? "-selected":""}`} onClick={e => togglePaintView(e, doc, props)}>
+ <FontAwesomeIcon icon='pen' size="lg" />
+ </div>
+ );
const filter = () => {
const dashView = untracked(() => DocumentManager.Instance.getDocumentView(Doc.ActiveDashboard));
const showFilterIcon =
@@ -329,6 +344,7 @@ export function DefaultStyleProvider(doc: Opt<Doc>, props: Opt<FieldViewProps &
};
return (
<>
+ {paint()}
{lock()}
{filter()}
{audio()}
diff --git a/src/client/views/collections/CollectionDockingView.tsx b/src/client/views/collections/CollectionDockingView.tsx
index 87973fd81..31ca86f0f 100644
--- a/src/client/views/collections/CollectionDockingView.tsx
+++ b/src/client/views/collections/CollectionDockingView.tsx
@@ -490,7 +490,7 @@ export class CollectionDockingView extends CollectionSubView() {
// if you close a tab that is not embedded somewhere else (an embedded Doc can be opened simultaneously in a tab), then add the tab to recently closed
if (tab.DashDoc.embedContainer === this.Document) tab.DashDoc.embedContainer = undefined;
if (!tab.DashDoc.embedContainer) Doc.AddDocToList(Doc.MyRecentlyClosed, 'data', tab.DashDoc, undefined, true, true);
- Doc.RemoveDocFromList(tab.DashDoc[DocData], 'proto_embeddings', tab.DashDoc);
+ Doc.RemoveEmbedding(tab.DashDoc, tab.DashDoc);
}
if (CollectionDockingView.Instance) {
const dview = CollectionDockingView.Instance.Document;
diff --git a/src/client/views/collections/CollectionStackingView.tsx b/src/client/views/collections/CollectionStackingView.tsx
index 89e72152a..54314f62c 100644
--- a/src/client/views/collections/CollectionStackingView.tsx
+++ b/src/client/views/collections/CollectionStackingView.tsx
@@ -135,14 +135,15 @@ export class CollectionStackingView extends CollectionSubView<Partial<collection
return docs.map((d, i) => {
const height = () => this.getDocHeight(d);
const width = () => this.getDocWidth(d);
+ const trans = () => this.getDocTransition(d);
// assuming we need to get rowSpan because we might be dealing with many columns. Grid gap makes sense if multiple columns
const rowSpan = Math.ceil((height() + this.gridGap) / this.gridGap);
// just getting the style
- const style = this.isStackingView ? { margin: this.Document._stacking_alignCenter ? 'auto' : undefined, width: width(), marginTop: i ? this.gridGap : 0, height: height() } : { gridRowEnd: `span ${rowSpan}` };
+ const style = this.isStackingView ? { margin: this.Document._stacking_alignCenter ? 'auto' : undefined, transition: trans(), width: width(), marginTop: i ? this.gridGap : 0, height: height() } : { gridRowEnd: `span ${rowSpan}` };
// So we're choosing whether we're going to render a column or a masonry doc
return (
<div className={`collectionStackingView-${this.isStackingView ? 'columnDoc' : 'masonryDoc'}`} key={d[Id]} style={style}>
- {this.getDisplayDoc(d, width, i)}
+ {this.getDisplayDoc(d, width, trans, i)}
</div>
);
});
@@ -309,7 +310,7 @@ export class CollectionStackingView extends CollectionSubView<Partial<collection
childFitWidth = (doc: Doc) => Cast(this.Document.childLayoutFitWidth, 'boolean', this._props.childLayoutFitWidth?.(doc) ?? Cast(doc.layout_fitWidth, 'boolean', null));
// this is what renders the document that you see on the screen
// called in Children: this actually adds a document to our children list
- getDisplayDoc(doc: Doc, width: () => number, count: number) {
+ getDisplayDoc(doc: Doc, width: () => number, trans: () => string, count: number) {
const dataDoc = doc.isTemplateDoc || doc.isTemplateForField ? this._props.TemplateDataDocument : undefined;
const height = () => this.getDocHeight(doc);
const panelHeight = () => (this.isStackingView ? height() : Math.min(height(), this._props.PanelHeight()));
@@ -330,6 +331,7 @@ export class CollectionStackingView extends CollectionSubView<Partial<collection
layout_fitWidth={this.childFitWidth}
isContentActive={doc.onClick ? this.isChildButtonContentActive : this.isChildContentActive}
onKey={this.onKeyDown}
+ DataTransition={trans}
onBrowseClickScript={this._props.onBrowseClickScript}
isDocumentActive={this.isContentActive}
LayoutTemplate={this._props.childLayoutTemplate}
@@ -379,6 +381,10 @@ export class CollectionStackingView extends CollectionSubView<Partial<collection
}
return maxWidth;
}
+ getDocTransition(d?: Doc) {
+ if (!d) return '';
+ return StrCast(d.dataTransition);
+ }
getDocHeight(d?: Doc) {
if (!d || d.hidden) return 0;
const childLayoutDoc = Doc.Layout(d, this._props.childLayoutTemplate?.());
diff --git a/src/client/views/collections/CollectionTimeView.tsx b/src/client/views/collections/CollectionTimeView.tsx
index ee5147428..38f6aa3e7 100644
--- a/src/client/views/collections/CollectionTimeView.tsx
+++ b/src/client/views/collections/CollectionTimeView.tsx
@@ -200,8 +200,7 @@ export class CollectionTimeView extends CollectionSubView() {
}
menuCallback = (x: number, y: number) => {
ContextMenu.Instance.clearItems();
- const docItems: ContextMenuProps[] = [];
- const keySet: Set<string> = new Set();
+ const keySet: Set<string> = new Set(['tags']);
this.childLayoutPairs.map(pair =>
this._allFacets
@@ -209,7 +208,9 @@ export class CollectionTimeView extends CollectionSubView() {
.filter(fieldKey => fieldKey[0] !== '_' && (fieldKey === 'tags' || fieldKey[0] === toUpper(fieldKey)[0]))
.map(fieldKey => keySet.add(fieldKey))
);
- Array.from(keySet).map(fieldKey => docItems.push({ description: ':' + fieldKey, event: () => (this.layoutDoc._pivotField = fieldKey), icon: 'compress-arrows-alt' }));
+
+ const docItems: ContextMenuProps[] = Array.from(keySet).map(fieldKey =>
+ ({ description: ':' + fieldKey, event: () => (this.layoutDoc._pivotField = fieldKey), icon: 'compress-arrows-alt' })); // prettier-ignore
docItems.push({ description: ':default', event: () => (this.layoutDoc._pivotField = undefined), icon: 'compress-arrows-alt' });
ContextMenu.Instance.addItem({ description: 'Pivot Fields ...', subitems: docItems, icon: 'eye' });
ContextMenu.Instance.displayMenu(x, y, ':');
diff --git a/src/client/views/collections/CollectionTreeView.tsx b/src/client/views/collections/CollectionTreeView.tsx
index 741013148..786301136 100644
--- a/src/client/views/collections/CollectionTreeView.tsx
+++ b/src/client/views/collections/CollectionTreeView.tsx
@@ -8,8 +8,8 @@ import { listSpec } from '../../../fields/Schema';
import { ScriptField } from '../../../fields/ScriptField';
import { BoolCast, Cast, NumCast, ScriptCast, StrCast } from '../../../fields/Types';
import { TraceMobx } from '../../../fields/util';
-import { emptyFunction, returnAll, returnEmptyDoclist, returnEmptyFilter, returnFalse, returnNone, returnOne, returnTrue, returnZero } from '../../../Utils';
-import { DocUtils } from '../../documents/Documents';
+import { emptyFunction, returnAll, returnEmptyDoclist, returnEmptyFilter, returnFalse, returnNone, returnOne, returnTrue, returnZero, Utils } from '../../../Utils';
+import { Docs, DocUtils } from '../../documents/Documents';
import { DocumentManager } from '../../util/DocumentManager';
import { DragManager, dropActionType } from '../../util/DragManager';
import { SelectionManager } from '../../util/SelectionManager';
@@ -27,6 +27,7 @@ import { CollectionFreeFormView } from './collectionFreeForm';
import { CollectionSubView } from './CollectionSubView';
import './CollectionTreeView.scss';
import { TreeView } from './TreeView';
+import { ScriptingGlobals } from '../../util/ScriptingGlobals';
const _global = (window /* browser */ || global) /* node */ as any;
export type collectionTreeViewProps = {
@@ -51,6 +52,7 @@ export enum TreeViewType {
@observer
export class CollectionTreeView extends CollectionSubView<Partial<collectionTreeViewProps>>() {
+ public static AddTreeFunc = 'addTreeFolder(this.embedContainer)';
private _treedropDisposer?: DragManager.DragDropDisposer;
private _mainEle?: HTMLDivElement;
private _titleRef?: HTMLDivElement | HTMLInputElement | null;
@@ -140,6 +142,17 @@ export class CollectionTreeView extends CollectionSubView<Partial<collectionTree
if ((this._mainEle = ele)) this._treedropDisposer = DragManager.MakeDropTarget(ele, this.onInternalDrop.bind(this), this.Document, this.onInternalPreDrop.bind(this));
};
+ protected onInternalDrop(e: Event, de: DragManager.DropEvent) {
+ const res = super.onInternalDrop(e, de);
+ if (res && de.complete.docDragData) {
+ if (this.Document !== Doc.MyRecentlyClosed)
+ de.complete.docDragData.droppedDocuments.forEach(doc => {
+ if (this.Document !== Doc.MyRecentlyClosed) Doc.RemoveDocFromList(Doc.MyRecentlyClosed, undefined, doc);
+ });
+ }
+ return res;
+ }
+
protected onInternalPreDrop = (e: Event, de: DragManager.DropEvent, dropAction: dropActionType) => {
const dragData = de.complete.docDragData;
if (dragData) {
@@ -150,9 +163,7 @@ export class CollectionTreeView extends CollectionSubView<Partial<collectionTree
}
};
- configDrag = (dragData: DragManager.DocumentDragData) => {
- dragData.treeViewDoc = this.Document;
- };
+ dragConfig = (dragData: DragManager.DocumentDragData) => (dragData.treeViewDoc = this.Document);
screenToLocalTransform = () => this.ScreenToLocalBoxXf().translate(0, -this._headerHeight);
@@ -163,34 +174,41 @@ export class CollectionTreeView extends CollectionSubView<Partial<collectionTree
const value = DocListCast(targetDataDoc[this._props.fieldKey]);
const result = value.filter(v => !docs.includes(v));
if ((doc instanceof Doc ? [doc] : doc).some(doc => SelectionManager.Views.some(dv => Doc.AreProtosEqual(dv.Document, doc)))) SelectionManager.DeselectAll();
- if (result.length !== value.length && doc instanceof Doc) {
- const ind = DocListCast(targetDataDoc[this._props.fieldKey]).indexOf(doc);
- const prev = ind && DocListCast(targetDataDoc[this._props.fieldKey])[ind - 1];
- this._props.removeDocument?.(doc);
- if (ind > 0 && prev) {
- FormattedTextBox.SetSelectOnLoad(prev);
- DocumentManager.Instance.getDocumentView(prev, this.DocumentView?.())?.select(false);
+ if (result.length !== value.length) {
+ if (doc instanceof Doc) {
+ const ind = DocListCast(targetDataDoc[this._props.fieldKey]).indexOf(doc);
+ const prev = ind && DocListCast(targetDataDoc[this._props.fieldKey])[ind - 1];
+ this._props.removeDocument?.(doc);
+ if (ind > 0 && prev) {
+ FormattedTextBox.SetSelectOnLoad(prev);
+ DocumentManager.Instance.getDocumentView(prev, this.DocumentView?.())?.select(false);
+ }
+ return true;
}
- return true;
+ return this._props.removeDocument?.(doc) ?? false;
}
return false;
};
@action
addDoc = (docs: Doc | Doc[], relativeTo: Opt<Doc>, before?: boolean): boolean => {
- const doAddDoc = (doc: Doc | Doc[]) =>
- (doc instanceof Doc ? [doc] : doc).reduce((flg, doc) => {
- const res = flg && Doc.AddDocToList(this.Document[DocData], this._props.fieldKey, doc, relativeTo, before);
- res && Doc.SetContainer(doc, this.Document);
- return res;
- }, true);
+ const doclist = docs instanceof Doc ? [docs] : docs;
+ const addDocRelativeTo = (doc: Doc | Doc[]) => doclist.reduce((flg, doc) => flg && Doc.AddDocToList(this.Document[DocData], this._props.fieldKey, doc, relativeTo, before), true);
if (this.Document.resolvedDataDoc instanceof Promise) return false;
- return relativeTo === undefined ? this._props.addDocument?.(docs) || false : doAddDoc(docs);
+ const res = relativeTo === undefined ? this._props.addDocument?.(docs) || false : addDocRelativeTo(docs);
+ res &&
+ doclist.forEach(doc => {
+ Doc.SetContainer(doc, this.Document);
+ if (this.Document !== Doc.MyRecentlyClosed) Doc.RemoveDocFromList(Doc.MyRecentlyClosed, undefined, doc);
+ });
+ return res;
};
onContextMenu = (e: React.MouseEvent): void => {
// need to test if propagation has stopped because GoldenLayout forces a parallel react hierarchy to be created for its top-level layout
+ const layoutItems: ContextMenuProps[] = [];
+ const menuDoc = ScriptCast(Cast(this.layoutDoc.layout_headerButton, Doc, null)?.onClick).script.originalScript === CollectionTreeView.AddTreeFunc;
+ menuDoc && layoutItems.push({ description: 'Create new folder', event: () => CollectionTreeView.addTreeFolder(this.Document), icon: 'paint-brush' });
if (!Doc.noviceMode) {
- const layoutItems: ContextMenuProps[] = [];
layoutItems.push({
description: 'Make tree state ' + (this.Document.treeView_OpenIsTransient ? 'persistent' : 'transient'),
event: () => (this.Document.treeView_OpenIsTransient = !this.Document.treeView_OpenIsTransient),
@@ -198,7 +216,9 @@ export class CollectionTreeView extends CollectionSubView<Partial<collectionTree
});
layoutItems.push({ description: (this.Document.treeView_HideHeaderFields ? 'Show' : 'Hide') + ' Header Fields', event: () => (this.Document.treeView_HideHeaderFields = !this.Document.treeView_HideHeaderFields), icon: 'paint-brush' });
layoutItems.push({ description: (this.Document.treeView_HideTitle ? 'Show' : 'Hide') + ' Title', event: () => (this.Document.treeView_HideTitle = !this.Document.treeView_HideTitle), icon: 'paint-brush' });
- ContextMenu.Instance.addItem({ description: 'Options...', subitems: layoutItems, icon: 'eye' });
+ }
+ ContextMenu.Instance.addItem({ description: 'Options...', subitems: layoutItems, icon: 'eye' });
+ if (!Doc.noviceMode) {
const existingOnClick = ContextMenu.Instance.findByDescription('OnClick...');
const onClicks: ContextMenuProps[] = existingOnClick && 'subitems' in existingOnClick ? existingOnClick.subitems : [];
onClicks.push({ description: 'Edit onChecked Script', event: () => UndoManager.RunInBatch(() => DocUtils.makeCustomViewClicked(this.Document, undefined, 'onCheckedClick'), 'edit onCheckedClick'), icon: 'edit' });
@@ -467,4 +487,13 @@ export class CollectionTreeView extends CollectionSubView<Partial<collectionTree
</div>
);
}
+ static addTreeFolder(container: Doc) {
+ TreeView._editTitleOnLoad = { id: Utils.GenerateGuid(), parent: undefined };
+ const opts = { title: 'Untitled folder', _dragOnlyWithinContainer: true, isFolder: true };
+ return Doc.AddDocToList(container, 'data', Docs.Create.TreeDocument([], opts, TreeView._editTitleOnLoad.id));
+ }
}
+
+ScriptingGlobals.add(function addTreeFolder(doc: Doc) {
+ CollectionTreeView.addTreeFolder(doc);
+});
diff --git a/src/client/views/collections/TabDocView.tsx b/src/client/views/collections/TabDocView.tsx
index 9bc3ef822..02aa76d82 100644
--- a/src/client/views/collections/TabDocView.tsx
+++ b/src/client/views/collections/TabDocView.tsx
@@ -520,6 +520,7 @@ interface TabMiniThumbProps {
miniLeft: () => number;
}
+@observer
class TabMiniThumb extends React.Component<TabMiniThumbProps> {
render() {
return <div className="miniThumb" style={{ width: `${this.props.miniWidth()}% `, height: `${this.props.miniHeight()}% `, left: `${this.props.miniLeft()}% `, top: `${this.props.miniTop()}% ` }} />;
diff --git a/src/client/views/collections/TreeView.scss b/src/client/views/collections/TreeView.scss
index 0a1946f09..2ab1a5ac1 100644
--- a/src/client/views/collections/TreeView.scss
+++ b/src/client/views/collections/TreeView.scss
@@ -128,6 +128,10 @@
position: relative;
z-index: 1;
+ .treeView-rightButtons > .iconButton-container {
+ min-height: unset;
+ }
+
.treeView-background {
width: 100%;
height: 100%;
@@ -220,13 +224,13 @@
}
.treeView-header-above {
- border-top: black 1px solid;
+ border-top: red 1px solid;
}
.treeView-header-below {
- border-bottom: black 1px solid;
+ border-bottom: red 1px solid;
}
.treeView-header-inside {
- border: black 1px solid;
+ border: red 1px solid;
}
diff --git a/src/client/views/collections/TreeView.tsx b/src/client/views/collections/TreeView.tsx
index be5737a25..85f7cf7fe 100644
--- a/src/client/views/collections/TreeView.tsx
+++ b/src/client/views/collections/TreeView.tsx
@@ -383,7 +383,7 @@ export class TreeView extends ObservableReactComponent<TreeViewProps> {
makeFolder = () => {
const folder = Docs.Create.TreeDocument([], { title: 'Untitled folder', _dragOnlyWithinContainer: true, isFolder: true });
TreeView._editTitleOnLoad = { id: folder[Id], parent: this._props.parentTreeView };
- return this._props.addDocument(folder);
+ return this.localAdd(folder);
};
preTreeDrop = (e: Event, de: DragManager.DropEvent, docDropAction: dropActionType) => {
@@ -424,6 +424,16 @@ export class TreeView extends ObservableReactComponent<TreeViewProps> {
return false;
};
+ localAdd = (doc: Doc | Doc[]) => {
+ const innerAdd = (doc: Doc) => {
+ const dataIsComputed = ComputedField.WithoutComputed(() => FieldValue(this.dataDoc[this.fieldKey])) instanceof ComputedField;
+ const added = (!dataIsComputed || (this.dropping && this.moving)) && Doc.AddDocToList(this.dataDoc, this.fieldKey, doc);
+ dataIsComputed && Doc.SetContainer(doc, DocCast(this.Document.embedContainer));
+ return added;
+ };
+ return (doc instanceof Doc ? [doc] : doc).reduce((flg, doc) => flg && innerAdd(doc), true as boolean);
+ };
+
dropping: boolean = false;
dropDocuments(
droppedDocuments: Doc[],
@@ -436,16 +446,8 @@ export class TreeView extends ObservableReactComponent<TreeViewProps> {
canEmbed?: boolean
) {
const parentAddDoc = (doc: Doc | Doc[]) => this._props.addDocument(doc, undefined, undefined, before);
- const localAdd = (doc: Doc | Doc[]) => {
- const innerAdd = (doc: Doc) => {
- const dataIsComputed = ComputedField.WithoutComputed(() => FieldValue(this.dataDoc[this.fieldKey])) instanceof ComputedField;
- const added = (!dataIsComputed || (this.dropping && this.moving)) && Doc.AddDocToList(this.dataDoc, this.fieldKey, doc);
- dataIsComputed && Doc.SetContainer(doc, DocCast(this.Document.embedContainer));
- return added;
- };
- return (doc instanceof Doc ? [doc] : doc).reduce((flg, doc) => flg && innerAdd(doc), true as boolean);
- };
- const addDoc = inside ? localAdd : parentAddDoc;
+
+ const addDoc = inside ? this.localAdd : parentAddDoc;
const canAdd = !StrCast((inside ? this.Document : this._props.treeViewParent)?.treeView_FreezeChildren).includes('add') || forceAdd;
if (canAdd && (dropAction !== 'inSame' || droppedDocuments.every(d => d.embedContainer === this._props.parentTreeView?.Document))) {
const move = (!dropAction || canEmbed || dropAction === 'proto' || dropAction === 'move' || dropAction === 'same' || dropAction === 'inSame') && moveDocument;
@@ -839,14 +841,13 @@ export class TreeView extends ObservableReactComponent<TreeViewProps> {
};
contextMenuItems = () => {
const makeFolder = { script: ScriptField.MakeFunction(`scriptContext.makeFolder()`, { scriptContext: 'any' })!, icon: 'folder-plus', label: 'New Folder' };
- const folderOp = this.childDocs?.length ? [makeFolder] : [];
const openEmbedding = { script: ScriptField.MakeFunction(`openDoc(getEmbedding(this), "${OpenWhere.addRight}")`)!, icon: 'copy', label: 'Open New Embedding' };
const focusDoc = { script: ScriptField.MakeFunction(`DocFocusOrOpen(this)`)!, icon: 'eye', label: 'Focus or Open' };
const reopenDoc = { script: ScriptField.MakeFunction(`DocFocusOrOpen(this)`)!, icon: 'eye', label: 'Reopen' };
return [
...(this._props.contextMenuItems ?? []).filter(mi => (!mi.filter ? true : mi.filter.script.run({ doc: this.Document })?.result)),
...(this.Document.isFolder
- ? folderOp
+ ? [makeFolder]
: Doc.IsSystem(this.Document)
? []
: this.treeView.fileSysMode && this.Document === this.Document[DocData]
@@ -993,6 +994,7 @@ export class TreeView extends ObservableReactComponent<TreeViewProps> {
onClickScript={this.onChildClick}
onDoubleClickScript={this.onChildDoubleClick}
dragAction={this._props.dragAction}
+ dragConfig={this.treeView.dragConfig}
moveDocument={this.move}
removeDocument={this._props.removeDoc}
ScreenToLocalTransform={this.getTransform}
@@ -1328,9 +1330,3 @@ export class TreeView extends ObservableReactComponent<TreeViewProps> {
});
}
}
-
-ScriptingGlobals.add(function TreeView_addNewFolder() {
- TreeView._editTitleOnLoad = { id: Utils.GenerateGuid(), parent: undefined };
- const opts = { title: 'Untitled folder', _dragOnlyWithinContainer: true, isFolder: true };
- return Doc.AddDocToList(Doc.MyFilesystem, 'data', Docs.Create.TreeDocument([], opts, TreeView._editTitleOnLoad.id));
-});
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinkView.scss b/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinkView.scss
deleted file mode 100644
index b44acfce8..000000000
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinkView.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-.collectionfreeformlinkview-linkLine {
- stroke: black;
- opacity: 0.8;
- stroke-width: 3px;
- transition: opacity 0.5s ease-in;
- fill: transparent;
-}
-.collectionfreeformlinkview-linkText {
- stroke: rgb(0, 0, 0);
- pointer-events: all;
- cursor: move;
-}
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinkView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinkView.tsx
deleted file mode 100644
index f0a31a8c6..000000000
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinkView.tsx
+++ /dev/null
@@ -1,318 +0,0 @@
-import { action, computed, IReactionDisposer, makeObservable, observable, reaction } from 'mobx';
-import { observer } from 'mobx-react';
-import * as React from 'react';
-import { Doc, Field } from '../../../../fields/Doc';
-import { Brushed, DocCss } from '../../../../fields/DocSymbols';
-import { Id } from '../../../../fields/FieldSymbols';
-import { List } from '../../../../fields/List';
-import { Cast, NumCast, StrCast } from '../../../../fields/Types';
-import { emptyFunction, setupMoveUpEvents, Utils } from '../../../../Utils';
-import { LinkManager } from '../../../util/LinkManager';
-import { SelectionManager } from '../../../util/SelectionManager';
-import { SettingsManager } from '../../../util/SettingsManager';
-import { SnappingManager } from '../../../util/SnappingManager';
-import { Colors } from '../../global/globalEnums';
-import { DocumentView } from '../../nodes/DocumentView';
-import { ObservableReactComponent } from '../../ObservableReactComponent';
-import './CollectionFreeFormLinkView.scss';
-
-export interface CollectionFreeFormLinkViewProps {
- A: DocumentView;
- B: DocumentView;
- LinkDocs: Doc[];
-}
-
-@observer
-export class CollectionFreeFormLinkView extends ObservableReactComponent<CollectionFreeFormLinkViewProps> {
- @observable _opacity: number = 0;
- @observable _start = 0;
- _anchorDisposer: IReactionDisposer | undefined;
- _timeout: NodeJS.Timeout | undefined;
- constructor(props: any) {
- super(props);
- makeObservable(this);
- }
-
- componentWillUnmount() {
- this._anchorDisposer?.();
- }
- @action timeout: any = action(() => Date.now() < this._start++ + 1000 && (this._timeout = setTimeout(this.timeout, 25)));
- componentDidMount() {
- this._anchorDisposer = reaction(
- () => [
- this._props.A.screenToViewTransform(),
- Cast(Cast(Cast(this._props.A.Document, Doc, null)?.link_anchor_1, Doc, null)?.annotationOn, Doc, null)?.layout_scrollTop,
- Cast(Cast(Cast(this._props.A.Document, Doc, null)?.link_anchor_1, Doc, null)?.annotationOn, Doc, null)?.[DocCss],
- this._props.B.screenToViewTransform(),
- Cast(Cast(Cast(this._props.A.Document, Doc, null)?.link_anchor_2, Doc, null)?.annotationOn, Doc, null)?.layout_scrollTop,
- Cast(Cast(Cast(this._props.A.Document, Doc, null)?.link_anchor_2, Doc, null)?.annotationOn, Doc, null)?.[DocCss],
- ],
- action(() => {
- this._start = Date.now();
- this._timeout && clearTimeout(this._timeout);
- this._timeout = setTimeout(this.timeout, 25);
- setTimeout(this.placeAnchors, 10); // when docs are dragged, their transforms will update before a render has been performed. placeanchors needs to come after a render to find things in the dom. a 0 timeout will still come before the render
- }),
- { fireImmediately: true }
- );
- }
- placeAnchors = () => {
- const { A, B, LinkDocs } = this._props;
- const linkDoc = LinkDocs[0];
- if (SnappingManager.IsDragging || !A.ContentDiv || !B.ContentDiv) return;
- setTimeout(
- action(() => (this._opacity = 0.75)),
- 0
- ); // since the render code depends on querying the Dom through getBoudndingClientRect, we need to delay triggering render()
- setTimeout(
- action(() => (!LinkDocs.length || !(linkDoc.link_displayLine || Doc.UserDoc().showLinkLines)) && (this._opacity = 0.05)),
- 750
- ); // this will unhighlight the link line.
- const a = A.ContentDiv.getBoundingClientRect();
- const b = B.ContentDiv.getBoundingClientRect();
- const { left: aleft, top: atop, width: awidth, height: aheight } = A.ContentDiv.parentElement!.getBoundingClientRect();
- const { left: bleft, top: btop, width: bwidth, height: bheight } = B.ContentDiv.parentElement!.getBoundingClientRect();
- const apt = Utils.closestPtBetweenRectangles(aleft, atop, awidth, aheight, bleft, btop, bwidth, bheight, a.left + a.width / 2, a.top + a.height / 2);
- const bpt = Utils.closestPtBetweenRectangles(bleft, btop, bwidth, bheight, aleft, atop, awidth, aheight, apt.point.x, apt.point.y);
-
- // really hacky stuff to make the LinkAnchorBox display where we want it to:
- // if there's an element in the DOM with a classname containing a link anchor's id,
- // then that DOM element is a hyperlink source for the current anchor and we want to place our link box at it's top right
- // otherwise, we just use the computed nearest point on the document boundary to the target Document
- const targetAhyperlink = Array.from(window.document.getElementsByClassName((linkDoc.link_anchor_1 as Doc)[Id])).lastElement();
- const targetBhyperlink = Array.from(window.document.getElementsByClassName((linkDoc.link_anchor_2 as Doc)[Id])).lastElement();
- if ((!targetAhyperlink && !a.width) || (!targetBhyperlink && !b.width)) return;
- if (!targetAhyperlink) {
- if (linkDoc.link_autoMoveAnchors) {
- linkDoc.link_anchor_1_x = ((apt.point.x - aleft) / awidth) * 100;
- linkDoc.link_anchor_1_y = ((apt.point.y - atop) / aheight) * 100;
- }
- } else {
- const m = targetAhyperlink.getBoundingClientRect();
- const mp = A.screenToViewTransform().transformPoint(m.right, m.top + 5);
- const mpx = mp[0] / A._props.PanelWidth();
- const mpy = mp[1] / A._props.PanelHeight();
- if (mpx >= 0 && mpx <= 1) linkDoc.link_anchor_1_x = mpx * 100;
- if (mpy >= 0 && mpy <= 1) linkDoc.link_anchor_1_y = mpy * 100;
- if (getComputedStyle(targetAhyperlink).fontSize === '0px') linkDoc.opacity = 0;
- else linkDoc.opacity = 1;
- }
- if (!targetBhyperlink) {
- if (linkDoc.link_autoMoveAnchors) {
- linkDoc.link_anchor_2_x = ((bpt.point.x - bleft) / bwidth) * 100;
- linkDoc.link_anchor_2_y = ((bpt.point.y - btop) / bheight) * 100;
- }
- } else {
- const m = targetBhyperlink.getBoundingClientRect();
- const mp = B.screenToViewTransform().transformPoint(m.right, m.top + 5);
- const mpx = mp[0] / B._props.PanelWidth();
- const mpy = mp[1] / B._props.PanelHeight();
- if (mpx >= 0 && mpx <= 1) linkDoc.link_anchor_2_x = mpx * 100;
- if (mpy >= 0 && mpy <= 1) linkDoc.link_anchor_2_y = mpy * 100;
- if (getComputedStyle(targetBhyperlink).fontSize === '0px') linkDoc.opacity = 0;
- else linkDoc.opacity = 1;
- }
- };
-
- pointerDown = (e: React.PointerEvent) => {
- setupMoveUpEvents(
- this,
- e,
- (e, down, delta) => {
- this._props.LinkDocs[0].link_relationship_OffsetX = NumCast(this._props.LinkDocs[0].link_relationship_OffsetX) + delta[0];
- this._props.LinkDocs[0].link_relationship_OffsetY = NumCast(this._props.LinkDocs[0].link_relationship_OffsetY) + delta[1];
- return false;
- },
- emptyFunction,
- action(() => {
- SelectionManager.DeselectAll();
- SelectionManager.SelectSchemaViewDoc(this._props.LinkDocs[0], true);
- LinkManager.currentLink = this._props.LinkDocs[0];
- this.toggleProperties();
- // OverlayView.Instance.addElement(
- // <LinkEditor sourceDoc={this._props.A.Document} linkDoc={this._props.LinkDocs[0]}
- // showLinks={action(() => { })}
- // />, { x: 300, y: 300 });
- })
- );
- };
-
- visibleY = (el: any) => {
- let rect = el.getBoundingClientRect();
- const top = rect.top,
- height = rect.height;
- var el = el.parentNode;
- while (el && el !== document.body) {
- if (el.className === 'tabDocView-content') break;
- rect = el.getBoundingClientRect?.();
- if (rect?.width) {
- if (top <= rect.bottom === false && getComputedStyle(el).overflow === 'hidden') return rect.bottom;
- // Check if the element is out of view due to a container scrolling
- if (top + height <= rect.top && getComputedStyle(el).overflow === 'hidden') return rect.top;
- }
- el = el.parentNode;
- }
- // Check its within the document viewport
- return top; //top <= document.documentElement.clientHeight && getComputedStyle(document.documentElement).overflow === "hidden";
- };
- visibleX = (el: any) => {
- let rect = el.getBoundingClientRect();
- const left = rect.left,
- width = rect.width;
- var el = el.parentNode;
- while (el && el !== document.body) {
- rect = el?.getBoundingClientRect();
- if (rect?.width) {
- if (left <= rect.right === false && getComputedStyle(el).overflow === 'hidden') return rect.right;
- // Check if the element is out of view due to a container scrolling
- if (left + width <= rect.left && getComputedStyle(el).overflow === 'hidden') return rect.left;
- }
- el = el.parentNode;
- }
- // Check its within the document viewport
- return left; //top <= document.documentElement.clientHeight && getComputedStyle(document.documentElement).overflow === "hidden";
- };
-
- @action
- toggleProperties = () => {
- if ((SettingsManager.Instance.propertiesWidth ?? 0) < 100) {
- SettingsManager.Instance.propertiesWidth = 250;
- }
- };
-
- @action
- onClickLine = () => {
- SelectionManager.DeselectAll();
- SelectionManager.SelectSchemaViewDoc(this._props.LinkDocs[0], true);
- LinkManager.currentLink = this._props.LinkDocs[0];
- this.toggleProperties();
- };
-
- @computed.struct get renderData() {
- this._start;
- SnappingManager.IsDragging;
- const { A, B, LinkDocs } = this._props;
- if (!A.ContentDiv || !B.ContentDiv || !LinkDocs.length) return undefined;
- const acont = A.ContentDiv.getElementsByClassName('linkAnchorBox-cont');
- const bcont = B.ContentDiv.getElementsByClassName('linkAnchorBox-cont');
- const adiv = acont.length ? acont[0] : A.ContentDiv;
- const bdiv = bcont.length ? bcont[0] : B.ContentDiv;
- for (let apdiv = adiv; apdiv; apdiv = apdiv.parentElement as any) if ((apdiv as any).hidden) return;
- for (let bpdiv = bdiv; bpdiv; bpdiv = bpdiv.parentElement as any) if ((bpdiv as any).hidden) return;
- const a = adiv.getBoundingClientRect();
- const b = bdiv.getBoundingClientRect();
- const atop = this.visibleY(adiv);
- const btop = this.visibleY(bdiv);
- if (!a.width || !b.width) return undefined;
- const aDocBounds = (A._props as any).DocumentView?.().getBounds || { left: 0, right: 0, top: 0, bottom: 0 };
- const bDocBounds = (B._props as any).DocumentView?.().getBounds || { left: 0, right: 0, top: 0, bottom: 0 };
- const aleft = this.visibleX(adiv);
- const bleft = this.visibleX(bdiv);
- const aclipped = aleft !== a.left || atop !== a.top;
- const bclipped = bleft !== b.left || btop !== b.top;
- if (aclipped && bclipped) return undefined;
- const clipped = aclipped || bclipped;
- const pt1inside = NumCast(LinkDocs[0].link_anchor_1_x) % 100 !== 0 && NumCast(LinkDocs[0].link_anchor_1_y) % 100 !== 0;
- const pt2inside = NumCast(LinkDocs[0].link_anchor_2_x) % 100 !== 0 && NumCast(LinkDocs[0].link_anchor_2_y) % 100 !== 0;
- const pt1 = [aleft + a.width / 2, atop + a.height / 2];
- const pt2 = [bleft + b.width / 2, btop + b.width / 2];
- const pt2vec = pt2inside ? [-0.7071, 0.7071] : [(bDocBounds.left + bDocBounds.right) / 2 - pt2[0], (bDocBounds.top + bDocBounds.bottom) / 2 - pt2[1]];
- const pt1vec = pt1inside ? [-0.7071, 0.7071] : [(aDocBounds.left + aDocBounds.right) / 2 - pt1[0], (aDocBounds.top + aDocBounds.bottom) / 2 - pt1[1]];
- const pt1len = Math.sqrt(pt1vec[0] * pt1vec[0] + pt1vec[1] * pt1vec[1]);
- const pt2len = Math.sqrt(pt2vec[0] * pt2vec[0] + pt2vec[1] * pt2vec[1]);
- const ptlen = Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0]) + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1])) / 2;
- const pt1norm = clipped ? [0, 0] : [-(pt1vec[0] / pt1len) * ptlen, -(pt1vec[1] / pt1len) * ptlen];
- const pt2norm = clipped ? [0, 0] : [-(pt2vec[0] / pt2len) * ptlen, -(pt2vec[1] / pt2len) * ptlen];
- const pt1normlen = Math.sqrt(pt1norm[0] * pt1norm[0] + pt1norm[1] * pt1norm[1]) || 1;
- const pt2normlen = Math.sqrt(pt2norm[0] * pt2norm[0] + pt2norm[1] * pt2norm[1]) || 1;
- const pt1normalized = [pt1norm[0] / pt1normlen, pt1norm[1] / pt1normlen];
- const pt2normalized = [pt2norm[0] / pt2normlen, pt2norm[1] / pt2normlen];
- const aActive = A.IsSelected || A.Document[Brushed];
- const bActive = B.IsSelected || B.Document[Brushed];
-
- const textX = (Math.min(pt1[0], pt2[0]) + Math.max(pt1[0], pt2[0])) / 2 + NumCast(LinkDocs[0].link_relationship_OffsetX);
- const textY = (pt1[1] + pt2[1]) / 2 + NumCast(LinkDocs[0].link_relationship_OffsetY);
- const link = this._props.LinkDocs[0];
- return {
- a,
- b,
- pt1norm,
- pt2norm,
- aActive,
- bActive,
- textX,
- textY,
- // fully connected
- // pt1,
- // pt2,
- // this code adds space between links
- pt1: link.link_displayArrow ? [pt1[0] + pt1normalized[0] * 3 * NumCast(link.link_displayArrow_scale, 4), pt1[1] + pt1normalized[1] * 3 * NumCast(link.link_displayArrow_scale, 3)] : pt1,
- pt2: link.link_displayArrow ? [pt2[0] + pt2normalized[0] * 3 * NumCast(link.link_displayArrow_scale, 4), pt2[1] + pt2normalized[1] * 3 * NumCast(link.link_displayArrow_scale, 3)] : pt2,
- };
- }
-
- render() {
- if (!this.renderData) return null;
-
- const link = this._props.LinkDocs[0];
- const { a, b, pt1norm, pt2norm, aActive, bActive, textX, textY, pt1, pt2 } = this.renderData;
- const linkRelationship = Field.toString(link?.link_relationship as any as Field); //get string representing relationship
- const linkRelationshipList = Doc.UserDoc().link_relationshipList as List<string>;
- const linkColorList = Doc.UserDoc().link_ColorList as List<string>;
- const linkRelationshipSizes = Doc.UserDoc().link_relationshipSizes as List<number>;
- const currRelationshipIndex = linkRelationshipList.indexOf(linkRelationship);
- const linkDescription = Field.toString(link.link_description as any as Field).split('\n')[0];
-
- const linkSize = Doc.noviceMode || currRelationshipIndex === -1 || currRelationshipIndex >= linkRelationshipSizes.length ? -1 : linkRelationshipSizes[currRelationshipIndex];
-
- //access stroke color using index of the relationship in the color list (default black)
- const stroke = currRelationshipIndex === -1 || currRelationshipIndex >= linkColorList.length ? StrCast(link._backgroundColor, 'black') : linkColorList[currRelationshipIndex];
- // const hexStroke = this.rgbToHex(stroke)
-
- //calculate stroke width/thickness based on the relative importance of the relationshipship (i.e. how many links the relationship has)
- //thickness varies linearly from 3px to 12px for increasing link count
- const strokeWidth = linkSize === -1 ? '3px' : Math.floor(2 + 10 * (linkSize / Math.max(...linkRelationshipSizes))) + 'px';
-
- const arrowScale = NumCast(link.link_displayArrow_scale, 3);
- return link.opacity === 0 || !a.width || !b.width || (!(Doc.UserDoc().showLinkLines || link.link_displayLine) && !aActive && !bActive) ? null : (
- <>
- <defs>
- <marker id={`${link[Id] + 'arrowhead'}`} markerWidth={`${4 * arrowScale}`} markerHeight={`${3 * arrowScale}`} refX="0" refY={`${1.5 * arrowScale}`} orient="auto">
- <polygon points={`0 0, ${3 * arrowScale} ${1.5 * arrowScale}, 0 ${3 * arrowScale}`} fill={stroke} />
- </marker>
- <filter id="outline">
- <feMorphology in="SourceAlpha" result="expanded" operator="dilate" radius="1" />
- <feFlood floodColor={`${Colors.DARK_GRAY}`} />
- <feComposite in2="expanded" operator="in" />
- <feComposite in="SourceGraphic" />
- </filter>
- <filter x="0" y="0" width="1" height="1" id={`${link[Id] + 'background'}`}>
- <feFlood floodColor={`${StrCast(link._backgroundColor, 'white')}`} result="bg" />
- <feMerge>
- <feMergeNode in="bg" />
- <feMergeNode in="SourceGraphic" />
- </feMerge>
- </filter>
- </defs>
- <path
- filter={LinkManager.currentLink === link ? 'url(#outline)' : ''}
- fill="pink"
- stroke="antiquewhite"
- strokeWidth="4"
- className="collectionfreeformlinkview-linkLine"
- style={{ pointerEvents: 'visibleStroke', opacity: this._opacity, stroke, strokeWidth }}
- onClick={this.onClickLine}
- d={`M ${pt1[0]} ${pt1[1]} C ${pt1[0] + pt1norm[0]} ${pt1[1] + pt1norm[1]}, ${pt2[0] + pt2norm[0]} ${pt2[1] + pt2norm[1]}, ${pt2[0]} ${pt2[1]}`}
- markerEnd={link.link_displayArrow ? `url(#${link[Id] + 'arrowhead'})` : ''}
- />
- {textX === undefined || !linkDescription ? null : (
- <text filter={`url(#${link[Id] + 'background'})`} className="collectionfreeformlinkview-linkText" x={textX} y={textY} onPointerDown={this.pointerDown}>
- <tspan>&nbsp;</tspan>
- <tspan dy="2">{linkDescription.substring(0, 50) + (linkDescription.length > 50 ? '...' : '')}</tspan>
- <tspan dy="2">&nbsp;</tspan>
- </text>
- )}
- </>
- );
- }
-}
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinksView.scss b/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinksView.scss
deleted file mode 100644
index 4ada1731f..000000000
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinksView.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-// TODO: change z-index to -1 when a modal is active?
-
-.collectionfreeformlinksview-svgCanvas {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- pointer-events: none;
-}
-.collectionfreeformlinksview-container {
- pointer-events: none;
-}
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinksView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinksView.tsx
deleted file mode 100644
index e5b6c366f..000000000
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinksView.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { computed } from 'mobx';
-import { observer } from 'mobx-react';
-import * as React from 'react';
-import { Id } from '../../../../fields/FieldSymbols';
-import { DocumentManager } from '../../../util/DocumentManager';
-import { LightboxView } from '../../LightboxView';
-import { CollectionFreeFormLinkView } from './CollectionFreeFormLinkView';
-import './CollectionFreeFormLinksView.scss';
-
-@observer
-export class CollectionFreeFormLinksView extends React.Component {
- @computed get uniqueConnections() {
- return Array.from(new Set(DocumentManager.Instance.LinkedDocumentViews))
- .filter(c => !LightboxView.LightboxDoc || (LightboxView.Contains(c.a) && LightboxView.Contains(c.b)))
- .map(c => <CollectionFreeFormLinkView key={c.l[Id]} A={c.a} B={c.b} LinkDocs={[c.l]} />);
- }
-
- render() {
- return (
- <div className="collectionfreeformlinksview-container">
- <svg className="collectionfreeformlinksview-svgCanvas">{this.uniqueConnections}</svg>
- </div>
- );
- }
-}
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
index ec3ac4174..a69030019 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
@@ -5,11 +5,12 @@ import { observer } from 'mobx-react';
import { computedFn } from 'mobx-utils';
import * as React from 'react';
import { DateField } from '../../../../fields/DateField';
-import { Doc, DocListCast, Opt } from '../../../../fields/Doc';
+import { Doc, DocListCast, Field, Opt } from '../../../../fields/Doc';
import { DocData, Height, Width } from '../../../../fields/DocSymbols';
import { Id } from '../../../../fields/FieldSymbols';
import { InkData, InkField, InkTool, PointData, Segment } from '../../../../fields/InkField';
import { List } from '../../../../fields/List';
+import { RichTextField } from '../../../../fields/RichTextField';
import { listSpec } from '../../../../fields/Schema';
import { ScriptField } from '../../../../fields/ScriptField';
import { BoolCast, Cast, DocCast, NumCast, ScriptCast, StrCast } from '../../../../fields/Types';
@@ -22,8 +23,8 @@ import { Docs, DocUtils } from '../../../documents/Documents';
import { CollectionViewType, DocumentType } from '../../../documents/DocumentTypes';
import { DocumentManager } from '../../../util/DocumentManager';
import { DragManager, dropActionType } from '../../../util/DragManager';
-import { FollowLinkScript } from '../../../util/LinkFollower';
import { ReplayMovements } from '../../../util/ReplayMovements';
+import { CompileScript } from '../../../util/Scripting';
import { ScriptingGlobals } from '../../../util/ScriptingGlobals';
import { SelectionManager } from '../../../util/SelectionManager';
import { freeformScrollMode } from '../../../util/SettingsManager';
@@ -75,11 +76,14 @@ export class CollectionFreeFormView extends CollectionSubView<Partial<collection
@observable _paintedId = 'id' + Utils.GenerateGuid().replace(/-/g, '');
@computed get paintFunc() {
- const paintFunc = StrCast(this.Document[DocData].paintFunc).trim();
+ const field = this.layoutDoc[this.fieldKey];
+ const paintFunc = StrCast(Field.toJavascriptString(Cast(field, RichTextField, null)?.Text as Field)).trim();
return !paintFunc
? ''
- : `const dashDiv = document.querySelector('#${this._paintedId}');
- (async () => { ${paintFunc} })()`;
+ : paintFunc.includes('dashDiv')
+ ? `const dashDiv = document.querySelector('#${this._paintedId}');
+ (async () => { ${paintFunc} })()`
+ : paintFunc;
}
constructor(props: any) {
super(props);
@@ -233,6 +237,7 @@ export class CollectionFreeFormView extends CollectionSubView<Partial<collection
onChildClickHandler = () => this._props.childClickScript || ScriptCast(this.Document.onChildClick);
onChildDoubleClickHandler = () => this._props.childDoubleClickScript || ScriptCast(this.Document.onChildDoubleClick);
elementFunc = () => this._layoutElements;
+ viewTransition = () => (this._panZoomTransition ? '' + this._panZoomTransition : undefined);
fitContentOnce = () => {
const vals = this.fitToContentVals;
this.layoutDoc._freeform_panX = vals.bounds.cx;
@@ -371,28 +376,6 @@ export class CollectionFreeFormView extends CollectionSubView<Partial<collection
!d._keepZWhenDragged && (d.zIndex = zsorted.length + 1 + i); // bringToFront
}
- if (this.layoutDoc._autoArrange || de.metaKey) {
- const sorted = this.childLayoutPairs.slice().sort((a, b) => NumCast(a.layout.y) - NumCast(b.layout.y));
- sorted.splice(
- sorted.findIndex(pair => pair.layout === refDoc),
- 1
- );
- if (sorted.length && refDoc && NumCast(sorted[0].layout.y) < NumCast(refDoc.y)) {
- const topIndexed = NumCast(refDoc.y) < NumCast(sorted[0].layout.y) + NumCast(sorted[0].layout._height) / 2;
- const deltay = sorted.length > 1 ? NumCast(refDoc.y) - (NumCast(sorted[0].layout.y) + (topIndexed ? 0 : NumCast(sorted[0].layout._height))) : 0;
- const deltax = sorted.length > 1 ? NumCast(refDoc.x) - NumCast(sorted[0].layout.x) : 0;
-
- let lastx = NumCast(refDoc.x);
- let lasty = NumCast(refDoc.y) + (topIndexed ? 0 : NumCast(refDoc._height));
- runInAction(() =>
- sorted.slice(1).forEach((pair, i) => {
- lastx = pair.layout.x = lastx + deltax;
- lasty = (pair.layout.y = lasty + deltay) + (topIndexed ? 0 : NumCast(pair.layout._height));
- })
- );
- }
- }
-
(docDragData.droppedDocuments.length === 1 || de.shiftKey) && this.updateClusterDocs(docDragData.droppedDocuments);
return true;
}
@@ -419,27 +402,13 @@ export class CollectionFreeFormView extends CollectionSubView<Partial<collection
const [x, y] = this.screenToFreeformContentsXf.transformPoint(de.x, de.y);
let added = false;
// do nothing if link is dropped into any freeform view parent of dragged document
- const source =
- !linkDragData.dragDocument.embedContainer || linkDragData.dragDocument.embedContainer !== this.Document
- ? Docs.Create.TextDocument('', { _width: 200, _height: 75, x, y, title: 'dropped annotation' })
- : Docs.Create.FontIconDocument({
- title: 'anchor',
- icon_label: '',
- followLinkToggle: true,
- icon: 'map-pin',
- x,
- y,
- backgroundColor: '#ACCEF7',
- layout_hideAllLinks: true,
- layout_hideLinkButton: true,
- _width: 15,
- _height: 15,
- _xPadding: 0,
- onClick: FollowLinkScript(),
- });
+ const source = Docs.Create.TextDocument('', { _width: 200, _height: 75, x, y, title: 'dropped annotation' });
added = this._props.addDocument?.(source) ? true : false;
de.complete.linkDocument = DocUtils.MakeLink(linkDragData.linkSourceGetAnchor(), source, { link_relationship: 'annotated by:annotation of' }); // TODODO this is where in text links get passed
-
+ if (de.complete.linkDocument) {
+ de.complete.linkDocument.layout_isSvg = true;
+ this.addDocument(de.complete.linkDocument);
+ }
e.stopPropagation();
!added && e.preventDefault();
return added;
@@ -1008,7 +977,7 @@ export class CollectionFreeFormView extends CollectionSubView<Partial<collection
if (!this.isAnnotationOverlay && clamp) {
// this section wraps the pan position, horizontally and/or vertically whenever the content is panned out of the viewing bounds
- const docs = this.childLayoutPairs.map(pair => pair.layout).filter(doc => doc instanceof Doc);
+ const docs = this.childLayoutPairs.map(pair => pair.layout).filter(doc => doc instanceof Doc && doc.type !== DocumentType.LINK);
const measuredDocs = docs
.map(doc => ({ pos: { x: NumCast(doc.x), y: NumCast(doc.y) }, size: { width: NumCast(doc._width), height: NumCast(doc._height) } }))
.filter(({ pos, size }) => pos && size)
@@ -1494,7 +1463,12 @@ export class CollectionFreeFormView extends CollectionSubView<Partial<collection
this._disposers.paintFunc = reaction(
() => ({ code: this.paintFunc, first: this._firstRender, width: this.Document._width, height: this.Document._height }),
- ({ code, first }) => code && !first && eval(code),
+ ({ code, first }) => {
+ if (!code.includes('dashDiv')) {
+ const script = CompileScript(code, { params: { docView: 'any' }, typecheck: false, editable: true });
+ if (script.compiled) script.run({ this: this.DocumentView?.() });
+ } else code && !first && eval(code);
+ },
{ fireImmediately: true }
);
@@ -1641,9 +1615,9 @@ export class CollectionFreeFormView extends CollectionSubView<Partial<collection
toggleResetView = () => {
this.dataDoc[this.autoResetFieldKey] = !this.dataDoc[this.autoResetFieldKey];
if (this.dataDoc[this.autoResetFieldKey]) {
- this.dataDoc[this.panXFieldKey + '_reset'] = this.dataDoc[this.panXFieldKey];
- this.dataDoc[this.panYFieldKey + '_reset'] = this.dataDoc[this.panYFieldKey];
- this.dataDoc[this.scaleFieldKey + '_reset'] = this.dataDoc[this.scaleFieldKey];
+ this.dataDoc[this.panXFieldKey + '_reset'] = this.layoutDoc[this.panXFieldKey];
+ this.dataDoc[this.panYFieldKey + '_reset'] = this.layoutDoc[this.panYFieldKey];
+ this.dataDoc[this.scaleFieldKey + '_reset'] = this.layoutDoc[this.scaleFieldKey];
}
};
@@ -1654,12 +1628,6 @@ export class CollectionFreeFormView extends CollectionSubView<Partial<collection
const appearanceItems = appearance && 'subitems' in appearance ? appearance.subitems : [];
!this.Document.isGroup && appearanceItems.push({ description: 'Reset View', event: this.resetView, icon: 'compress-arrows-alt' });
!this.Document.isGroup && appearanceItems.push({ description: 'Toggle Auto Reset View', event: this.toggleResetView, icon: 'compress-arrows-alt' });
- !Doc.noviceMode &&
- appearanceItems.push({
- description: 'Toggle auto arrange',
- event: () => (this.layoutDoc._autoArrange = !this.layoutDoc._autoArrange),
- icon: 'compress-arrows-alt',
- });
if (this._props.setContentViewBox === emptyFunction) {
!appearance && ContextMenu.Instance.addItem({ description: 'Appearance...', subitems: appearanceItems, icon: 'eye' });
return;
diff --git a/src/client/views/collections/collectionFreeForm/index.ts b/src/client/views/collections/collectionFreeForm/index.ts
index 702dc8d42..9a54ce63a 100644
--- a/src/client/views/collections/collectionFreeForm/index.ts
+++ b/src/client/views/collections/collectionFreeForm/index.ts
@@ -1,7 +1,5 @@
-export * from "./CollectionFreeFormLayoutEngines";
-export * from "./CollectionFreeFormLinkView";
-export * from "./CollectionFreeFormLinksView";
-export * from "./CollectionFreeFormRemoteCursors";
-export * from "./CollectionFreeFormView";
-export * from "./MarqueeOptionsMenu";
-export * from "./MarqueeView"; \ No newline at end of file
+export * from './CollectionFreeFormLayoutEngines';
+export * from './CollectionFreeFormRemoteCursors';
+export * from './CollectionFreeFormView';
+export * from './MarqueeOptionsMenu';
+export * from './MarqueeView';
diff --git a/src/client/views/collections/collectionSchema/CollectionSchemaView.scss b/src/client/views/collections/collectionSchema/CollectionSchemaView.scss
index ee61c4141..fed4e89cf 100644
--- a/src/client/views/collections/collectionSchema/CollectionSchemaView.scss
+++ b/src/client/views/collections/collectionSchema/CollectionSchemaView.scss
@@ -132,7 +132,7 @@
.row-menu {
display: flex;
- justify-content: flex-end;
+ justify-content: center;
}
}
@@ -228,7 +228,10 @@
display: flex;
flex-direction: row;
min-width: 50px;
- justify-content: flex-end;
+ justify-content: center;
+ .iconButton-container {
+ min-width: unset !important;
+ }
}
.row-cells {
diff --git a/src/client/views/collections/collectionSchema/SchemaRowBox.tsx b/src/client/views/collections/collectionSchema/SchemaRowBox.tsx
index f2fe0dde7..39fea2d2e 100644
--- a/src/client/views/collections/collectionSchema/SchemaRowBox.tsx
+++ b/src/client/views/collections/collectionSchema/SchemaRowBox.tsx
@@ -121,7 +121,7 @@ export class SchemaRowBox extends ViewBoxBaseComponent<SchemaRowBoxProps>() {
pointerEvents: !this._props.isContentActive() ? 'none' : undefined,
}}>
<IconButton
- tooltip="whether document interations are enabled"
+ tooltip="whether document interactions are enabled"
icon={this.Document._lockedPosition ? <CgLockUnlock size="12px" /> : <CgLock size="12px" />}
size={Size.XSMALL}
onPointerDown={e =>
diff --git a/src/client/views/collections/collectionSchema/SchemaTableCell.tsx b/src/client/views/collections/collectionSchema/SchemaTableCell.tsx
index dbaa6e110..001ad5ab6 100644
--- a/src/client/views/collections/collectionSchema/SchemaTableCell.tsx
+++ b/src/client/views/collections/collectionSchema/SchemaTableCell.tsx
@@ -24,6 +24,11 @@ import { KeyValueBox } from '../../nodes/KeyValueBox';
import { FormattedTextBox } from '../../nodes/formattedText/FormattedTextBox';
import { ColumnType, FInfotoColType } from './CollectionSchemaView';
import './CollectionSchemaView.scss';
+import 'react-datepicker/dist/react-datepicker.css';
+import { Popup, Size, Type } from 'browndash-components';
+import { IconLookup, faCaretDown } from '@fortawesome/free-solid-svg-icons';
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
+import { SettingsManager } from '../../../util/SettingsManager';
export interface SchemaTableCellProps {
Document: Doc;
@@ -162,7 +167,7 @@ export class SchemaTableCell extends ObservableReactComponent<SchemaTableCellPro
case ColumnType.Boolean: return <SchemaBoolCell {...this._props} />;
case ColumnType.RTF: return <SchemaRTFCell {...this._props} />;
case ColumnType.Enumeration: return <SchemaEnumerationCell {...this._props} options={this._props.getFinfo(this._props.fieldKey)?.values?.map(val => val.toString())} />;
- case ColumnType.Date: // return <SchemaDateCell {...this._props} />;
+ case ColumnType.Date: return <SchemaDateCell {...this._props} />;
default: return this.defaultCellContent;
}
}
@@ -260,19 +265,39 @@ export class SchemaDateCell extends ObservableReactComponent<SchemaTableCellProp
return DateCast(this._props.Document[this._props.fieldKey]);
}
- @action
- handleChange = (date: any) => {
+ handleChange = undoable((date: Date | null) => {
// const script = CompileScript(date.toString(), { requiredType: "Date", addReturn: true, params: { this: Doc.name } });
// if (script.compiled) {
// this.applyToDoc(this._document, this._props.row, this._props.col, script.run);
// } else {
// ^ DateCast is always undefined for some reason, but that is what the field should be set to
- this._props.Document[this._props.fieldKey] = new DateField(date as Date);
+ date && (this._props.Document[this._props.fieldKey] = new DateField(date));
//}
- };
+ }, 'date change');
render() {
- return <DatePicker dateFormat={'Pp'} selected={this.date.date} onChange={(date: any) => this.handleChange(date)} />;
+ const { color, textDecoration, fieldProps, cursor, pointerEvents } = SchemaTableCell.renderProps(this._props);
+ return (
+ <>
+ <div style={{ pointerEvents: 'none' }}>
+ <DatePicker dateFormat="Pp" selected={this.date?.date ?? Date.now()} onChange={e => {}} />
+ </div>
+ {pointerEvents === 'none' ? null : (
+ <Popup
+ icon={<FontAwesomeIcon size="sm" icon="caret-down" />}
+ size={Size.XSMALL}
+ type={Type.TERT}
+ color={SettingsManager.userColor}
+ background={SettingsManager.userBackgroundColor}
+ popup={
+ <div style={{ width: 'fit-content', height: '200px' }}>
+ <DatePicker open={true} dateFormat="Pp" selected={this.date?.date ?? Date.now()} onChange={this.handleChange} />
+ </div>
+ }
+ />
+ )}
+ </>
+ );
}
}
@observer
@@ -394,7 +419,7 @@ export class SchemaEnumerationCell extends ObservableReactComponent<SchemaTableC
}),
}}
menuPortalTarget={this._props.menuTarget}
- menuPosition={'absolute'}
+ menuPosition="absolute"
placeholder={StrCast(this._props.Document[this._props.fieldKey], 'select...')}
options={options}
isMulti={false}
diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts
index 3084a7972..51672513b 100644
--- a/src/client/views/global/globalScripts.ts
+++ b/src/client/views/global/globalScripts.ts
@@ -20,6 +20,7 @@ import { DocumentView } from '../nodes/DocumentView';
import { RichTextMenu } from '../nodes/formattedText/RichTextMenu';
import { WebBox } from '../nodes/WebBox';
import { VideoBox } from '../nodes/VideoBox';
+import { DocData } from '../../../fields/DocSymbols';
ScriptingGlobals.add(function IsNoneSelected() {
return SelectionManager.Views.length <= 0;
@@ -42,14 +43,14 @@ ScriptingGlobals.add(function setBackgroundColor(color?: string, checkResult?: b
} else if (selectedViews.length) {
if (checkResult) {
const selView = selectedViews.lastElement();
- const fieldKey = selView.Document.type === DocumentType.INK ? 'fillColor' : 'backgroundColor';
+ const fieldKey = selView.Document._layout_isSvg ? 'fillColor' : 'backgroundColor';
const layoutFrameNumber = Cast(selView.containerViewPath?.().lastElement()?.Document?._currentFrame, 'number'); // frame number that container is at which determines layout frame values
const contentFrameNumber = Cast(selView.Document?._currentFrame, 'number', layoutFrameNumber ?? null); // frame number that content is at which determines what content is displayed
return CollectionFreeFormDocumentView.getStringValues(selView?.Document, contentFrameNumber)[fieldKey] ?? 'transparent';
}
selectedViews.some(dv => dv.ComponentView instanceof InkingStroke) && SetActiveFillColor(color ?? 'transparent');
selectedViews.forEach(dv => {
- const fieldKey = dv.Document.type === DocumentType.INK ? 'fillColor' : 'backgroundColor';
+ const fieldKey = dv.Document._layout_isSvg ? 'fillColor' : 'backgroundColor';
const layoutFrameNumber = Cast(dv.containerViewPath?.().lastElement()?.Document?._currentFrame, 'number'); // frame number that container is at which determines layout frame values
const contentFrameNumber = Cast(dv.Document?._currentFrame, 'number', layoutFrameNumber ?? null); // frame number that content is at which determines what content is displayed
if (contentFrameNumber !== undefined) {
@@ -57,16 +58,16 @@ ScriptingGlobals.add(function setBackgroundColor(color?: string, checkResult?: b
obj[fieldKey] = color;
CollectionFreeFormDocumentView.setStringValues(contentFrameNumber, dv.Document, obj);
} else {
- dv.Document['_' + fieldKey] = color;
+ dv.Document[DocData][fieldKey] = color;
}
});
} else {
- const selected = SelectionManager.Docs.length ? SelectionManager.Docs : LinkManager.currentLink ? [LinkManager.currentLink] : [];
+ const selected = SelectionManager.Docs.length ? SelectionManager.Docs : LinkManager.Instance.currentLink ? [LinkManager.Instance.currentLink] : [];
if (checkResult) {
return selected.lastElement()?._backgroundColor ?? 'transparent';
}
SetActiveFillColor(color ?? 'transparent');
- selected.forEach(doc => (doc._backgroundColor = color));
+ selected.forEach(doc => (doc[DocData].backgroundColor = color));
}
});
@@ -126,11 +127,6 @@ ScriptingGlobals.add(function showFreeform(attr: 'flashcards' | 'center' | 'grid
checkResult: (doc:Doc) => BoolCast(doc?._freeform_useClusters, false),
setDoc: (doc:Doc,dv:DocumentView) => doc._freeform_useClusters = !doc._freeform_useClusters,
}],
- ['arrange', {
- waitForRender: true, // flags that undo batch should terminate after a re-render giving the script the chance to fire
- checkResult: (doc:Doc) => BoolCast(doc?._autoArrange, false),
- setDoc: (doc:Doc,dv:DocumentView) => doc._autoArrange = !doc._autoArrange,
- }],
['flashcards', {
checkResult: (doc:Doc) => BoolCast(Doc.UserDoc().defaultToFlashcards, false),
setDoc: (doc:Doc,dv:DocumentView) => Doc.UserDoc().defaultToFlashcards = !Doc.UserDoc().defaultToFlashcards,
@@ -343,24 +339,24 @@ ScriptingGlobals.add(function setInkProperty(option: 'inkMask' | 'fillColor' | '
// prettier-ignore
const map: Map<'inkMask' | 'fillColor' | 'strokeWidth' | 'strokeColor', { checkResult: () => any; setInk: (doc: Doc) => void; setMode: () => void }> = new Map([
['inkMask', {
- checkResult: () => ((selected?.type === DocumentType.INK ? BoolCast(selected.stroke_isInkMask) : ActiveIsInkMask())),
- setInk: (doc: Doc) => (doc.stroke_isInkMask = !doc.stroke_isInkMask),
+ checkResult: () => ((selected?._layout_isSvg ? BoolCast(selected[DocData].stroke_isInkMask) : ActiveIsInkMask())),
+ setInk: (doc: Doc) => (doc[DocData].stroke_isInkMask = !doc.stroke_isInkMask),
setMode: () => selected?.type !== DocumentType.INK && SetActiveIsInkMask(!ActiveIsInkMask()),
}],
['fillColor', {
- checkResult: () => (selected?.type === DocumentType.INK ? StrCast(selected.fillColor) : ActiveFillColor() ?? "transparent"),
- setInk: (doc: Doc) => (doc.fillColor = StrCast(value)),
+ checkResult: () => (selected?._layout_isSvg ? StrCast(selected[DocData].fillColor) : ActiveFillColor() ?? "transparent"),
+ setInk: (doc: Doc) => (doc[DocData].fillColor = StrCast(value)),
setMode: () => SetActiveFillColor(StrCast(value)),
}],
[ 'strokeWidth', {
- checkResult: () => (selected?.type === DocumentType.INK ? NumCast(selected.stroke_width) : ActiveInkWidth()),
- setInk: (doc: Doc) => (doc.stroke_width = NumCast(value)),
- setMode: () => { SetActiveInkWidth(value.toString()); setActiveTool( GestureOverlay.Instance.InkShape ?? InkTool.Pen, true, false);},
+ checkResult: () => (selected?._layout_isSvg ? NumCast(selected[DocData].stroke_width) : ActiveInkWidth()),
+ setInk: (doc: Doc) => (doc[DocData].stroke_width = NumCast(value)),
+ setMode: () => { SetActiveInkWidth(value.toString()); selected?.type === DocumentType.INK && setActiveTool( GestureOverlay.Instance.InkShape ?? InkTool.Pen, true, false);},
}],
['strokeColor', {
- checkResult: () => (selected?.type === DocumentType.INK ? StrCast(selected.color) : ActiveInkColor()),
- setInk: (doc: Doc) => (doc.color = String(value)),
- setMode: () => { SetActiveInkColor(StrCast(value)); setActiveTool(GestureOverlay.Instance.InkShape ?? InkTool.Pen, true, false);},
+ checkResult: () => (selected?._layout_isSvg? StrCast(selected[DocData].color) : ActiveInkColor()),
+ setInk: (doc: Doc) => (doc[DocData].color = String(value)),
+ setMode: () => { SetActiveInkColor(StrCast(value)); selected?.type === DocumentType.INK && setActiveTool(GestureOverlay.Instance.InkShape ?? InkTool.Pen, true, false);},
}],
]);
@@ -368,7 +364,7 @@ ScriptingGlobals.add(function setInkProperty(option: 'inkMask' | 'fillColor' | '
return map.get(option)?.checkResult();
}
map.get(option)?.setMode();
- SelectionManager.Docs.filter(doc => doc.type === DocumentType.INK).map(doc => map.get(option)?.setInk(doc));
+ SelectionManager.Docs.filter(doc => doc._layout_isSvg).map(doc => map.get(option)?.setInk(doc));
});
/** WEB
diff --git a/src/client/views/linking/LinkMenuItem.scss b/src/client/views/linking/LinkMenuItem.scss
index 44c74236f..66ddd6eca 100644
--- a/src/client/views/linking/LinkMenuItem.scss
+++ b/src/client/views/linking/LinkMenuItem.scss
@@ -18,6 +18,21 @@
align-items: center;
display: flex;
+ .linkMenu-icon-wrapper {
+ //border: 0.5px solid rgb(161, 161, 161);
+ margin-right: 2px;
+ padding-right: 2px;
+
+ .linkMenu-icon {
+ float: left;
+ width: 12px;
+ height: 12px;
+ padding: 1px;
+ margin-right: 3px;
+ // color: rgb(161, 161, 161);
+ }
+ }
+
.linkMenu-text {
width: 100%;
@@ -34,22 +49,6 @@
display: flex;
align-items: center;
min-height: 20px;
-
- .destination-icon-wrapper {
- //border: 0.5px solid rgb(161, 161, 161);
- margin-right: 2px;
- padding-right: 2px;
-
- .destination-icon {
- float: left;
- width: 12px;
- height: 12px;
- padding: 1px;
- margin-right: 3px;
- // color: rgb(161, 161, 161);
- }
- }
-
.linkMenu-destination-title {
text-decoration: none;
font-size: 13px;
@@ -111,7 +110,6 @@
//@extend: right;
position: relative;
display: flex;
- opacity: 0;
.linkMenu-deleteButton {
width: 20px;
diff --git a/src/client/views/linking/LinkMenuItem.tsx b/src/client/views/linking/LinkMenuItem.tsx
index ad6deeefb..e694806a5 100644
--- a/src/client/views/linking/LinkMenuItem.tsx
+++ b/src/client/views/linking/LinkMenuItem.tsx
@@ -9,6 +9,7 @@ import { Doc } from '../../../fields/Doc';
import { Cast, DocCast, StrCast } from '../../../fields/Types';
import { WebField } from '../../../fields/URLField';
import { DocumentType } from '../../documents/DocumentTypes';
+import { DocumentManager } from '../../util/DocumentManager';
import { DragManager } from '../../util/DragManager';
import { LinkFollower } from '../../util/LinkFollower';
import { LinkManager } from '../../util/LinkManager';
@@ -74,6 +75,15 @@ export class LinkMenuItem extends ObservableReactComponent<LinkMenuItemProps> {
return this._props.sourceDoc;
}
+ onIconDown = (e: React.PointerEvent) => {
+ setupMoveUpEvents(this, e, returnFalse, returnFalse, () => {
+ const ancestor = DocumentManager.LinkCommonAncestor(this._props.linkDoc);
+ if (!ancestor?.ComponentView?.removeDocument?.(this._props.linkDoc)) {
+ ancestor?.ComponentView?.addDocument?.(this._props.linkDoc);
+ }
+ });
+ };
+
onEdit = (e: React.PointerEvent) => {
setupMoveUpEvents(
this,
@@ -92,8 +102,8 @@ export class LinkMenuItem extends ObservableReactComponent<LinkMenuItemProps> {
DocumentViewInternal.addDocTabFunc(trail, OpenWhere.replaceRight);
} else {
SelectionManager.SelectView(this._props.docView, false);
- LinkManager.currentLink = this._props.linkDoc === LinkManager.currentLink ? undefined : this._props.linkDoc;
- LinkManager.currentLinkAnchor = LinkManager.currentLink ? this.sourceAnchor : undefined;
+ LinkManager.Instance.currentLink = this._props.linkDoc === LinkManager.Instance.currentLink ? undefined : this._props.linkDoc;
+ LinkManager.Instance.currentLinkAnchor = LinkManager.Instance.currentLink ? this.sourceAnchor : undefined;
if ((SettingsManager.Instance.propertiesWidth ?? 0) < 100) {
setTimeout(action(() => (SettingsManager.Instance.propertiesWidth = 250)));
@@ -159,7 +169,7 @@ export class LinkMenuItem extends ObservableReactComponent<LinkMenuItemProps> {
style={{
fontSize: this._hover ? 'larger' : undefined,
fontWeight: this._hover ? 'bold' : undefined,
- background: LinkManager.currentLink === this._props.linkDoc ? SettingsManager.userVariantColor : SettingsManager.userBackgroundColor,
+ background: LinkManager.Instance.currentLink === this._props.linkDoc ? SettingsManager.userVariantColor : SettingsManager.userBackgroundColor,
}}>
<div className="linkMenu-item-content expand-two">
<div
@@ -168,8 +178,13 @@ export class LinkMenuItem extends ObservableReactComponent<LinkMenuItemProps> {
onPointerDown={this.onLinkButtonDown}>
<div className="linkMenu-item-buttons">
<Tooltip title={<div className="dash-tooltip">Edit Link</div>}>
- <div className="button" ref={this._editRef} onPointerDown={this.onEdit} onClick={e => e.stopPropagation()}>
- <FontAwesomeIcon className="fa-icon" icon="edit" size="sm" />
+ <div className="linkMenu-icon-wrapper" ref={this._editRef} onPointerDown={this.onEdit} onClick={e => e.stopPropagation()}>
+ <FontAwesomeIcon className="linkMenu-icon" icon="edit" size="sm" />
+ </div>
+ </Tooltip>
+ <Tooltip title={<div className="dash-tooltip">Show/Hide Link</div>}>
+ <div title="click to show link" className="linkMenu-icon-wrapper" onPointerDown={this.onIconDown}>
+ <FontAwesomeIcon className="linkMenu-icon" icon={destinationIcon} size="sm" />
</div>
</Tooltip>
</div>
@@ -196,12 +211,11 @@ export class LinkMenuItem extends ObservableReactComponent<LinkMenuItemProps> {
</p>
) : null}
<div className="linkMenu-title-wrapper">
- <div className="destination-icon-wrapper">
- <FontAwesomeIcon className="destination-icon" icon={destinationIcon} size="sm" />
- </div>
- <p className="linkMenu-destination-title">
- {this._props.linkDoc.linksToAnnotation && Cast(this._props.destinationDoc.data, WebField)?.url.href === this._props.linkDoc.annotationUri ? 'Annotation in' : ''} {StrCast(title)}
- </p>
+ <Tooltip title={<div className="dash-tooltip">Follow Link</div>}>
+ <p className="linkMenu-destination-title">
+ {this._props.linkDoc.linksToAnnotation && Cast(this._props.destinationDoc.data, WebField)?.url.href === this._props.linkDoc.annotationUri ? 'Annotation in' : ''} {StrCast(title)}
+ </p>
+ </Tooltip>
</div>
{!this._props.linkDoc.link_description ? null : <p className="linkMenu-description">{StrCast(this._props.linkDoc.link_description).split('\n')[0].substring(0, 50)}</p>}
</div>
diff --git a/src/client/views/nodes/CollectionFreeFormDocumentView.tsx b/src/client/views/nodes/CollectionFreeFormDocumentView.tsx
index 0ae4ed62c..a0a64ab59 100644
--- a/src/client/views/nodes/CollectionFreeFormDocumentView.tsx
+++ b/src/client/views/nodes/CollectionFreeFormDocumentView.tsx
@@ -33,7 +33,6 @@ export interface CollectionFreeFormDocumentViewWrapperProps extends DocumentView
opacity?: number;
highlight?: boolean;
transition?: string;
- dataTransition?: string;
RenderCutoffProvider: (doc: Doc) => boolean;
CollectionFreeFormView: CollectionFreeFormView;
}
@@ -56,7 +55,6 @@ export class CollectionFreeFormDocumentViewWrapper extends ObservableReactCompon
@observable Height = this.props.height;
@observable AutoDim = this.props.autoDim;
@observable Transition = this.props.transition;
- @observable DataTransition = this.props.dataTransition;
CollectionFreeFormView = this.props.CollectionFreeFormView; // needed for type checking
RenderCutoffProvider = this.props.RenderCutoffProvider; // needed for type checking
@@ -83,7 +81,6 @@ export class CollectionFreeFormDocumentViewWrapper extends ObservableReactCompon
w_Height = () => this.Height; // prettier-ignore
w_AutoDim = () => this.AutoDim; // prettier-ignore
w_Transition = () => this.Transition; // prettier-ignore
- w_DataTransition = () => this.DataTransition; // prettier-ignore
PanelWidth = () => this._props.autoDim ? this._props.PanelWidth?.() : this.Width; // prettier-ignore
PanelHeight = () => this._props.autoDim ? this._props.PanelHeight?.() : this.Height; // prettier-ignore
@@ -117,7 +114,6 @@ export interface CollectionFreeFormDocumentViewProps extends DocumentViewProps {
w_Transition: () => string | undefined;
w_Width: () => number;
w_Height: () => number;
- w_DataTransition: () => string | undefined;
PanelWidth: () => number;
PanelHeight: () => number;
RenderCutoffProvider: (doc: Doc) => boolean;
@@ -288,14 +284,21 @@ export class CollectionFreeFormDocumentView extends DocComponent<CollectionFreeF
width: this._props.PanelWidth(),
height: this._props.PanelHeight(),
transform: `translate(${this._props.w_X()}px, ${this._props.w_Y()}px) rotate(${NumCast(this._props.w_Rotation?.())}deg)`,
- transition: this._props.w_Transition?.() ?? (this._props.w_DataTransition?.() || this._props.w_Transition?.()),
+ transition: this._props.w_Transition?.() || StrCast(this.Document.dataTransition),
zIndex: this._props.w_ZIndex?.(),
display: this._props.w_Width?.() ? undefined : 'none',
}}>
{this._props.RenderCutoffProvider(this.Document) ? (
<div style={{ position: 'absolute', width: this._props.PanelWidth(), height: this._props.PanelHeight(), background: 'lightGreen' }} />
) : (
- <DocumentView {...passOnProps} CollectionFreeFormDocumentView={this.returnThis} styleProvider={this.styleProvider} ScreenToLocalTransform={this.screenToLocalTransform} isGroupActive={this.isGroupActive} />
+ <DocumentView
+ {...passOnProps}
+ DataTransition={this._props.w_Transition}
+ CollectionFreeFormDocumentView={this.returnThis}
+ styleProvider={this.styleProvider}
+ ScreenToLocalTransform={this.screenToLocalTransform}
+ isGroupActive={this.isGroupActive}
+ />
)}
</div>
);
diff --git a/src/client/views/nodes/DataVizBox/components/Histogram.tsx b/src/client/views/nodes/DataVizBox/components/Histogram.tsx
index c0e738cfa..6672603f3 100644
--- a/src/client/views/nodes/DataVizBox/components/Histogram.tsx
+++ b/src/client/views/nodes/DataVizBox/components/Histogram.tsx
@@ -436,9 +436,9 @@ export class Histogram extends ObservableReactComponent<HistogramProps> {
this.updateBarColors();
this._histogramData;
var curSelectedBarName = '';
- var titleAccessor: any = '';
- if (this._props.axes.length == 2) titleAccessor = 'dataViz_histogram_title' + this._props.axes[0] + '-' + this._props.axes[1];
- else if (this._props.axes.length > 0) titleAccessor = 'dataViz_histogram_title' + this._props.axes[0];
+ var titleAccessor: any = 'dataViz_histogram_title';
+ if (this._props.axes.length == 2) titleAccessor = titleAccessor + this._props.axes[0] + '-' + this._props.axes[1];
+ else if (this._props.axes.length > 0) titleAccessor = titleAccessor + this._props.axes[0];
if (!this._props.layoutDoc[titleAccessor]) this._props.layoutDoc[titleAccessor] = this.defaultGraphTitle;
if (!this._props.layoutDoc.dataViz_histogram_defaultColor) this._props.layoutDoc.dataViz_histogram_defaultColor = '#69b3a2';
if (!this._props.layoutDoc.dataViz_histogram_barColors) this._props.layoutDoc.dataViz_histogram_barColors = new List<string>();
diff --git a/src/client/views/nodes/DataVizBox/components/LineChart.tsx b/src/client/views/nodes/DataVizBox/components/LineChart.tsx
index 8268d22b6..e093ec648 100644
--- a/src/client/views/nodes/DataVizBox/components/LineChart.tsx
+++ b/src/client/views/nodes/DataVizBox/components/LineChart.tsx
@@ -394,9 +394,9 @@ export class LineChart extends ObservableReactComponent<LineChartProps> {
}
render() {
- var titleAccessor: any = '';
- if (this._props.axes.length == 2) titleAccessor = 'dataViz_lineChart_title' + this._props.axes[0] + '-' + this._props.axes[1];
- else if (this._props.axes.length > 0) titleAccessor = 'dataViz_lineChart_title' + this._props.axes[0];
+ var titleAccessor: any = 'dataViz_lineChart_title';
+ if (this._props.axes.length == 2) titleAccessor = titleAccessor + this._props.axes[0] + '-' + this._props.axes[1];
+ else if (this._props.axes.length > 0) titleAccessor = titleAccessor + this._props.axes[0];
if (!this._props.layoutDoc[titleAccessor]) this._props.layoutDoc[titleAccessor] = this.defaultGraphTitle;
const selectedPt = this._currSelected ? `{ ${this._props.axes[0]}: ${this._currSelected.x} ${this._props.axes[1]}: ${this._currSelected.y} }` : 'none';
var selectedTitle = "";
diff --git a/src/client/views/nodes/DataVizBox/components/PieChart.tsx b/src/client/views/nodes/DataVizBox/components/PieChart.tsx
index 54a83879c..fc23f47de 100644
--- a/src/client/views/nodes/DataVizBox/components/PieChart.tsx
+++ b/src/client/views/nodes/DataVizBox/components/PieChart.tsx
@@ -332,9 +332,9 @@ export class PieChart extends ObservableReactComponent<PieChartProps> {
};
render() {
- var titleAccessor: any = '';
- if (this._props.axes.length == 2) titleAccessor = 'dataViz_pie_title' + this._props.axes[0] + '-' + this._props.axes[1];
- else if (this._props.axes.length > 0) titleAccessor = 'dataViz_pie_title' + this._props.axes[0];
+ var titleAccessor: any = 'dataViz_pie_title';
+ if (this._props.axes.length == 2) titleAccessor = titleAccessor + this._props.axes[0] + '-' + this._props.axes[1];
+ else if (this._props.axes.length > 0) titleAccessor = titleAccessor + this._props.axes[0];
if (!this._props.layoutDoc[titleAccessor]) this._props.layoutDoc[titleAccessor] = this.defaultGraphTitle;
if (!this._props.layoutDoc.dataViz_pie_sliceColors) this._props.layoutDoc.dataViz_pie_sliceColors = new List<string>();
var selected: string;
diff --git a/src/client/views/nodes/DocumentLinksButton.tsx b/src/client/views/nodes/DocumentLinksButton.tsx
index d1805308d..2a68d2bf6 100644
--- a/src/client/views/nodes/DocumentLinksButton.tsx
+++ b/src/client/views/nodes/DocumentLinksButton.tsx
@@ -157,7 +157,7 @@ export class DocumentLinksButton extends ObservableReactComponent<DocumentLinksB
startLink = DocumentLinksButton.StartLinkView?.ComponentView?.getAnchor?.(true) || startLink;
const linkDoc = DocUtils.MakeLink(startLink, endLink, { link_relationship: DocumentLinksButton.AnnotationId ? 'hypothes.is annotation' : undefined });
- LinkManager.currentLink = linkDoc;
+ LinkManager.Instance.currentLink = linkDoc;
if (linkDoc) {
if (DocumentLinksButton.AnnotationId && DocumentLinksButton.AnnotationUri) {
diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx
index 2e1ba2a7e..73c13b5dd 100644
--- a/src/client/views/nodes/DocumentView.tsx
+++ b/src/client/views/nodes/DocumentView.tsx
@@ -20,13 +20,14 @@ import { DocServer } from '../../DocServer';
import { Networking } from '../../Network';
import { GooglePhotos } from '../../apis/google_docs/GooglePhotosClientUtils';
import { CollectionViewType, DocumentType } from '../../documents/DocumentTypes';
-import { DocOptions, DocUtils, Docs, FInfo } from '../../documents/Documents';
+import { DocOptions, DocUtils, Docs } from '../../documents/Documents';
import { DictationManager } from '../../util/DictationManager';
import { DocumentManager } from '../../util/DocumentManager';
import { DragManager, dropActionType } from '../../util/DragManager';
import { FollowLinkScript } from '../../util/LinkFollower';
import { LinkManager } from '../../util/LinkManager';
import { ScriptingGlobals } from '../../util/ScriptingGlobals';
+import { SearchUtil } from '../../util/SearchUtil';
import { SelectionManager } from '../../util/SelectionManager';
import { SettingsManager } from '../../util/SettingsManager';
import { SharingManager } from '../../util/SharingManager';
@@ -103,9 +104,11 @@ export interface DocumentViewProps extends FieldViewSharedProps {
dontHideOnDrag?: boolean;
suppressSetHeight?: boolean;
onClickScriptDisable?: 'never' | 'always'; // undefined = only when selected
+ DataTransition?: () => string | undefined;
NativeWidth?: () => number;
NativeHeight?: () => number;
contextMenuItems?: () => { script: ScriptField; filter?: ScriptField; label: string; icon: string }[];
+ dragConfig?: (data: DragManager.DocumentDragData) => void;
dragStarting?: () => void;
dragEnding?: () => void;
}
@@ -114,7 +117,6 @@ export class DocumentViewInternal extends DocComponent<FieldViewProps & Document
// this makes mobx trace() statements more descriptive
public get displayName() { return 'DocumentViewInternal(' + this.Document.title + ')'; } // prettier-ignore
public static SelectAfterContextMenu = true; // whether a document should be selected after it's contextmenu is triggered.
-
/**
* This function is filled in by MainView to allow non-viewBox views to add Docs as tabs without
* needing to know about/reference MainView
@@ -288,7 +290,7 @@ export class DocumentViewInternal extends DocComponent<FieldViewProps & Document
dragData.moveDocument = this._props.moveDocument;
dragData.draggedViews = [docView];
dragData.canEmbed = this.Document.dragAction ?? this._props.dragAction ? true : false;
- this._componentView?.dragConfig?.(dragData);
+ (this._props.dragConfig ?? this._componentView?.dragConfig)?.(dragData);
DragManager.StartDocumentDrag(
selected.map(dv => dv.ContentDiv!),
dragData,
@@ -359,7 +361,6 @@ export class DocumentViewInternal extends DocComponent<FieldViewProps & Document
this._singleClickFunc =
// prettier-ignore
clickFunc ?? (() => (sendToBack ? documentView._props.bringToFront?.(this.Document, true) :
- this._componentView?.select?.(e.ctrlKey || e.metaKey, e.shiftKey) ??
this._props.select(e.ctrlKey||e.shiftKey, e.metaKey)));
const waitFordblclick = this._props.waitForDoubleClickToClick?.() ?? this.Document.waitForDoubleClickToClick;
if ((clickFunc && waitFordblclick !== 'never') || waitFordblclick === 'always') {
@@ -456,11 +457,11 @@ export class DocumentViewInternal extends DocComponent<FieldViewProps & Document
deleteClicked = undoable(() => this._props.removeDocument?.(this.Document), 'delete doc');
setToggleDetail = undoable(
- () =>
- (this.Document.onClick = ScriptField.MakeScript(
+ (defaultLayout: string, scriptFieldKey: 'onClick') =>
+ (this.Document[scriptFieldKey] = ScriptField.MakeScript(
`toggleDetail(documentView, "${StrCast(this.Document.layout_fieldKey)
.replace('layout_', '')
- .replace(/^layout$/, 'detail')}")`,
+ .replace(/^layout$/, 'detail')}", "${defaultLayout}")`,
{ documentView: 'any' }
)),
'set toggle detail'
@@ -488,7 +489,7 @@ export class DocumentViewInternal extends DocComponent<FieldViewProps & Document
if (linkDoc) {
de.complete.linkDocument = linkDoc;
linkDoc.layout_isSvg = true;
- this._docView?.CollectionFreeFormView?.addDocument(linkDoc);
+ DocumentManager.LinkCommonAncestor(linkDoc)?.ComponentView?.addDocument?.(linkDoc);
}
}
e.stopPropagation();
@@ -725,7 +726,7 @@ export class DocumentViewInternal extends DocComponent<FieldViewProps & Document
};
removeLinkByHiding = (link: Doc) => () => (link.link_displayLine = false);
- allLinkEndpoints = () => {
+ @computed get allLinkEndpoints() {
// the small blue dots that mark the endpoints of links
if (this._componentView instanceof KeyValueBox || this._props.hideLinkAnchors || this.layoutDoc.layout_hideLinkAnchors || this._props.dontRegisterView || this.layoutDoc.layout_unrendered) return null;
return this.filteredLinks.map(link => (
@@ -749,9 +750,9 @@ export class DocumentViewInternal extends DocComponent<FieldViewProps & Document
/>
</div>
));
- };
+ }
- viewBoxContents = () => {
+ @computed get viewBoxContents() {
TraceMobx();
const isInk = this.layoutDoc._layout_isSvg && !this._props.LayoutTemplateString;
const noBackground = this.Document.isGroup && !this._props.LayoutTemplateString?.includes(KeyValueBox.name) && (!this.layoutDoc.backgroundColor || this.layoutDoc.backgroundColor === 'transparent');
@@ -777,10 +778,10 @@ export class DocumentViewInternal extends DocComponent<FieldViewProps & Document
setTitleFocus={this.setTitleFocus}
hideClickBehaviors={BoolCast(this.Document.hideClickBehaviors)}
/>
- {this.layoutDoc.layout_hideAllLinks ? null : this.allLinkEndpoints()}
+ {this.layoutDoc.layout_hideAllLinks ? null : this.allLinkEndpoints}
</div>
);
- };
+ }
captionStyleProvider = (doc: Opt<Doc>, props: Opt<FieldViewProps>, property: string) => this._props?.styleProvider?.(doc, props, property + ':caption');
fieldsDropdown = (reqdFields: string[], dropdownWidth: number, placeholder: string, onChange: (val: string | number) => void, onClose: () => void) => {
@@ -813,7 +814,7 @@ export class DocumentViewInternal extends DocComponent<FieldViewProps & Document
* setting layout_showTitle using the format: field1[;field2[...][:hover]]
* from the UI, this is done by clicking the title field and prefixin the format with '#'. eg., #field1[;field2;...][:hover]
**/
- titleView = () => {
+ @computed get titleView() {
const showTitle = this.layout_showTitle?.split(':')[0];
const showTitleHover = this.layout_showTitle?.includes(':hover');
@@ -887,9 +888,9 @@ export class DocumentViewInternal extends DocComponent<FieldViewProps & Document
</div>
</div>
);
- };
+ }
- captionView = () => {
+ @computed get captionView() {
return !this.layout_showCaption ? null : (
<div
className="documentView-captionWrapper"
@@ -912,7 +913,7 @@ export class DocumentViewInternal extends DocComponent<FieldViewProps & Document
/>
</div>
);
- };
+ }
renderDoc = (style: object) => {
TraceMobx();
@@ -932,15 +933,15 @@ export class DocumentViewInternal extends DocComponent<FieldViewProps & Document
fontFamily: StrCast(this.Document._text_fontFamily, 'inherit'),
fontSize: Cast(this.Document._text_fontSize, 'string', null),
transform: this._animateScalingTo ? `scale(${this._animateScalingTo})` : undefined,
- transition: !this._animateScalingTo ? StrCast(this.Document.dataTransition) : `transform ${this.animateScaleTime() / 1000}s ease-${this._animateScalingTo < 1 ? 'in' : 'out'}`,
+ transition: !this._animateScalingTo ? this._props.DataTransition?.() : `transform ${this.animateScaleTime() / 1000}s ease-${this._animateScalingTo < 1 ? 'in' : 'out'}`,
}}>
{this._props.hideTitle || (!showTitle && !this.layout_showCaption) ? (
- this.viewBoxContents()
+ this.viewBoxContents
) : (
<div className="documentView-styleWrapper">
- {this.titleView()}
- {this.viewBoxContents()}
- {this.captionView()}
+ {this.titleView}
+ {this.viewBoxContents}
+ {this.captionView}
</div>
)}
{this.widgetDecorations ?? null}
@@ -1074,6 +1075,7 @@ export class DocumentView extends DocComponent<DocumentViewProps>() {
private _disposers: { [name: string]: IReactionDisposer } = {};
private _viewTimer: NodeJS.Timeout | undefined;
private _animEffectTimer: NodeJS.Timeout | undefined;
+ public Guid = Utils.GenerateGuid(); // a unique id associated with the main <div>. used by LinkBox's Xanchor to find the arrowhead locations.
@computed public static get exploreMode() {
return () => (SnappingManager.ExploreMode ? ScriptField.MakeScript('CollectionBrowseClick(documentView, clientX, clientY)', { documentView: 'any', clientX: 'number', clientY: 'number' })! : undefined);
@@ -1150,6 +1152,7 @@ export class DocumentView extends DocComponent<DocumentViewProps>() {
}
componentWillUnmount() {
+ this._viewTimer && clearTimeout(this._viewTimer);
runInAction(() => this.Document[DocViews].delete(this));
Object.values(this._disposers).forEach(disposer => disposer?.());
!BoolCast(this.Document.dontRegisterView, this._props.dontRegisterView) && DocumentManager.Instance.RemoveView(this);
@@ -1173,21 +1176,23 @@ export class DocumentView extends DocComponent<DocumentViewProps>() {
return this._props.LayoutTemplateString?.includes('link_anchor_2') ? DocCast(this.Document['link_anchor_2']) : this._props.LayoutTemplateString?.includes('link_anchor_1') ? DocCast(this.Document['link_anchor_1']) : undefined;
}
- @computed get getBounds() {
- if (!this._docViewInternal?._contentDiv || Doc.AreProtosEqual(this.Document, Doc.UserDoc())) {
+ @computed get getBounds(): Opt<{ left: number; top: number; right: number; bottom: number; transition?: string }> {
+ if (!this.ContentDiv || Doc.AreProtosEqual(this.Document, Doc.UserDoc())) {
return undefined;
}
- if (this._docViewInternal._componentView?.screenBounds?.()) {
- return this._docViewInternal._componentView.screenBounds();
+ if (this.ComponentView?.screenBounds?.()) {
+ return this.ComponentView.screenBounds();
}
const xf = this.screenToContentsTransform().scale(this.nativeScaling).inverse();
const [[left, top], [right, bottom]] = [xf.transformPoint(0, 0), xf.transformPoint(this.panelWidth, this.panelHeight)];
if (this._props.LayoutTemplateString?.includes(LinkAnchorBox.name)) {
- const docuBox = this._docViewInternal._contentDiv.getElementsByClassName('linkAnchorBox-cont');
- if (docuBox.length) return { ...docuBox[0].getBoundingClientRect(), center: undefined };
+ const docuBox = this.ContentDiv.getElementsByClassName('linkAnchorBox-cont');
+ if (docuBox.length) return { ...docuBox[0].getBoundingClientRect(), transition: undefined };
}
- return { left, top, right, bottom };
+ // transition is returned so that the bounds will 'update' at the end of an animated transition. This is needed by xAnchor in LinkBox
+ const transition = this.docViewPath().find((parent: DocumentView) => parent.DataTransition?.() || parent.ComponentView?.viewTransition?.());
+ return { left, top, right, bottom, transition: transition?.DataTransition?.() || transition?.ComponentView?.viewTransition?.() };
}
@computed get nativeWidth() {
@@ -1212,7 +1217,7 @@ export class DocumentView extends DocComponent<DocumentViewProps>() {
};
public noOnClick = () => this._docViewInternal?.noOnClick();
public toggleFollowLink = (zoom?: boolean, setTargetToggle?: boolean): void => this._docViewInternal?.toggleFollowLink(zoom, setTargetToggle);
- public setToggleDetail = () => this._docViewInternal?.setToggleDetail();
+ public setToggleDetail = (defaultLayout = '', scriptFieldKey = 'onClick') => this._docViewInternal?.setToggleDetail(defaultLayout, scriptFieldKey);
public onContextMenu = (e?: React.MouseEvent, pageX?: number, pageY?: number) => this._docViewInternal?.onContextMenu?.(e, pageX, pageY);
public cleanupPointerEvents = () => this._docViewInternal?.cleanupPointerEvents();
public startDragging = (x: number, y: number, dropAction: dropActionType, hideSource = false) => this._docViewInternal?.startDragging(x, y, dropAction, hideSource);
@@ -1332,6 +1337,7 @@ export class DocumentView extends DocComponent<DocumentViewProps>() {
}
}
};
+ DataTransition = () => this._props.DataTransition?.() || StrCast(this.Document.dataTransition);
ShouldNotScale = () => this.shouldNotScale;
NativeWidth = () => this.effectiveNativeWidth;
NativeHeight = () => this.effectiveNativeHeight;
@@ -1384,7 +1390,7 @@ export class DocumentView extends DocComponent<DocumentViewProps>() {
const yshift = Math.abs(this.Yshift) <= 0.001 ? this._props.PanelHeight() : undefined;
return (
- <div className="contentFittingDocumentView" onPointerEnter={action(() => (this._isHovering = true))} onPointerLeave={action(() => (this._isHovering = false))}>
+ <div id={this.Guid} className="contentFittingDocumentView" onPointerEnter={action(() => (this._isHovering = true))} onPointerLeave={action(() => (this._isHovering = false))}>
{!this.Document || !this._props.PanelWidth() ? null : (
<div
className="contentFittingDocumentView-previewDoc"
@@ -1397,6 +1403,7 @@ export class DocumentView extends DocComponent<DocumentViewProps>() {
<DocumentViewInternal
{...this._props}
fieldKey={this.LayoutFieldKey}
+ DataTransition={this.DataTransition}
DocumentView={this.selfView}
docViewPath={this.docViewPath}
PanelWidth={this.PanelWidth}
@@ -1460,13 +1467,13 @@ ScriptingGlobals.add(function deiconifyViewToLightbox(documentView: DocumentView
LightboxView.Instance.AddDocTab(documentView.Document, OpenWhere.lightbox, 'layout'); //, 0);
});
-ScriptingGlobals.add(function toggleDetail(dv: DocumentView, detailLayoutKeySuffix: string) {
- if (dv.Document.layout_fieldKey === 'layout_' + detailLayoutKeySuffix) dv.switchViews(false, 'layout');
+ScriptingGlobals.add(function toggleDetail(dv: DocumentView, detailLayoutKeySuffix: string, defaultLayout = '') {
+ if (dv.Document.layout_fieldKey === 'layout_' + detailLayoutKeySuffix) dv.switchViews(defaultLayout ? true : false, defaultLayout, undefined, true);
else dv.switchViews(true, detailLayoutKeySuffix, undefined, true);
});
ScriptingGlobals.add(function updateLinkCollection(linkCollection: Doc, linkSource: Doc) {
- const collectedLinks = DocListCast(Doc.GetProto(linkCollection).data);
+ const collectedLinks = DocListCast(linkCollection[DocData].data);
let wid = NumCast(linkSource._width);
let embedding: Doc | undefined;
const links = LinkManager.Links(linkSource);
@@ -1485,3 +1492,27 @@ ScriptingGlobals.add(function updateLinkCollection(linkCollection: Doc, linkSour
embedding && DocServer.UPDATE_SERVER_CACHE(); // if a new embedding was made, update the client's server cache so that it will not come back as a promise
return links;
});
+ScriptingGlobals.add(function updateTagsCollection(collection: Doc) {
+ const tag = StrCast(collection.title).split('-->')[1];
+ const matchedTags = Array.from(SearchUtil.SearchCollection(Doc.MyFilesystem, tag, false, ['tags']).keys());
+ const collectionDocs = DocListCast(collection[DocData].data).concat(collection);
+ let wid = 100;
+ let created = false;
+ const matchedDocs = matchedTags
+ .filter(tagDoc => !Doc.AreProtosEqual(collection, tagDoc))
+ .map(tagDoc => {
+ let embedding = collectionDocs.find(doc => Doc.AreProtosEqual(tagDoc, doc));
+ if (!embedding) {
+ embedding = Doc.MakeEmbedding(tagDoc);
+ embedding.x = wid;
+ embedding.y = 0;
+ embedding._lockedPosition = false;
+ wid += NumCast(tagDoc._width);
+ created = true;
+ }
+ return embedding;
+ });
+
+ created && (collection[DocData].data = new List<Doc>(matchedDocs));
+ return true;
+});
diff --git a/src/client/views/nodes/FontIconBox/FontIconBox.scss b/src/client/views/nodes/FontIconBox/FontIconBox.scss
index db2ffa756..2db285910 100644
--- a/src/client/views/nodes/FontIconBox/FontIconBox.scss
+++ b/src/client/views/nodes/FontIconBox/FontIconBox.scss
@@ -1,5 +1,15 @@
@import '../../global/globalCssVariables.module.scss';
+// bcz: something's messed up with the IconButton css. this mostly fixes the fit-all button, the color buttons, the undo +/- expander and the dropdown doc type list (eg 'text')
+.iconButton-container {
+ width: unset !important;
+ min-width: 30px !important;
+ height: unset !important;
+ min-height: 30px;
+ .color {
+ height: 3px !important;
+ }
+}
.menuButton {
height: 100%;
display: flex;
diff --git a/src/client/views/nodes/FontIconBox/FontIconBox.tsx b/src/client/views/nodes/FontIconBox/FontIconBox.tsx
index 8290e102c..3577cc8d9 100644
--- a/src/client/views/nodes/FontIconBox/FontIconBox.tsx
+++ b/src/client/views/nodes/FontIconBox/FontIconBox.tsx
@@ -381,7 +381,7 @@ export class FontIconBox extends ViewBoxBaseComponent<ButtonProps>() {
case ButtonType.ColorButton: return this.colorButton;
case ButtonType.MultiToggleButton: return this.multiToggleButton;
case ButtonType.ToggleButton: return this.toggleButton;
- case ButtonType.ClickButton:
+ case ButtonType.ClickButton:return <IconButton {...btnProps} size={Size.MEDIUM} color={color} />;
case ButtonType.ToolButton: return <IconButton {...btnProps} size={Size.LARGE} color={color} />;
case ButtonType.TextButton: return <Button {...btnProps} color={color}
background={SettingsManager.userBackgroundColor} text={StrCast(this.dataDoc.buttonText)}/>;
@@ -392,6 +392,10 @@ export class FontIconBox extends ViewBoxBaseComponent<ButtonProps>() {
};
render() {
- return <div onContextMenu={this.specificContextMenu}>{this.renderButton()}</div>;
+ return (
+ <div style={{ margin: 'auto', width: '100%' }} onContextMenu={this.specificContextMenu}>
+ {this.renderButton()}
+ </div>
+ );
}
}
diff --git a/src/client/views/nodes/LabelBox.tsx b/src/client/views/nodes/LabelBox.tsx
index 10eeff08d..fd3074a88 100644
--- a/src/client/views/nodes/LabelBox.tsx
+++ b/src/client/views/nodes/LabelBox.tsx
@@ -88,7 +88,7 @@ export class LabelBox extends ViewBoxBaseComponent<LabelBoxProps>() {
@observable _mouseOver = false;
@computed get hoverColor() {
- return this._mouseOver ? StrCast(this.layoutDoc._hoverBackgroundColor) : this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BackgroundColor);
+ return this._mouseOver ? StrCast(this.layoutDoc._hoverBackgroundColor) : this._props.styleProvider?.(this.Document, this._props, StyleProp.BackgroundColor);
}
getAnchor = (addAsAnnotation: boolean, pinProps?: PinProps) => {
diff --git a/src/client/views/nodes/LinkBox.scss b/src/client/views/nodes/LinkBox.scss
index 767f0291b..484fb301e 100644
--- a/src/client/views/nodes/LinkBox.scss
+++ b/src/client/views/nodes/LinkBox.scss
@@ -5,3 +5,28 @@
.linkBox-container {
width: 100%;
}
+
+.linkBox {
+ transition: inherit;
+ pointer-events: none;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ path {
+ transition: inherit;
+ fill: transparent;
+ }
+ svg {
+ transition: inherit;
+ overflow: visible;
+ }
+ text {
+ cursor: default;
+ text-anchor: middle;
+ font-size: 12;
+ stroke: black;
+ }
+ circle {
+ cursor: default;
+ }
+}
diff --git a/src/client/views/nodes/LinkBox.tsx b/src/client/views/nodes/LinkBox.tsx
index 8b6293806..decdbb240 100644
--- a/src/client/views/nodes/LinkBox.tsx
+++ b/src/client/views/nodes/LinkBox.tsx
@@ -1,14 +1,17 @@
-import { Bezier } from 'bezier-js';
-import { computed, IReactionDisposer, makeObservable, observable, reaction } from 'mobx';
+import { action, computed, IReactionDisposer, makeObservable, observable, reaction } from 'mobx';
import { observer } from 'mobx-react';
import * as React from 'react';
+import Xarrow from 'react-xarrows';
+import { DocData } from '../../../fields/DocSymbols';
import { Id } from '../../../fields/FieldSymbols';
import { DocCast, NumCast, StrCast } from '../../../fields/Types';
-import { aggregateBounds, emptyFunction, returnAlways, returnFalse, Utils } from '../../../Utils';
+import { DashColor, emptyFunction, lightOrDark, returnFalse } from '../../../Utils';
import { DocumentManager } from '../../util/DocumentManager';
-import { Transform } from '../../util/Transform';
-import { CollectionFreeFormView } from '../collections/collectionFreeForm';
+import { LinkManager } from '../../util/LinkManager';
+import { SnappingManager } from '../../util/SnappingManager';
import { ViewBoxBaseComponent } from '../DocComponent';
+import { EditableView } from '../EditableView';
+import { LightboxView } from '../LightboxView';
import { StyleProp } from '../StyleProvider';
import { ComparisonBox } from './ComparisonBox';
import { FieldView, FieldViewProps } from './FieldView';
@@ -19,152 +22,178 @@ export class LinkBox extends ViewBoxBaseComponent<FieldViewProps>() {
public static LayoutString(fieldKey: string = 'link') {
return FieldView.LayoutString(LinkBox, fieldKey);
}
+ disposer: IReactionDisposer | undefined;
+ @observable _forceAnimate = 0; // forces xArrow to animate when a transition animation is detected on something that affects an anchor
+ @observable _hide = false; // don't render if anchor is not visible since that breaks xAnchor
constructor(props: FieldViewProps) {
super(props);
makeObservable(this);
}
+ @computed get anchor1() { return this.anchor(1); } // prettier-ignore
+ @computed get anchor2() { return this.anchor(2); } // prettier-ignore
- onClickScriptDisable = returnAlways;
- @computed get anchor1() {
- const anchor1 = DocCast(this.dataDoc.link_anchor_1);
- const anchor_1 = anchor1?.layout_unrendered ? DocCast(anchor1.annotationOn) : anchor1;
- return DocumentManager.Instance.getDocumentView(anchor_1, this.DocumentView?.().containerViewPath?.().lastElement());
- }
- @computed get anchor2() {
- const anchor2 = DocCast(this.dataDoc.link_anchor_2);
- const anchor_2 = anchor2?.layout_unrendered ? DocCast(anchor2.annotationOn) : anchor2;
- return DocumentManager.Instance.getDocumentView(anchor_2, this.DocumentView?.().containerViewPath?.().lastElement());
- }
- screenBounds = () => {
- if (this.layoutDoc._layout_isSvg && this.anchor1 && this.anchor2 && this.anchor1.CollectionFreeFormView) {
- const a_invXf = this.anchor1.screenToViewTransform().inverse();
- const b_invXf = this.anchor2.screenToViewTransform().inverse();
- const a_scrBds = { tl: a_invXf.transformPoint(0, 0), br: a_invXf.transformPoint(NumCast(this.anchor1.Document._width), NumCast(this.anchor1.Document._height)) };
- const b_scrBds = { tl: b_invXf.transformPoint(0, 0), br: b_invXf.transformPoint(NumCast(this.anchor2.Document._width), NumCast(this.anchor2.Document._height)) };
-
- const pts = [] as number[][];
- pts.push([(a_scrBds.tl[0] + a_scrBds.br[0]) / 2, (a_scrBds.tl[1] + a_scrBds.br[1]) / 2]);
- pts.push(Utils.getNearestPointInPerimeter(a_scrBds.tl[0], a_scrBds.tl[1], a_scrBds.br[0] - a_scrBds.tl[0], a_scrBds.br[1] - a_scrBds.tl[1], (b_scrBds.tl[0] + b_scrBds.br[0]) / 2, (b_scrBds.tl[1] + b_scrBds.br[1]) / 2));
- pts.push(Utils.getNearestPointInPerimeter(b_scrBds.tl[0], b_scrBds.tl[1], b_scrBds.br[0] - b_scrBds.tl[0], b_scrBds.br[1] - b_scrBds.tl[1], (a_scrBds.tl[0] + a_scrBds.br[0]) / 2, (a_scrBds.tl[1] + a_scrBds.br[1]) / 2));
- pts.push([(b_scrBds.tl[0] + b_scrBds.br[0]) / 2, (b_scrBds.tl[1] + b_scrBds.br[1]) / 2]);
- const agg = aggregateBounds(
- pts.map(pt => ({ x: pt[0], y: pt[1] })),
- 0,
- 0
- );
- return { left: agg.x, top: agg.y, right: agg.r, bottom: agg.b, center: undefined };
- }
- return undefined;
+ anchor = (which: number) => {
+ const anch = DocCast(this.dataDoc['link_anchor_' + which]);
+ const anchor = anch?.layout_unrendered ? DocCast(anch.annotationOn) : anch;
+ return DocumentManager.Instance.getDocumentView(anchor, this.DocumentView?.().containerViewPath?.().lastElement());
};
- disposer: IReactionDisposer | undefined;
+ componentWillUnmount() {
+ this.disposer?.();
+ }
componentDidMount() {
this._props.setContentViewBox?.(this);
this.disposer = reaction(
- () => {
- if (this.layoutDoc._layout_isSvg && (this.anchor1 || this.anchor2)?.CollectionFreeFormView) {
- const a = (this.anchor1 ?? this.anchor2)!;
- const b = (this.anchor2 ?? this.anchor1)!;
-
- const parxf = this.DocumentView?.().containerViewPath?.().lastElement().ComponentView as CollectionFreeFormView;
- const this_xf = parxf?.screenToFreeformContentsXf ?? Transform.Identity; //this.ScreenToLocalTransform();
- const a_invXf = a.screenToViewTransform().inverse();
- const b_invXf = b.screenToViewTransform().inverse();
- const a_scrBds = { tl: a_invXf.transformPoint(0, 0), br: a_invXf.transformPoint(NumCast(a.Document._width), NumCast(a.Document._height)) };
- const b_scrBds = { tl: b_invXf.transformPoint(0, 0), br: b_invXf.transformPoint(NumCast(b.Document._width), NumCast(b.Document._height)) };
- const a_bds = { tl: this_xf.transformPoint(a_scrBds.tl[0], a_scrBds.tl[1]), br: this_xf.transformPoint(a_scrBds.br[0], a_scrBds.br[1]) };
- const b_bds = { tl: this_xf.transformPoint(b_scrBds.tl[0], b_scrBds.tl[1]), br: this_xf.transformPoint(b_scrBds.br[0], b_scrBds.br[1]) };
-
- const ppt1 = [(a_bds.tl[0] + a_bds.br[0]) / 2, (a_bds.tl[1] + a_bds.br[1]) / 2];
- const pt1 = Utils.getNearestPointInPerimeter(a_bds.tl[0], a_bds.tl[1], a_bds.br[0] - a_bds.tl[0], a_bds.br[1] - a_bds.tl[1], (b_bds.tl[0] + b_bds.br[0]) / 2, (b_bds.tl[1] + b_bds.br[1]) / 2);
- const pt2 = Utils.getNearestPointInPerimeter(b_bds.tl[0], b_bds.tl[1], b_bds.br[0] - b_bds.tl[0], b_bds.br[1] - b_bds.tl[1], (a_bds.tl[0] + a_bds.br[0]) / 2, (a_bds.tl[1] + a_bds.br[1]) / 2);
- const ppt2 = [(b_bds.tl[0] + b_bds.br[0]) / 2, (b_bds.tl[1] + b_bds.br[1]) / 2];
-
- const pts = [ppt1, pt1, pt2, ppt2].map(pt => [pt[0], pt[1]]);
- const [lx, rx, ty, by] = [Math.min(pt1[0], pt2[0]), Math.max(pt1[0], pt2[0]), Math.min(pt1[1], pt2[1]), Math.max(pt1[1], pt2[1])];
- return { pts, lx, rx, ty, by };
- }
- return undefined;
- },
- params => {
- this.renderProps = params;
- if (params) {
- if (
- Math.abs(params.lx - NumCast(this.layoutDoc.x)) > 1e-5 ||
- Math.abs(params.ty - NumCast(this.layoutDoc.y)) > 1e-5 ||
- Math.abs(params.rx - params.lx - NumCast(this.layoutDoc._width)) > 1e-5 ||
- Math.abs(params.by - params.ty - NumCast(this.layoutDoc._height)) > 1e-5
- ) {
- this.layoutDoc.x = params?.lx;
- this.layoutDoc.y = params?.ty;
- this.layoutDoc._width = params.rx - params?.lx;
- this.layoutDoc._height = params?.by - params?.ty;
- }
- } else {
- this.layoutDoc._width = Math.max(50, NumCast(this.layoutDoc._width));
- this.layoutDoc._height = Math.max(50, NumCast(this.layoutDoc._height));
- }
+ () => ({ drag: SnappingManager.IsDragging }),
+ ({ drag }) => {
+ !LightboxView.Contains(this.DocumentView?.()) &&
+ setTimeout(
+ // need to wait for drag manager to set 'hidden' flag on dragged DOM elements
+ action(() => {
+ const a = this.anchor1,
+ b = this.anchor2;
+ let a1 = a && document.getElementById(a.Guid);
+ let a2 = b && document.getElementById(b.Guid);
+ // test whether the anchors themselves are hidden,...
+ if (!a1 || !a2 || (a?.ContentDiv as any)?.hidden || (b?.ContentDiv as any)?.hidden) this._hide = true;
+ else {
+ // .. or whether and of their DOM parents are hidden
+ for (; a1 && !a1.hidden; a1 = a1.parentElement);
+ for (; a2 && !a2.hidden; a2 = a2.parentElement);
+ this._hide = a1 || a2 ? true : false;
+ }
+ })
+ );
},
{ fireImmediately: true }
);
}
- componentWillUnmount(): void {
- this.disposer?.();
- }
- @observable renderProps: { lx: number; rx: number; ty: number; by: number; pts: number[][] } | undefined = undefined;
+
render() {
- if (this.renderProps) {
+ if (this._hide) return null;
+ const a = this.anchor1;
+ const b = this.anchor2;
+ this._forceAnimate;
+ const docView = this._props.docViewPath().lastElement();
+
+ if (a && b && !LightboxView.Contains(docView)) {
+ // text selection bounds are not directly observable, so we have to
+ // force an update when anything that could affect them changes (text edits causing reflow, scrolling)
+ a.Document[a.LayoutFieldKey];
+ b.Document[b.LayoutFieldKey];
+ a.Document.layout_scrollTop;
+ b.Document.layout_scrollTop;
+
+ const axf = a.screenToViewTransform(); // these force re-render when a or b moves (so do NOT remove)
+ const bxf = b.screenToViewTransform();
+ const scale = docView?.screenToViewTransform().Scale ?? 1;
+ const at = a.getBounds?.transition; // these force re-render when a or b change size and at the end of an animated transition
+ const bt = b.getBounds?.transition; // inquring getBounds() also causes text anchors to update whether or not they reflow (any size change triggers an invalidation)
+
+ // if there's an element in the DOM with a classname containing a link anchor's id (eg a hypertext <a>),
+ // then that DOM element is a hyperlink source for the current anchor and we want to place our link box at it's top right
+ // otherwise, we just use the computed nearest point on the document boundary to the target Document
+ const targetAhyperlink = Array.from(document.getElementsByClassName(DocCast(this.dataDoc.link_anchor_1)[Id])).lastElement();
+ const targetBhyperlink = Array.from(document.getElementsByClassName(DocCast(this.dataDoc.link_anchor_2)[Id])).lastElement();
+
+ const aid = targetAhyperlink?.id || a.Document[Id];
+ const bid = targetBhyperlink?.id || b.Document[Id];
+ if (!document.getElementById(aid) || !document.getElementById(bid)) {
+ setTimeout(action(() => (this._forceAnimate = this._forceAnimate + 0.01)));
+ return null;
+ }
+
+ if (at || bt) setTimeout(action(() => (this._forceAnimate = this._forceAnimate + 0.01))); // this forces an update during a transition animation
const highlight = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Highlighting);
const highlightColor = highlight?.highlightIndex ? highlight?.highlightColor : undefined;
+ const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color);
+ const fontFamily = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.FontFamily);
+ const fontSize = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.FontSize);
+ const fontColor = (c => (c !== 'transparent' ? c : undefined))(StrCast(this.layoutDoc.link_fontColor));
+ const { stroke_markerScale, stroke_width, stroke_startMarker, stroke_endMarker, stroke_dash } = this.Document;
- const bez = new Bezier(this.renderProps.pts.map(p => ({ x: p[0], y: p[1] })));
- const text = bez.get(0.5);
- const linkDesc = StrCast(this.dataDoc.link_description) || 'description';
- const strokeWidth = NumCast(this.dataDoc.stroke_width, 4);
- const dash = StrCast(this.Document.stroke_dash);
- const strokeDasharray = dash && Number(dash) ? String(strokeWidth * Number(dash)) : undefined;
- const { pts, lx, ty, rx, by } = this.renderProps;
+ const strokeWidth = NumCast(stroke_width, 4);
+ const linkDesc = StrCast(this.dataDoc.link_description) || ' ';
+ const labelText = linkDesc.substring(0, 50) + (linkDesc.length > 50 ? '...' : '');
return (
- <div style={{ transition: 'inherit', pointerEvents: 'none', position: 'absolute', width: '100%', height: '100%' }}>
- <svg width={Math.max(100, rx - lx)} height={Math.max(100, by - ty)} style={{ transition: 'inherit', overflow: 'visible' }}>
- <defs>
- <filter x="0" y="0" width="1" height="1" id={`${this.Document[Id] + 'background'}`}>
- <feFlood floodColor={`${StrCast(this.layoutDoc._backgroundColor, 'lightblue')}`} result="bg" />
- <feMerge>
- <feMergeNode in="bg" />
- <feMergeNode in="SourceGraphic" />
- </feMerge>
- </filter>
- </defs>
- <path
- className="collectionfreeformlinkview-linkLine"
- style={{
- pointerEvents: this._props.pointerEvents?.() === 'none' ? 'none' : 'visibleStroke', //
- stroke: highlightColor ?? 'lightblue',
- strokeDasharray,
- strokeWidth,
- transition: 'inherit',
- }}
- d={`M ${pts[1][0] - lx} ${pts[1][1] - ty} C ${pts[1][0] + pts[1][0] - pts[0][0] - lx} ${pts[1][1] + pts[1][1] - pts[0][1] - ty},
- ${pts[2][0] + pts[2][0] - pts[3][0] - lx} ${pts[2][1] + pts[2][1] - pts[3][1] - ty}, ${pts[2][0] - lx} ${pts[2][1] - ty}`}
+ <>
+ {!highlightColor ? null : (
+ <Xarrow
+ divContainerStyle={{ transform: `scale(${scale})` }}
+ start={aid}
+ end={bid} //
+ strokeWidth={strokeWidth + Math.max(2, strokeWidth * 0.1)}
+ showHead={stroke_startMarker ? true : false}
+ showTail={stroke_endMarker ? true : false}
+ headSize={NumCast(stroke_markerScale, 3)}
+ tailSize={NumCast(stroke_markerScale, 3)}
+ tailShape={stroke_endMarker === 'dot' ? 'circle' : 'arrow1'}
+ headShape={stroke_startMarker === 'dot' ? 'circle' : 'arrow1'}
+ color={highlightColor}
/>
- <text
- filter={`url(#${this.Document[Id] + 'background'})`}
- style={{ pointerEvents: this._props.pointerEvents?.() === 'none' ? 'none' : 'all', textAnchor: 'middle', fontSize: '12', stroke: 'black' }}
- x={text.x - lx}
- y={text.y - ty}>
- <tspan>&nbsp;</tspan>
- <tspan dy="2">{linkDesc.substring(0, 50) + (linkDesc.length > 50 ? '...' : '')}</tspan>
- <tspan dy="2">&nbsp;</tspan>
- </text>
- </svg>
- </div>
+ )}
+ <Xarrow
+ divContainerStyle={{ transform: `scale(${scale})` }}
+ start={aid}
+ end={bid} //
+ strokeWidth={strokeWidth}
+ dashness={Number(stroke_dash) ? true : false}
+ showHead={stroke_startMarker ? true : false}
+ showTail={stroke_endMarker ? true : false}
+ headSize={NumCast(stroke_markerScale, 3)}
+ tailSize={NumCast(stroke_markerScale, 3)}
+ tailShape={stroke_endMarker === 'dot' ? 'circle' : 'arrow1'}
+ headShape={stroke_startMarker === 'dot' ? 'circle' : 'arrow1'}
+ color={color}
+ labels={
+ <div
+ style={{
+ borderRadius: '8px',
+ pointerEvents: this._props.isDocumentActive?.() ? 'all' : undefined,
+ fontSize,
+ fontFamily /*, fontStyle: 'italic'*/,
+ color: fontColor || lightOrDark(DashColor(color).fade(0.5).toString()),
+ paddingLeft: 4,
+ paddingRight: 4,
+ paddingTop: 3,
+ paddingBottom: 3,
+ background: DashColor((!docView?.isSelected() && highlightColor) || color)
+ .fade(0.5)
+ .toString(),
+ }}>
+ <EditableView
+ key="editableView"
+ oneLine
+ contents={labelText}
+ height={fontSize + 4}
+ fontSize={fontSize}
+ GetValue={() => linkDesc}
+ SetValue={action(val => {
+ this.Document[DocData].link_description = val;
+ return true;
+ })}
+ />
+
+ {/* <EditableText
+ placeholder={labelText}
+ background={color}
+ color={fontColor || lightOrDark(DashColor(color).fade(0.5).toString())}
+ type={Type.PRIM}
+ val={StrCast(this.Document[DocData].link_description)}
+ setVal={action(val => (this.Document[DocData].link_description = val))}
+ fillWidth
+ /> */}
+ </div>
+ }
+ passProps={{}}
+ />
+ </>
);
}
return (
<div className={`linkBox-container${this._props.isContentActive() ? '-interactive' : ''}`} style={{ background: this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BackgroundColor) }}>
<ComparisonBox
- {...this._props} //
+ {...this.props} //
fieldKey="link_anchor"
setHeight={emptyFunction}
dontRegisterView={true}
diff --git a/src/client/views/nodes/LinkDescriptionPopup.tsx b/src/client/views/nodes/LinkDescriptionPopup.tsx
index 13f0ac4fc..1645d0813 100644
--- a/src/client/views/nodes/LinkDescriptionPopup.tsx
+++ b/src/client/views/nodes/LinkDescriptionPopup.tsx
@@ -1,10 +1,11 @@
-import { action, makeObservable, observable } from 'mobx';
+import { action, makeObservable, observable, reaction } from 'mobx';
import { observer } from 'mobx-react';
import * as React from 'react';
import { DocData } from '../../../fields/DocSymbols';
import { LinkManager } from '../../util/LinkManager';
import './LinkDescriptionPopup.scss';
import { TaskCompletionBox } from './TaskCompletedBox';
+import { StrCast } from '../../../fields/Types';
@observer
export class LinkDescriptionPopup extends React.Component<{}> {
@@ -31,21 +32,26 @@ export class LinkDescriptionPopup extends React.Component<{}> {
onDismiss = (add: boolean) => {
this.display = false;
if (add) {
- LinkManager.currentLink && (LinkManager.currentLink[DocData].link_description = this.description);
+ LinkManager.Instance.currentLink && (LinkManager.Instance.currentLink[DocData].link_description = this.description);
}
+ this.description = '';
};
@action
onClick = (e: PointerEvent) => {
if (this.popupRef && !!!this.popupRef.current?.contains(e.target as any)) {
this.display = false;
+ this.description = '';
TaskCompletionBox.taskCompleted = false;
}
};
- @action
componentDidMount() {
document.addEventListener('pointerdown', this.onClick, true);
+ reaction(
+ () => this.display,
+ display => display && (this.description = StrCast(LinkManager.Instance.currentLink?.link_description))
+ );
}
componentWillUnmount() {
@@ -65,8 +71,10 @@ export class LinkDescriptionPopup extends React.Component<{}> {
className="linkDescriptionPopup-input"
onKeyDown={e => e.stopPropagation()}
onKeyPress={e => e.key === 'Enter' && this.onDismiss(true)}
- placeholder={'(Optional) Enter link description...'}
- onChange={e => this.descriptionChanged(e)}></input>
+ value={this.description}
+ placeholder={this.description || '(Optional) Enter link description...'}
+ onChange={e => this.descriptionChanged(e)}
+ />
<div className="linkDescriptionPopup-btn">
<div className="linkDescriptionPopup-btn-dismiss" onPointerDown={e => this.onDismiss(false)}>
{' '}
diff --git a/src/client/views/nodes/LinkDocPreview.tsx b/src/client/views/nodes/LinkDocPreview.tsx
index 3f793b85e..ae25ff179 100644
--- a/src/client/views/nodes/LinkDocPreview.tsx
+++ b/src/client/views/nodes/LinkDocPreview.tsx
@@ -152,8 +152,8 @@ export class LinkDocPreview extends ObservableReactComponent<LinkDocPreviewProps
returnFalse,
emptyFunction,
action(() => {
- LinkManager.currentLink = this._linkDoc;
- LinkManager.currentLinkAnchor = this._linkSrc;
+ LinkManager.Instance.currentLink = this._linkDoc;
+ LinkManager.Instance.currentLinkAnchor = this._linkSrc;
this._props.DocumentView?.().select(false);
if ((SettingsManager.Instance.propertiesWidth ?? 0) < 100) {
SettingsManager.Instance.propertiesWidth = 250;
diff --git a/src/client/views/nodes/formattedText/DashDocCommentView.tsx b/src/client/views/nodes/formattedText/DashDocCommentView.tsx
index b7d2a24c2..a72ed1813 100644
--- a/src/client/views/nodes/formattedText/DashDocCommentView.tsx
+++ b/src/client/views/nodes/formattedText/DashDocCommentView.tsx
@@ -3,6 +3,8 @@ import * as ReactDOM from 'react-dom/client';
import { Doc } from '../../../../fields/Doc';
import { DocServer } from '../../../DocServer';
import * as React from 'react';
+import { IReactionDisposer, computed, reaction } from 'mobx';
+import { NumCast } from '../../../../fields/Types';
// creates an inline comment in a note when '>>' is typed.
// the comment sits on the right side of the note and vertically aligns with its anchor in the text.
@@ -10,8 +12,10 @@ import * as React from 'react';
export class DashDocCommentView {
dom: HTMLDivElement; // container for label and value
root: any;
+ node: any;
constructor(node: any, view: any, getPos: any) {
+ this.node = node;
this.dom = document.createElement('div');
this.dom.style.width = node.attrs.width;
this.dom.style.height = node.attrs.height;
@@ -32,10 +36,14 @@ export class DashDocCommentView {
};
this.root = ReactDOM.createRoot(this.dom);
- this.root.render(<DashDocCommentViewInternal view={view} getPos={getPos} docId={node.attrs.docId} />);
+ this.root.render(<DashDocCommentViewInternal view={view} getPos={getPos} setHeight={this.setHeight} docId={node.attrs.docId} />);
(this as any).dom = this.dom;
}
+ setHeight = (hgt: number) => {
+ !this.node.attrs.reflow && DocServer.GetRefField(this.node.attrs.docId).then(doc => doc instanceof Doc && (this.dom.style.height = hgt + ''));
+ };
+
destroy() {
this.root.unmount();
}
@@ -51,9 +59,15 @@ interface IDashDocCommentViewInternal {
docId: string;
view: any;
getPos: any;
+ setHeight: (height: number) => void;
}
export class DashDocCommentViewInternal extends React.Component<IDashDocCommentViewInternal> {
+ _reactionDisposer: IReactionDisposer | undefined;
+
+ @computed get _dashDoc() {
+ return DocServer.GetRefField(this.props.docId);
+ }
constructor(props: any) {
super(props);
this.onPointerLeaveCollapsed = this.onPointerLeaveCollapsed.bind(this);
@@ -61,15 +75,32 @@ export class DashDocCommentViewInternal extends React.Component<IDashDocCommentV
this.onPointerUpCollapsed = this.onPointerUpCollapsed.bind(this);
this.onPointerDownCollapsed = this.onPointerDownCollapsed.bind(this);
}
+ componentDidMount(): void {
+ this._reactionDisposer?.();
+ this._dashDoc.then(
+ doc =>
+ doc instanceof Doc &&
+ (this._reactionDisposer = reaction(
+ () => NumCast((doc as Doc)._height),
+ hgt => this.props.setHeight(hgt),
+ {
+ fireImmediately: true,
+ }
+ ))
+ );
+ }
+ componentWillUnmount(): void {
+ this._reactionDisposer?.();
+ }
onPointerLeaveCollapsed(e: any) {
- DocServer.GetRefField(this.props.docId).then(async dashDoc => dashDoc instanceof Doc && Doc.linkFollowUnhighlight());
+ this._dashDoc.then(async dashDoc => dashDoc instanceof Doc && Doc.linkFollowUnhighlight());
e.preventDefault();
e.stopPropagation();
}
onPointerEnterCollapsed(e: any) {
- DocServer.GetRefField(this.props.docId).then(async dashDoc => dashDoc instanceof Doc && Doc.linkFollowHighlight(dashDoc, false));
+ this._dashDoc.then(async dashDoc => dashDoc instanceof Doc && Doc.linkFollowHighlight(dashDoc, false));
e.preventDefault();
e.stopPropagation();
}
@@ -82,7 +113,7 @@ export class DashDocCommentViewInternal extends React.Component<IDashDocCommentV
const tr = this.props.view.state.tr.setNodeMarkup(target.pos, undefined, { ...target.node.attrs, hidden: target.node.attrs.hidden ? false : true });
this.props.view.dispatch(tr.setSelection(TextSelection.create(tr.doc, this.props.getPos() + (expand ? 2 : 1)))); // update the attrs
setTimeout(() => {
- expand && DocServer.GetRefField(this.props.docId).then(async dashDoc => dashDoc instanceof Doc && Doc.linkFollowHighlight(dashDoc));
+ expand && this._dashDoc.then(async dashDoc => dashDoc instanceof Doc && Doc.linkFollowHighlight(dashDoc));
try {
this.props.view.dispatch(this.props.view.state.tr.setSelection(TextSelection.create(this.props.view.state.tr.doc, this.props.getPos() + (expand ? 2 : 1))));
} catch (e) {}
diff --git a/src/client/views/nodes/formattedText/DashFieldView.scss b/src/client/views/nodes/formattedText/DashFieldView.scss
index 3426ba1a7..7a0ff8776 100644
--- a/src/client/views/nodes/formattedText/DashFieldView.scss
+++ b/src/client/views/nodes/formattedText/DashFieldView.scss
@@ -5,6 +5,16 @@
display: inline-flex;
align-items: center;
+ select {
+ display: none;
+ }
+
+ &:hover {
+ select {
+ display: unset;
+ }
+ }
+
.dashFieldView-enumerables {
width: 10px;
height: 10px;
diff --git a/src/client/views/nodes/formattedText/DashFieldView.tsx b/src/client/views/nodes/formattedText/DashFieldView.tsx
index 18286267a..ec0b76aa8 100644
--- a/src/client/views/nodes/formattedText/DashFieldView.tsx
+++ b/src/client/views/nodes/formattedText/DashFieldView.tsx
@@ -4,21 +4,24 @@ import { action, computed, IReactionDisposer, makeObservable, observable, reacti
import { observer } from 'mobx-react';
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
-import { Doc, Field } from '../../../../fields/Doc';
+import Select from 'react-select';
+import { Doc, DocListCast, Field } from '../../../../fields/Doc';
import { List } from '../../../../fields/List';
import { listSpec } from '../../../../fields/Schema';
import { SchemaHeaderField } from '../../../../fields/SchemaHeaderField';
-import { Cast } from '../../../../fields/Types';
+import { Cast, StrCast } from '../../../../fields/Types';
import { emptyFunction, returnFalse, returnZero, setupMoveUpEvents } from '../../../../Utils';
import { DocServer } from '../../../DocServer';
import { CollectionViewType } from '../../../documents/DocumentTypes';
import { Transform } from '../../../util/Transform';
+import { undoable, undoBatch } from '../../../util/UndoManager';
import { AntimodeMenu, AntimodeMenuProps } from '../../AntimodeMenu';
import { SchemaTableCell } from '../../collections/collectionSchema/SchemaTableCell';
import { ObservableReactComponent } from '../../ObservableReactComponent';
import { OpenWhere } from '../DocumentView';
import './DashFieldView.scss';
import { FormattedTextBox } from './FormattedTextBox';
+import { FilterPanel } from '../../FilterPanel';
export class DashFieldView {
dom: HTMLDivElement; // container for label and value
@@ -97,7 +100,7 @@ export class DashFieldViewInternal extends ObservableReactComponent<IDashFieldVi
_reactionDisposer: IReactionDisposer | undefined;
_textBoxDoc: Doc;
_fieldKey: string;
- _fieldStringRef = React.createRef<HTMLSpanElement>();
+ _fieldRef = React.createRef<HTMLDivElement>();
@observable _dashDoc: Doc | undefined = undefined;
@observable _expanded = false;
@@ -180,10 +183,22 @@ export class DashFieldViewInternal extends ObservableReactComponent<IDashFieldVi
});
};
+ @undoBatch
+ selectVal = (event: React.ChangeEvent<HTMLSelectElement> | undefined) => {
+ event && this._dashDoc && (this._dashDoc[this._fieldKey] = event.target.value);
+ };
+
+ @computed get values() {
+ const vals = FilterPanel.gatherFieldValues(DocListCast(Doc.ActiveDashboard?.data), this._fieldKey, []);
+
+ return vals.strings.map(facet => ({ value: facet, label: facet }));
+ }
+
render() {
return (
<div
className="dashFieldView"
+ ref={this._fieldRef}
style={{
width: this._props.width,
height: this._props.height,
@@ -194,8 +209,12 @@ export class DashFieldViewInternal extends ObservableReactComponent<IDashFieldVi
{(this._textBoxDoc === this._dashDoc ? '' : this._dashDoc?.title + ':') + this._fieldKey}
</span>
)}
-
{this._props.fieldKey.startsWith('#') ? null : this.fieldValueContent}
+ <select onChange={this.selectVal} style={{ height: '10px', width: '15px', fontSize: '12px', background: 'transparent' }}>
+ {this.values.map(val => (
+ <option value={val.value}>{val.label}</option>
+ ))}
+ </select>
</div>
);
}
diff --git a/src/client/views/nodes/formattedText/FormattedTextBox.tsx b/src/client/views/nodes/formattedText/FormattedTextBox.tsx
index 0b857794b..f2c4c6c8f 100644
--- a/src/client/views/nodes/formattedText/FormattedTextBox.tsx
+++ b/src/client/views/nodes/formattedText/FormattedTextBox.tsx
@@ -13,7 +13,7 @@ import { EditorView } from 'prosemirror-view';
import * as React from 'react';
import { BsMarkdownFill } from 'react-icons/bs';
import { DateField } from '../../../../fields/DateField';
-import { Doc, DocListCast, Field, Opt } from '../../../../fields/Doc';
+import { Doc, DocListCast, Field, Opt, StrListCast } from '../../../../fields/Doc';
import { AclAdmin, AclAugment, AclEdit, AclSelfEdit, DocCss, DocData, ForceServerWrite, UpdatingFromServer } from '../../../../fields/DocSymbols';
import { Id } from '../../../../fields/FieldSymbols';
import { InkTool } from '../../../../fields/InkField';
@@ -67,7 +67,7 @@ import { RichTextMenu, RichTextMenuPlugin } from './RichTextMenu';
import { RichTextRules } from './RichTextRules';
import { schema } from './schema_rts';
import { SummaryView } from './SummaryView';
-import { CollectionView } from '../../collections/CollectionView';
+import Select from 'react-select';
// import * as applyDevTools from 'prosemirror-dev-tools';
@observer
export class FormattedTextBox extends ViewBoxAnnotatableComponent<FieldViewProps>() implements ViewBoxInterface {
@@ -361,7 +361,9 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent<FieldViewProps
accumTags.push(node.attrs.fieldKey);
}
});
- dataDoc.tags = accumTags.length ? new List<string>(Array.from(new Set<string>(accumTags))) : undefined;
+ if (accumTags.some(atag => !StrListCast(dataDoc.tags).includes(atag))) {
+ dataDoc.tags = new List<string>(Array.from(new Set<string>(accumTags)));
+ }
let unchanged = true;
if (this._applyingChange !== this.fieldKey && (force || removeSelection(newJson) !== removeSelection(prevData?.Data))) {
@@ -487,14 +489,29 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent<FieldViewProps
};
// creates links between terms in a document and published documents (myPublishedDocs) that have titles starting with an '@'
+ /**
+ * Searches the text for occurences of any strings that match the names of 'published' documents. These document
+ * names will begin with an '@' prefix. However, valid matches within the text can have any of the following formats:
+ * name, @<name>, or ^@<name>
+ * The last of these is interpreted as an include directive when converting the text into evaluated code in the paint
+ * function of a freeform view that is driven by the text box's text. The include directive will copy the code of the published
+ * document into the code being evaluated.
+ */
hyperlinkTerm = (tr: any, target: Doc, newAutoLinks: Set<Doc>) => {
const editorView = this._editorView;
if (editorView && (editorView as any).docView && !Doc.AreProtosEqual(target, this.Document)) {
const autoLinkTerm = StrCast(target.title).replace(/^@/, '');
var alink: Doc | undefined;
this.findInNode(editorView, editorView.state.doc, autoLinkTerm).forEach(sel => {
- const splitter = editorView.state.schema.marks.splitter.create({ id: Utils.GenerateGuid() });
- if (!sel.$anchor.pos || [autoLinkTerm, StrCast(target.title)].includes(editorView.state.doc.textBetween(sel.$anchor.pos - 1, sel.$to.pos).trim())) {
+ if (
+ !sel.$anchor.pos ||
+ autoLinkTerm ===
+ editorView.state.doc
+ .textBetween(sel.$anchor.pos - 1, sel.$to.pos)
+ .trim()
+ .replace(/[\^@]+/, '')
+ ) {
+ const splitter = editorView.state.schema.marks.splitter.create({ id: Utils.GenerateGuid() });
tr = tr.addMark(sel.from, sel.to, splitter);
tr.doc.nodesBetween(sel.from, sel.to, (node: any, pos: number, parent: any) => {
if (node.firstChild === null && !node.marks.find((m: Mark) => m.type.name === schema.marks.noAutoLinkAnchor.name) && node.marks.find((m: Mark) => m.type.name === schema.marks.splitter.name)) {
@@ -667,12 +684,22 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent<FieldViewProps
let index = 0,
foundAt;
const ep = this.getNodeEndpoints(pm.state.doc, node);
- const regexp = new RegExp(find.replace('*', ''), 'i');
+ const regexp = new RegExp(find, 'i');
if (regexp) {
- while (ep && (foundAt = node.textContent.slice(index).search(regexp)) > -1) {
- const sel = new TextSelection(pm.state.doc.resolve(ep.from + index + foundAt + 1), pm.state.doc.resolve(ep.from + index + foundAt + find.length + 1));
- ret.push(sel);
- index = index + foundAt + find.length;
+ var blockOffset = 0;
+ for (var i = 0; i < node.childCount; i++) {
+ var textContent = '';
+ while (i < node.childCount && node.child(i).type === pm.state.schema.nodes.text) {
+ textContent += node.child(i).textContent;
+ i++;
+ }
+ while (ep && (foundAt = textContent.slice(index).search(regexp)) > -1) {
+ const sel = new TextSelection(pm.state.doc.resolve(ep.from + index + blockOffset + foundAt + 1), pm.state.doc.resolve(ep.from + index + blockOffset + foundAt + find.length + 1));
+ ret.push(sel);
+ index = index + foundAt + find.length;
+ }
+ blockOffset += textContent.length;
+ if (i < node.childCount) blockOffset += node.child(i).nodeSize;
}
}
} else {
@@ -933,17 +960,6 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent<FieldViewProps
event: () => (this.layoutDoc._createDocOnCR = !this.layoutDoc._createDocOnCR),
icon: !this.Document._createDocOnCR ? 'grip-lines' : 'bars',
});
- optionItems.push({
- description: 'Make Paint Function',
- event: () => {
- this.dataDoc.layout_painted = CollectionView.LayoutString('painted');
- this.layoutDoc.layout_fieldKey = 'layout_painted';
- this.layoutDoc.type_collection = CollectionViewType.Freeform;
- this.DocumentView?.().setToggleDetail();
- this.dataDoc.paintFunc = ComputedField.MakeFunction(`toJavascriptString(this['${this.fieldKey}']?.Text)`);
- },
- icon: !this.Document._layout_enableAltContentUI ? 'eye-slash' : 'eye',
- });
!Doc.noviceMode &&
optionItems.push({
description: `${this.Document._layout_autoHeight ? 'Lock' : 'Auto'} Height`,
@@ -1176,8 +1192,8 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent<FieldViewProps
this._cachedLinks = LinkManager.Links(this.Document);
this._disposers.breakupDictation = reaction(() => Doc.RecordingEvent, this.breakupDictation);
this._disposers.layout_autoHeight = reaction(
- () => this.layout_autoHeight,
- layout_autoHeight => layout_autoHeight && this.tryUpdateScrollHeight()
+ () => ({ autoHeight: this.layout_autoHeight, fontSize: this.fontSize }),
+ (autoHeight, fontSize) => setTimeout(() => autoHeight && this.tryUpdateScrollHeight())
);
this._disposers.highlights = reaction(
() => Array.from(FormattedTextBox._globalHighlights).slice(),
@@ -1538,15 +1554,16 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent<FieldViewProps
this._downX = e.clientX;
this._downY = e.clientY;
this._downTime = Date.now();
- this._hadDownFocus = this.ProseRef?.children[0].className.includes('focused') ?? false;
FormattedTextBoxComment.textBox = this;
if (e.button === 0 && this._props.rootSelected?.() && !e.altKey && !e.ctrlKey && !e.metaKey) {
if (e.clientX < this.ProseRef!.getBoundingClientRect().right) {
// stop propagation if not in sidebar, otherwise nested boxes will lose focus to outer boxes.
e.stopPropagation(); // if the text box's content is active, then it consumes all down events
document.addEventListener('pointerup', this.onSelectEnd);
+ (this.ProseRef?.children?.[0] as any).focus();
}
}
+ this._hadDownFocus = this.ProseRef?.children[0].className.includes('focused') ?? false;
if (e.button === 2 || (e.button === 0 && e.ctrlKey)) {
e.preventDefault();
}
diff --git a/src/client/views/nodes/formattedText/RichTextMenu.tsx b/src/client/views/nodes/formattedText/RichTextMenu.tsx
index 5858c3b11..cd0cdaa74 100644
--- a/src/client/views/nodes/formattedText/RichTextMenu.tsx
+++ b/src/client/views/nodes/formattedText/RichTextMenu.tsx
@@ -141,12 +141,14 @@ export class RichTextMenu extends AntimodeMenu<AntimodeMenuProps> {
const activeSizes = active.activeSizes;
const activeColors = active.activeColors;
const activeHighlights = active.activeHighlights;
+ const refDoc = SelectionManager.Views.lastElement()?.layoutDoc ?? Doc.UserDoc();
+ const refField = (pfx => (pfx ? pfx + '_' : ''))(SelectionManager.Views.lastElement()?.LayoutFieldKey);
this.activeListType = this.getActiveListStyle();
this._activeAlignment = this.getActiveAlignment();
- this._activeFontFamily = !activeFamilies.length ? StrCast(this.TextView?.Document._text_fontFamily, StrCast(Doc.UserDoc().fontFamily, 'Arial')) : activeFamilies.length === 1 ? String(activeFamilies[0]) : 'various';
- this._activeFontSize = !activeSizes.length ? StrCast(this.TextView?.Document.fontSize, StrCast(Doc.UserDoc().fontSize, '10px')) : activeSizes[0];
- this._activeFontColor = !activeColors.length ? StrCast(this.TextView?.Document.fontColor, StrCast(Doc.UserDoc().fontColor, 'black')) : activeColors.length > 0 ? String(activeColors[0]) : '...';
+ this._activeFontFamily = !activeFamilies.length ? StrCast(this.TextView?.Document._text_fontFamily, StrCast(refDoc[refField + 'fontFamily'], 'Arial')) : activeFamilies.length === 1 ? String(activeFamilies[0]) : 'various';
+ this._activeFontSize = !activeSizes.length ? StrCast(this.TextView?.Document.fontSize, StrCast(refDoc[refField + 'fontSize'], '10px')) : activeSizes[0];
+ this._activeFontColor = !activeColors.length ? StrCast(this.TextView?.Document.fontColor, StrCast(refDoc[refField + 'fontColor'], 'black')) : activeColors.length > 0 ? String(activeColors[0]) : '...';
this._activeHighlightColor = !activeHighlights.length ? '' : activeHighlights.length > 0 ? String(activeHighlights[0]) : '...';
// update link in current selection
@@ -358,8 +360,8 @@ export class RichTextMenu extends AntimodeMenu<AntimodeMenuProps> {
this.setMark(fmark, this.view.state, (tx: any) => this.view!.dispatch(tx.addStoredMark(fmark)), true);
this.view.focus();
}
- } else if (SelectionManager.Views.some(dv => dv.ComponentView instanceof EquationBox)) {
- SelectionManager.Views.forEach(dv => (dv.Document._text_fontSize = fontSize));
+ } else if (SelectionManager.Views.length) {
+ SelectionManager.Views.forEach(dv => (dv.layoutDoc[dv.LayoutFieldKey + '_fontSize'] = fontSize));
} else Doc.UserDoc().fontSize = fontSize;
this.updateMenu(this.view, undefined, this.props, this.layoutDoc);
};
@@ -369,6 +371,8 @@ export class RichTextMenu extends AntimodeMenu<AntimodeMenuProps> {
const fmark = this.view.state.schema.marks.pFontFamily.create({ family: family });
this.setMark(fmark, this.view.state, (tx: any) => this.view!.dispatch(tx.addStoredMark(fmark)), true);
this.view.focus();
+ } else if (SelectionManager.Views.length) {
+ SelectionManager.Views.forEach(dv => (dv.layoutDoc[dv.LayoutFieldKey + '_fontFamily'] = family));
} else Doc.UserDoc().fontFamily = family;
this.updateMenu(this.view, undefined, this.props, this.layoutDoc);
};
@@ -387,6 +391,8 @@ export class RichTextMenu extends AntimodeMenu<AntimodeMenuProps> {
const colorMark = this.view.state.schema.mark(this.view.state.schema.marks.pFontColor, { color });
this.setMark(colorMark, this.view.state, (tx: any) => this.view!.dispatch(tx.addStoredMark(colorMark)), true);
this.view.focus();
+ } else if (SelectionManager.Views.length) {
+ SelectionManager.Views.forEach(dv => (dv.layoutDoc[dv.LayoutFieldKey + '_fontColor'] = color));
} else Doc.UserDoc().fontColor = color;
this.updateMenu(this.view, undefined, this.props, this.layoutDoc);
}
diff --git a/src/client/views/nodes/formattedText/RichTextRules.ts b/src/client/views/nodes/formattedText/RichTextRules.ts
index be32a2c4a..9bd41f42c 100644
--- a/src/client/views/nodes/formattedText/RichTextRules.ts
+++ b/src/client/views/nodes/formattedText/RichTextRules.ts
@@ -4,8 +4,7 @@ import { Doc, StrListCast } from '../../../../fields/Doc';
import { DocData } from '../../../../fields/DocSymbols';
import { Id } from '../../../../fields/FieldSymbols';
import { List } from '../../../../fields/List';
-import { ComputedField } from '../../../../fields/ScriptField';
-import { NumCast } from '../../../../fields/Types';
+import { NumCast, StrCast } from '../../../../fields/Types';
import { Utils } from '../../../../Utils';
import { DocServer } from '../../../DocServer';
import { Docs, DocUtils } from '../../../documents/Documents';
@@ -15,6 +14,7 @@ import { RichTextMenu } from './RichTextMenu';
import { schema } from './schema_rts';
import { CollectionView } from '../../collections/CollectionView';
import { CollectionViewType } from '../../../documents/DocumentTypes';
+import { ContextMenu } from '../../ContextMenu';
export class RichTextRules {
public Document: Doc;
@@ -68,23 +68,20 @@ export class RichTextRules {
),
// ``` create code block
- textblockTypeInputRule(/^```$/, schema.nodes.code_block),
-
- new InputRule(new RegExp(/^\^@paint/), (state, match, start, end) => {
- const { dataDoc, layoutDoc, fieldKey } = this.TextBox;
- layoutDoc.type_collection = CollectionViewType.Freeform;
- dataDoc.layout_painted = CollectionView.LayoutString('painted');
- const layoutFieldKey = layoutDoc.layout_fieldKey;
- layoutDoc.layout_fieldKey = 'layout_painted';
- this.TextBox.DocumentView?.().setToggleDetail();
- layoutDoc.layout_fieldKey = layoutFieldKey;
- dataDoc.paintFunc = ComputedField.MakeFunction(`toJavascriptString(this['${fieldKey}']?.Text)`);
- const comment = '/* this is now a paint func */';
- const tr = state.tr
- .deleteRange(start, end)
- .insertText(comment)
- .insert(start + comment.length, schema.nodes.code_block.create());
- return tr.setSelection(new TextSelection(tr.doc.resolve(start + comment.length + 2)));
+ new InputRule(/^```$/, (state, match, start, end) => {
+ let $start = state.doc.resolve(start);
+ if (!$start.node(-1).canReplaceWith($start.index(-1), $start.indexAfter(-1), schema.nodes.code_block)) return null;
+
+ // this enables text with code blocks to be used as a 'paint' function via a styleprovider button that is added to Docs that have an onPaint script
+ this.TextBox.layoutDoc.type_collection = CollectionViewType.Freeform; // make it a freeform when rendered as a collection since those are the only views that know about the paint function
+ const paintedField = 'layout_' + this.TextBox.fieldKey + 'Painted'; // make a layout field key for storing the CollectionView jsx string pointing to the textbox's text
+ this.TextBox.dataDoc[paintedField] = CollectionView.LayoutString(this.TextBox.fieldKey);
+ const layoutFieldKey = StrCast(this.TextBox.layoutDoc.layout_fieldKey); // save the current layout fieldkey
+ this.TextBox.layoutDoc.layout_fieldKey = paintedField; // setup the paint layout field key
+ this.TextBox.DocumentView?.().setToggleDetail(layoutFieldKey.replace('layout_', '').replace('layout', ''), 'onPaint'); // create the script to toggle between the painted and regular view
+ this.TextBox.layoutDoc.layout_fieldKey = layoutFieldKey; // restore the layout field key to text
+
+ return state.tr.delete(start, end).setBlockType(start, start, schema.nodes.code_block);
}),
// %<font-size> set the font size
@@ -94,6 +91,32 @@ export class RichTextRules {
}),
//Create annotation to a field on the text document
+ new InputRule(new RegExp(/>::$/), (state, match, start, end) => {
+ const creator = (doc: Doc) => {
+ const textDoc = this.Document[DocData];
+ const numInlines = NumCast(textDoc.inlineTextCount);
+ textDoc.inlineTextCount = numInlines + 1;
+ const node = (state.doc.resolve(start) as any).nodeAfter;
+ const newNode = schema.nodes.dashComment.create({ docId: doc[Id], reflow: false });
+ const dashDoc = schema.nodes.dashDoc.create({ width: 75, height: 35, title: 'dashDoc', docId: doc[Id], float: 'right' });
+ const sm = state.storedMarks || undefined;
+ this.TextBox.EditorView?.dispatch(
+ node
+ ? this.TextBox.EditorView.state.tr
+ .insert(start, newNode)
+ .replaceRangeWith(start + 1, end + 2, dashDoc)
+ .insertText(' ', start + 2)
+ .setStoredMarks([...node.marks, ...(sm ? sm : [])])
+ : this.TextBox.EditorView.state.tr
+ );
+ };
+ DocUtils.addDocumentCreatorMenuItems(creator, creator, 200, 200);
+ const cm = ContextMenu.Instance;
+ cm.displayMenu(200, 200, undefined, true);
+
+ return null;
+ }),
+ //Create annotation to a field on the text document
new InputRule(new RegExp(/>>$/), (state, match, start, end) => {
const textDoc = this.Document[DocData];
const numInlines = NumCast(textDoc.inlineTextCount);
@@ -117,7 +140,7 @@ export class RichTextRules {
textDoc[inlineLayoutKey] = FormattedTextBox.LayoutString(inlineFieldKey); // create a layout string for the layout key that will render the annotation text
textDoc[inlineFieldKey] = ''; // set a default value for the annotation
const node = (state.doc.resolve(start) as any).nodeAfter;
- const newNode = schema.nodes.dashComment.create({ docId: textDocInline[Id] });
+ const newNode = schema.nodes.dashComment.create({ docId: textDocInline[Id], reflow: true });
const dashDoc = schema.nodes.dashDoc.create({ width: 75, height: 35, title: 'dashDoc', docId: textDocInline[Id], float: 'right' });
const sm = state.storedMarks || undefined;
const replaced = node
@@ -241,7 +264,7 @@ export class RichTextRules {
return null;
}),
- // stop using active style
+ // toggle alternate text UI %/
new InputRule(new RegExp(/%\//), (state, match, start, end) => {
setTimeout(this.TextBox.cycleAlternateText);
return state.tr.deleteRange(start, end);
@@ -265,49 +288,57 @@ export class RichTextRules {
// [[fieldKey]] => show field
// [[fieldKey=value]] => show field and also set its value
// [[fieldKey:docTitle]] => show field of doc
- new InputRule(new RegExp(/\[\[([a-zA-Z_\? \-0-9]*)(=[a-zA-Z_@\? /\-0-9]*)?(:[a-zA-Z_@:\.\? \-0-9]+)?\]\]$/), (state, match, start, end) => {
- const fieldKey = match[1];
- const docTitle = match[3]?.replace(':', '');
- const value = match[2]?.substring(1);
- const linkToDoc = (target: Doc) => {
- const rstate = this.TextBox.EditorView?.state;
- const selection = rstate?.selection.$from.pos;
- if (rstate) {
- this.TextBox.EditorView?.dispatch(rstate.tr.setSelection(new TextSelection(rstate.doc.resolve(start), rstate.doc.resolve(end - 3))));
- }
+ new InputRule(
+ new RegExp(/\[\[([a-zA-Z_\? \-0-9]*)(=[a-z,A-Z_@\? /\-0-9]*)?(:[a-zA-Z_@:\.\? \-0-9]+)?\]\]$/),
+ (state, match, start, end) => {
+ const fieldKey = match[1];
+ const docTitle = match[3]?.replace(':', '');
+ const value = match[2]?.substring(1);
+ const linkToDoc = (target: Doc) => {
+ const rstate = this.TextBox.EditorView?.state;
+ const selection = rstate?.selection.$from.pos;
+ if (rstate) {
+ this.TextBox.EditorView?.dispatch(rstate.tr.setSelection(new TextSelection(rstate.doc.resolve(start), rstate.doc.resolve(end - 3))));
+ }
- DocUtils.MakeLink(this.TextBox.getAnchor(true), target, { link_relationship: 'portal to:portal from' });
+ DocUtils.MakeLink(this.TextBox.getAnchor(true), target, { link_relationship: 'portal to:portal from' });
- const fstate = this.TextBox.EditorView?.state;
- if (fstate && selection) {
- this.TextBox.EditorView?.dispatch(fstate.tr.setSelection(new TextSelection(fstate.doc.resolve(selection))));
- }
- };
- const getTitledDoc = (docTitle: string) => {
- if (!DocServer.FindDocByTitle(docTitle)) {
- Doc.AddToMyPublished(Docs.Create.TextDocument('', { title: docTitle, _width: 400, _layout_autoHeight: true }));
- }
- const titledDoc = DocServer.FindDocByTitle(docTitle);
- return titledDoc ? Doc.BestEmbedding(titledDoc) : titledDoc;
- };
- if (!fieldKey) {
- if (docTitle) {
- const target = getTitledDoc(docTitle);
- if (target) {
- setTimeout(() => linkToDoc(target));
- return state.tr.deleteRange(end - 1, end).deleteRange(start, start + 3);
+ const fstate = this.TextBox.EditorView?.state;
+ if (fstate && selection) {
+ this.TextBox.EditorView?.dispatch(fstate.tr.setSelection(new TextSelection(fstate.doc.resolve(selection))));
+ }
+ };
+ const getTitledDoc = (docTitle: string) => {
+ if (!DocServer.FindDocByTitle(docTitle)) {
+ Doc.AddToMyPublished(Docs.Create.TextDocument('', { title: docTitle, _width: 400, _layout_autoHeight: true }));
}
+ const titledDoc = DocServer.FindDocByTitle(docTitle);
+ return titledDoc ? Doc.BestEmbedding(titledDoc) : titledDoc;
+ };
+ if (!fieldKey) {
+ if (docTitle) {
+ const target = getTitledDoc(docTitle);
+ if (target) {
+ setTimeout(() => linkToDoc(target));
+ return state.tr.deleteRange(end - 1, end).deleteRange(start, start + 3);
+ }
+ }
+ return state.tr;
}
- return state.tr;
- }
- if (value !== '' && value !== undefined) {
- const num = value.match(/^[0-9.]$/);
- this.Document[DocData][fieldKey] = value === 'true' ? true : value === 'false' ? false : num ? Number(value) : value;
- }
- const target = getTitledDoc(docTitle);
- const fieldView = state.schema.nodes.dashField.create({ fieldKey, docId: target?.[Id], hideKey: false });
- return state.tr.setSelection(new TextSelection(state.doc.resolve(start), state.doc.resolve(end))).replaceSelectionWith(fieldView, true);
- }),
+ if (value?.includes(',')) {
+ const values = value.split(',');
+ const strs = values.some(v => !v.match(/^[-]?[0-9.]$/));
+ this.Document[DocData][fieldKey] = strs ? new List<string>(values) : new List<number>(values.map(v => Number(v)));
+ } else if (value !== '' && value !== undefined) {
+ const num = value.match(/^[0-9.]$/);
+ this.Document[DocData][fieldKey] = value === 'true' ? true : value === 'false' ? false : num ? Number(value) : value;
+ }
+ const target = getTitledDoc(docTitle);
+ const fieldView = state.schema.nodes.dashField.create({ fieldKey, docId: target?.[Id], hideKey: false });
+ return state.tr.setSelection(new TextSelection(state.doc.resolve(start), state.doc.resolve(end))).replaceSelectionWith(fieldView, true);
+ },
+ { inCode: true }
+ ),
// create a text display of a metadata field on this or another document, or create a hyperlink portal to another document
// wiki:title
diff --git a/src/client/views/nodes/formattedText/marks_rts.ts b/src/client/views/nodes/formattedText/marks_rts.ts
index a342285b0..a141ef041 100644
--- a/src/client/views/nodes/formattedText/marks_rts.ts
+++ b/src/client/views/nodes/formattedText/marks_rts.ts
@@ -1,6 +1,7 @@
import * as React from 'react';
import { DOMOutputSpec, Fragment, MarkSpec, Node, NodeSpec, Schema, Slice } from 'prosemirror-model';
import { Doc } from '../../../../fields/Doc';
+import { Utils } from '../../../../Utils';
const emDOM: DOMOutputSpec = ['em', 0];
const strongDOM: DOMOutputSpec = ['strong', 0];
@@ -44,7 +45,7 @@ export const marks: { [index: string]: MarkSpec } = {
toDOM(node: any) {
const targethrefs = node.attrs.allAnchors.reduce((p: string, item: { href: string; title: string; anchorId: string }) => (p ? p + ' ' + item.href : item.href), '');
const anchorids = node.attrs.allAnchors.reduce((p: string, item: { href: string; title: string; anchorId: string }) => (p ? p + ' ' + item.anchorId : item.anchorId), '');
- return ['a', { class: anchorids, 'data-targethrefs': targethrefs, /*'data-noPreview': 'true', */ 'data-linkdoc': node.attrs.linkDoc, title: node.attrs.title, style: `background: lightBlue` }, 0];
+ return ['a', { id: Utils.GenerateGuid(), class: anchorids, 'data-targethrefs': targethrefs, /*'data-noPreview': 'true', */ 'data-linkdoc': node.attrs.linkDoc, title: node.attrs.title, style: `background: lightBlue` }, 0];
},
},
noAutoLinkAnchor: {
@@ -104,7 +105,7 @@ export const marks: { [index: string]: MarkSpec } = {
node.attrs.title,
],
]
- : ['a', { class: anchorids, 'data-targethrefs': targethrefs, title: node.attrs.title, 'data-noPreview': node.attrs.noPreview, style: `text-decoration: underline; cursor: default` }, 0];
+ : ['a', { id: '' + Utils.GenerateGuid(), class: anchorids, 'data-targethrefs': targethrefs, title: node.attrs.title, 'data-noPreview': node.attrs.noPreview, style: `text-decoration: underline; cursor: default` }, 0];
},
},
diff --git a/src/client/views/nodes/formattedText/nodes_rts.ts b/src/client/views/nodes/formattedText/nodes_rts.ts
index 31f001b11..4706a97fa 100644
--- a/src/client/views/nodes/formattedText/nodes_rts.ts
+++ b/src/client/views/nodes/formattedText/nodes_rts.ts
@@ -179,6 +179,7 @@ export const nodes: { [index: string]: NodeSpec } = {
dashComment: {
attrs: {
docId: { default: '' },
+ reflow: { default: true },
},
inline: true,
group: 'inline',
@@ -275,6 +276,17 @@ export const nodes: { [index: string]: NodeSpec } = {
},
},
+ paintButton: {
+ inline: true,
+ attrs: {},
+ group: 'inline',
+ draggable: false,
+ toDOM(node) {
+ const attrs = { style: `width: ${node.attrs.width}, height: ${node.attrs.height}` };
+ return ['div', { ...node.attrs, ...attrs }];
+ },
+ },
+
video: {
inline: true,
attrs: {
diff --git a/src/client/views/nodes/trails/PresBox.tsx b/src/client/views/nodes/trails/PresBox.tsx
index 1b2c45e72..b8f6575dd 100644
--- a/src/client/views/nodes/trails/PresBox.tsx
+++ b/src/client/views/nodes/trails/PresBox.tsx
@@ -4,7 +4,7 @@ import { action, computed, IReactionDisposer, makeObservable, observable, Observ
import { observer } from 'mobx-react';
import * as React from 'react';
import { Doc, DocListCast, Field, FieldResult, NumListCast, Opt, StrListCast } from '../../../../fields/Doc';
-import { Animation, DocData } from '../../../../fields/DocSymbols';
+import { Animation, DocData, TransitionTimer } from '../../../../fields/DocSymbols';
import { Copy, Id } from '../../../../fields/FieldSymbols';
import { InkField } from '../../../../fields/InkField';
import { List } from '../../../../fields/List';
@@ -414,7 +414,8 @@ export class PresBox extends ViewBoxBaseComponent<FieldViewProps>() {
bestTarget.rotation = NumCast(activeItem.config_rotation, NumCast(bestTarget.rotation));
bestTarget.width = NumCast(activeItem.config_width, NumCast(bestTarget.width));
bestTarget.height = NumCast(activeItem.config_height, NumCast(bestTarget.height));
- setTimeout(() => (bestTarget._dataTransition = undefined), transTime + 10);
+ bestTarget[TransitionTimer] && clearTimeout(bestTarget[TransitionTimer]);
+ bestTarget[TransitionTimer] = setTimeout(() => (bestTarget[TransitionTimer] = bestTarget._dataTransition = undefined), transTime + 10);
changed = true;
}
}
@@ -441,7 +442,7 @@ export class PresBox extends ViewBoxBaseComponent<FieldViewProps>() {
const bestTargetData = bestTarget[DocData];
const current = bestTargetData[fkey];
const hash = bestTargetData[fkey] ? stringHash(Field.toString(bestTargetData[fkey] as Field)) : undefined;
- if (hash) bestTargetData[fkey + '_' +hash] = current instanceof ObjectField ? current[Copy]() : current;
+ if (hash) bestTargetData[fkey + '_' + hash] = current instanceof ObjectField ? current[Copy]() : current;
bestTargetData[fkey] = activeItem.config_data instanceof ObjectField ? activeItem.config_data[Copy]() : activeItem.config_data;
}
bestTarget[fkey + '_usePath'] = activeItem.config_usePath;
diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts
index 67f09f37b..56d50846a 100644
--- a/src/fields/Doc.ts
+++ b/src/fields/Doc.ts
@@ -16,7 +16,7 @@ import { DateField } from './DateField';
import {
AclAdmin, AclAugment, AclEdit, AclPrivate, AclReadonly, Animation, AudioPlay, Brushed, CachedUpdates, DirectLinks,
DocAcl, DocCss, DocData, DocFields, DocLayout, DocViews, FieldKeys, FieldTuples, ForceServerWrite, Height, Highlight,
- Initializing, Self, SelfProxy, UpdatingFromServer, Width
+ Initializing, Self, SelfProxy, TransitionTimer, UpdatingFromServer, Width
} from './DocSymbols'; // prettier-ignore
import { Copy, FieldChanged, HandleUpdate, Id, Parent, ToJavascriptString, ToScriptString, ToString } from './FieldSymbols';
import { InkField, InkTool } from './InkField';
@@ -60,14 +60,17 @@ export namespace Field {
case 'number':
case 'boolean':rawjava = String(field);
break;
- default: rawjava = field?.[ToJavascriptString]?.() ?? 'null';
+ default: rawjava = field?.[ToJavascriptString]?.() ?? '';
} // prettier-ignore
var script = rawjava;
// this is a bit hacky, but we treat '^@' references to a published document
// as a kind of macro to include the content of those documents
Doc.MyPublishedDocs.forEach(doc => {
const regex = new RegExp(`^\\^${doc.title}\\s`, 'm');
- script = script.replace(regex, Cast(doc.text, RichTextField, null)?.Text ?? '');
+ const sections = (Cast(doc.text, RichTextField, null)?.Text ?? '').split('--DOCDATA--');
+ if (script.match(regex)) {
+ script = script.replace(regex, sections[0]) + (sections.length > 1 ? sections[1] : '');
+ }
});
return script;
}
@@ -306,6 +309,7 @@ export class Doc extends RefField {
public [DocFields] = () => this[Self][FieldTuples]; // Object.keys(this).reduce((fields, key) => { fields[key] = this[key]; return fields; }, {} as any);
public [Width] = () => NumCast(this[SelfProxy]._width);
public [Height] = () => NumCast(this[SelfProxy]._height);
+ public [TransitionTimer]: any = undefined;
public [ToJavascriptString] = () => `idToDoc("${this[Self][Id]}")`; // what should go here?
public [ToScriptString] = () => `idToDoc("${this[Self][Id]}")`;
public [ToString] = () => `Doc(${GetEffectiveAcl(this[SelfProxy]) === AclPrivate ? '-inaccessible-' : this[SelfProxy].title})`;
@@ -387,7 +391,7 @@ export class Doc extends RefField {
export namespace Doc {
export function SetContainer(doc: Doc, container: Doc) {
- doc.embedContainer = container;
+ container !== Doc.MyRecentlyClosed && (doc.embedContainer = container);
}
export function RunCachedUpdate(doc: Doc, field: string) {
const update = doc[CachedUpdates][field];
@@ -572,6 +576,16 @@ export namespace Doc {
return false;
}
+ export function RemoveEmbedding(doc: Doc, embedding: Doc) {
+ Doc.RemoveDocFromList(doc[DocData], 'proto_embeddings', embedding);
+ }
+ export function AddEmbedding(doc: Doc, embedding: Doc) {
+ Doc.AddDocToList(doc[DocData], 'proto_embeddings', embedding, undefined, undefined, undefined, undefined, undefined, true);
+ }
+ export function GetEmbeddings(doc: Doc) {
+ return DocListCast(Doc.Get(doc[DocData], 'proto_embeddings', true));
+ }
+
export function MakeEmbedding(doc: Doc, id?: string) {
const embedding = (!GetT(doc, 'isDataDoc', 'boolean', true) && doc.proto) || doc.type === DocumentType.CONFIG ? Doc.MakeCopy(doc, undefined, id) : Doc.MakeDelegate(doc, id);
const layout = Doc.LayoutField(embedding);
@@ -579,20 +593,18 @@ export namespace Doc {
Doc.SetLayout(embedding, Doc.MakeEmbedding(layout));
}
embedding.createdFrom = doc;
- embedding.proto_embeddingId = doc[DocData].proto_embeddingId = DocListCast(doc[DocData].proto_embeddings).length - 1;
+ embedding.proto_embeddingId = doc[DocData].proto_embeddingId = Doc.GetEmbeddings(doc).length - 1;
!Doc.GetT(embedding, 'title', 'string', true) && (embedding.title = ComputedField.MakeFunction(`renameEmbedding(this)`));
embedding.author = Doc.CurrentUserEmail;
- Doc.AddDocToList(doc[DocData], 'proto_embeddings', embedding);
-
return embedding;
}
export function BestEmbedding(doc: Doc) {
const dataDoc = doc[DocData];
- const availableEmbeddings = DocListCast(dataDoc.proto_embeddings);
+ const availableEmbeddings = Doc.GetEmbeddings(dataDoc);
const bestEmbedding = [...(dataDoc !== doc ? [doc] : []), ...availableEmbeddings].find(doc => !doc.embedContainer && doc.author === Doc.CurrentUserEmail);
- bestEmbedding && Doc.AddDocToList(dataDoc, 'protoEmbeddings', doc);
+ bestEmbedding && Doc.AddDocToList(dataDoc, 'protoEmbeddings', doc, undefined, undefined, undefined, undefined, undefined, true);
return bestEmbedding ?? Doc.MakeEmbedding(doc);
}
@@ -866,7 +878,7 @@ export namespace Doc {
export function FindReferences(infield: Doc | List<any>, references: Set<Doc>, system: boolean | undefined) {
if (infield instanceof Promise) return;
if (!(infield instanceof Doc)) {
- infield.forEach(val => (val instanceof Doc || val instanceof List) && FindReferences(val, references, system));
+ infield?.forEach(val => (val instanceof Doc || val instanceof List) && FindReferences(val, references, system));
return;
}
const doc = infield as Doc;
@@ -951,7 +963,7 @@ export namespace Doc {
Doc.GetProto(copy).embedContainer = undefined;
Doc.GetProto(copy).proto_embeddings = new List<Doc>([copy]);
} else {
- Doc.AddDocToList(copy[DocData], 'proto_embeddings', copy);
+ Doc.AddEmbedding(copy, copy);
}
copy.embedContainer = undefined;
if (retitle) {
@@ -972,9 +984,10 @@ export namespace Doc {
Object.keys(doc)
.filter(key => key.startsWith('acl'))
.forEach(key => (delegate[key] = doc[key]));
- if (!Doc.IsSystem(doc)) Doc.AddDocToList(doc[DocData], 'proto_embeddings', delegate);
+ if (!Doc.IsSystem(doc)) Doc.AddEmbedding(doc, delegate);
title && (delegate.title = title);
delegate[Initializing] = false;
+ Doc.AddEmbedding(doc, delegate);
return delegate;
}
return undefined;
@@ -995,7 +1008,7 @@ export namespace Doc {
delegate[Initializing] = true;
delegate.proto = delegateProto;
delegate.author = Doc.CurrentUserEmail;
- Doc.AddDocToList(delegateProto[DocData], 'proto_embeddings', delegate);
+ Doc.AddEmbedding(delegateProto, delegate);
delegate[Initializing] = false;
delegateProto[Initializing] = false;
return delegate;
@@ -1032,13 +1045,13 @@ export namespace Doc {
// This function converts a generic field layout display into a field layout that displays a specific
// metadata field indicated by the title of the template field (not the default field that it was rendering)
//
- export function MakeMetadataFieldTemplate(templateField: Doc, templateDoc: Opt<Doc>): boolean {
+ export function MakeMetadataFieldTemplate(templateField: Doc, templateDoc: Opt<Doc>, keepFieldKey = false): boolean {
// find the metadata field key that this template field doc will display (indicated by its title)
- const metadataFieldKey = StrCast(templateField.isTemplateForField) || StrCast(templateField.title).replace(/^-/, '') || Doc.LayoutFieldKey(templateField);
+ const metadataFieldKey = keepFieldKey ? Doc.LayoutFieldKey(templateField) : StrCast(templateField.isTemplateForField) || StrCast(templateField.title).replace(/^-/, '') || Doc.LayoutFieldKey(templateField);
// update the original template to mark it as a template
templateField.isTemplateForField = metadataFieldKey;
- templateField.title = metadataFieldKey;
+ !keepFieldKey && (templateField.title = metadataFieldKey);
const templateFieldValue = templateField[metadataFieldKey] || templateField[Doc.LayoutFieldKey(templateField)];
const templateCaptionValue = templateField.caption;
diff --git a/src/fields/DocSymbols.ts b/src/fields/DocSymbols.ts
index 9c563abbf..f8a57acd5 100644
--- a/src/fields/DocSymbols.ts
+++ b/src/fields/DocSymbols.ts
@@ -15,6 +15,7 @@ export const DocLayout = Symbol('DocLayout');
export const DocFields = Symbol('DocFields');
export const DocCss = Symbol('DocCss');
export const DocAcl = Symbol('DocAcl');
+export const TransitionTimer = Symbol('DocTransitionTimer');
export const DirectLinks = Symbol('DocDirectLinks');
export const AclPrivate = Symbol('DocAclOwnerOnly');
export const AclReadonly = Symbol('DocAclReadOnly');
diff --git a/src/fields/List.ts b/src/fields/List.ts
index 9458a9611..ec31f7dae 100644
--- a/src/fields/List.ts
+++ b/src/fields/List.ts
@@ -317,7 +317,7 @@ class ListImpl<T extends Field> extends ObjectField {
return `new List([${(this as any).map((field: any) => Field.toScriptString(field))}])`;
}
[ToString]() {
- return `List(${(this as any).length})`;
+ return `[${(this as any).map((field: any) => Field.toString(field))}]`;
}
}
export type List<T extends Field> = ListImpl<T> & (T | (T extends RefField ? Promise<T> : never))[];
diff --git a/src/server/DashUploadUtils.ts b/src/server/DashUploadUtils.ts
index b1a7a9c5e..307aec6fc 100644
--- a/src/server/DashUploadUtils.ts
+++ b/src/server/DashUploadUtils.ts
@@ -14,7 +14,7 @@ import * as path from 'path';
import { basename } from 'path';
import * as parse from 'pdf-parse';
import * as request from 'request-promise';
-import { Duplex } from 'stream';
+import { Duplex, Stream } from 'stream';
import { filesDirectory, publicDirectory } from '.';
import { Utils } from '../Utils';
import { Opt } from '../fields/Doc';
@@ -349,10 +349,8 @@ export namespace DashUploadUtils {
if (metadata instanceof Error) {
return { name: metadata.name, message: metadata.message };
}
- const outputFile = filename || metadata.filename;
- if (!outputFile) {
- return { name: source, message: 'output file not found' };
- }
+ const outputFile = filename || metadata.filename || '';
+
return UploadInspectedImage(metadata, outputFile, prefix);
};
@@ -552,7 +550,22 @@ export namespace DashUploadUtils {
writtenFiles = {};
}
} else {
- writtenFiles = await outputResizedImages(metadata.source, resolved, pathToDirectory(Directory.images));
+ try {
+ writtenFiles = await outputResizedImages(metadata.source, resolved, pathToDirectory(Directory.images));
+ } catch (e) {
+ // input is a blob or other, try reading it to create a metadata source file.
+ const reqSource = request(metadata.source);
+ let readStream: Stream = reqSource instanceof Promise ? await reqSource : reqSource;
+ const readSource = `${prefix}upload_${Utils.GenerateGuid()}.${metadata.contentType.split('/')[1].toLowerCase()}`;
+ await new Promise<void>((res, rej) =>
+ readStream
+ .pipe(createWriteStream(readSource))
+ .on('close', () => res())
+ .on('error', () => rej())
+ );
+ writtenFiles = await outputResizedImages(readSource, resolved, pathToDirectory(Directory.images));
+ fs.unlink(readSource, err => console.log("Couldn't unlink temporary image file:" + readSource));
+ }
}
for (const suffix of Object.keys(writtenFiles)) {
information.accessPaths[suffix] = getAccessPaths(images, writtenFiles[suffix]);