Compare commits

...
Author SHA1 Message Date
StandardNotes CI 06d6f3b481 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2023-04-28 11:30:21 +00:00
Aman Harwara 0ab9006c52 chore: update collapsible plugin 2023-04-28 16:26:02 +05:30
Aman Harwara 4d9c9d597b chore: make collapsible arrow key behavior same as lexical 2023-04-28 16:24:38 +05:30
Aman Harwara 40179bba06 fix: Fixed issue where removing a collapsible block would unwrap the contents in reverse order 2023-04-28 16:20:46 +05:30
Aman Harwara 8c548d40c4 chore: fix rename input theming 2023-04-28 15:56:17 +05:30
StandardNotes CI a4cfd603d2 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2023-04-28 08:16:09 +00:00
Aman Harwara 27ab5449f6 chore: upgrade lexical 2023-04-28 13:15:45 +05:30
Aman Harwara 4740e43d1c chore: fix default editor dropdown 2023-04-28 13:01:50 +05:30
StandardNotes CI b8f78eb4fd chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2023-04-27 15:51:05 +00:00
Aman Harwara 7c1ded30c7 Merge branch 'main' of github.com:standardnotes/app 2023-04-27 20:46:24 +05:30
Aman Harwara 247ff62422 fix(desktop): Fixed issue on Mac desktop app where multiple files could not be downloaded 2023-04-27 20:46:18 +05:30
StandardNotes CI 420cb4d945 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2023-04-27 15:12:31 +00:00
Aman Harwara 7b6e5f95d5 chore: ios ci 2023-04-27 20:07:39 +05:30
Aman Harwara beddb3cc6c Merge branch 'main' of github.com:standardnotes/app 2023-04-27 19:53:47 +05:30
Aman Harwara 725b49568a chore: ios ci 2023-04-27 19:53:37 +05:30
StandardNotes CI 6b89a6615f chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].9
2023-04-27 13:19:37 +00:00
Aman Harwara 13d56082d8 chore: fix menu closing 2023-04-27 18:19:25 +05:30
Aman Harwara 91b3978e14 Merge branch 'main' of github.com:standardnotes/app 2023-04-27 18:12:29 +05:30
Aman Harwara b34ab6ab28 chore: fix error when converting empty super note 2023-04-27 18:12:23 +05:30
StandardNotes CI 07ec2be5ee chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].8
2023-04-27 12:37:47 +00:00
Aman Harwara d1009e368a chore: fix mobile large font size 2023-04-27 18:06:20 +05:30
Aman Harwara b0cf179a90 Merge branch 'main' of github.com:standardnotes/app 2023-04-27 17:38:57 +05:30
Aman Harwara 2c4b574bd4 chore: ios ci 2023-04-27 17:38:48 +05:30
Aman Harwara d658769531 chore: tooltips 2023-04-27 17:37:31 +05:30
StandardNotes CI a10d5a6728 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].7
2023-04-27 11:08:06 +00:00
Aman Harwara 67d3f149b2 chore: ios ci 2023-04-27 16:02:50 +05:30
Aman Harwara 0baf500616 Merge branch 'main' of github.com:standardnotes/app 2023-04-27 15:58:06 +05:30
Aman Harwara ef27a21fb1 fix(desktop): Fixed issue where preferences header & tooltips are overlapped by custom titlebar 2023-04-27 15:57:56 +05:30
Aman Harwara 76bd995c9a chore: tooltips 2023-04-27 15:13:54 +05:30
StandardNotes CI 3ada748522 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].6
2023-04-27 09:19:43 +00:00
Aman Harwara f45a639a72 chore: close file menu on download 2023-04-27 14:29:59 +05:30
Aman Harwara 8bb5bb6f9f Merge branch 'main' of github.com:standardnotes/app 2023-04-27 14:21:34 +05:30
Aman Harwara 1925d8a9c2 chore: trigger build 2023-04-27 14:21:21 +05:30
StandardNotes CI 93a1402088 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
2023-04-27 08:33:18 +00:00
Aman Harwara cb15d183ca chore: update fastlane 2023-04-27 13:29:42 +05:30
StandardNotes CI e686aa29e8 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
2023-04-27 07:07:21 +00:00
Aman Harwara 96905fe980 Merge branch 'main' of github.com:standardnotes/app 2023-04-27 12:09:42 +05:30
Aman Harwara bd3fabcaa7 chore: ios ci 2023-04-27 12:09:33 +05:30
StandardNotes CI c6dcbf2cc9 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].4
2023-04-26 18:40:15 +00:00
Aman Harwara a5d24fa526 Merge branch 'main' of github.com:standardnotes/app 2023-04-26 23:39:12 +05:30
Aman Harwara aa16a287fa chore: trigger build 2023-04-26 23:39:04 +05:30
StandardNotes CI c41f686fd0 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
2023-04-26 18:01:06 +00:00
Aman Harwara ec358d6b07 chore: show android system webview update prompt if app fails to load (#2318) 2023-04-26 22:58:59 +05:30
Aman Harwara af1e18b47e chore: use latest macos runner 2023-04-26 22:25:06 +05:30
StandardNotes CI 681f717072 chore(release): publish
- @standardnotes/[email protected].4
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
 - @standardnotes/[email protected].5
 - @standardnotes/[email protected].5
 - @standardnotes/[email protected].3
2023-04-26 14:25:15 +00:00
Mo af84d09b7a chore(snjs): remove cloudlink 2023-04-26 08:50:46 -05:00
Aman Harwara ccac1494c2 chore: revert labs changes 2023-04-26 19:05:52 +05:30
Aman Harwara 51b2d8b115 Merge branch 'main' of github.com:standardnotes/app 2023-04-26 19:02:28 +05:30
Aman Harwara d501ae4410 chore: preferences changes 2023-04-26 19:02:19 +05:30
88 changed files with 891 additions and 840 deletions
+1 -3
View File
@@ -66,12 +66,10 @@ jobs:
packages/mobile/android/app/build/outputs/apk/prod/release/app-prod-release.apk
ios:
env:
ITMSTRANSPORTER_FORCE_ITMS_PACKAGE_UPLOAD: true
defaults:
run:
working-directory: packages/mobile
runs-on: macos-11
runs-on: macos-latest
timeout-minutes: 90
steps:
- name: Checkout code
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.26.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/api
## [1.26.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/api
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/api",
"version": "1.26.3",
"version": "1.26.4",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+44
View File
@@ -3,6 +3,50 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.0.34](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-28)
**Note:** Version bump only for package @standardnotes/clipper
## [1.0.33](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-28)
**Note:** Version bump only for package @standardnotes/clipper
## [1.0.32](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/clipper
## [1.0.31](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/clipper
## [1.0.30](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/clipper
## [1.0.29](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/clipper
## [1.0.28](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/clipper
## [1.0.27](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/clipper
## [1.0.26](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/clipper
## [1.0.25](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/clipper
## [1.0.24](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/clipper
## [1.0.23](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/clipper
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@standardnotes/clipper",
"description": "Web clipper browser extension for Standard Notes",
"version": "1.0.23",
"version": "1.0.34",
"private": true,
"scripts": {
"build-mv2": "yarn clean && webpack --config ./webpack.config.prod.js",
+46
View File
@@ -3,6 +3,52 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.105.83](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-28)
**Note:** Version bump only for package @standardnotes/desktop
## [3.105.82](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-28)
**Note:** Version bump only for package @standardnotes/desktop
## [3.105.81](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/desktop
## [3.105.80](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/desktop
## [3.105.79](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/desktop
## [3.105.78](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/desktop
## [3.105.77](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
### Bug Fixes
* **desktop:** Fixed issue where preferences header & tooltips are overlapped by custom titlebar ([ef27a21](https://github.com/standardnotes/app/commit/ef27a21fb141c4ef1a760cf6fb550e4b713f8f98))
## [3.105.76](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/desktop
## [3.105.75](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/desktop
## [3.105.74](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/desktop
## [3.105.73](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/desktop
## [3.105.72](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/desktop
@@ -156,7 +156,7 @@ export function createSpellcheckerManager(
const firstOutlier = session.availableSpellCheckerLanguages.find(
(language, index) => availableSpellCheckerLanguages[index] !== language,
)
throw new Error(`Found unsupported language code: ${firstOutlier}`)
console.error(`Found unsupported language code: ${firstOutlier}`)
}
setSpellcheckerLanguages()
@@ -114,6 +114,17 @@ async function configureWindow(remoteBridge: CrossProcessBridge) {
if (isMacOS || useSystemMenuBar) {
// !important is important here because #desktop-title-bar has display: flex.
sheet.insertRule('#desktop-title-bar { display: none !important; }', sheet.cssRules.length)
} else {
/* Use custom title bar. Take the sn-titlebar-height off of
the app content height so its not overflowing */
sheet.insertRule(
'[data-dialog] { position: relative; height: calc(100vh - var(--sn-desktop-titlebar-height)) !important; margin-top: var(--sn-desktop-titlebar-height) !important; }',
sheet.cssRules.length,
)
sheet.insertRule(
'[data-mobile-popover] { padding-top: var(--sn-desktop-titlebar-height) !important; }',
sheet.cssRules.length,
)
}
}
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@standardnotes/desktop",
"main": "./app/dist/index.js",
"version": "3.105.72",
"version": "3.105.83",
"license": "AGPL-3.0-or-later",
"author": "Standard Notes.",
"private": true,
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.21.32](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/encryption
## [1.21.31](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/encryption
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/encryption",
"version": "1.21.31",
"version": "1.21.32",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.59.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/features
## [1.59.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/features
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/features",
"version": "1.59.2",
"version": "1.59.3",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
@@ -1,9 +1,5 @@
export enum FeatureIdentifier {
CloudLink = 'org.standardnotes.cloudlink',
DailyDropboxBackup = 'org.standardnotes.daily-dropbox-backup',
DailyEmailBackup = 'org.standardnotes.daily-email-backup',
DailyGDriveBackup = 'org.standardnotes.daily-gdrive-backup',
DailyOneDriveBackup = 'org.standardnotes.daily-onedrive-backup',
Files = 'org.standardnotes.files',
FilesLowStorageTier = 'org.standardnotes.files-low-storage-tier',
FilesMaximumStorageTier = 'org.standardnotes.files-max-storage-tier',
@@ -41,21 +41,6 @@ export function serverFeatures(): ServerFeatureDescription[] {
identifier: FeatureIdentifier.SignInAlerts,
permission_name: PermissionName.SignInAlerts,
},
{
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
identifier: FeatureIdentifier.DailyDropboxBackup,
permission_name: PermissionName.DailyDropboxBackup,
},
{
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
identifier: FeatureIdentifier.DailyGDriveBackup,
permission_name: PermissionName.DailyGDriveBackup,
},
{
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
identifier: FeatureIdentifier.DailyOneDriveBackup,
permission_name: PermissionName.DailyOneDriveBackup,
},
{
availableInSubscriptions: [SubscriptionName.ProPlan],
identifier: FeatureIdentifier.FilesMaximumStorageTier,
@@ -2,14 +2,10 @@ export enum PermissionName {
AccountSwitcher = 'app:account-switcher',
AutobiographyTheme = 'theme:autobiography',
BoldEditor = 'editor:bold',
CloudLink = 'component:cloud-link',
CodeEditor = 'editor:code-editor',
ComponentFilesafe = 'component:filesafe',
ComponentFolders = 'component:folders',
DailyDropboxBackup = 'server:daily-dropbox-backup',
DailyEmailBackup = 'server:daily-email-backup',
DailyGDriveBackup = 'server:daily-gdrive-backup',
DailyOneDriveBackup = 'server:daily-onedrive-backup',
Files = 'app:files',
FilesMaximumStorageTier = 'server:files-max-storage-tier',
FilesLowStorageTier = 'server:files-low-storage-tier',
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.28.37](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/filepicker
## [1.28.36](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/filepicker
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/filepicker",
"version": "1.28.36",
"version": "1.28.37",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.14.47](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/files
## [1.14.46](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/files
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/files",
"version": "1.14.46",
"version": "1.14.47",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+52
View File
@@ -3,6 +3,58 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.52.32](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-28)
**Note:** Version bump only for package @standardnotes/mobile
## [3.52.31](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-28)
**Note:** Version bump only for package @standardnotes/mobile
## [3.52.30](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/mobile
## [3.52.29](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/mobile
## [3.52.28](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/mobile
## [3.52.27](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/mobile
## [3.52.26](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/mobile
## [3.52.25](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/mobile
## [3.52.24](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/mobile
## [3.52.23](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/mobile
## [3.52.22](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/mobile
## [3.52.21](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/mobile
## [3.52.20](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/mobile
## [3.52.19](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/mobile
+37 -37
View File
@@ -1,7 +1,7 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.5)
CFPropertyList (3.0.6)
rexml
activesupport (6.1.5)
concurrent-ruby (~> 1.0, >= 1.0.2)
@@ -9,28 +9,28 @@ GEM
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
addressable (2.8.4)
public_suffix (>= 2.0.2, < 6.0)
algoliasearch (1.27.5)
httpclient (~> 2.8, >= 2.8.3)
json (>= 1.5.1)
artifactory (3.0.15)
atomos (0.1.3)
aws-eventstream (1.2.0)
aws-partitions (1.603.0)
aws-sdk-core (3.131.2)
aws-partitions (1.755.0)
aws-sdk-core (3.171.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.525.0)
aws-sigv4 (~> 1.1)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.57.0)
aws-sdk-core (~> 3, >= 3.127.0)
aws-sdk-kms (1.63.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.114.0)
aws-sdk-core (~> 3, >= 3.127.0)
aws-sdk-s3 (1.121.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
aws-sigv4 (1.5.0)
aws-sigv4 (1.5.2)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
claide (1.0.3)
@@ -81,13 +81,13 @@ GEM
rake (>= 12.0.0, < 14.0.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.7.6)
dotenv (2.8.1)
emoji_regex (3.2.3)
escape (0.0.4)
ethon (0.15.0)
ffi (>= 1.15.0)
excon (0.92.3)
faraday (1.10.0)
excon (0.99.0)
faraday (1.10.3)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
@@ -116,7 +116,7 @@ GEM
faraday_middleware (1.2.0)
faraday (~> 1.0)
fastimage (2.2.6)
fastlane (2.207.0)
fastlane (2.212.2)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
@@ -160,9 +160,9 @@ GEM
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.24.0)
google-apis-core (>= 0.7, < 2.a)
google-apis-core (0.7.0)
google-apis-androidpublisher_v3 (0.40.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.0)
addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
@@ -171,27 +171,27 @@ GEM
retriable (>= 2.0, < 4.a)
rexml
webrick
google-apis-iamcredentials_v1 (0.13.0)
google-apis-core (>= 0.7, < 2.a)
google-apis-playcustomapp_v1 (0.10.0)
google-apis-core (>= 0.7, < 2.a)
google-apis-storage_v1 (0.17.0)
google-apis-core (>= 0.7, < 2.a)
google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.19.0)
google-apis-core (>= 0.9.0, < 2.a)
google-cloud-core (1.6.0)
google-cloud-env (~> 1.0)
google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.2.0)
google-cloud-storage (1.37.0)
google-cloud-errors (1.3.1)
google-cloud-storage (1.44.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.19.0)
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (1.2.0)
googleauth (1.5.2)
faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
@@ -204,11 +204,11 @@ GEM
httpclient (2.8.3)
i18n (1.10.0)
concurrent-ruby (~> 1.0)
jmespath (1.6.1)
json (2.6.2)
jwt (2.4.1)
jmespath (1.6.2)
json (2.6.3)
jwt (2.7.0)
memoist (0.16.2)
mini_magick (4.11.0)
mini_magick (4.12.0)
mini_mime (1.1.2)
minitest (5.15.0)
molinillo (0.8.0)
@@ -220,7 +220,7 @@ GEM
netrc (0.11.0)
optparse (0.1.1)
os (1.1.4)
plist (3.6.0)
plist (3.7.0)
public_suffix (4.0.7)
rake (13.0.6)
representable (3.2.0)
@@ -239,7 +239,7 @@ GEM
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
simctl (1.6.8)
simctl (1.6.10)
CFPropertyList
naturally
terminal-notifier (2.0.0)
@@ -259,7 +259,7 @@ GEM
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (1.8.0)
webrick (1.7.0)
webrick (1.8.1)
word_wrap (1.0.0)
xcode-install (2.8.0)
claide (>= 0.9.1, < 1.1.0)
@@ -291,4 +291,4 @@ RUBY VERSION
ruby 2.7.6p219
BUNDLED WITH
2.3.25
2.3.15
@@ -16,7 +16,14 @@
window.plansUrl = "https://standardnotes.com/plans";
window.dashboardUrl = "https://standardnotes.com/dashboard";
</script>
<script>
window.onerror = function (message, source, lineno, colno, error) {
if (document.readyState === "complete") {
return
}
window.ReactNativeWebView.postMessage("appLoadError");
};
</script>
<script src="web-src/app.js"></script>
</head>
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/mobile",
"version": "3.52.19",
"version": "3.52.32",
"author": "Standard Notes.",
"private": true,
"license": "AGPL-3.0-or-later",
+48 -1
View File
@@ -1,6 +1,6 @@
import { ReactNativeToWebEvent } from '@standardnotes/snjs'
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { Keyboard, Platform } from 'react-native'
import { Button, Keyboard, Platform, Text, View } from 'react-native'
import VersionInfo from 'react-native-version-info'
import { WebView, WebViewMessageEvent } from 'react-native-webview'
import { OnShouldStartLoadWithRequest } from 'react-native-webview/lib/WebViewTypes'
@@ -34,6 +34,8 @@ const MobileWebAppContents = ({ destroyAndReload }: { destroyAndReload: () => vo
[androidBackHandlerService, colorSchemeService, stateService],
)
const [showAndroidWebviewUpdatePrompt, setShowAndroidWebviewUpdatePrompt] = useState(false)
useEffect(() => {
const removeStateServiceListener = stateService.addEventObserver((event: ReactNativeToWebEvent) => {
webViewRef.current?.postMessage(JSON.stringify({ reactNativeEvent: event, messageType: 'event' }))
@@ -228,6 +230,10 @@ const MobileWebAppContents = ({ destroyAndReload }: { destroyAndReload: () => vo
const onMessage = (event: WebViewMessageEvent) => {
const message = event.nativeEvent.data
if (message === 'appLoadError' && Platform.OS === 'android') {
setShowAndroidWebviewUpdatePrompt(true)
return
}
try {
const functionData = JSON.parse(message)
void onFunctionMessage(functionData.functionName, functionData.messageId, functionData.args)
@@ -277,6 +283,47 @@ const MobileWebAppContents = ({ destroyAndReload }: { destroyAndReload: () => vo
const requireInlineMediaPlaybackForMomentsFeature = true
const requireMediaUserInteractionForMomentsFeature = false
if (showAndroidWebviewUpdatePrompt) {
return (
<View
style={{
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'black',
}}
>
<Text
style={{
color: 'white',
fontSize: 20,
fontWeight: 'bold',
marginBottom: 20,
}}
>
Could not load app
</Text>
<Text
style={{
color: 'white',
fontSize: 16,
marginBottom: 20,
textAlign: 'center',
}}
>
Please make sure your Android System Webview is updated to the latest version
</Text>
<Button
title={'Update'}
onPress={() => {
setShowAndroidWebviewUpdatePrompt(false)
device.openUrl('https://play.google.com/store/apps/details?id=com.google.android.webview')
}}
/>
</View>
)
}
return (
<WebView
ref={webViewRef}
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.44.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/models
## [1.44.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/models
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/models",
"version": "1.44.2",
"version": "1.44.3",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+52
View File
@@ -3,6 +3,58 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.4.263](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-28)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.262](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-28)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.261](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.260](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.259](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.258](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.257](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.256](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.255](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.254](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.253](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.252](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.251](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.250](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/releases
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/releases",
"version": "1.4.250",
"version": "1.4.263",
"license": "AGPL-3.0-or-later",
"main": "dist/releases.json",
"types": "dist/index.d.ts",
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.13.21](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/responses
## [1.13.20](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/responses
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/responses",
"version": "1.13.20",
"version": "1.13.21",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.58.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/services
## [1.58.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/services
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/services",
"version": "1.58.4",
"version": "1.58.5",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [2.167.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/snjs
## [2.167.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/snjs
@@ -29,7 +29,6 @@ import * as Models from '@standardnotes/models'
import * as Responses from '@standardnotes/responses'
import * as InternalServices from '../Services'
import * as Utils from '@standardnotes/utils'
import * as Settings from '@standardnotes/settings'
import { Subscription } from '@standardnotes/security'
import { UuidString, ApplicationEventPayload } from '../Types'
import { applicationEventForSyncEvent } from '@Lib/Application/Event'
@@ -1154,10 +1153,6 @@ export class SNApplication implements ApplicationInterface, AppGroupManagedAppli
return this.apiService.isThirdPartyHostUsed()
}
public getCloudProviderIntegrationUrl(cloudProviderName: Settings.CloudProvider): string {
return this.settingsService.getCloudProviderIntegrationUrl(cloudProviderName)
}
private constructServices() {
this.createMappers()
this.createPayloadManager()
@@ -1,8 +1,7 @@
import { SNApiService } from '../Api/ApiService'
import { SettingsGateway } from './SettingsGateway'
import { SNSessionManager } from '../Session/SessionManager'
import { CloudProvider, EmailBackupFrequency, SettingName } from '@standardnotes/settings'
import { ExtensionsServerURL } from '@Lib/Hosts'
import { EmailBackupFrequency, SettingName } from '@standardnotes/settings'
import { AbstractService, InternalEventBusInterface } from '@standardnotes/services'
import { SettingsClientInterface } from './SettingsClientInterface'
@@ -14,12 +13,6 @@ export class SNSettingsService extends AbstractService implements SettingsClient
[EmailBackupFrequency.Weekly]: 'Weekly',
}
private cloudProviderIntegrationUrlEndpoints = {
[CloudProvider.Dropbox]: 'dropbox',
[CloudProvider.Google]: 'gdrive',
[CloudProvider.OneDrive]: 'onedrive',
}
constructor(
private readonly sessionManager: SNSessionManager,
private readonly apiService: SNApiService,
@@ -60,11 +53,6 @@ export class SNSettingsService extends AbstractService implements SettingsClient
return this.frequencyOptionsLabels[frequency]
}
getCloudProviderIntegrationUrl(cloudProviderName: CloudProvider): string {
const { Prod } = ExtensionsServerURL
return `${Prod}/${this.cloudProviderIntegrationUrlEndpoints[cloudProviderName]}?redirect_url=${Prod}/components/cloudlink?`
}
override deinit(): void {
this.provider?.deinit()
;(this.provider as unknown) = undefined
@@ -1,13 +1,9 @@
import { SettingData } from '@standardnotes/responses'
import {
OneDriveBackupFrequency,
MuteSignInEmailsOption,
MuteFailedCloudBackupsEmailsOption,
MuteFailedBackupsEmailsOption,
CloudProvider,
DropboxBackupFrequency,
EmailBackupFrequency,
GoogleDriveBackupFrequency,
ListedAuthorSecretsData,
LogSessionUserAgentOption,
SettingName,
@@ -15,17 +11,13 @@ import {
} from '@standardnotes/settings'
type SettingType =
| CloudProvider
| DropboxBackupFrequency
| EmailBackupFrequency
| GoogleDriveBackupFrequency
| ListedAuthorSecretsData
| LogSessionUserAgentOption
| MuteFailedBackupsEmailsOption
| MuteFailedCloudBackupsEmailsOption
| MuteSignInEmailsOption
| MuteMarketingEmailsOption
| OneDriveBackupFrequency
export class SettingsList {
private map: Partial<Record<string, SettingData>> = {}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/snjs",
"version": "2.167.4",
"version": "2.167.5",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.25.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/ui-services
## [1.25.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/ui-services
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/ui-services",
"version": "1.25.4",
"version": "1.25.5",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
@@ -10,7 +10,6 @@ const PREFERENCE_IDS = [
'get-free-month',
'help-feedback',
'whats-new',
'filesend',
] as const
export type PreferenceId = typeof PREFERENCE_IDS[number]
+50
View File
@@ -3,6 +3,56 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.153.13](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-28)
### Bug Fixes
* Fixed issue where removing a collapsible block would unwrap the contents in reverse order ([40179bb](https://github.com/standardnotes/app/commit/40179bba06228acf4015ca1efc552b800ee5da7e))
## [3.153.12](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-28)
**Note:** Version bump only for package @standardnotes/web
## [3.153.11](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
### Bug Fixes
* **desktop:** Fixed issue on Mac desktop app where multiple files could not be downloaded ([247ff62](https://github.com/standardnotes/app/commit/247ff6242279f878c01161817038a37c6fbfa4cc))
## [3.153.10](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/web
## [3.153.9](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/web
## [3.153.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/web
## [3.153.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
### Bug Fixes
* **desktop:** Fixed issue where preferences header & tooltips are overlapped by custom titlebar ([ef27a21](https://github.com/standardnotes/app/commit/ef27a21fb141c4ef1a760cf6fb550e4b713f8f98))
## [3.153.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/web
## [3.153.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)
**Note:** Version bump only for package @standardnotes/web
## [3.153.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/web
## [3.153.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/web
## [3.153.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)
**Note:** Version bump only for package @standardnotes/web
+130
View File
@@ -1,5 +1,135 @@
{
"versions": [
{
"version": "3.153.13",
"title": "[3.153.13](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-28)",
"date": null,
"body": "### Bug Fixes\n\n* Fixed issue where removing a collapsible block would unwrap the contents in reverse order ([40179bb](https://github.com/standardnotes/app/commit/40179bba06228acf4015ca1efc552b800ee5da7e))",
"parsed": {
"_": [
"Fixed issue where removing a collapsible block would unwrap the contents in reverse order (40179bb)"
],
"Bug Fixes": [
"Fixed issue where removing a collapsible block would unwrap the contents in reverse order (40179bb)"
]
}
},
{
"version": "3.153.12",
"title": "[3.153.12](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-28)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.153.11",
"title": "[3.153.11](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)",
"date": null,
"body": "### Bug Fixes\n\n* **desktop:** Fixed issue on Mac desktop app where multiple files could not be downloaded ([247ff62](https://github.com/standardnotes/app/commit/247ff6242279f878c01161817038a37c6fbfa4cc))",
"parsed": {
"_": [
"desktop: Fixed issue on Mac desktop app where multiple files could not be downloaded (247ff62)"
],
"Bug Fixes": [
"desktop: Fixed issue on Mac desktop app where multiple files could not be downloaded (247ff62)"
]
}
},
{
"version": "3.153.10",
"title": "[3.153.10](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.153.9",
"title": "[3.153.9](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.153.8",
"title": "[3.153.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.153.7",
"title": "[3.153.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)",
"date": null,
"body": "### Bug Fixes\n\n* **desktop:** Fixed issue where preferences header & tooltips are overlapped by custom titlebar ([ef27a21](https://github.com/standardnotes/app/commit/ef27a21fb141c4ef1a760cf6fb550e4b713f8f98))",
"parsed": {
"_": [
"desktop: Fixed issue where preferences header & tooltips are overlapped by custom titlebar (ef27a21)"
],
"Bug Fixes": [
"desktop: Fixed issue where preferences header & tooltips are overlapped by custom titlebar (ef27a21)"
]
}
},
{
"version": "3.153.6",
"title": "[3.153.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.153.5",
"title": "[3.153.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-27)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.153.4",
"title": "[3.153.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.153.3",
"title": "[3.153.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.153.2",
"title": "[3.153.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-26)",
+5 -5
View File
@@ -1,9 +1,9 @@
{
"name": "@standardnotes/web",
"version": "3.153.2",
"version": "3.153.13",
"license": "AGPL-3.0-or-later",
"main": "dist/app.js",
"author": "Standard Notes.",
"author": "Standard Notes",
"private": true,
"files": [
"dist"
@@ -28,7 +28,7 @@
"@babel/plugin-transform-react-jsx": "^7.19.0",
"@babel/preset-env": "*",
"@babel/preset-typescript": "^7.18.6",
"@lexical/react": "0.9.2",
"@lexical/react": "0.10.0",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.10",
"@simplewebauthn/browser": "^7.1.0",
"@standardnotes/authenticator": "^2.3.9",
@@ -75,7 +75,7 @@
"identity-obj-proxy": "^3.0.0",
"jest": "^29.3.1",
"jest-environment-jsdom": "^29.3.1",
"lexical": "0.9.2",
"lexical": "0.10.0",
"lint-staged": ">=13",
"mini-css-extract-plugin": "^2.7.2",
"minimatch": "^5.1.1",
@@ -108,7 +108,7 @@
},
"dependencies": {
"@ariakit/react": "^0.1.2",
"@lexical/headless": "0.9.2",
"@lexical/headless": "0.10.0",
"@radix-ui/react-slot": "^1.0.1",
"contactjs": "2.1.5"
}
@@ -37,10 +37,6 @@ const ChangeEditorButton: FunctionComponent<Props> = ({ viewControllerManager, o
setIsOpen(willMenuOpen)
}, [onClickPreprocessing, isOpen])
const disableClickOutside = useCallback(() => {
setIsClickOutsideDisabled(true)
}, [])
useEffect(() => {
return application.keyboardService.addCommandHandler({
command: CHANGE_EDITOR_COMMAND,
@@ -76,7 +72,7 @@ const ChangeEditorButton: FunctionComponent<Props> = ({ viewControllerManager, o
application={application}
isVisible={isOpen}
note={note}
handleDisableClickoutsideRequest={disableClickOutside}
setDisableClickOutside={setIsClickOutsideDisabled}
closeMenu={() => {
setIsOpen(false)
}}
@@ -22,7 +22,7 @@ type ChangeEditorMenuProps = {
isVisible: boolean
note: SNNote | undefined
onSelect?: (component: SNComponent | undefined) => void
handleDisableClickoutsideRequest?: () => void
setDisableClickOutside?: (value: boolean) => void
}
const getGroupId = (group: EditorMenuGroup) => group.title.toLowerCase().replace(/\s/, '-')
@@ -33,7 +33,7 @@ const ChangeEditorMenu: FunctionComponent<ChangeEditorMenuProps> = ({
isVisible,
note,
onSelect,
handleDisableClickoutsideRequest,
setDisableClickOutside,
}) => {
const editors = useMemo(
() =>
@@ -134,13 +134,13 @@ const ChangeEditorMenu: FunctionComponent<ChangeEditorMenuProps> = ({
}
setPendingConversionItem(itemToBeSelected)
handleDisableClickoutsideRequest?.()
setDisableClickOutside?.(true)
return
}
if (note.noteType === NoteType.Super) {
if (note.noteType === NoteType.Super && note.text.length > 0) {
setPendingConversionItem(itemToBeSelected)
handleDisableClickoutsideRequest?.()
setDisableClickOutside?.(true)
return
}
@@ -172,15 +172,16 @@ const ChangeEditorMenu: FunctionComponent<ChangeEditorMenuProps> = ({
}
},
[
application,
closeMenu,
currentComponent,
note,
closeMenu,
onSelect,
premiumModal,
application.alertService,
application.componentManager,
setDisableClickOutside,
currentComponent,
selectComponent,
selectNonComponent,
handleDisableClickoutsideRequest,
],
)
@@ -199,8 +200,14 @@ const ChangeEditorMenu: FunctionComponent<ChangeEditorMenuProps> = ({
closeMenu()
}, [pendingConversionItem, note, selectNonComponent, closeMenu, selectComponent])
const closeSuperNoteImporter = () => setPendingConversionItem(null)
const closeSuperNoteConverter = () => setPendingConversionItem(null)
const closeSuperNoteImporter = () => {
setPendingConversionItem(null)
setDisableClickOutside?.(false)
}
const closeSuperNoteConverter = () => {
setPendingConversionItem(null)
setDisableClickOutside?.(false)
}
return (
<>
@@ -43,6 +43,10 @@ const Dropdown = ({ label, value, onChange, items, disabled, fullWidth, classNam
const currentItem = items.find((item) => item.value === selectedValue)
useEffect(() => {
select.setValue(value)
}, [select, value])
useEffect(() => {
return select.subscribe(
(state) => {
@@ -109,6 +109,7 @@ const FileMenuOptions: FunctionComponent<Props> = ({
<MenuItem
onClick={() => {
void filesController.downloadFiles(selectedFiles)
closeMenu()
}}
>
<Icon type="download" className={`mr-2 text-neutral ${MenuItemIconSize}`} />
@@ -61,7 +61,7 @@ export const LinkedItemsSectionItem = ({
<div className="flex flex-grow items-center gap-4 py-2 pl-3 pr-12">
<Icon type={icon} className={classNames('flex-shrink-0', className)} />
<input
className="min-w-0 flex-grow text-sm"
className="min-w-0 flex-grow bg-default text-sm"
defaultValue={title}
onKeyDown={(event) => {
if (event.key === KeyboardKey.Escape) {
@@ -41,6 +41,7 @@ type Options = {
side: PopoverSide
disableMobileFullscreenTakeover?: boolean
maxHeightFunction?: (calculatedMaxHeight: number) => number
offset?: number
}
export const getPositionedPopoverStyles = ({
@@ -51,6 +52,7 @@ export const getPositionedPopoverStyles = ({
side,
disableMobileFullscreenTakeover,
maxHeightFunction,
offset,
}: Options): CSSProperties | null => {
if (!popoverRect || !anchorRect) {
return null
@@ -71,12 +73,21 @@ export const getPositionedPopoverStyles = ({
const oppositeSideOverflows = getOverflows(rectForOppositeSide, documentRect)
const sideWithLessOverflows = preferredSideOverflows[side] < oppositeSideOverflows[oppositeSide] ? side : oppositeSide
const finalAlignment = getNonCollidingAlignment(sideWithLessOverflows, align, preferredSideRectCollisions, {
const finalAlignment = getNonCollidingAlignment({
finalSide: sideWithLessOverflows,
preferredAlignment: align,
collisions: preferredSideRectCollisions,
popoverRect,
buttonRect: anchorRect,
documentRect,
})
const finalPositionedRect = getPositionedPopoverRect(popoverRect, anchorRect, sideWithLessOverflows, finalAlignment)
const finalPositionedRect = getPositionedPopoverRect(
popoverRect,
anchorRect,
sideWithLessOverflows,
finalAlignment,
offset,
)
let maxHeight = getPopoverMaxHeight(
getAppRect(),
@@ -45,20 +45,21 @@ const OppositeAlignment: Record<Exclude<PopoverAlignment, 'center'>, PopoverAlig
end: 'start',
}
export const getNonCollidingAlignment = (
finalSide: PopoverSide,
preferredAlignment: PopoverAlignment,
collisions: RectCollisions,
{
popoverRect,
buttonRect,
documentRect,
}: {
popoverRect: DOMRect
buttonRect: DOMRect
documentRect: DOMRect
},
): PopoverAlignment => {
export const getNonCollidingAlignment = ({
finalSide,
preferredAlignment,
collisions,
popoverRect,
buttonRect,
documentRect,
}: {
finalSide: PopoverSide
preferredAlignment: PopoverAlignment
collisions: RectCollisions
popoverRect: DOMRect
buttonRect: DOMRect
documentRect: DOMRect
}): PopoverAlignment => {
const isHorizontalSide = finalSide === 'top' || finalSide === 'bottom'
const boundToCheckForStart = isHorizontalSide ? 'right' : 'bottom'
const boundToCheckForEnd = isHorizontalSide ? 'left' : 'top'
@@ -68,49 +68,52 @@ export const getPositionedPopoverRect = (
buttonRect: DOMRect,
side: PopoverSide,
align: PopoverAlignment,
offset?: number,
): DOMRect => {
const { width, height } = popoverRect
const positionPopoverRect = DOMRect.fromRect(popoverRect)
const finalOffset = offset ? offset : 0
switch (side) {
case 'top': {
positionPopoverRect.y = buttonRect.top - height
positionPopoverRect.y = buttonRect.top - height - finalOffset
break
}
case 'bottom':
positionPopoverRect.y = buttonRect.bottom
positionPopoverRect.y = buttonRect.bottom + finalOffset
break
case 'left':
positionPopoverRect.x = buttonRect.left - width
positionPopoverRect.x = buttonRect.left - width - finalOffset
break
case 'right':
positionPopoverRect.x = buttonRect.right
positionPopoverRect.x = buttonRect.right + finalOffset
break
}
if (side === 'top' || side === 'bottom') {
switch (align) {
case 'start':
positionPopoverRect.x = buttonRect.left
positionPopoverRect.x = buttonRect.left - finalOffset
break
case 'center':
positionPopoverRect.x = buttonRect.left - width / 2 + buttonRect.width / 2
positionPopoverRect.x = buttonRect.left - width / 2 + buttonRect.width / 2 - finalOffset
break
case 'end':
positionPopoverRect.x = buttonRect.right - width
positionPopoverRect.x = buttonRect.right - width + finalOffset
break
}
} else {
switch (align) {
case 'start':
positionPopoverRect.y = buttonRect.top
positionPopoverRect.y = buttonRect.top - finalOffset
break
case 'center':
positionPopoverRect.y = buttonRect.top - height / 2 + buttonRect.height / 2
positionPopoverRect.y = buttonRect.top - height / 2 + buttonRect.height / 2 - finalOffset
break
case 'end':
positionPopoverRect.y = buttonRect.bottom - height
positionPopoverRect.y = buttonRect.bottom - height + finalOffset
break
}
}
@@ -2,7 +2,6 @@ import { WebApplication } from '@/Application/Application'
import { ViewControllerManager } from '@/Controllers/ViewControllerManager'
import { FunctionComponent } from 'react'
import PreferencesPane from '@/Components/Preferences/PreferencesComponents/PreferencesPane'
import CloudLink from './CloudBackups/CloudBackups'
import DataBackups from './DataBackups'
import EmailBackups from './EmailBackups'
import FileBackupsCrossPlatform from './Files/FileBackupsCrossPlatform'
@@ -19,7 +18,6 @@ const Backups: FunctionComponent<Props> = ({ application, viewControllerManager
<DataBackups application={application} viewControllerManager={viewControllerManager} />
<FileBackupsCrossPlatform application={application} />
<EmailBackups application={application} />
<CloudLink application={application} />
</PreferencesPane>
)
}
@@ -1,220 +0,0 @@
import {
useCallback,
useEffect,
useState,
FunctionComponent,
KeyboardEventHandler,
ChangeEventHandler,
MouseEventHandler,
} from 'react'
import {
ButtonType,
SettingName,
CloudProvider,
DropboxBackupFrequency,
GoogleDriveBackupFrequency,
OneDriveBackupFrequency,
} from '@standardnotes/snjs'
import { WebApplication } from '@/Application/Application'
import Button from '@/Components/Button/Button'
import { openInNewTab } from '@/Utils'
import { Subtitle } from '@/Components/Preferences/PreferencesComponents/Content'
import { KeyboardKey } from '@standardnotes/ui-services'
type Props = {
application: WebApplication
providerName: CloudProvider
isEntitledToCloudBackups: boolean
}
const CloudBackupProvider: FunctionComponent<Props> = ({ application, providerName, isEntitledToCloudBackups }) => {
const [authBegan, setAuthBegan] = useState(false)
const [successfullyInstalled, setSuccessfullyInstalled] = useState(false)
const [backupFrequency, setBackupFrequency] = useState<string | undefined>(undefined)
const [confirmation, setConfirmation] = useState('')
const disable: MouseEventHandler = async (event) => {
event.stopPropagation()
try {
const shouldDisable = await application.alertService.confirm(
'Are you sure you want to disable this integration?',
'Disable?',
'Disable',
ButtonType.Danger,
'Cancel',
)
if (shouldDisable) {
await application.settings.deleteSetting(backupFrequencySettingName)
await application.settings.deleteSetting(backupTokenSettingName)
setBackupFrequency(undefined)
}
} catch (error) {
application.alertService.alert(error as string).catch(console.error)
}
}
const installIntegration: MouseEventHandler = (event) => {
if (!isEntitledToCloudBackups) {
return
}
event.stopPropagation()
const authUrl = application.getCloudProviderIntegrationUrl(providerName)
openInNewTab(authUrl)
setAuthBegan(true)
}
const performBackupNow = async () => {
// A backup is performed anytime the setting is updated with the integration token, so just update it here
try {
await application.settings.updateSetting(backupFrequencySettingName, backupFrequency as string)
void application.alertService.alert(
'A backup has been triggered for this provider. Please allow a couple minutes for your backup to be processed.',
)
} catch (err) {
application.alertService
.alert('There was an error while trying to trigger a backup for this provider. Please try again.')
.catch(console.error)
}
}
const backupSettingsData = {
[CloudProvider.Dropbox]: {
backupTokenSettingName: SettingName.create(SettingName.NAMES.DropboxBackupToken).getValue(),
backupFrequencySettingName: SettingName.create(SettingName.NAMES.DropboxBackupFrequency).getValue(),
defaultBackupFrequency: DropboxBackupFrequency.Daily,
},
[CloudProvider.Google]: {
backupTokenSettingName: SettingName.create(SettingName.NAMES.GoogleDriveBackupToken).getValue(),
backupFrequencySettingName: SettingName.create(SettingName.NAMES.GoogleDriveBackupFrequency).getValue(),
defaultBackupFrequency: GoogleDriveBackupFrequency.Daily,
},
[CloudProvider.OneDrive]: {
backupTokenSettingName: SettingName.create(SettingName.NAMES.OneDriveBackupToken).getValue(),
backupFrequencySettingName: SettingName.create(SettingName.NAMES.OneDriveBackupFrequency).getValue(),
defaultBackupFrequency: OneDriveBackupFrequency.Daily,
},
}
const { backupTokenSettingName, backupFrequencySettingName, defaultBackupFrequency } =
backupSettingsData[providerName]
const getCloudProviderIntegrationTokenFromUrl = (url: URL) => {
const urlSearchParams = new URLSearchParams(url.search)
let integrationTokenKeyInUrl = ''
switch (providerName) {
case CloudProvider.Dropbox:
integrationTokenKeyInUrl = 'dbt'
break
case CloudProvider.Google:
integrationTokenKeyInUrl = 'key'
break
case CloudProvider.OneDrive:
integrationTokenKeyInUrl = 'key'
break
default:
throw new Error('Invalid Cloud Provider name')
}
return urlSearchParams.get(integrationTokenKeyInUrl)
}
const handleKeyPress: KeyboardEventHandler = async (event) => {
if (event.key === KeyboardKey.Enter) {
try {
const decryptedCode = atob(confirmation)
const urlFromDecryptedCode = new URL(decryptedCode)
const cloudProviderToken = getCloudProviderIntegrationTokenFromUrl(urlFromDecryptedCode)
if (!cloudProviderToken) {
throw new Error()
}
await application.settings.updateSetting(backupTokenSettingName, cloudProviderToken)
await application.settings.updateSetting(backupFrequencySettingName, defaultBackupFrequency)
setBackupFrequency(defaultBackupFrequency)
setAuthBegan(false)
setSuccessfullyInstalled(true)
setConfirmation('')
await application.alertService.alert(
`${providerName} has been successfully installed. Your first backup has also been queued and should be reflected in your external cloud's folder within the next few minutes.`,
)
} catch (e) {
await application.alertService.alert('Invalid code. Please try again.')
}
}
}
const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {
setConfirmation(event.target.value)
}
const getIntegrationStatus = useCallback(async () => {
if (!application.getUser()) {
return
}
const frequency = await application.settings.getSetting(backupFrequencySettingName)
setBackupFrequency(frequency)
}, [application, backupFrequencySettingName])
useEffect(() => {
getIntegrationStatus().catch(console.error)
}, [getIntegrationStatus])
const isExpanded = authBegan || successfullyInstalled
const shouldShowEnableButton = !backupFrequency && !authBegan
const additionalClass = isEntitledToCloudBackups ? '' : 'opacity-50 cursor-default pointer-events-none'
return (
<div
className={`mr-1 ${isExpanded ? 'expanded' : ' '} ${
shouldShowEnableButton || backupFrequency ? 'flex items-center justify-between' : ''
}`}
>
<div>
<Subtitle className={additionalClass}>{providerName}</Subtitle>
{successfullyInstalled && <p>{providerName} has been successfully enabled.</p>}
</div>
{authBegan && (
<div>
<p className="sk-panel-row">
Complete authentication from the newly opened window. Upon completion, a confirmation code will be
displayed. Enter this code below:
</p>
<div className={'mt-1'}>
<input
className="sk-input sk-base center-text"
placeholder="Enter confirmation code"
value={confirmation}
onKeyPress={handleKeyPress}
onChange={handleChange}
/>
</div>
</div>
)}
{shouldShowEnableButton && (
<div>
<Button
label="Enable"
className={`min-w-40 px-1 text-xs ${additionalClass}`}
onClick={installIntegration}
disabled={!isEntitledToCloudBackups}
/>
</div>
)}
{backupFrequency && (
<div className={'flex flex-col items-end'}>
<Button className={`mb-2 min-w-40 ${additionalClass}`} label="Perform Backup" onClick={performBackupNow} />
<Button className="min-w-40" label="Disable" onClick={disable} />
</div>
)}
</div>
)
}
export default CloudBackupProvider
@@ -1,155 +0,0 @@
import CloudBackupProvider from './CloudBackupProvider'
import { useCallback, useEffect, useState, FunctionComponent, Fragment } from 'react'
import { WebApplication } from '@/Application/Application'
import { Subtitle, Text, Title } from '@/Components/Preferences/PreferencesComponents/Content'
import HorizontalSeparator from '@/Components/Shared/HorizontalSeparator'
import {
FeatureStatus,
FeatureIdentifier,
CloudProvider,
MuteFailedCloudBackupsEmailsOption,
SettingName,
} from '@standardnotes/snjs'
import Switch from '@/Components/Switch/Switch'
import { convertStringifiedBooleanToBoolean } from '@/Utils'
import { STRING_FAILED_TO_UPDATE_USER_SETTING } from '@/Constants/Strings'
import PreferencesGroup from '@/Components/Preferences/PreferencesComponents/PreferencesGroup'
import PreferencesSegment from '@/Components/Preferences/PreferencesComponents/PreferencesSegment'
import Spinner from '@/Components/Spinner/Spinner'
const providerData = [{ name: CloudProvider.Dropbox }, { name: CloudProvider.Google }, { name: CloudProvider.OneDrive }]
type Props = {
application: WebApplication
}
const CloudLink: FunctionComponent<Props> = ({ application }) => {
const [isEntitledToCloudBackups, setIsEntitledToCloudBackups] = useState(false)
const [isFailedCloudBackupEmailMuted, setIsFailedCloudBackupEmailMuted] = useState(true)
const [isLoading, setIsLoading] = useState(false)
const additionalClass = isEntitledToCloudBackups ? '' : 'opacity-50 cursor-default pointer-events-none'
const loadIsFailedCloudBackupEmailMutedSetting = useCallback(async () => {
if (!application.getUser()) {
return
}
setIsLoading(true)
try {
const userSettings = await application.settings.listSettings()
setIsFailedCloudBackupEmailMuted(
convertStringifiedBooleanToBoolean(
userSettings.getSettingValue(
SettingName.create(SettingName.NAMES.MuteFailedCloudBackupsEmails).getValue(),
MuteFailedCloudBackupsEmailsOption.NotMuted,
),
),
)
} catch (error) {
console.error(error)
} finally {
setIsLoading(false)
}
}, [application])
useEffect(() => {
const dailyDropboxBackupStatus = application.features.getFeatureStatus(FeatureIdentifier.DailyDropboxBackup)
const dailyGdriveBackupStatus = application.features.getFeatureStatus(FeatureIdentifier.DailyGDriveBackup)
const dailyOneDriveBackupStatus = application.features.getFeatureStatus(FeatureIdentifier.DailyOneDriveBackup)
const isCloudBackupsAllowed = [dailyDropboxBackupStatus, dailyGdriveBackupStatus, dailyOneDriveBackupStatus].every(
(status) => status === FeatureStatus.Entitled,
)
setIsEntitledToCloudBackups(isCloudBackupsAllowed)
loadIsFailedCloudBackupEmailMutedSetting().catch(console.error)
}, [application, loadIsFailedCloudBackupEmailMutedSetting])
const updateSetting = async (settingName: SettingName, payload: string): Promise<boolean> => {
try {
await application.settings.updateSetting(settingName, payload)
return true
} catch (e) {
application.alertService.alert(STRING_FAILED_TO_UPDATE_USER_SETTING).catch(console.error)
return false
}
}
const toggleMuteFailedCloudBackupEmails = async () => {
if (!isEntitledToCloudBackups) {
return
}
const previousValue = isFailedCloudBackupEmailMuted
setIsFailedCloudBackupEmailMuted(!isFailedCloudBackupEmailMuted)
const updateResult = await updateSetting(
SettingName.create(SettingName.NAMES.MuteFailedCloudBackupsEmails).getValue(),
`${!isFailedCloudBackupEmailMuted}`,
)
if (!updateResult) {
setIsFailedCloudBackupEmailMuted(previousValue)
}
}
return (
<PreferencesGroup>
<PreferencesSegment>
<Title>Cloud Backups</Title>
{!isEntitledToCloudBackups && (
<>
<Text>
A <span className={'font-bold'}>Plus</span> or <span className={'font-bold'}>Pro</span> subscription plan
is required to enable Cloud Backups.{' '}
<a target="_blank" href="https://standardnotes.com/features">
Learn more
</a>
.
</Text>
<HorizontalSeparator classes="mt-3 mb-3" />
</>
)}
<div>
<Text className={additionalClass}>
Configure the integrations below to enable automatic daily backups of your encrypted data set to your
third-party cloud provider.
</Text>
<div>
<HorizontalSeparator classes={`mt-3 mb-3 ${additionalClass}`} />
<div>
{providerData.map(({ name }) => (
<Fragment key={name}>
<CloudBackupProvider
application={application}
providerName={name}
isEntitledToCloudBackups={isEntitledToCloudBackups}
/>
<HorizontalSeparator classes={`mt-3 mb-3 ${additionalClass}`} />
</Fragment>
))}
</div>
</div>
<div className={additionalClass}>
<Subtitle>Email preferences</Subtitle>
<div className="mt-1 flex items-center justify-between">
<div className="flex flex-col">
<Text>Receive a notification email if a cloud backup fails.</Text>
</div>
{isLoading ? (
<Spinner className="h-4 w-4" />
) : (
<Switch
onChange={toggleMuteFailedCloudBackupEmails}
checked={!isFailedCloudBackupEmailMuted}
disabled={!isEntitledToCloudBackups}
/>
)}
</div>
</div>
</div>
</PreferencesSegment>
</PreferencesGroup>
)
}
export default CloudLink
@@ -1,81 +0,0 @@
import { FunctionComponent } from 'react'
import { Title, Subtitle, Text, LinkButton } from '@/Components/Preferences/PreferencesComponents/Content'
import PreferencesPane from '../PreferencesComponents/PreferencesPane'
import PreferencesGroup from '../PreferencesComponents/PreferencesGroup'
import PreferencesSegment from '../PreferencesComponents/PreferencesSegment'
const CloudLink: FunctionComponent = () => (
<PreferencesPane>
<PreferencesGroup>
<PreferencesSegment>
<Title>Frequently asked questions</Title>
<div className="h-2 w-full" />
<Subtitle>Who can read my private notes?</Subtitle>
<Text>
Quite simply: no one but you. Not us, not your ISP, not a hacker, and not a government agency. As long as you
keep your password safe, and your password is reasonably strong, then you are the only person in the world
with the ability to decrypt your notes. For more on how we handle your privacy and security, check out our
easy to read{' '}
<a target="_blank" href="https://standardnotes.com/privacy">
Privacy Manifesto.
</a>
</Text>
</PreferencesSegment>
<PreferencesSegment>
<Subtitle>Can I collaborate with others on a note?</Subtitle>
<Text>
Because of our encrypted architecture, Standard Notes does not currently provide a real-time collaboration
solution. Multiple users can share the same account however, but editing at the same time may result in sync
conflicts, which may result in the duplication of notes.
</Text>
</PreferencesSegment>
<PreferencesSegment>
<Subtitle>Can I use Standard Notes totally offline?</Subtitle>
<Text>
Standard Notes can be used totally offline without an account, and without an internet connection. You can
find{' '}
<a target="_blank" href="https://standardnotes.com/help/59/can-i-use-standard-notes-totally-offline">
more details here.
</a>
</Text>
</PreferencesSegment>
<PreferencesSegment>
<Subtitle>Cant find your question here?</Subtitle>
<LinkButton className="mt-3" label="Open FAQ" link="https://standardnotes.com/help" />
</PreferencesSegment>
</PreferencesGroup>
<PreferencesGroup>
<PreferencesSegment>
<Title>Community forum</Title>
<Text>
If you have an issue, found a bug or want to suggest a feature, you can browse or post to the forum. Its
recommended for non-account related issues. Please read our{' '}
<a target="_blank" href="https://standardnotes.com/longevity/">
Longevity statement
</a>{' '}
before advocating for a feature request.
</Text>
<LinkButton className="mt-3" label="Go to the forum" link="https://forum.standardnotes.org/" />
</PreferencesSegment>
</PreferencesGroup>
<PreferencesGroup>
<PreferencesSegment>
<Title>Community groups</Title>
<Text>
Want to meet other passionate note-takers and privacy enthusiasts? Want to share your feedback with us? Join
the Standard Notes community groups for discussions on security, themes, editors and more.
</Text>
<LinkButton className="mt-3" link="https://standardnotes.com/discord" label="Join our Discord" />
</PreferencesSegment>
</PreferencesGroup>
<PreferencesGroup>
<PreferencesSegment>
<Title>Account related issue?</Title>
<Text>Send an email to help@standardnotes.com and well sort it out.</Text>
<LinkButton className="mt-3" link="mailto: [email protected]" label="Email us" />
</PreferencesSegment>
</PreferencesGroup>
</PreferencesPane>
)
export default CloudLink
@@ -42,7 +42,6 @@ const READY_PREFERENCES_MENU_ITEMS: PreferencesMenuItem[] = [
{ id: 'appearance', label: 'Appearance', icon: 'themes' },
{ id: 'listed', label: 'Listed', icon: 'listed' },
{ id: 'help-feedback', label: 'Help & feedback', icon: 'help' },
{ id: 'filesend', label: 'FileSend', icon: 'open-in' },
]
export class PreferencesMenu {
@@ -1,12 +1,11 @@
import { observer } from 'mobx-react-lite'
import { FunctionComponent, useCallback, useMemo } from 'react'
import { FunctionComponent, useMemo } from 'react'
import Dropdown from '../Dropdown/Dropdown'
import { DropdownItem } from '../Dropdown/DropdownItem'
import PreferencesMenuItem from './PreferencesComponents/MenuItem'
import { PreferencesMenu } from './PreferencesMenu'
import { PreferenceId } from '@standardnotes/ui-services'
import { useApplication } from '../ApplicationProvider'
import { classNames, Environment } from '@standardnotes/snjs'
import { classNames } from '@standardnotes/snjs'
import { isIOS } from '@/Utils'
type Props = {
@@ -14,35 +13,18 @@ type Props = {
}
const PreferencesMenuView: FunctionComponent<Props> = ({ menu }) => {
const application = useApplication()
const { selectedPaneId, selectPane, menuItems } = menu
const dropdownMenuItems: DropdownItem[] = useMemo(
() =>
menuItems
.filter((pref) => pref.id !== 'filesend')
.map((menuItem) => ({
icon: menuItem.icon,
label: menuItem.label,
value: menuItem.id,
})),
menuItems.map((menuItem) => ({
icon: menuItem.icon,
label: menuItem.label,
value: menuItem.id,
})),
[menuItems],
)
const openFileSend = useCallback(() => {
const link = 'https://filesend.standardnotes.com/'
if (application.isNativeMobileWeb()) {
application.mobileDevice().openUrl(link)
return
} else if (application.environment === Environment.Desktop) {
application.desktopDevice?.openUrl(link)
return
}
window.open(link, '_blank')
}, [application])
return (
<div
className={classNames(
@@ -59,10 +41,6 @@ const PreferencesMenuView: FunctionComponent<Props> = ({ menu }) => {
selected={pref.selected}
hasBubble={pref.hasBubble}
onClick={() => {
if (pref.id === 'filesend') {
openFileSend()
return
}
selectPane(pref.id)
}}
/>
@@ -2,6 +2,8 @@ import { classNames } from '@standardnotes/snjs'
import { ReactNode } from 'react'
import { Tooltip, TooltipAnchor, TooltipStoreProps, useTooltipStore } from '@ariakit/react'
import { Slot } from '@radix-ui/react-slot'
import { MutuallyExclusiveMediaQueryBreakpoints, useMediaQuery } from '@/Hooks/useMediaQuery'
import { getPositionedPopoverStyles } from '../Popover/GetPositionedPopoverStyles'
const StyledTooltip = ({
children,
@@ -13,7 +15,40 @@ const StyledTooltip = ({
className?: string
label: string
} & Partial<TooltipStoreProps>) => {
const tooltip = useTooltipStore(props)
const tooltip = useTooltipStore({
timeout: 350,
renderCallback(props) {
const { popoverElement, anchorElement } = props
const documentElement = document.querySelector('.main-ui-view')
if (!popoverElement || !anchorElement || !documentElement) {
return
}
const anchorRect = anchorElement.getBoundingClientRect()
const popoverRect = popoverElement.getBoundingClientRect()
const documentRect = documentElement.getBoundingClientRect()
const styles = getPositionedPopoverStyles({
align: 'center',
side: 'bottom',
anchorRect,
popoverRect,
documentRect,
disableMobileFullscreenTakeover: true,
offset: 6,
})
Object.assign(popoverElement.style, styles)
},
...props,
})
const isMobile = useMediaQuery(MutuallyExclusiveMediaQueryBreakpoints.sm)
if (isMobile) {
return <>{children}</>
}
return (
<>
@@ -23,7 +58,7 @@ const StyledTooltip = ({
<Tooltip
store={tooltip}
className={classNames(
'z-tooltip rounded border border-border bg-contrast py-1.5 px-3 text-sm text-foreground shadow',
'z-tooltip max-w-max rounded border border-border bg-contrast py-1.5 px-3 text-sm text-foreground shadow',
className,
)}
>
@@ -9,7 +9,7 @@
import './Collapsible.css'
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'
import { $findMatchingParent, mergeRegister } from '@lexical/utils'
import { $findMatchingParent, mergeRegister, $insertNodeToNearestRoot } from '@lexical/utils'
import {
$createParagraphNode,
$getNodeByKey,
@@ -24,6 +24,9 @@ import {
DELETE_CHARACTER_COMMAND,
INSERT_PARAGRAPH_COMMAND,
KEY_ARROW_DOWN_COMMAND,
KEY_ARROW_LEFT_COMMAND,
KEY_ARROW_RIGHT_COMMAND,
KEY_ARROW_UP_COMMAND,
NodeKey,
} from 'lexical'
import { useEffect } from 'react'
@@ -52,6 +55,49 @@ export default function CollapsiblePlugin(): JSX.Element | null {
)
}
const onEscapeUp = () => {
const selection = $getSelection()
if ($isRangeSelection(selection) && selection.isCollapsed() && selection.anchor.offset === 0) {
const container = $findMatchingParent(selection.anchor.getNode(), $isCollapsibleContainerNode)
if ($isCollapsibleContainerNode(container)) {
const parent = container.getParent()
if (
parent !== null &&
parent.getFirstChild() === container &&
selection.anchor.key === container.getFirstDescendant()?.getKey()
) {
container.insertBefore($createParagraphNode())
}
}
}
return false
}
const onEscapeDown = () => {
const selection = $getSelection()
if ($isRangeSelection(selection) && selection.isCollapsed()) {
const container = $findMatchingParent(selection.anchor.getNode(), $isCollapsibleContainerNode)
if ($isCollapsibleContainerNode(container)) {
const parent = container.getParent()
if (parent !== null && parent.getLastChild() === container) {
const lastDescendant = container.getLastDescendant()
if (
lastDescendant !== null &&
selection.anchor.key === lastDescendant.getKey() &&
selection.anchor.offset === lastDescendant.getTextContentSize()
) {
container.insertAfter($createParagraphNode())
}
}
}
}
return false
}
return mergeRegister(
// Structure enforcing transformers for each node type. In case nesting structure is not
// "Container > Title + Content" it'll unwrap nodes and convert it back
@@ -61,7 +107,7 @@ export default function CollapsiblePlugin(): JSX.Element | null {
if (!$isCollapsibleContainerNode(parent)) {
const children = node.getChildren()
for (const child of children) {
node.insertAfter(child)
node.insertBefore(child)
}
node.remove()
}
@@ -76,7 +122,7 @@ export default function CollapsiblePlugin(): JSX.Element | null {
const children = node.getChildren()
if (children.length !== 2 || !$isCollapsibleTitleNode(children[0]) || !$isCollapsibleContentNode(children[1])) {
for (const child of children) {
node.insertAfter(child)
node.insertBefore(child)
}
node.remove()
}
@@ -109,32 +155,18 @@ export default function CollapsiblePlugin(): JSX.Element | null {
},
COMMAND_PRIORITY_LOW,
),
// When collapsible is the last child pressing down arrow will insert paragraph
// When collapsible is the last child pressing down/right arrow will insert paragraph
// below it to allow adding more content. It's similar what $insertBlockNode
// (mainly for decorators), except it'll always be possible to continue adding
// new content even if trailing paragraph is accidentally deleted
editor.registerCommand(
KEY_ARROW_DOWN_COMMAND,
() => {
const selection = $getSelection()
if (!$isRangeSelection(selection) || !selection.isCollapsed()) {
return false
}
const container = $findMatchingParent(selection.anchor.getNode(), $isCollapsibleContainerNode)
if (container === null) {
return false
}
const parent = container.getParent()
if (parent !== null && parent.getLastChild() === container) {
parent.append($createParagraphNode())
}
return false
},
COMMAND_PRIORITY_LOW,
),
editor.registerCommand(KEY_ARROW_DOWN_COMMAND, onEscapeDown, COMMAND_PRIORITY_LOW),
editor.registerCommand(KEY_ARROW_RIGHT_COMMAND, onEscapeDown, COMMAND_PRIORITY_LOW),
// When collapsible is the first child pressing up/left arrow will insert paragraph
// above it to allow adding more content. It's similar what $insertBlockNode
// (mainly for decorators), except it'll always be possible to continue adding
// new content even if leading paragraph is accidentally deleted
editor.registerCommand(KEY_ARROW_UP_COMMAND, onEscapeUp, COMMAND_PRIORITY_LOW),
editor.registerCommand(KEY_ARROW_LEFT_COMMAND, onEscapeUp, COMMAND_PRIORITY_LOW),
// Handling CMD+Enter to toggle collapsible element collapsed state
editor.registerCommand(
INSERT_PARAGRAPH_COMMAND,
@@ -170,17 +202,14 @@ export default function CollapsiblePlugin(): JSX.Element | null {
INSERT_COLLAPSIBLE_COMMAND,
() => {
editor.update(() => {
const selection = $getSelection()
if (!$isRangeSelection(selection)) {
return
}
const title = $createCollapsibleTitleNode()
const content = $createCollapsibleContentNode().append($createParagraphNode())
const container = $createCollapsibleContainerNode(true).append(title, content)
selection.insertNodes([container])
title.selectStart()
$insertNodeToNearestRoot(
$createCollapsibleContainerNode(true).append(
title,
$createCollapsibleContentNode().append($createParagraphNode()),
),
)
title.select()
})
return true
@@ -43,6 +43,10 @@ const SuperNoteConverter = ({
}, [component, noteType])
const convertedContent = useMemo(() => {
if (note.text.length === 0) {
return note.text
}
return exportSuperNote(note, format)
}, [format, note])
@@ -23,6 +23,7 @@ import {
FileItem,
InternalEventBus,
isFile,
Platform,
} from '@standardnotes/snjs'
import { addToast, dismissToast, ToastType, updateToast } from '@standardnotes/toast'
import { action, makeObservable, observable, reaction } from 'mobx'
@@ -498,6 +499,18 @@ export class FilesController extends AbstractViewController<FilesControllerEvent
}
downloadFiles = async (files: FileItem[]) => {
if (this.application.platform === Platform.MacDesktop) {
for (const file of files) {
await this.handleFileAction({
type: FileItemActionType.DownloadFile,
payload: {
file,
},
})
}
return
}
await Promise.all(
files.map((file) =>
this.handleFileAction({
@@ -15,7 +15,7 @@ export const getPlaintextFontSize = (key: EditorFontSize): string => {
Small: 'text-editor',
Normal: 'text-lg',
Medium: 'text-xl',
Large: 'text-xl2',
Large: 'text-2xl',
}
const tabletMapping: Record<EditorFontSize, string> = {
@@ -23,7 +23,7 @@ export const getPlaintextFontSize = (key: EditorFontSize): string => {
Small: 'text-editor',
Normal: 'text-base',
Medium: 'text-xl',
Large: 'text-xl2',
Large: 'text-2xl',
}
if (isTabletScreen()) {
+157 -157
View File
@@ -3316,255 +3316,255 @@ __metadata:
languageName: node
linkType: hard
"@lexical/clipboard@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/clipboard@npm:0.9.2"
"@lexical/clipboard@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/clipboard@npm:0.10.0"
dependencies:
"@lexical/html": 0.9.2
"@lexical/list": 0.9.2
"@lexical/selection": 0.9.2
"@lexical/utils": 0.9.2
"@lexical/html": 0.10.0
"@lexical/list": 0.10.0
"@lexical/selection": 0.10.0
"@lexical/utils": 0.10.0
peerDependencies:
lexical: 0.9.2
checksum: af109727f926aa9de43d8bbf747405f41b5817f558769bfa6f48e5ca779c3ff510e9e37a55468458353c7f1eced35c02e51e338bc502282136505f233fe0eced
lexical: 0.10.0
checksum: a38d9731ca4e6ce34ad1834f8d52ff9af5e9dff9e3642d483a465de333d1752c65d51f7b74bc8ba7685184b9981fdf089627d9411694c2518f816e4e305b3255
languageName: node
linkType: hard
"@lexical/code@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/code@npm:0.9.2"
"@lexical/code@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/code@npm:0.10.0"
dependencies:
"@lexical/utils": 0.9.2
"@lexical/utils": 0.10.0
prismjs: ^1.27.0
peerDependencies:
lexical: 0.9.2
checksum: 55fb16794a2c2b9f42d0747fbc67f9b4be6973f3f05957104bd4dbf55ee30cf4d6b1853e01c47ce338089bcad709421aca0d258169eb7e33493caefcb22116d3
lexical: 0.10.0
checksum: b677fabfe11d5c90207e073727f968d34040885c21a2b707f5632c8f1483ddd89873522fdc4bfe3913f09789107f460064ae00cf361fb198fc46ed17276400a3
languageName: node
linkType: hard
"@lexical/dragon@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/dragon@npm:0.9.2"
"@lexical/dragon@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/dragon@npm:0.10.0"
peerDependencies:
lexical: 0.9.2
checksum: ac9877d14b9d17213c1416a400252ccaacf38bf9da6e989437dccac04f6eba5ad93f8bb0a0549b0a1127634c4453d285f9a9c54f38857ee01144ef9d09286aa8
lexical: 0.10.0
checksum: d66c660bcaca0a8806aa18acd4c42ecdbab9663949d2c9f084d4e928bc66152a4f11cb8ee025221f011a69bd6cfbca1aee3c9e76b1898e57540a26362f479158
languageName: node
linkType: hard
"@lexical/hashtag@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/hashtag@npm:0.9.2"
"@lexical/hashtag@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/hashtag@npm:0.10.0"
dependencies:
"@lexical/utils": 0.9.2
"@lexical/utils": 0.10.0
peerDependencies:
lexical: 0.9.2
checksum: 6159f51cb35187f79b3025c21e828ada83fad9017487ce3c6e8ecb62c7185453a5bfe4c408146eddd6e4a17d3a92cbaa55a1b31aae6e254907ba34f2d5ab2c50
lexical: 0.10.0
checksum: aa25d64365e2b42dac462f9cee6e6db029c573dc3966175a6fb9da91a5308ce16ec3bc2bb9a8dd1e544dae63672280a065250eab881ff04ede9bc46f2724bb1e
languageName: node
linkType: hard
"@lexical/headless@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/headless@npm:0.9.2"
"@lexical/headless@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/headless@npm:0.10.0"
peerDependencies:
lexical: 0.9.2
checksum: b5e4cd8fc9204f17c08c2b97eac92b426e7ae9bd3f07ca02abaf470be8863f3aba525b1b5ac6cf4504970fdbcc3de00f5e02e9658faa0aad843a296518d2887d
lexical: 0.10.0
checksum: 108a0d4cb03e9cd6fa5e8e69e019a08e92010b06a39161ae21c0886abd4aeace14eafdb39f8f98749bbf09e4134df2d1824c05946b8f723b5ad1dd97a60bf693
languageName: node
linkType: hard
"@lexical/history@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/history@npm:0.9.2"
"@lexical/history@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/history@npm:0.10.0"
dependencies:
"@lexical/utils": 0.9.2
"@lexical/utils": 0.10.0
peerDependencies:
lexical: 0.9.2
checksum: 0de0a9686efc6e416b01ddeb4a92930777ff89caff73a400780578670c78fd093c14d376335946cbef27810a365c00c5927053c0475889c77b652747aac54581
lexical: 0.10.0
checksum: 0c4c9b9f0258ef47c695e45513b649c0e73dce922e17d7dd3113caeadf74611a43ac1ca5cfe68294ca68ece5aee2f8bc49912b9066b2092887fe8adfd0b5ba08
languageName: node
linkType: hard
"@lexical/html@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/html@npm:0.9.2"
"@lexical/html@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/html@npm:0.10.0"
dependencies:
"@lexical/selection": 0.9.2
"@lexical/selection": 0.10.0
peerDependencies:
lexical: 0.9.2
checksum: bf9ec588eed4cf3aa2a5ff1cb7c4c3bcb855c9b1c6c238d8c7a6034159d6a6d6b6c327c9ea437e2a3a8a7c6eaac7e5dff4977832ceefd13637d33cbfc6d2bd6f
lexical: 0.10.0
checksum: edc917aed0b2a0a82319ea077b4234708cf697be78e5e486b8eef693e4734aa93ab84c3aa5cc074c7cb90ecf576fa96173819ac6b4dfbe49921d0a8fbe32026b
languageName: node
linkType: hard
"@lexical/link@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/link@npm:0.9.2"
"@lexical/link@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/link@npm:0.10.0"
dependencies:
"@lexical/utils": 0.9.2
"@lexical/utils": 0.10.0
peerDependencies:
lexical: 0.9.2
checksum: e733b2f667efefe6aa603799af93a96a4d791bdfd68736ba5fe29611744e37b9cc88c819d13e8935e64dcf932e575141238903c6d8b66ad7e0273301e9336f5a
lexical: 0.10.0
checksum: 95a80d115a53a2464d0903a1dbebdbbb47eb731851340be49cf48d95e857c07fe1e2133c948ead438d15cdaec0dc9c05fd5d9e66d4820b4b0fc8e82e87729c7a
languageName: node
linkType: hard
"@lexical/list@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/list@npm:0.9.2"
"@lexical/list@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/list@npm:0.10.0"
dependencies:
"@lexical/utils": 0.9.2
"@lexical/utils": 0.10.0
peerDependencies:
lexical: 0.9.2
checksum: ada7c8c70721857e66782e284d457698fb774d74e147902b0087129eaed495c86ed3b7f7e77b222528060481f44a76e6f0ea0d9cdc812c2492ea588f2acc12da
lexical: 0.10.0
checksum: 27bcd138eae4f17bb40c313989158c34e1ba789982c84639c5e3c2bdf7f532b1b18c35366af886a4bcccf21df1d86de457bb8111d59218a83850fa40ced6ae2f
languageName: node
linkType: hard
"@lexical/mark@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/mark@npm:0.9.2"
"@lexical/mark@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/mark@npm:0.10.0"
dependencies:
"@lexical/utils": 0.9.2
"@lexical/utils": 0.10.0
peerDependencies:
lexical: 0.9.2
checksum: 5280882a5a58d4aa7c6df16007db621a0b62701621be7e4ccc1bf2c85f209b8ffdd86f1db1f8715e2503b8e2ffad0c4393d7e7ab3df8e4ae198005ab9180b3c0
lexical: 0.10.0
checksum: ad6bed6dbcd60afd8187d7f42febf010736ab9064e541d55e2a8ed3fde50c0b799305b7922160a7b6c1cb20b4566ffc5293153b5d815bd396e4140d89598c902
languageName: node
linkType: hard
"@lexical/markdown@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/markdown@npm:0.9.2"
"@lexical/markdown@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/markdown@npm:0.10.0"
dependencies:
"@lexical/code": 0.9.2
"@lexical/link": 0.9.2
"@lexical/list": 0.9.2
"@lexical/rich-text": 0.9.2
"@lexical/text": 0.9.2
"@lexical/utils": 0.9.2
"@lexical/code": 0.10.0
"@lexical/link": 0.10.0
"@lexical/list": 0.10.0
"@lexical/rich-text": 0.10.0
"@lexical/text": 0.10.0
"@lexical/utils": 0.10.0
peerDependencies:
lexical: 0.9.2
checksum: e0866f8408edabb0b0625167ccaaf5f6f85e0b8c86824f2beed62054c8e6b6b0803c163a2808ce38dda7c4d9fa7b2b4fe0a577f2b2e48f3617a92372fe08e01e
lexical: 0.10.0
checksum: 37f89f42c17f0910a1f9b909d2d54bbca4ecf3748819c43c59820493911f253e0de8cc044e655060db4bbaf67d3e8e44bf21fcb233f70e1ec725699575c41857
languageName: node
linkType: hard
"@lexical/offset@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/offset@npm:0.9.2"
"@lexical/offset@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/offset@npm:0.10.0"
peerDependencies:
lexical: 0.9.2
checksum: f4b69858def24b5cbfdb991837b7d3547dc10764dcfbda76f94406ea2e73c2c30da9078a724257ce17d4425e7a10daed817a0ab5c80e54ccb0251235eaee2c31
lexical: 0.10.0
checksum: b7a971144294ae7169eae37e8c458a931da79d92fd0f74d9971d96ab165c406e004d00854deb20d39959b67dfc24517e037324252ac2b17dd9470ee476ae1aa0
languageName: node
linkType: hard
"@lexical/overflow@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/overflow@npm:0.9.2"
"@lexical/overflow@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/overflow@npm:0.10.0"
peerDependencies:
lexical: 0.9.2
checksum: 97c6846b989e97a0aa57375416ec08980dd8018ce85d059e9022cc5472f0b783625f357ba82f0275f6686e5adfdf9f04a50ba9810402e523fb27caead710eb2b
lexical: 0.10.0
checksum: 1832501cfa25f4b5582f9c86e5eeabdf34e75299cdc8183658c05c221f4a2c77ddd639fe88a4b6b231e27983e55c232824245e98811fb74f4a221879eb470553
languageName: node
linkType: hard
"@lexical/plain-text@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/plain-text@npm:0.9.2"
"@lexical/plain-text@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/plain-text@npm:0.10.0"
peerDependencies:
"@lexical/clipboard": 0.9.2
"@lexical/selection": 0.9.2
"@lexical/utils": 0.9.2
lexical: 0.9.2
checksum: d554aab0feb1240e99d72f640caa706df3c9dd2f2e6e84b1c55a97ca08016c79190414fdd065564d244510b13821738a495986cb67804669d79ec76167ef69d0
"@lexical/clipboard": 0.10.0
"@lexical/selection": 0.10.0
"@lexical/utils": 0.10.0
lexical: 0.10.0
checksum: e4b2acd53eb03f90808ab5c5aa04a12c7e7754e331b6cff0b61de4751ed337f349fb6840761e63f81b55034a383d158a6d19ea646dfb6325fdeb8cd65f8d7f11
languageName: node
linkType: hard
"@lexical/react@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/react@npm:0.9.2"
"@lexical/react@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/react@npm:0.10.0"
dependencies:
"@lexical/clipboard": 0.9.2
"@lexical/code": 0.9.2
"@lexical/dragon": 0.9.2
"@lexical/hashtag": 0.9.2
"@lexical/history": 0.9.2
"@lexical/link": 0.9.2
"@lexical/list": 0.9.2
"@lexical/mark": 0.9.2
"@lexical/markdown": 0.9.2
"@lexical/overflow": 0.9.2
"@lexical/plain-text": 0.9.2
"@lexical/rich-text": 0.9.2
"@lexical/selection": 0.9.2
"@lexical/table": 0.9.2
"@lexical/text": 0.9.2
"@lexical/utils": 0.9.2
"@lexical/yjs": 0.9.2
"@lexical/clipboard": 0.10.0
"@lexical/code": 0.10.0
"@lexical/dragon": 0.10.0
"@lexical/hashtag": 0.10.0
"@lexical/history": 0.10.0
"@lexical/link": 0.10.0
"@lexical/list": 0.10.0
"@lexical/mark": 0.10.0
"@lexical/markdown": 0.10.0
"@lexical/overflow": 0.10.0
"@lexical/plain-text": 0.10.0
"@lexical/rich-text": 0.10.0
"@lexical/selection": 0.10.0
"@lexical/table": 0.10.0
"@lexical/text": 0.10.0
"@lexical/utils": 0.10.0
"@lexical/yjs": 0.10.0
react-error-boundary: ^3.1.4
peerDependencies:
lexical: 0.9.2
lexical: 0.10.0
react: ">=17.x"
react-dom: ">=17.x"
checksum: 58a3532e313bfd89f8a7513183d0a38c8921c9cc619c1343700e34539102710258826b602371de2b230f0cff15f1e0705b8c1db56db51afa59003d0d2f97bd2f
checksum: 76c6004e32f23e1388814e667d4b0adfe1c9698bccbf5c6503c1d52c7a3bddff13263a7e67d6c7f6c6484579f16e9b2d996df4d371476189750b98675d9f6ce7
languageName: node
linkType: hard
"@lexical/rich-text@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/rich-text@npm:0.9.2"
"@lexical/rich-text@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/rich-text@npm:0.10.0"
peerDependencies:
"@lexical/clipboard": 0.9.2
"@lexical/selection": 0.9.2
"@lexical/utils": 0.9.2
lexical: 0.9.2
checksum: d71761fe76cfbf6139b593f0d2bd3f2a52875a68f0e6fff380ed1ca2703fc1d9aaa46c336df5a2f4e67abb4e0580c13523e59b55a86fa3303ce69047d392fbaa
"@lexical/clipboard": 0.10.0
"@lexical/selection": 0.10.0
"@lexical/utils": 0.10.0
lexical: 0.10.0
checksum: 8d3b35ab18c88298724e076f851530ae061ca3765494bb7a48a8efac2edcf7e114efecf806d9ba1795d8d649261ceb5da585cc7ec66597faef7c5700ba1faa4b
languageName: node
linkType: hard
"@lexical/selection@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/selection@npm:0.9.2"
"@lexical/selection@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/selection@npm:0.10.0"
peerDependencies:
lexical: 0.9.2
checksum: bd2483d0ee3ae4c5fbcac432eaae3b0e0a0943dbcbe0a8b9dc095f71c09ad292457ce435be36eb6469cfc57fc9f7a629a7e652509a7c9c5577d9a48cb7c7590d
lexical: 0.10.0
checksum: 6a0d6af76c8572c148c7f5d5017ec044a1caf634afdacd5c9d651202ccc8fa7911dd15590f917f4573f503ddcf1ec2892acf8f3fc35fb3b207e75f39aca91f86
languageName: node
linkType: hard
"@lexical/table@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/table@npm:0.9.2"
"@lexical/table@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/table@npm:0.10.0"
dependencies:
"@lexical/utils": 0.9.2
"@lexical/utils": 0.10.0
peerDependencies:
lexical: 0.9.2
checksum: b99747af530f39ecbf1583cfaaaf22214d2d5a365527f67da283ab6f1252e1c94f66fb3f32566bebcb9d14c2ae2aa0ce7f00bb5c07be37072a0e02df557c3dbf
lexical: 0.10.0
checksum: 9cd018ce3f67e524f6e02c7ccae70993d24742788fa02fac3ac5939b25e7918fe854b6dd820ff3b3a9ed315f099d94aed1060f7d634064c744c3da6fea54252d
languageName: node
linkType: hard
"@lexical/text@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/text@npm:0.9.2"
"@lexical/text@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/text@npm:0.10.0"
peerDependencies:
lexical: 0.9.2
checksum: c52abddf4b16ead17979ef4f756ea35ac69b5bc6a06425c1d8b2f400ea2e09ac91f4130b41288f9f99cff65ddbf5acd6e7f766472f647d6b1dd2fb0c6c54092c
lexical: 0.10.0
checksum: 42033da09baf938587a19bfc1f9f0c93b4983fd3a6e102110242e1403a0163b7f1ed8a2122608d2f8adc75c2b2d3e383cd0b6f282d34a8b8fe7e66fd785bf532
languageName: node
linkType: hard
"@lexical/utils@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/utils@npm:0.9.2"
"@lexical/utils@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/utils@npm:0.10.0"
dependencies:
"@lexical/list": 0.9.2
"@lexical/selection": 0.9.2
"@lexical/table": 0.9.2
"@lexical/list": 0.10.0
"@lexical/selection": 0.10.0
"@lexical/table": 0.10.0
peerDependencies:
lexical: 0.9.2
checksum: 4885762b108e5f42c31b6f719e53e0d75a9d98bf52c8ae8666a889211d602bc465f742feab8c5b3d8c7433cfeca44686f609b6a32af3fad0599eef4054239d99
lexical: 0.10.0
checksum: 5a57f134e6be65ce1243dd096c40168a54126f2f55ac8d44d1c2ad59e86ea5a2672591c8f1dd906f296de14beb556986aab9bbc06f58e4cdb8e2bfc460a18d24
languageName: node
linkType: hard
"@lexical/yjs@npm:0.9.2":
version: 0.9.2
resolution: "@lexical/yjs@npm:0.9.2"
"@lexical/yjs@npm:0.10.0":
version: 0.10.0
resolution: "@lexical/yjs@npm:0.10.0"
dependencies:
"@lexical/offset": 0.9.2
"@lexical/offset": 0.10.0
peerDependencies:
lexical: 0.9.2
lexical: 0.10.0
yjs: ">=13.5.22"
checksum: c2a2b0ebe1e547d98e6c95c3a81bd64cf776d5e8e06a4f73a68ce87a2eb107a1b12f0254b7dc804becdcca3fd0f3cd866c63a55456d6cc1c83b3410ed98dd7c5
checksum: 7164157eea40aa196c60044e454fec6e18b0d19f82ac4b4d56313b919eaddfee887db17fd4fbf5c03e51fa7979472b5011db0b5d68256be167466a90049b808a
languageName: node
linkType: hard
@@ -5509,8 +5509,8 @@ __metadata:
"@babel/plugin-transform-react-jsx": ^7.19.0
"@babel/preset-env": "*"
"@babel/preset-typescript": ^7.18.6
"@lexical/headless": 0.9.2
"@lexical/react": 0.9.2
"@lexical/headless": 0.10.0
"@lexical/react": 0.10.0
"@pmmmwh/react-refresh-webpack-plugin": ^0.5.10
"@radix-ui/react-slot": ^1.0.1
"@simplewebauthn/browser": ^7.1.0
@@ -5559,7 +5559,7 @@ __metadata:
identity-obj-proxy: ^3.0.0
jest: ^29.3.1
jest-environment-jsdom: ^29.3.1
lexical: 0.9.2
lexical: 0.10.0
lint-staged: ">=13"
mini-css-extract-plugin: ^2.7.2
minimatch: ^5.1.1
@@ -16179,10 +16179,10 @@ __metadata:
languageName: node
linkType: hard
"lexical@npm:0.9.2":
version: 0.9.2
resolution: "lexical@npm:0.9.2"
checksum: 72c8cb3ad68de9e581b3033ec3102968144018f2f2cc7a0167655970672711dd7b1f2779a6fa8270ab23abd24a48ff92593ca178f18ad3751e0efcded3904ac0
"lexical@npm:0.10.0":
version: 0.10.0
resolution: "lexical@npm:0.10.0"
checksum: 181d09446fd53c348f4900776994a15910c8e70aa720d6630e825a270b96069c49389ff5d333ddfaebb94c9eecf58a08f6d4cfeada0f7be2f205ea5a21f903b0
languageName: node
linkType: hard