Compare commits

...
Author SHA1 Message Date
StandardNotes CI 390ea45865 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].8
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].8
2023-05-22 18:28:30 +00:00
Aman Harwara 68214b14b6 Merge branch 'main' of github.com:standardnotes/app 2023-05-22 23:24:47 +05:30
Aman Harwara 22297ff514 chore: pinned note ui change 2023-05-22 23:24:16 +05:30
StandardNotes CI bec026ad6a chore(release): publish
- @standardnotes/[email protected].9
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].4
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].7
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].4
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].9
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].7
2023-05-22 16:34:05 +00:00
Aman Harwara db77e2f53b chore: remove unused field & make role field required 2023-05-22 21:37:10 +05:30
Aman Harwara 11b4377b76 chore: fix feature roles 2023-05-22 21:09:44 +05:30
Aman Harwara 56b4c1aa80 chore: fix workspace menu item escape 2023-05-22 20:48:47 +05:30
Aman Harwara d6843c207f chore: workspace menu item focus after renaming 2023-05-22 20:42:05 +05:30
Aman Harwara 7f05b2a748 chore: fix workspace menu item overflow 2023-05-22 20:03:27 +05:30
StandardNotes CI 767d856293 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].6
2023-05-22 14:24:06 +00:00
Aman Harwara 799945b167 fix: Fixed issue where empty new line in Super would create extra new lines when converting to Markdown 2023-05-22 19:28:19 +05:30
StandardNotes CI 7a24b205a7 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
2023-05-19 15:12:36 +00:00
Aman Harwara 7e65c9c46b chore: fix some dialogs becoming unclickable 2023-05-19 20:16:40 +05:30
Aman Harwara d83e371022 chore: fix modal close on escape 2023-05-19 19:11:13 +05:30
Aman Harwara 8f2cdc5839 Merge branch 'main' of github.com:standardnotes/app 2023-05-19 19:02:48 +05:30
Aman Harwara a2a6b5295c chore: minor ui changes 2023-05-19 19:02:32 +05:30
StandardNotes CI 1482d4244d chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].4
2023-05-18 17:16:41 +00:00
Aman Harwara c893f3a067 Merge branch 'main' of github.com:standardnotes/app 2023-05-18 22:15:13 +05:30
Aman Harwara a1225829ca chore: minor ui changes 2023-05-18 22:15:02 +05:30
StandardNotes CI 4094a35731 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
2023-05-18 11:00:31 +00:00
Karol Sójko f14b047d7e chore: add possibility to skip paid features in the e2e test suite 2023-05-18 12:28:11 +02:00
StandardNotes CI a33365a4d9 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].2
2023-05-18 10:24:19 +00:00
Aman Harwara dac719dc5a chore: make note pinned status more prominent 2023-05-18 15:20:32 +05:30
StandardNotes CI 9d22b8bfa1 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
2023-05-18 08:00:20 +00:00
Aman Harwara 2294467059 chore: fix dialogs 2023-05-18 13:02:58 +05:30
StandardNotes CI 240bf669a1 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].0
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].0
2023-05-17 14:44:08 +00:00
Aman Harwara e5c580deab feat: Preferences view layout on mobile has been updated, and can be dismissed by swiping from the right 2023-05-17 19:42:08 +05:30
Aman Harwara 7b44224314 chore: fix dropdown z-index 2023-05-17 13:41:36 +05:30
StandardNotes CI 32bdb02b59 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].9
 - @standardnotes/[email protected]
2023-05-16 17:20:26 +00:00
Aman Harwara 687c7ab7cb Merge branch 'main' of github.com:standardnotes/app 2023-05-16 22:20:40 +05:30
Aman Harwara 8ba290dbac chore(clipper): convert relative links to absolute links so they don't become relative to SN's url 2023-05-16 22:20:31 +05:30
Aman Harwara fc06d0001a chore: fix app reloading when invalid url is clicked in super note 2023-05-16 21:35:55 +05:30
StandardNotes CI d5ec7d41b9 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].8
 - @standardnotes/[email protected]
2023-05-16 15:30:01 +00:00
Aman Harwara 8d154b48b8 chore: fix alert max-width 2023-05-16 20:32:57 +05:30
Aman Harwara 91e2d66e58 chore: fix super icon tint 2023-05-16 20:22:12 +05:30
Aman Harwara 2a7567e7b8 chore: fix template super note editor icon 2023-05-16 20:16:55 +05:30
Aman Harwara fb843ea0b1 chore: adjust switch size 2023-05-16 19:57:36 +05:30
Aman Harwara f6afaae342 chore: fix whitespace 2023-05-16 19:33:20 +05:30
Aman Harwara 5112b97c05 Merge branch 'main' of github.com:standardnotes/app 2023-05-16 19:09:26 +05:30
Aman Harwara f27a38ca9b chore: fix initial loading indicator mobile 2023-05-16 19:09:21 +05:30
StandardNotes CI 4fe391cd29 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2023-05-16 13:28:33 +00:00
Aman Harwara 058a2c69a3 chore: fix switch on clipper 2023-05-16 18:29:56 +05:30
StandardNotes CI aceeeb7e7d chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2023-05-16 11:28:44 +00:00
Aman Harwara 38e8a81f0b chore: fix eslint error 2023-05-16 16:33:11 +05:30
Aman Harwara 3b23312b62 chore: upgrade ariakit 2023-05-16 16:19:22 +05:30
StandardNotes CI 0c4d44fb00 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2023-05-16 10:10:38 +00:00
Aman Harwara a137ca6d70 chore: fix radio button on big screen 2023-05-16 15:14:51 +05:30
Aman Harwara 0f641e05ad chore: preferences view swipe gesture 2023-05-16 15:07:20 +05:30
StandardNotes CI 46e87085d7 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2023-05-15 15:48:51 +00:00
Aman Harwara 6868e512f2 chore: better initial sync indicator on mobile 2023-05-15 20:48:18 +05:30
Aman Harwara 19ee9ecb41 chore: increase switch/radio sizing on mobile 2023-05-15 19:57:05 +05:30
StandardNotes CI 1ad7aa27f8 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2023-05-15 11:00:04 +00:00
Aman Harwara 2ee7fef80b refactor: allow note list swipe gesture on android to start from anywhere, and close keyboard on any swipe gesture 2023-05-15 16:01:18 +05:30
StandardNotes CI f94921336b chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2023-05-15 10:03:44 +00:00
Aman Harwara 8bc8ef780d chore: show initial sync message on mobile 2023-05-15 15:05:53 +05:30
Aman Harwara 1214edc80d chore: fix alert dialog width on mobile 2023-05-15 15:00:07 +05:30
StandardNotes CI 65753c8ee6 chore(release): publish
- @standardnotes/[email protected].8
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].6
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].8
 - @standardnotes/[email protected].9
 - @standardnotes/[email protected].7
 - @standardnotes/[email protected].9
2023-05-12 17:22:53 +00:00
Aman Harwara 6ee1c76366 chore: content list item & tag highlight indicator on mobile 2023-05-12 22:25:38 +05:30
Aman Harwara aa1f7d976e chore: dont autofocus menu items on mobile 2023-05-12 22:00:27 +05:30
Karol Sójko 2e11c8a7d1 chore: add optional error payload to http error response 2023-05-12 18:27:20 +02:00
StandardNotes CI 3c76bd25e4 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].8
2023-05-12 16:23:16 +00:00
Aman Harwara 499d408515 chore: fix super toolbar not correctly hiding on ios 2023-05-12 21:26:31 +05:30
Aman Harwara 499fa1a1a9 chore: fix mobile modal actions 2023-05-12 20:58:12 +05:30
Aman Harwara 214f299563 chore: fix padding 2023-05-12 20:54:08 +05:30
Aman Harwara e1c5319965 chore: fix save image button opening keyboard on ios 2023-05-12 20:42:32 +05:30
StandardNotes CI 5491e3137a chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].7
2023-05-12 09:54:57 +00:00
Aman Harwara 7affc7e575 fix: Fixed issue where editor column would close after deleting a note on bigger screens 2023-05-12 14:54:32 +05:30
StandardNotes CI da0c0f1874 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].6
2023-05-12 08:55:12 +00:00
Aman Harwara a14787ca8d chore: fix modal scroll when keyboard is open on ios 2023-05-12 13:57:59 +05:30
141 changed files with 1535 additions and 491 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+12
View File
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.26.10](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/api
## [1.26.9](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/api
## [1.26.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/api
## [1.26.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-11)
**Note:** Version bump only for package @standardnotes/api
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/api",
"version": "1.26.7",
"version": "1.26.10",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+84
View File
@@ -3,6 +3,90 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.1.32](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.31](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.30](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.29](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-19)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.28](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.27](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.26](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.25](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.24](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-17)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.23](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.22](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.21](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.20](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.19](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.18](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.17](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.16](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.15](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.14](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.13](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.12](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.11](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-11)
**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.1.11",
"version": "1.1.32",
"private": true,
"scripts": {
"build-mv2": "yarn clean && webpack --config ./webpack.config.prod.js",
+84
View File
@@ -3,6 +3,90 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.106.41](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.40](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.39](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.38](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-19)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.37](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.36](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.35](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.34](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.33](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-17)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.32](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.31](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.30](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.29](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.28](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.27](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.26](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.25](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.24](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.23](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.22](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.21](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/desktop
## [3.106.20](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-11)
**Note:** Version bump only for package @standardnotes/desktop
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@standardnotes/desktop",
"main": "./app/dist/index.js",
"version": "3.106.20",
"version": "3.106.41",
"license": "AGPL-3.0-or-later",
"author": "Standard Notes.",
"private": true,
+12
View File
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.21.38](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/encryption
## [1.21.37](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/encryption
## [1.21.36](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/encryption
## [1.21.35](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-11)
**Note:** Version bump only for package @standardnotes/encryption
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/encryption",
"version": "1.21.35",
"version": "1.21.38",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+8
View File
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.59.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/features
## [1.59.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/features
## [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 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/features",
"version": "1.59.3",
"version": "1.59.5",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
@@ -1,5 +1,5 @@
import { ComponentPermission } from '../Component/ComponentPermission'
import { ContentType, SubscriptionName } from '@standardnotes/common'
import { ContentType } from '@standardnotes/common'
import { ComponentArea } from '../Component/ComponentArea'
import { PermissionName } from '../Permission/PermissionName'
import { FeatureIdentifier } from './FeatureIdentifier'
@@ -12,8 +12,7 @@ type RoleFields = {
role_name?: string
/** Statically populated. Non-influencing; used as a reference by other static consumers (such as email service) */
availableInSubscriptions: SubscriptionName[]
availableInRoles?: string[]
availableInRoles: string[]
}
export type BaseFeatureDescription = RoleFields & {
@@ -1,19 +1,11 @@
import { SubscriptionName } from '@standardnotes/common'
import { GetFeatures, GetFeaturesForSubscription } from './Features'
import { GetFeatures } from './Features'
describe('features', () => {
it('all features should have either availableInSubscriptions or availableInRoles populated', () => {
it('all features should have availableInRoles populated', () => {
const features = GetFeatures()
for (const feature of features) {
expect(feature.availableInSubscriptions.length > 0 || feature.availableInRoles !== undefined && feature.availableInRoles.length > 0).toBeTruthy()
}
})
it('gets features for plus plan', () => {
const features = GetFeaturesForSubscription(SubscriptionName.PlusPlan)
for (const feature of features) {
expect(feature.availableInSubscriptions.includes(SubscriptionName.PlusPlan))
expect(feature.availableInRoles !== undefined && feature.availableInRoles.length > 0).toBeTruthy()
}
})
})
@@ -4,16 +4,11 @@ import { serverFeatures } from '../Lists/ServerFeatures'
import { clientFeatures } from '../Lists/ClientFeatures'
import { GetDeprecatedFeatures } from '../Lists/DeprecatedFeatures'
import { experimentalFeatures } from '../Lists/ExperimentalFeatures'
import { SubscriptionName } from '@standardnotes/common'
export function GetFeatures(): FeatureDescription[] {
return [...serverFeatures(), ...clientFeatures(), ...experimentalFeatures(), ...GetDeprecatedFeatures()]
}
export function GetFeaturesForSubscription(subscription: SubscriptionName): FeatureDescription[] {
return GetFeatures().filter((feature) => feature.availableInSubscriptions.includes(subscription))
}
export function FindNativeFeature(identifier: FeatureIdentifier): FeatureDescription | undefined {
return GetFeatures().find((f) => f.identifier === identifier)
}
@@ -1,7 +1,6 @@
import { FeatureDescription } from '../Feature/FeatureDescription'
import { PermissionName } from '../Permission/PermissionName'
import { FeatureIdentifier } from '../Feature/FeatureIdentifier'
import { SubscriptionName } from '@standardnotes/common'
import { RoleName } from '@standardnotes/domain-core'
import { themes } from './Themes'
import { editors } from './Editors'
@@ -12,7 +11,6 @@ export function clientFeatures(): FeatureDescription[] {
...editors(),
{
name: 'Tag Nesting',
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
availableInRoles: [RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
identifier: FeatureIdentifier.TagNesting,
permission_name: PermissionName.TagNesting,
@@ -21,7 +19,6 @@ export function clientFeatures(): FeatureDescription[] {
{
name: 'Super Notes',
identifier: FeatureIdentifier.SuperEditor,
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
availableInRoles: [RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
permission_name: PermissionName.SuperEditor,
description:
@@ -29,7 +26,6 @@ export function clientFeatures(): FeatureDescription[] {
},
{
name: 'Smart Filters',
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
availableInRoles: [RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
identifier: FeatureIdentifier.SmartFilters,
permission_name: PermissionName.SmartFilters,
@@ -37,7 +33,6 @@ export function clientFeatures(): FeatureDescription[] {
},
{
name: 'Encrypted files',
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
availableInRoles: [RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
identifier: FeatureIdentifier.Files,
permission_name: PermissionName.Files,
@@ -45,7 +40,6 @@ export function clientFeatures(): FeatureDescription[] {
},
{
name: 'Extension',
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
availableInRoles: [RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
identifier: FeatureIdentifier.Extension,
permission_name: PermissionName.Extension,
@@ -1,4 +1,4 @@
import { ContentType, SubscriptionName } from '@standardnotes/common'
import { ContentType } from '@standardnotes/common'
import {
EditorFeatureDescription,
IframeComponentFeatureDescription,
@@ -14,7 +14,6 @@ import { RoleName } from '@standardnotes/domain-core'
export function GetDeprecatedFeatures(): FeatureDescription[] {
const bold: EditorFeatureDescription = FillEditorComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Alternative Rich Text',
identifier: FeatureIdentifier.DeprecatedBoldEditor,
note_type: NoteType.RichText,
@@ -42,7 +41,6 @@ export function GetDeprecatedFeatures(): FeatureDescription[] {
})
const markdownBasic: EditorFeatureDescription = FillEditorComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Basic Markdown',
identifier: FeatureIdentifier.DeprecatedMarkdownBasicEditor,
note_type: NoteType.Markdown,
@@ -56,7 +54,6 @@ export function GetDeprecatedFeatures(): FeatureDescription[] {
})
const markdownAlt: EditorFeatureDescription = FillEditorComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Markdown Alternative',
identifier: FeatureIdentifier.DeprecatedMarkdownVisualEditor,
note_type: NoteType.Markdown,
@@ -71,7 +68,6 @@ export function GetDeprecatedFeatures(): FeatureDescription[] {
})
const markdownMinimist: EditorFeatureDescription = FillEditorComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Minimal Markdown',
identifier: FeatureIdentifier.DeprecatedMarkdownMinimistEditor,
note_type: NoteType.Markdown,
@@ -86,7 +82,6 @@ export function GetDeprecatedFeatures(): FeatureDescription[] {
})
const markdownMath: EditorFeatureDescription = FillEditorComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Markdown with Math',
identifier: FeatureIdentifier.DeprecatedMarkdownMathEditor,
spellcheckControl: true,
@@ -101,7 +96,6 @@ export function GetDeprecatedFeatures(): FeatureDescription[] {
})
const filesafe: IframeComponentFeatureDescription = FillEditorComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'FileSafe',
identifier: FeatureIdentifier.DeprecatedFileSafe,
component_permissions: [
@@ -1,4 +1,3 @@
import { SubscriptionName } from '@standardnotes/common'
import { EditorFeatureDescription } from '../Feature/FeatureDescription'
import { PermissionName } from '../Permission/PermissionName'
import { FeatureIdentifier } from '../Feature/FeatureIdentifier'
@@ -8,7 +7,6 @@ import { RoleName } from '@standardnotes/domain-core'
export function editors(): EditorFeatureDescription[] {
const code: EditorFeatureDescription = FillEditorComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Code',
spellcheckControl: true,
identifier: FeatureIdentifier.CodeEditor,
@@ -25,7 +23,6 @@ export function editors(): EditorFeatureDescription[] {
})
const plus: EditorFeatureDescription = FillEditorComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Rich Text',
note_type: NoteType.RichText,
file_type: 'html',
@@ -39,7 +36,6 @@ export function editors(): EditorFeatureDescription[] {
})
const markdown: EditorFeatureDescription = FillEditorComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Markdown',
identifier: FeatureIdentifier.MarkdownProEditor,
note_type: NoteType.Markdown,
@@ -53,7 +49,6 @@ export function editors(): EditorFeatureDescription[] {
})
const task: EditorFeatureDescription = FillEditorComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Checklist',
identifier: FeatureIdentifier.TaskEditor,
note_type: NoteType.Task,
@@ -68,7 +63,6 @@ export function editors(): EditorFeatureDescription[] {
})
const tokenvault: EditorFeatureDescription = FillEditorComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Authenticator',
note_type: NoteType.Authentication,
file_type: 'json',
@@ -82,7 +76,6 @@ export function editors(): EditorFeatureDescription[] {
})
const spreadsheets: EditorFeatureDescription = FillEditorComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Spreadsheet',
identifier: FeatureIdentifier.SheetsEditor,
note_type: NoteType.Spreadsheet,
@@ -1,66 +1,66 @@
import { ServerFeatureDescription } from '../Feature/FeatureDescription'
import { PermissionName } from '../Permission/PermissionName'
import { FeatureIdentifier } from '../Feature/FeatureIdentifier'
import { SubscriptionName } from '@standardnotes/common'
import { RoleName } from '@standardnotes/domain-core'
export function serverFeatures(): ServerFeatureDescription[] {
return [
{
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Two factor authentication',
identifier: FeatureIdentifier.TwoFactorAuth,
permission_name: PermissionName.TwoFactorAuth,
availableInRoles: [RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
},
{
availableInSubscriptions: [SubscriptionName.ProPlan],
name: 'U2F authentication',
identifier: FeatureIdentifier.UniversalSecondFactor,
permission_name: PermissionName.UniversalSecondFactor,
availableInRoles: [RoleName.NAMES.ProUser],
},
{
availableInSubscriptions: [SubscriptionName.ProPlan],
name: 'Unlimited note history',
identifier: FeatureIdentifier.NoteHistoryUnlimited,
permission_name: PermissionName.NoteHistoryUnlimited,
availableInRoles: [RoleName.NAMES.ProUser],
},
{
availableInSubscriptions: [SubscriptionName.PlusPlan],
name: '365 days note history',
identifier: FeatureIdentifier.NoteHistory365Days,
permission_name: PermissionName.NoteHistory365Days,
availableInRoles: [RoleName.NAMES.PlusUser],
},
{
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Email backups',
identifier: FeatureIdentifier.DailyEmailBackup,
permission_name: PermissionName.DailyEmailBackup,
availableInRoles: [RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
},
{
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Sign-in email alerts',
identifier: FeatureIdentifier.SignInAlerts,
permission_name: PermissionName.SignInAlerts,
availableInRoles: [RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
},
{
availableInSubscriptions: [SubscriptionName.ProPlan],
identifier: FeatureIdentifier.FilesMaximumStorageTier,
permission_name: PermissionName.FilesMaximumStorageTier,
availableInRoles: [RoleName.NAMES.ProUser],
},
{
availableInSubscriptions: [SubscriptionName.PlusPlan],
identifier: FeatureIdentifier.FilesLowStorageTier,
permission_name: PermissionName.FilesLowStorageTier,
availableInRoles: [RoleName.NAMES.PlusUser],
},
{
availableInSubscriptions: [SubscriptionName.ProPlan],
identifier: FeatureIdentifier.SubscriptionSharing,
permission_name: PermissionName.SubscriptionSharing,
availableInRoles: [RoleName.NAMES.ProUser],
},
{
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Listed Custom Domain',
identifier: FeatureIdentifier.ListedCustomDomain,
permission_name: PermissionName.ListedCustomDomain,
availableInRoles: [RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
},
]
}
+1 -8
View File
@@ -2,12 +2,10 @@ import { ThemeFeatureDescription } from '../Feature/FeatureDescription'
import { PermissionName } from '../Permission/PermissionName'
import { FeatureIdentifier } from '../Feature/FeatureIdentifier'
import { FillThemeComponentDefaults } from './Utilities/FillThemeComponentDefaults'
import { SubscriptionName } from '@standardnotes/common'
import { RoleName } from '@standardnotes/domain-core'
export function themes(): ThemeFeatureDescription[] {
const midnight: ThemeFeatureDescription = FillThemeComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
name: 'Midnight',
identifier: FeatureIdentifier.MidnightTheme,
permission_name: PermissionName.MidnightTheme,
@@ -22,7 +20,6 @@ export function themes(): ThemeFeatureDescription[] {
})
const futura: ThemeFeatureDescription = FillThemeComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
availableInRoles: [RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
name: 'Futura',
identifier: FeatureIdentifier.FuturaTheme,
@@ -37,7 +34,6 @@ export function themes(): ThemeFeatureDescription[] {
})
const solarizedDark: ThemeFeatureDescription = FillThemeComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
availableInRoles: [RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
name: 'Solarized Dark',
identifier: FeatureIdentifier.SolarizedDarkTheme,
@@ -52,7 +48,6 @@ export function themes(): ThemeFeatureDescription[] {
})
const autobiography: ThemeFeatureDescription = FillThemeComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
availableInRoles: [RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
name: 'Autobiography',
identifier: FeatureIdentifier.AutobiographyTheme,
@@ -66,7 +61,7 @@ export function themes(): ThemeFeatureDescription[] {
})
const dark: ThemeFeatureDescription = FillThemeComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
availableInRoles: [RoleName.NAMES.CoreUser, RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
name: 'Dark',
identifier: FeatureIdentifier.DarkTheme,
permission_name: PermissionName.FocusedTheme,
@@ -81,7 +76,6 @@ export function themes(): ThemeFeatureDescription[] {
})
const titanium: ThemeFeatureDescription = FillThemeComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
availableInRoles: [RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
name: 'Titanium',
identifier: FeatureIdentifier.TitaniumTheme,
@@ -95,7 +89,6 @@ export function themes(): ThemeFeatureDescription[] {
})
const dynamic: ThemeFeatureDescription = FillThemeComponentDefaults({
availableInSubscriptions: [SubscriptionName.PlusPlan, SubscriptionName.ProPlan],
availableInRoles: [RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
name: 'Dynamic Panels',
identifier: FeatureIdentifier.DynamicTheme,
@@ -3,7 +3,7 @@ import { ContentType } from '@standardnotes/common'
import { EditorFeatureDescription } from '../../Feature/FeatureDescription'
import { ComponentArea } from '../../Component/ComponentArea'
export type RequiredEditorFields = Pick<EditorFeatureDescription, 'availableInSubscriptions'>
export type RequiredEditorFields = Pick<EditorFeatureDescription, 'availableInRoles'>
export function FillEditorComponentDefaults(
component: Partial<EditorFeatureDescription> & RequiredEditorFields,
@@ -2,7 +2,7 @@ import { ContentType } from '@standardnotes/common'
import { ThemeFeatureDescription } from '../../Feature/FeatureDescription'
import { ComponentArea } from '../../Component/ComponentArea'
type RequiredThemeFields = Pick<ThemeFeatureDescription, 'availableInSubscriptions'>
type RequiredThemeFields = Pick<ThemeFeatureDescription, 'availableInRoles'>
export function FillThemeComponentDefaults(
theme: Partial<ThemeFeatureDescription> & RequiredThemeFields,
+12
View File
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.28.46](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/filepicker
## [1.28.45](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/filepicker
## [1.28.44](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/filepicker
## [1.28.43](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-11)
**Note:** Version bump only for package @standardnotes/filepicker
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/filepicker",
"version": "1.28.43",
"version": "1.28.46",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+12
View File
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.15.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/files
## [1.15.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/files
## [1.15.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/files
## [1.15.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-11)
**Note:** Version bump only for package @standardnotes/files
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/files",
"version": "1.15.5",
"version": "1.15.8",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+14
View File
@@ -3,6 +3,20 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
# [1.11.0](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-17)
### Features
* Preferences view layout on mobile has been updated, and can be dismissed by swiping from the right ([e5c580d](https://github.com/standardnotes/app/commit/e5c580deab14a5fb8bea59560d230c22ccc307d4))
## [1.10.11](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/icons
## [1.10.10](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/icons
## [1.10.9](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-11)
**Note:** Version bump only for package @standardnotes/icons
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/icons",
"version": "1.10.9",
"version": "1.11.0",
"private": true,
"main": "dist/index.js",
"types": "dist/index.d.ts",
@@ -1,3 +1,5 @@
<svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.4167 6.90759L10.2417 10.7326L14.0667 6.90759L15.2417 8.09093L10.2417 13.0909L5.2417 8.09093L6.4167 6.90759Z" fill="#181818"/>
</svg>
<path
d="M6.4167 6.90759L10.2417 10.7326L14.0667 6.90759L15.2417 8.09093L10.2417 13.0909L5.2417 8.09093L6.4167 6.90759Z"
fill="currentColor" />
</svg>

Before

Width:  |  Height:  |  Size: 222 B

After

Width:  |  Height:  |  Size: 243 B

+1 -1
View File
@@ -1,4 +1,4 @@
<svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 5C1 2.79086 2.79086 1 5 1H27C29.2091 1 31 2.79086 31 5V27C31 29.2091 29.2091 31 27 31H5C2.79086 31 1 29.2091 1 27V5Z" fill="#2B6FCF"/>
<path d="M1 5C1 2.79086 2.79086 1 5 1H27C29.2091 1 31 2.79086 31 5V27C31 29.2091 29.2091 31 27 31H5C2.79086 31 1 29.2091 1 27V5Z" fill="currentColor"/>
<path d="M8.5 8.5H23.5V10.1667H8.5V8.5ZM8.5 11.8333H18.5V13.5H8.5V11.8333ZM8.5 15.1667H23.5V16.8333H8.5V15.1667ZM8.5 18.5H18.5V20.1667H8.5V18.5ZM8.5 21.8333H23.5V23.5H8.5V21.8333Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 423 B

After

Width:  |  Height:  |  Size: 428 B

+84
View File
@@ -3,6 +3,90 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.53.41](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.40](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.39](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.38](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-19)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.37](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.36](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.35](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.34](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.33](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-17)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.32](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.31](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.30](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.29](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.28](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.27](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.26](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.25](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.24](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.23](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.22](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.21](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/mobile
## [3.53.20](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-11)
**Note:** Version bump only for package @standardnotes/mobile
+2 -2
View File
@@ -637,7 +637,7 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/yoga"
SPEC CHECKSUMS:
boost: a7c83b31436843459a1961bfd74b96033dc77234
boost: 57d2868c099736d80fcd648bf211b4431e51a558
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
FBLazyVector: 60195509584153283780abdac5569feffb8f08cc
@@ -658,7 +658,7 @@ SPEC CHECKSUMS:
MMKV: 9c4663aa7ca255d478ff10f2f5cb7d17c1651ccd
MMKVCore: 89f5c8a66bba2dcd551779dea4d412eeec8ff5bb
OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
RCT-Folly: 0080d0a6ebf2577475bda044aa59e2ca1f909cda
RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1
RCTRequired: bec48f07daf7bcdc2655a0cde84e07d24d2a9e2a
RCTTypeSafety: 171394eebacf71e1cfad79dbfae7ee8fc16ca80a
React: d7433ccb6a8c36e4cbed59a73c0700fc83c3e98a
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/mobile",
"version": "3.53.20",
"version": "3.53.41",
"author": "Standard Notes.",
"private": true,
"license": "AGPL-3.0-or-later",
+12
View File
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.45.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/models
## [1.45.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/models
## [1.45.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/models
## [1.45.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-11)
**Note:** Version bump only for package @standardnotes/models
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/models",
"version": "1.45.2",
"version": "1.45.5",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+84
View File
@@ -3,6 +3,90 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.4.309](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.308](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.307](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.306](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-19)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.305](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.304](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.303](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.302](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.301](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-17)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.300](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.299](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.298](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.297](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.296](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.295](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.294](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.293](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.292](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.291](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.290](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.289](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.288](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-11)
**Note:** Version bump only for package @standardnotes/releases
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/releases",
"version": "1.4.288",
"version": "1.4.309",
"license": "AGPL-3.0-or-later",
"main": "dist/releases.json",
"types": "dist/index.d.ts",
+12
View File
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.13.24](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/responses
## [1.13.23](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/responses
## [1.13.22](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/responses
## [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 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/responses",
"version": "1.13.21",
"version": "1.13.24",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
@@ -3,4 +3,5 @@ import { ErrorTag } from './ErrorTag'
export type HttpError = {
message: string
tag?: ErrorTag
payload?: Record<string, unknown>
}
+12
View File
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.59.10](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/services
## [1.59.9](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/services
## [1.59.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/services
## [1.59.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-11)
**Note:** Version bump only for package @standardnotes/services
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/services",
"version": "1.59.7",
"version": "1.59.10",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+32
View File
@@ -3,6 +3,38 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [2.168.16](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/snjs
## [2.168.15](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/snjs
## [2.168.14](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-19)
**Note:** Version bump only for package @standardnotes/snjs
## [2.168.13](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/snjs
## [2.168.12](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/snjs
## [2.168.11](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/snjs
## [2.168.10](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/snjs
## [2.168.9](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/snjs
## [2.168.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-11)
**Note:** Version bump only for package @standardnotes/snjs
@@ -11,4 +11,6 @@ export interface SyncClientInterface {
getLastSyncDate(): Date | undefined
getSyncStatus(): SyncOpStatus
completedOnlineDownloadFirstSync: boolean
}
+6 -6
View File
@@ -62,7 +62,7 @@ describe('files', function () {
localStorage.clear()
})
it('should create valet token from server', async function () {
it('should create valet token from server - @paidfeature', async function () {
await setup({ fakeCrypto: true, subscription: true })
const remoteIdentifier = Utils.generateUuid()
@@ -80,7 +80,7 @@ describe('files', function () {
expect(tokenOrError.tag).to.equal('no-subscription')
})
it('should not create valet token from server when user has an expired subscription', async function () {
it('should not create valet token from server when user has an expired subscription - @paidfeature', async function () {
await setup({ fakeCrypto: true, subscription: false })
await Factory.publishMockedEvent('SUBSCRIPTION_PURCHASED', {
@@ -107,7 +107,7 @@ describe('files', function () {
expect(tokenOrError.tag).to.equal('expired-subscription')
})
it('creating two upload sessions successively should succeed', async function () {
it('creating two upload sessions successively should succeed - @paidfeature', async function () {
await setup({ fakeCrypto: true, subscription: true })
const firstToken = await application.apiService.createFileValetToken(Utils.generateUuid(), 'write')
@@ -121,7 +121,7 @@ describe('files', function () {
expect(secondSession.uploadId).to.be.ok
})
it('should encrypt and upload small file', async function () {
it('should encrypt and upload small file - @paidfeature', async function () {
await setup({ fakeCrypto: false, subscription: true })
const response = await fetch('/packages/snjs/mocha/assets/small_file.md')
@@ -134,7 +134,7 @@ describe('files', function () {
expect(downloadedBytes).to.eql(buffer)
})
it('should encrypt and upload big file', async function () {
it('should encrypt and upload big file - @paidfeature', async function () {
await setup({ fakeCrypto: false, subscription: true })
const response = await fetch('/packages/snjs/mocha/assets/two_mb_file.md')
@@ -147,7 +147,7 @@ describe('files', function () {
expect(downloadedBytes).to.eql(buffer)
})
it('should delete file', async function () {
it('should delete file - @paidfeature', async function () {
await setup({ fakeCrypto: false, subscription: true })
const response = await fetch('/packages/snjs/mocha/assets/small_file.md')
+2 -2
View File
@@ -116,7 +116,7 @@ describe('settings service', function () {
expect(settings.getSettingValue(SettingName.create(SettingName.NAMES.MfaSecret).getValue())).to.not.be.ok
})
it('reads a subscription setting', async () => {
it('reads a subscription setting - @paidfeature', async () => {
await Factory.publishMockedEvent('SUBSCRIPTION_PURCHASED', {
userEmail: context.email,
subscriptionId: subscriptionId++,
@@ -139,7 +139,7 @@ describe('settings service', function () {
expect(setting).to.be.a('string')
})
it('persist irreplaceable subscription settings between subsequent subscriptions', async () => {
it('persist irreplaceable subscription settings between subsequent subscriptions - @paidfeature', async () => {
await reInitializeApplicationWithRealCrypto()
await Factory.publishMockedEvent('SUBSCRIPTION_PURCHASED', {
+4 -4
View File
@@ -49,7 +49,7 @@ describe('subscriptions', function () {
await Factory.sleep(2)
})
it('should invite a user by email to a shared subscription', async () => {
it('should invite a user by email to a shared subscription - @paidfeature', async () => {
await subscriptionManager.inviteToSubscription('[email protected]')
const existingInvites = await subscriptionManager.listSubscriptionInvitations()
@@ -59,7 +59,7 @@ describe('subscriptions', function () {
expect(newlyCreatedInvite.status).to.equal('sent')
})
it('should not invite a user by email if the limit of shared subscription is breached', async () => {
it('should not invite a user by email if the limit of shared subscription is breached - @paidfeature', async () => {
await subscriptionManager.inviteToSubscription('[email protected]')
await subscriptionManager.inviteToSubscription('[email protected]')
await subscriptionManager.inviteToSubscription('[email protected]')
@@ -77,7 +77,7 @@ describe('subscriptions', function () {
expect(existingInvites.length).to.equal(5)
})
it('should cancel a user invitation to a shared subscription', async () => {
it('should cancel a user invitation to a shared subscription - @paidfeature', async () => {
await subscriptionManager.inviteToSubscription('[email protected]')
await subscriptionManager.inviteToSubscription('[email protected]')
@@ -96,7 +96,7 @@ describe('subscriptions', function () {
expect(existingInvites.filter(invite => invite.status === 'canceled').length).to.equal(1)
})
it('should invite a user by email if the limit of shared subscription is restored', async () => {
it('should invite a user by email if the limit of shared subscription is restored - @paidfeature', async () => {
await subscriptionManager.inviteToSubscription('[email protected]')
await subscriptionManager.inviteToSubscription('[email protected]')
await subscriptionManager.inviteToSubscription('[email protected]')
+9 -3
View File
@@ -16,6 +16,7 @@
const urlParams = new URLSearchParams(window.location.search);
const syncServerHostName = urlParams.get('sync_server_host_name') ?? 'syncing-server-proxy';
const bail = urlParams.get('bail') === 'false' ? false : true;
const skipPaidFeatures = urlParams.get('skip_paid_features') === 'true' ? true : false;
Object.assign(window, SNCrypto);
@@ -29,9 +30,14 @@
console.error(error);
};
mocha.setup('bdd');
mocha.timeout(5000);
mocha.bail(bail);
mocha.setup({
ui: 'bdd',
timeout: 5000,
bail: bail,
});
if (skipPaidFeatures) {
mocha.grep('@paidfeature').invert();
}
</script>
<script type="module" src="memory.test.js"></script>
<script type="module" src="protocol.test.js"></script>
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/snjs",
"version": "2.168.8",
"version": "2.168.16",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+8
View File
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.7.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/styles
## [1.7.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/styles
## [1.7.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-03-30)
**Note:** Version bump only for package @standardnotes/styles
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/styles",
"version": "1.7.6",
"version": "1.7.8",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"publishConfig": {
+4 -2
View File
@@ -111,14 +111,16 @@ export class SKAlert {
</button>
</div>`
: ''
const messageTemplate = this.text ? `<p class='sk-p text-base lg:text-sm'>${this.text}</p>` : ''
const messageTemplate = this.text
? `<p class='sk-p text-base lg:text-sm' style="max-width: 100%; overflow: hidden; text-overflow: ellipsis;">${this.text}</p>`
: ''
const template = `
<div class="sk-modal">
<div class="sk-modal-background"></div>
<div class="sk-modal-content">
<div class="sn-component">
<div class="sk-panel" style='max-width: 500px;'>
<div class="sk-panel" style='max-width: min(95vw, 500px);'>
<div class="sk-panel-content" ${panelStyle}>
<div class="sk-panel-section">
${titleTemplate}
+12
View File
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.3.31](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-17)
**Note:** Version bump only for package @standardnotes/toast
## [1.3.30](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/toast
## [1.3.29](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/toast
## [1.3.28](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-04-11)
**Note:** Version bump only for package @standardnotes/toast
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/toast",
"version": "1.3.28",
"version": "1.3.31",
"private": true,
"main": "./src/index.ts",
"scripts": {
+24
View File
@@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.26.12](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/ui-services
## [1.26.11](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/ui-services
## [1.26.10](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-17)
**Note:** Version bump only for package @standardnotes/ui-services
## [1.26.9](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/ui-services
## [1.26.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/ui-services
## [1.26.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/ui-services
## [1.26.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-11)
**Note:** Version bump only for package @standardnotes/ui-services
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/ui-services",
"version": "1.26.6",
"version": "1.26.12",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+90
View File
@@ -3,6 +3,96 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.160.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/web
## [3.160.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
**Note:** Version bump only for package @standardnotes/web
## [3.160.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)
### Bug Fixes
* Fixed issue where empty new line in Super would create extra new lines when converting to Markdown ([799945b](https://github.com/standardnotes/app/commit/799945b167b1660751c97895467e83982e5cdda3))
## [3.160.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-19)
**Note:** Version bump only for package @standardnotes/web
## [3.160.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/web
## [3.160.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/web
## [3.160.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/web
## [3.160.1](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)
**Note:** Version bump only for package @standardnotes/web
# [3.160.0](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-17)
### Features
* Preferences view layout on mobile has been updated, and can be dismissed by swiping from the right ([e5c580d](https://github.com/standardnotes/app/commit/e5c580deab14a5fb8bea59560d230c22ccc307d4))
## [3.159.17](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/web
## [3.159.16](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/web
## [3.159.15](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/web
## [3.159.14](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/web
## [3.159.13](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)
**Note:** Version bump only for package @standardnotes/web
## [3.159.12](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)
**Note:** Version bump only for package @standardnotes/web
## [3.159.11](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)
**Note:** Version bump only for package @standardnotes/web
## [3.159.10](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)
**Note:** Version bump only for package @standardnotes/web
## [3.159.9](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/web
## [3.159.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/web
## [3.159.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
### Bug Fixes
* Fixed issue where editor column would close after deleting a note on bigger screens ([7affc7e](https://github.com/standardnotes/app/commit/7affc7e5756e6b2f647e3cbbf3f316f641a29466))
## [3.159.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)
**Note:** Version bump only for package @standardnotes/web
## [3.159.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-11)
**Note:** Version bump only for package @standardnotes/web
+240
View File
@@ -1,5 +1,245 @@
{
"versions": [
{
"version": "3.160.8",
"title": "[3.160.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.160.7",
"title": "[3.160.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.160.6",
"title": "[3.160.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-22)",
"date": null,
"body": "### Bug Fixes\n\n* Fixed issue where empty new line in Super would create extra new lines when converting to Markdown ([799945b](https://github.com/standardnotes/app/commit/799945b167b1660751c97895467e83982e5cdda3))",
"parsed": {
"_": [
"Fixed issue where empty new line in Super would create extra new lines when converting to Markdown (799945b)"
],
"Bug Fixes": [
"Fixed issue where empty new line in Super would create extra new lines when converting to Markdown (799945b)"
]
}
},
{
"version": "3.160.5",
"title": "[3.160.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-19)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.160.4",
"title": "[3.160.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.160.3",
"title": "[3.160.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.160.2",
"title": "[3.160.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.160.1",
"title": "[3.160.1](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-18)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.160.0",
"title": "[3.160.0](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-17)",
"date": null,
"body": "### Features\n\n* Preferences view layout on mobile has been updated, and can be dismissed by swiping from the right ([e5c580d](https://github.com/standardnotes/app/commit/e5c580deab14a5fb8bea59560d230c22ccc307d4))",
"parsed": {
"_": [
"Preferences view layout on mobile has been updated, and can be dismissed by swiping from the right (e5c580d)"
],
"Features": [
"Preferences view layout on mobile has been updated, and can be dismissed by swiping from the right (e5c580d)"
]
}
},
{
"version": "3.159.17",
"title": "[3.159.17](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.159.16",
"title": "[3.159.16](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.159.15",
"title": "[3.159.15](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.159.14",
"title": "[3.159.14](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.159.13",
"title": "[3.159.13](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-16)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.159.12",
"title": "[3.159.12](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.159.11",
"title": "[3.159.11](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.159.10",
"title": "[3.159.10](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-15)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.159.9",
"title": "[3.159.9](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.159.8",
"title": "[3.159.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.159.7",
"title": "[3.159.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)",
"date": null,
"body": "### Bug Fixes\n\n* Fixed issue where editor column would close after deleting a note on bigger screens ([7affc7e](https://github.com/standardnotes/app/commit/7affc7e5756e6b2f647e3cbbf3f316f641a29466))",
"parsed": {
"_": [
"Fixed issue where editor column would close after deleting a note on bigger screens (7affc7e)"
],
"Bug Fixes": [
"Fixed issue where editor column would close after deleting a note on bigger screens (7affc7e)"
]
}
},
{
"version": "3.159.6",
"title": "[3.159.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-12)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.159.5",
"title": "[3.159.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-05-11)",
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/web",
"version": "3.159.5",
"version": "3.160.8",
"license": "AGPL-3.0-or-later",
"main": "dist/app.js",
"author": "Standard Notes",
@@ -107,7 +107,7 @@
"app/**/*.{js,ts,jsx,tsx,css,md}": "prettier --write"
},
"dependencies": {
"@ariakit/react": "^0.1.2",
"@ariakit/react": "^0.2.1",
"@lexical/headless": "0.10.0",
"@radix-ui/react-slot": "^1.0.1"
}
@@ -1,4 +1,4 @@
import { InvisibleSuperConverter } from '@/Components/SuperEditor/Tools/InvisibleMarkdownConverter'
import { HeadlessSuperConverter } from '@/Components/SuperEditor/Tools/HeadlessSuperConverter'
import {
SNComponent,
ComponentMutator,
@@ -40,7 +40,7 @@ export class DesktopManager
) {
super(application, new InternalEventBus())
const markdownConverter = new InvisibleSuperConverter()
const markdownConverter = new HeadlessSuperConverter()
backups.setSuperConverter(markdownConverter)
}
@@ -30,6 +30,7 @@ const WorkspaceMenuItem: FunctionComponent<Props> = ({
}) => {
const [isRenaming, setIsRenaming] = useState(false)
const [inputValue, setInputValue] = useState(descriptor.label)
const itemRef = useRef<HTMLButtonElement>(null)
const inputRef = useRef<HTMLInputElement>(null)
useEffect(() => {
@@ -43,8 +44,10 @@ const WorkspaceMenuItem: FunctionComponent<Props> = ({
}, [])
const handleInputKeyDown: KeyboardEventHandler = useCallback((event) => {
if (event.key === KeyboardKey.Enter) {
inputRef.current?.blur()
if (event.key === KeyboardKey.Enter || event.key === KeyboardKey.Escape) {
event.preventDefault()
event.stopPropagation()
itemRef.current?.focus()
}
}, [])
@@ -55,18 +58,14 @@ const WorkspaceMenuItem: FunctionComponent<Props> = ({
return (
<div className="relative">
<MenuRadioButtonItem
className="flex w-full cursor-pointer items-center border-0 bg-transparent px-3 py-2 text-left text-mobile-menu-item text-text hover:bg-contrast hover:text-foreground focus:bg-info-backdrop focus:shadow-none md:text-tablet-menu-item lg:text-menu-item"
onClick={onClick}
checked={descriptor.primary}
>
<div className="ml-2 flex w-full items-center justify-between">
{!isRenaming && <div>{descriptor.label}</div>}
<MenuRadioButtonItem ref={itemRef} className="overflow-hidden" onClick={onClick} checked={descriptor.primary}>
<div className="ml-2 flex w-full items-center justify-between gap-3 overflow-hidden">
{!isRenaming && <div className="overflow-hidden text-ellipsis">{descriptor.label}</div>}
{descriptor.primary && !hideOptions && (
<div className="flex items-center">
<div className="flex items-center gap-3">
<a
role="button"
className="mr-3 flex h-5 w-5 cursor-pointer items-center justify-center border-0 bg-transparent p-0 hover:bg-contrast"
className="flex h-5 w-5 cursor-pointer items-center justify-center border-0 bg-transparent p-0 hover:bg-contrast"
onClick={(e) => {
e.stopPropagation()
setIsRenaming((isRenaming) => !isRenaming)
@@ -14,7 +14,7 @@ const AlertDialog = ({
})
return (
<Dialog store={dialog} role="alertdialog" className="h-full w-full" backdropProps={{ className: '!z-modal' }}>
<Dialog store={dialog} role="alertdialog" className="fixed top-0 left-0 z-modal h-full w-full">
<div
className="absolute z-0 h-full w-full bg-passive-5 opacity-25 md:opacity-75"
role="presentation"
@@ -22,7 +22,7 @@ const AlertDialog = ({
/>
<div
className={classNames(
'absolute top-1/2 left-1/2 z-[1] -translate-x-1/2 -translate-y-1/2 rounded border border-border bg-default px-6 py-5 shadow-xl',
'absolute top-1/2 left-1/2 z-[1] w-[95vw] -translate-x-1/2 -translate-y-1/2 rounded border border-border bg-default px-6 py-5 shadow-xl md:w-auto',
!className?.includes('max-w-') && 'max-w-[600px]',
className,
)}
@@ -237,7 +237,7 @@ const ChallengeModal: FunctionComponent<Props> = ({
})
return (
<ModalOverlay isOpen={true} key={challenge.id} ref={setModalElement}>
<ModalOverlay isOpen={true} key={challenge.id} ref={setModalElement} close={cancelChallenge}>
<Modal
title="Authenticate"
close={cancelChallenge}
@@ -7,13 +7,20 @@ import RoundIconButton from '../Button/RoundIconButton'
import { getIconAndTintForNoteType } from '@/Utils/Items/Icons/getIconAndTintForNoteType'
import { CHANGE_EDITOR_COMMAND, keyboardStringForShortcut } from '@standardnotes/ui-services'
import { useApplication } from '../ApplicationProvider'
import { NoteViewController } from '../NoteView/Controller/NoteViewController'
import { noteTypeForEditorIdentifier } from '@standardnotes/snjs'
type Props = {
viewControllerManager: ViewControllerManager
noteViewController?: NoteViewController
onClickPreprocessing?: () => Promise<void>
}
const ChangeEditorButton: FunctionComponent<Props> = ({ viewControllerManager, onClickPreprocessing }: Props) => {
const ChangeEditorButton: FunctionComponent<Props> = ({
viewControllerManager,
noteViewController,
onClickPreprocessing,
}: Props) => {
const application = useApplication()
const note = viewControllerManager.notesController.firstSelectedNote
@@ -23,10 +30,18 @@ const ChangeEditorButton: FunctionComponent<Props> = ({ viewControllerManager, o
const [selectedEditor, setSelectedEditor] = useState(() => {
return note ? application.componentManager.editorForNote(note) : undefined
})
const [selectedEditorIcon, selectedEditorIconTint] = getIconAndTintForNoteType(
note?.noteType || selectedEditor?.package_info.note_type,
true,
)
const noteType = noteViewController?.isTemplateNote
? noteTypeForEditorIdentifier(
application.geDefaultEditorIdentifier(
noteViewController.templateNoteOptions?.tag
? application.items.findItem(noteViewController.templateNoteOptions.tag)
: undefined,
),
)
: note
? note.noteType
: selectedEditor?.package_info.note_type
const [selectedEditorIcon, selectedEditorIconTint] = getIconAndTintForNoteType(noteType, true)
const [isClickOutsideDisabled, setIsClickOutsideDisabled] = useState(false)
const toggleMenu = useCallback(async () => {
@@ -255,7 +255,7 @@ const ChangeEditorMenu: FunctionComponent<ChangeEditorMenuProps> = ({
)
})}
</Menu>
<ModalOverlay isOpen={showSuperNoteImporter}>
<ModalOverlay isOpen={showSuperNoteImporter} close={closeSuperNoteImporter}>
{note && (
<SuperNoteImporter
note={note}
@@ -265,7 +265,7 @@ const ChangeEditorMenu: FunctionComponent<ChangeEditorMenuProps> = ({
/>
)}
</ModalOverlay>
<ModalOverlay isOpen={showSuperNoteConverter}>
<ModalOverlay isOpen={showSuperNoteConverter} close={closeSuperNoteConverter}>
{note && pendingConversionItem && (
<SuperNoteConverter
note={note}
@@ -180,7 +180,7 @@ const ChangeMultipleMenu = ({ application, notes, setDisableClickOutside }: Prop
</Fragment>
))}
</Menu>
<ModalOverlay isOpen={showSuperImporter}>
<ModalOverlay isOpen={showSuperImporter} close={closeCurrentSuperNoteImporter}>
{confirmationQueue[0] && (
<SuperNoteImporter
note={confirmationQueue[0]}
@@ -374,6 +374,7 @@ const ClipperView = ({
setIsScreenshotMode(checked)
}}
className="flex-row-reverse gap-2"
forceDesktopStyle={true}
>
Clip as screenshot
</MenuSwitchButtonItem>
@@ -1,9 +1,12 @@
import { $createParagraphNode, $getRoot, $insertNodes, LexicalNode } from 'lexical'
import { $createParagraphNode, $getRoot, $insertNodes, $nodesOfType, LexicalNode } from 'lexical'
import { $generateNodesFromDOM } from '@lexical/html'
import { createHeadlessEditor } from '@lexical/headless'
import { BlockEditorNodes } from '../SuperEditor/Lexical/Nodes/AllNodes'
import BlocksEditorTheme from '../SuperEditor/Lexical/Theme/Theme'
import { ClipPayload } from '@standardnotes/clipper/src/types/message'
import { LinkNode } from '@lexical/link'
const AbsoluteLinkRegExp = new RegExp('^(?:[a-z+]+:)?//', 'i')
export const getSuperJSONFromClipPayload = async (clipPayload: ClipPayload) => {
const editor = createHeadlessEditor({
@@ -14,6 +17,8 @@ export const getSuperJSONFromClipPayload = async (clipPayload: ClipPayload) => {
nodes: [...BlockEditorNodes],
})
const clipURL = new URL(clipPayload.url)
await new Promise<void>((resolve) => {
editor.update(() => {
const parser = new DOMParser()
@@ -59,5 +64,21 @@ export const getSuperJSONFromClipPayload = async (clipPayload: ClipPayload) => {
})
})
await new Promise<void>((resolve) => {
editor.update(() => {
$nodesOfType(LinkNode).forEach((linkNode) => {
const url = linkNode.getURL()
const isAbsoluteLink = AbsoluteLinkRegExp.test(url)
if (!isAbsoluteLink) {
const fixedURL = new URL(url, clipURL)
linkNode.setURL(fixedURL.toString())
}
})
resolve()
})
})
return JSON.stringify(editor.getEditorState().toJSON())
}
@@ -9,7 +9,7 @@ import {
} from '@standardnotes/ui-services'
import { WebApplication } from '@/Application/WebApplication'
import { PANEL_NAME_NOTES } from '@/Constants/Constants'
import { FileItem, PrefKey, WebAppEvent } from '@standardnotes/snjs'
import { FileItem, Platform, PrefKey, WebAppEvent } from '@standardnotes/snjs'
import { observer } from 'mobx-react-lite'
import { forwardRef, useCallback, useEffect, useMemo } from 'react'
import ContentList from '@/Components/ContentListView/ContentList'
@@ -305,7 +305,9 @@ const ContentListView = forwardRef<HTMLDivElement, Props>(
}
}, [selectedUuids, innerRef, isCurrentNoteTemplate, renderedItems, panes])
const [setElement] = usePaneSwipeGesture('right', () => setPaneLayout(PaneLayout.TagSelection))
const [setElement] = usePaneSwipeGesture('right', () => setPaneLayout(PaneLayout.TagSelection), {
requiresStartFromEdge: application.platform !== Platform.Android,
})
return (
<div
@@ -108,10 +108,10 @@ const AddItemMenuButton = ({
</MenuItem>
</Menu>
</Popover>
<ModalOverlay isOpen={captureType === 'photo'}>
<ModalOverlay isOpen={captureType === 'photo'} close={closeCaptureModal}>
<PhotoCaptureModal filesController={filesController} close={closeCaptureModal} />
</ModalOverlay>
<ModalOverlay isOpen={captureType === 'video'}>
<ModalOverlay isOpen={captureType === 'video'} close={closeCaptureModal}>
<VideoCaptureModal filesController={filesController} close={closeCaptureModal} />
</ModalOverlay>
</>
@@ -1,11 +1,11 @@
import { WebApplication } from '@/Application/WebApplication'
import { memo, useCallback, useMemo, useRef, useState } from 'react'
import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'
import Icon from '../../Icon/Icon'
import { classNames } from '@standardnotes/utils'
import Popover from '@/Components/Popover/Popover'
import DisplayOptionsMenu from './DisplayOptionsMenu'
import { NavigationMenuButton } from '@/Components/NavigationMenu/NavigationMenu'
import { isTag, VectorIconNameOrEmoji } from '@standardnotes/snjs'
import { ApplicationEvent, isTag, VectorIconNameOrEmoji } from '@standardnotes/snjs'
import RoundIconButton from '@/Components/Button/RoundIconButton'
import { AnyTag } from '@/Controllers/Navigation/AnyTagType'
import { MediaQueryBreakpoints, MutuallyExclusiveMediaQueryBreakpoints, useMediaQuery } from '@/Hooks/useMediaQuery'
@@ -53,6 +53,38 @@ const ContentListHeader = ({
const isTouchScreen = !useMediaQuery(MediaQueryBreakpoints.pointerFine)
const isTablet = matchesMd && isTouchScreen
const [syncSubtitle, setSyncSubtitle] = useState('')
const showSyncSubtitle = isMobileScreen && !!syncSubtitle
useEffect(() => {
return application.addEventObserver(async (event) => {
if (event === ApplicationEvent.CompletedInitialSync) {
setSyncSubtitle('')
return
}
const syncStatus = application.sync.getSyncStatus()
const { localDataDone, localDataCurrent, localDataTotal } = syncStatus.getStats()
if (event === ApplicationEvent.SyncStatusChanged) {
setSyncSubtitle(
syncStatus.syncInProgress && !application.sync.completedOnlineDownloadFirstSync ? 'Syncing...' : '',
)
return
}
if (event === ApplicationEvent.LocalDataIncrementalLoad || event === ApplicationEvent.LocalDataLoaded) {
if (localDataDone) {
setSyncSubtitle('')
return
}
setSyncSubtitle(`Loading ${localDataCurrent}/${localDataTotal} items...`)
return
}
})
}, [application])
const [showDisplayOptionsMenu, setShowDisplayOptionsMenu] = useState(false)
const toggleDisplayOptionsMenu = useCallback(() => {
@@ -114,31 +146,38 @@ const ContentListHeader = ({
const FolderName = useMemo(() => {
return (
<div className="flex min-w-0 flex-grow flex-col break-words pt-1 lg:pt-0">
<div className={`flex min-w-0 flex-grow flex-row ${!optionsSubtitle ? 'items-center' : ''}`}>
<div
className={classNames(
'flex min-w-0 flex-grow flex-row',
!optionsSubtitle && !showSyncSubtitle ? 'items-center' : '',
)}
>
{icon && (
<Icon
type={icon}
size={'custom'}
className={` ml-0.5 mr-1.5 h-7 w-7 text-2xl text-neutral lg:h-6 lg:w-6 lg:text-lg ${
optionsSubtitle ? 'mt-1' : ''
}`}
size="custom"
className={classNames(
'ml-0.5 mr-1.5 h-7 w-7 flex-shrink-0 text-2xl text-neutral lg:h-6 lg:w-6 lg:text-lg',
optionsSubtitle && 'md:mt-0.5',
)}
/>
)}
<div className="flex min-w-0 flex-grow flex-col break-words">
<div className=" text-2xl font-semibold text-text md:text-lg">{panelTitle}</div>
<div className="text-2xl font-semibold text-text md:text-lg">{panelTitle}</div>
{showSyncSubtitle && <div className="-mt-1 text-xs text-passive-0 md:mt-0">{syncSubtitle}</div>}
{optionsSubtitle && <div className="text-xs text-passive-0">{optionsSubtitle}</div>}
</div>
</div>
</div>
)
}, [optionsSubtitle, icon, panelTitle])
}, [optionsSubtitle, showSyncSubtitle, icon, panelTitle, syncSubtitle])
const PhoneAndDesktopLayout = useMemo(() => {
return (
<div className={'flex w-full justify-between md:flex'}>
<NavigationMenuButton />
{FolderName}
<div className="flex items-center gap-3">
<div className="flex items-start gap-3 md:items-center">
{SearchBarButton}
{OptionsMenu}
{AddButton}
@@ -29,6 +29,57 @@ import { PaneLayout } from '@/Controllers/PaneController/PaneLayout'
const DailyEntryModeEnabled = true
const SortIcon = ({ enabled, reverse }: { enabled: boolean; reverse: boolean | undefined }) => {
if (!enabled) {
return null
}
return (
<Icon
type={reverse ? 'arrows-sort-up' : 'arrows-sort-down'}
className="h-6 w-6 text-neutral md:h-5 md:w-6"
size="custom"
/>
)
}
const TabButton: FunctionComponent<{
label: string
mode: PreferenceMode
icon?: VectorIconNameOrEmoji
currentMode: PreferenceMode
setCurrentMode: (mode: PreferenceMode) => void
}> = ({ mode, label, icon, currentMode, setCurrentMode }) => {
const isSelected = currentMode === mode
return (
<button
className={classNames(
'relative cursor-pointer rounded-full border-2 border-solid border-transparent py-1 px-2 text-mobile-menu-item focus:shadow-none md:py-0 lg:text-sm',
isSelected
? 'bg-info text-info-contrast'
: 'bg-transparent text-text hover:bg-info-backdrop focus:bg-info-backdrop',
)}
onClick={() => {
setCurrentMode(mode)
}}
>
<div className="flex items-center justify-center">
{icon && (
<Icon
size="custom"
type={icon as IconType}
className={classNames(
'mr-1 h-4.5 w-4.5 cursor-pointer md:h-3.5 md:w-3.5',
isSelected ? 'text-info-contrast' : 'text-neutral',
)}
/>
)}
<div>{label}</div>
</div>
</button>
)
}
const DisplayOptionsMenu: FunctionComponent<DisplayOptionsMenuProps> = ({
application,
isOpen,
@@ -227,39 +278,6 @@ const DisplayOptionsMenu: FunctionComponent<DisplayOptionsMenuProps> = ({
}
}, [preferences.useTableView, changePreferences, paneController])
const TabButton: FunctionComponent<{
label: string
mode: PreferenceMode
icon?: VectorIconNameOrEmoji
}> = ({ mode, label, icon }) => {
const isSelected = currentMode === mode
return (
<button
className={classNames(
'relative cursor-pointer rounded-full border-2 border-solid border-transparent px-2 text-base focus:shadow-none lg:text-sm',
isSelected
? 'bg-info text-info-contrast'
: 'bg-transparent text-text hover:bg-info-backdrop focus:bg-info-backdrop',
)}
onClick={() => {
setCurrentMode(mode)
}}
>
<div className="flex items-center justify-center">
{icon && (
<Icon
size="small"
type={icon as IconType}
className={classNames('mr-1 cursor-pointer', isSelected ? 'text-info-contrast' : 'text-neutral')}
/>
)}
<div>{label}</div>
</div>
</button>
)
}
const isMobileScreen = useMediaQuery(MutuallyExclusiveMediaQueryBreakpoints.sm)
const isTableViewEnabled = Boolean(isFilesSmartView || preferences.useTableView)
const shouldHideNonApplicableOptions = isTableViewEnabled && !isMobileScreen
@@ -269,8 +287,14 @@ const DisplayOptionsMenu: FunctionComponent<DisplayOptionsMenuProps> = ({
<div className="my-1 px-3 text-base font-semibold uppercase text-text lg:text-xs">Preferences for</div>
<div className={classNames('mt-1.5 flex w-full justify-between px-3', !controlsDisabled && 'mb-3')}>
<div className="flex items-center gap-1.5">
<TabButton label="Global" mode="global" />
<TabButton label={selectedTag.title} icon={selectedTag.iconString} mode="tag" />
<TabButton label="Global" mode="global" currentMode={currentMode} setCurrentMode={setCurrentMode} />
<TabButton
label={selectedTag.title}
icon={selectedTag.iconString}
mode="tag"
currentMode={currentMode}
setCurrentMode={setCurrentMode}
/>
</div>
{currentMode === 'tag' && (
<button className="text-base lg:text-sm" onClick={resetTagPreferences}>
@@ -301,15 +325,9 @@ const DisplayOptionsMenu: FunctionComponent<DisplayOptionsMenuProps> = ({
onClick={toggleSortByDateModified}
checked={preferences.sortBy === CollectionSort.UpdatedAt}
>
<div className="ml-2 flex flex-grow items-center justify-between">
<div className="ml-1 flex flex-grow items-center justify-between md:ml-2">
<span>Date modified</span>
{preferences.sortBy === CollectionSort.UpdatedAt ? (
preferences.sortReverse ? (
<Icon type="arrows-sort-up" className="text-neutral" />
) : (
<Icon type="arrows-sort-down" className="text-neutral" />
)
) : null}
<SortIcon enabled={preferences.sortBy === CollectionSort.UpdatedAt} reverse={preferences.sortReverse} />
</div>
</MenuRadioButtonItem>
<MenuRadioButtonItem
@@ -318,15 +336,9 @@ const DisplayOptionsMenu: FunctionComponent<DisplayOptionsMenuProps> = ({
onClick={toggleSortByCreationDate}
checked={preferences.sortBy === CollectionSort.CreatedAt}
>
<div className="ml-2 flex flex-grow items-center justify-between">
<div className="ml-1 flex flex-grow items-center justify-between md:ml-2">
<span>Creation date</span>
{preferences.sortBy === CollectionSort.CreatedAt ? (
preferences.sortReverse ? (
<Icon type="arrows-sort-up" className="text-neutral" />
) : (
<Icon type="arrows-sort-down" className="text-neutral" />
)
) : null}
<SortIcon enabled={preferences.sortBy === CollectionSort.CreatedAt} reverse={preferences.sortReverse} />
</div>
</MenuRadioButtonItem>
<MenuRadioButtonItem
@@ -335,15 +347,9 @@ const DisplayOptionsMenu: FunctionComponent<DisplayOptionsMenuProps> = ({
onClick={toggleSortByTitle}
checked={preferences.sortBy === CollectionSort.Title}
>
<div className="ml-2 flex flex-grow items-center justify-between">
<div className="ml-1 flex flex-grow items-center justify-between md:ml-2">
<span>Title</span>
{preferences.sortBy === CollectionSort.Title ? (
preferences.sortReverse ? (
<Icon type="arrows-sort-up" className="text-neutral" />
) : (
<Icon type="arrows-sort-down" className="text-neutral" />
)
) : null}
<SortIcon enabled={preferences.sortBy === CollectionSort.Title} reverse={preferences.sortReverse} />
</div>
</MenuRadioButtonItem>
<>
@@ -1,6 +1,7 @@
import { FunctionComponent } from 'react'
import Icon from '@/Components/Icon/Icon'
import { ListableContentItem } from './Types/ListableContentItem'
import { classNames } from '@standardnotes/snjs'
type Props = {
item: {
@@ -24,7 +25,7 @@ const ListItemFlagIcons: FunctionComponent<Props> = ({
className,
}) => {
return (
<div className={`flex items-start ${hasBorder && 'border-b border-solid border-border'} ${className} pl-0`}>
<div className={classNames('flex items-start pl-0', hasBorder && 'border-b border-solid border-border', className)}>
{item.locked && (
<span className="flex items-center" title="Editing Disabled">
<Icon ariaLabel="Editing Disabled" type="pencil-off" className="text-info" size="medium" />
@@ -40,11 +41,6 @@ const ListItemFlagIcons: FunctionComponent<Props> = ({
<Icon ariaLabel="Archived" type="archive" className="text-accessory-tint-3" size="medium" />
</span>
)}
{item.pinned && (
<span className="ml-1.5 flex items-center" title="Pinned">
<Icon ariaLabel="Pinned" type="pin-filled" className="text-info" size="medium" />
</span>
)}
{hasFiles && (
<span className="ml-1.5 flex items-center" title="Files">
<Icon ariaLabel="Files" type="attachment-file" className="text-info" size="medium" />
@@ -1,4 +1,4 @@
import { sanitizeHtmlString, SNNote } from '@standardnotes/snjs'
import { classNames, sanitizeHtmlString, SNNote } from '@standardnotes/snjs'
import { FunctionComponent } from 'react'
type Props = {
@@ -13,7 +13,12 @@ const ListItemNotePreviewText: FunctionComponent<Props> = ({ item, hidePreview,
}
return (
<div className={`overflow-hidden overflow-ellipsis text-base lg:text-sm ${item.archived ? 'opacity-60' : ''}`}>
<div
className={classNames(
'overflow-hidden overflow-ellipsis text-base lg:text-sm',
item.archived ? 'opacity-60' : '',
)}
>
{item.preview_html && (
<div
className="my-1"
@@ -1,13 +1,21 @@
import { FunctionComponent } from 'react'
import { ListableContentItem } from './Types/ListableContentItem'
import Icon from '../Icon/Icon'
import { classNames } from '@standardnotes/snjs'
export const ListItemTitle: FunctionComponent<{ item: ListableContentItem }> = ({ item }) => {
return (
<div
className={`break-word mr-2 flex items-start justify-between overflow-hidden text-lg font-semibold leading-[1.3] lg:text-base lg:leading-[1.3] ${
item.archived ? 'opacity-60' : ''
}`}
className={classNames(
'break-word mr-2 overflow-hidden text-lg font-semibold leading-[1.3] lg:text-base lg:leading-[1.3]',
item.archived ? 'opacity-60' : '',
)}
>
{item.pinned && (
<span className="mr-1.5 inline-flex rounded-full bg-info p-0.5 text-info-contrast">
<Icon type="pin-filled" size="custom" className="h-3 w-3" />
</span>
)}
{item.title}
</div>
)
@@ -83,7 +83,7 @@ const NoteListItem: FunctionComponent<DisplayableListItemProps<SNNote>> = ({
onClick={onClick}
>
{!hideIcon ? (
<div className="mr-0 flex flex-col items-center justify-between p-4 pr-4">
<div className="mr-0 flex flex-col items-center justify-between gap-2 p-4 pr-4">
<Icon type={icon} className={`text-accessory-tint-${tint}`} />
</div>
) : (
@@ -1,4 +1,3 @@
import { useEffect } from 'react'
import Icon from '@/Components/Icon/Icon'
import { DropdownItem } from './DropdownItem'
import { classNames } from '@standardnotes/snjs'
@@ -17,7 +16,7 @@ type DropdownProps = {
label: string
items: DropdownItem[]
value: string
onChange: (value: string, item: DropdownItem) => void
onChange: (value: string) => void
disabled?: boolean
classNameOverride?: {
wrapper?: string
@@ -39,36 +38,14 @@ const Dropdown = ({
popoverPlacement,
}: DropdownProps) => {
const select = useSelectStore({
defaultValue: value,
renderCallback(props) {
const { popoverElement, defaultRenderCallback } = props
defaultRenderCallback()
if (popoverElement) {
popoverElement.style.zIndex = 'var(--z-index-dropdown-menu)'
}
},
placement: popoverPlacement,
value,
setValue: onChange,
placement: popoverPlacement || 'top',
})
const selectedValue = select.useState('value')
const isExpanded = select.useState('open')
const currentItem = items.find((item) => item.value === selectedValue)
useEffect(() => {
select.setValue(value)
}, [select, value])
useEffect(() => {
return select.subscribe(
(state) => {
if (state.value !== value) {
onChange(state.value, items.find((item) => item.value === state.value) as DropdownItem)
}
},
['value'],
)
}, [items, onChange, select, value])
const currentItem = items.find((item) => item.value === value)
return (
<div
@@ -106,9 +83,10 @@ const Dropdown = ({
<SelectPopover
store={select}
className={classNames(
'max-h-[var(--popover-available-height)] w-[var(--popover-anchor-width)] overflow-y-auto rounded border border-border bg-default py-1',
'z-dropdown-menu max-h-[var(--popover-available-height)] w-[var(--popover-anchor-width)] overflow-y-auto rounded border border-border bg-default py-1',
classNameOverride.popover,
)}
portal={false}
>
{items.map((item) => (
<SelectItem
@@ -8,7 +8,7 @@ import RadioButtonGroup from '../RadioButtonGroup/RadioButtonGroup'
import { EditorMargins, EditorMaxWidths } from './EditorWidths'
import { useApplication } from '../ApplicationProvider'
import ModalOverlay from '../Modal/ModalOverlay'
import { CHANGE_EDITOR_WIDTH_COMMAND, ESCAPE_COMMAND } from '@standardnotes/ui-services'
import { CHANGE_EDITOR_WIDTH_COMMAND } from '@standardnotes/ui-services'
import { PrefDefaults } from '@/Constants/PrefDefaults'
import { observer } from 'mobx-react-lite'
import Switch from '../Switch/Switch'
@@ -37,7 +37,6 @@ const EditorWidthSelectionModal = ({
close: () => void
note: SNNote | undefined
}) => {
const application = useApplication()
const isMobileScreen = useMediaQuery(MutuallyExclusiveMediaQueryBreakpoints.sm)
const [value, setValue] = useState<EditorLineWidth>(() => initialValue)
@@ -88,16 +87,6 @@ const EditorWidthSelectionModal = ({
[accept, close],
)
useEffect(() => {
return application.keyboardService.addCommandHandler({
command: ESCAPE_COMMAND,
onKeyDown() {
close()
return true
},
})
}, [application.keyboardService, close])
const DynamicMargin = (
<div className="text-center text-sm text-passive-2">
<div className={value !== EditorLineWidth.Dynamic ? 'hidden' : ''}>
@@ -207,7 +196,7 @@ const EditorWidthSelectionModalWrapper = () => {
}, [application, toggle])
return (
<ModalOverlay isOpen={isOpen}>
<ModalOverlay isOpen={isOpen} close={toggle}>
<EditorWidthSelectionModal initialValue={lineWidth} handleChange={setLineWidth} close={toggle} note={note} />
</ModalOverlay>
)
@@ -285,7 +285,11 @@ FilePreviewModal.displayName = 'FilePreviewModal'
const FilePreviewModalWrapper: FunctionComponent<Props> = ({ application, viewControllerManager }) => {
return (
<ModalOverlay aria-label="File preview modal" isOpen={viewControllerManager.filePreviewModalController.isOpen}>
<ModalOverlay
aria-label="File preview modal"
isOpen={viewControllerManager.filePreviewModalController.isOpen}
close={viewControllerManager.filePreviewModalController.dismiss}
>
<FilePreviewModal application={application} viewControllerManager={viewControllerManager} />
</ModalOverlay>
)
@@ -33,7 +33,7 @@ const ImportModal = ({ importModalController }: { importModalController: ImportM
)
return (
<ModalOverlay isOpen={isVisible}>
<ModalOverlay isOpen={isVisible} close={close}>
<Modal title="Import" close={close} actions={modalActions}>
<div className="px-4 py-4">
{!files.length && <ImportModalInitialPage setFiles={setFiles} />}
@@ -30,9 +30,11 @@ const ItemSelectionDropdown = ({ contentTypes, placeholder, onSelection, combobo
const combobox = useComboboxStore(comboboxProps)
const value = combobox.useState('value')
const open = combobox.useState('open')
if (value.length < 1 && open) {
combobox.setOpen(false)
}
useEffect(() => {
if (value.length < 1 && open) {
combobox.setOpen(false)
}
}, [combobox, open, value.length])
const searchQuery = useDeferredValue(value)
const [items, setItems] = useState<DecryptedItem[]>([])
@@ -144,7 +144,7 @@ const LinkedItemBubblesContainer = ({ item, linkingController, hideToggle = fals
<div
className={classNames(
'flex w-full justify-between',
itemsToDisplay.length > 0 && 'pt-2',
itemsToDisplay.length > 0 && !shouldHideToggle && 'pt-2',
isCollapsed ? 'gap-4' : 'gap-1',
)}
>
@@ -10,6 +10,7 @@ import {
import { KeyboardKey } from '@standardnotes/ui-services'
import { useListKeyboardNavigation } from '@/Hooks/useListKeyboardNavigation'
import { mergeRefs } from '@/Hooks/mergeRefs'
import { MutuallyExclusiveMediaQueryBreakpoints, useMediaQuery } from '@/Hooks/useMediaQuery'
type MenuProps = {
className?: string
@@ -51,7 +52,13 @@ const Menu = forwardRef(
[closeMenu, onKeyDown],
)
const { setInitialFocus } = useListKeyboardNavigation(menuElementRef, initialFocus, shouldAutoFocus)
const isMobileScreen = useMediaQuery(MutuallyExclusiveMediaQueryBreakpoints.sm)
const { setInitialFocus } = useListKeyboardNavigation(
menuElementRef,
initialFocus,
isMobileScreen ? false : shouldAutoFocus,
)
useImperativeHandle(forwardedRef, () => ({
focus: () => {
@@ -11,11 +11,23 @@ type Props = {
children: ReactNode
onChange: (checked: boolean) => void
shortcut?: PlatformedKeyboardShortcut
forceDesktopStyle?: boolean
} & Omit<ComponentPropsWithoutRef<'button'>, 'onChange'>
const MenuSwitchButtonItem = forwardRef(
(
{ checked, onChange, disabled, onBlur, tabIndex, children, shortcut, className, ...props }: Props,
{
checked,
onChange,
disabled,
onBlur,
tabIndex,
children,
shortcut,
className,
forceDesktopStyle,
...props
}: Props,
ref: ForwardedRef<HTMLButtonElement>,
) => {
return (
@@ -24,7 +36,7 @@ const MenuSwitchButtonItem = forwardRef(
disabled={disabled}
ref={ref}
className={classNames(
'flex w-full cursor-pointer items-center border-0 bg-transparent px-3 py-2 md:py-1.5',
'flex w-full cursor-pointer items-center border-0 bg-transparent px-3 py-1.5',
'text-left text-text hover:bg-contrast hover:text-foreground focus:bg-info-backdrop focus:shadow-none',
'text-mobile-menu-item md:text-tablet-menu-item lg:text-menu-item',
className,
@@ -47,6 +59,7 @@ const MenuSwitchButtonItem = forwardRef(
checked={checked}
onChange={onChange}
tabIndex={FOCUSABLE_BUT_NOT_TABBABLE}
forceDesktopStyle={forceDesktopStyle}
/>
</div>
</button>
@@ -14,7 +14,7 @@ const MobileModalAction = forwardRef(
<button
ref={ref}
className={classNames(
'flex whitespace-nowrap py-1 px-1 text-base font-semibold focus:shadow-none focus:outline-none active:shadow-none active:outline-none disabled:text-neutral md:hidden',
'flex select-none whitespace-nowrap py-1 px-1 text-base font-semibold focus:shadow-none focus:outline-none active:shadow-none active:outline-none active:brightness-50 disabled:text-neutral md:hidden',
slot === 'left' ? 'justify-start text-left' : 'justify-end text-right',
type === 'cancel' || type === 'destructive' ? 'text-danger' : 'text-info',
className,
@@ -114,7 +114,7 @@ const Modal = ({
) : (
<div
className={classNames(
'flex w-full flex-shrink-0 items-center justify-between rounded-t border-b border-solid border-border bg-default px-2 text-text md:px-4.5 md:py-3',
'flex w-full flex-shrink-0 select-none items-center justify-between rounded-t border-b border-solid border-border bg-default px-2 text-text md:px-4.5 md:py-3',
hasTopInset ? 'pt-safe-top pb-1.5' : 'py-1.5',
)}
>
@@ -6,14 +6,20 @@ import { useModalAnimation } from '../Modal/useModalAnimation'
type Props = {
isOpen: boolean
children: ReactNode
portal?: boolean
animationVariant?: 'horizontal' | 'vertical'
close: () => void
}
const ModalOverlay = forwardRef(
({ isOpen, children, portal = true, ...props }: Props, ref: ForwardedRef<HTMLDivElement>) => {
const [isMounted, setElement] = useModalAnimation(isOpen)
({ isOpen, children, animationVariant, close, ...props }: Props, ref: ForwardedRef<HTMLDivElement>) => {
const [isMounted, setElement] = useModalAnimation(isOpen, animationVariant)
const dialog = useDialogStore({
open: isMounted,
setOpen: (open) => {
if (!open) {
close()
}
},
})
if (!isMounted) {
@@ -23,16 +29,14 @@ const ModalOverlay = forwardRef(
return (
<Dialog
tabIndex={0}
className="h-full w-full"
backdropProps={{
className: '!z-modal',
style: {
position: !portal ? 'absolute' : 'fixed',
},
}}
className="fixed top-0 left-0 z-modal h-full w-full"
ref={mergeRefs([setElement, ref])}
store={dialog}
portal={portal}
getPersistentElements={() =>
Array.from(document.querySelectorAll('[role="dialog"], [role="alertdialog"]')).map((el) => {
return el.parentElement ? el.parentElement : el
})
}
{...props}
>
{children}
@@ -1,49 +1,88 @@
import { useLifecycleAnimation } from '@/Hooks/useLifecycleAnimation'
import { useMediaQuery, MutuallyExclusiveMediaQueryBreakpoints } from '@/Hooks/useMediaQuery'
export const useModalAnimation = (isOpen: boolean) => {
export const IosModalAnimationEasing = 'cubic-bezier(.36,.66,.04,1)'
const Animations = {
vertical: {
enter: {
keyframes: [
{
transform: 'translateY(100%)',
},
{
transform: 'translateY(0)',
},
],
transformOrigin: 'bottom',
},
exit: {
keyframes: [
{
transform: 'translateY(0)',
},
{
transform: 'translateY(100%)',
},
],
transformOrigin: 'bottom',
},
},
horizontal: {
enter: {
keyframes: [
{
transform: 'translateX(100%)',
},
{
transform: 'translateX(0)',
},
],
transformOrigin: 'right',
},
exit: {
keyframes: [
{
transform: 'translateX(0)',
},
{
transform: 'translateX(100%)',
},
],
transformOrigin: 'right',
},
},
}
export const useModalAnimation = (isOpen: boolean, variant: 'horizontal' | 'vertical' = 'vertical') => {
const isMobileScreen = useMediaQuery(MutuallyExclusiveMediaQueryBreakpoints.sm)
return useLifecycleAnimation(
{
open: isOpen,
enter: {
keyframes: [
{
transform: 'translateY(100%)',
},
{
transform: 'translateY(0)',
},
],
keyframes: Animations[variant].enter.keyframes,
options: {
easing: 'cubic-bezier(.36,.66,.04,1)',
easing: IosModalAnimationEasing,
duration: 250,
fill: 'forwards',
},
initialStyle: {
transformOrigin: 'bottom',
transformOrigin: Animations[variant].enter.transformOrigin,
},
},
enterCallback: (element) => {
element.scrollTop = 0
},
exit: {
keyframes: [
{
transform: 'translateY(0)',
},
{
transform: 'translateY(100%)',
},
],
keyframes: Animations[variant].exit.keyframes,
options: {
easing: 'cubic-bezier(.36,.66,.04,1)',
easing: IosModalAnimationEasing,
duration: 250,
fill: 'forwards',
},
initialStyle: {
transformOrigin: 'bottom',
transformOrigin: Animations[variant].exit.transformOrigin,
},
},
},
@@ -860,6 +860,7 @@ class NoteView extends AbstractComponent<NoteViewProps, State> {
/>
<ChangeEditorButton
viewControllerManager={this.viewControllerManager}
noteViewController={this.controller}
onClickPreprocessing={this.ensureNoteIsInsertedBeforeUIAction}
/>
<PinNoteButton
@@ -36,6 +36,7 @@ import MenuItem from '../Menu/MenuItem'
import ModalOverlay from '../Modal/ModalOverlay'
import SuperExportModal from './SuperExportModal'
import { useApplication } from '../ApplicationProvider'
import { MutuallyExclusiveMediaQueryBreakpoints } from '@/Hooks/useMediaQuery'
const iconSize = MenuItemIconSize
const iconClassDanger = `text-danger mr-2 ${iconSize}`
@@ -134,7 +135,10 @@ const NotesOptions = ({
}, [application, notes])
const closeMenuAndToggleNotesList = useCallback(() => {
toggleAppPane(AppPaneId.Items)
const isMobileScreen = matchMedia(MutuallyExclusiveMediaQueryBreakpoints.sm).matches
if (isMobileScreen) {
toggleAppPane(AppPaneId.Items)
}
closeMenu()
}, [closeMenu, toggleAppPane])
@@ -409,7 +413,7 @@ const NotesOptions = ({
</>
) : null}
<ModalOverlay isOpen={showExportSuperModal}>
<ModalOverlay isOpen={showExportSuperModal} close={closeSuperExportModal}>
<SuperExportModal exportNotes={downloadSelectedItems} close={closeSuperExportModal} />
</ModalOverlay>
</>
@@ -49,7 +49,7 @@ const NotesOptionsPanel = ({
togglePopover={toggleMenu}
anchorElement={buttonRef.current}
open={isOpen}
className="select-none md:pt-2"
className="select-none pt-2"
>
<Menu a11yLabel="Note options menu" isOpen={isOpen}>
<NotesOptions
@@ -64,7 +64,7 @@ export async function animatePaneExitTransitionOffscreenToTheRight(elementId: st
* a Daily Notebook tag from navigation whereby two pane animations are simulatensouly triggered (the items panel, then
* the editor panel), causing Safari to get tripped up.
*/
function performSafariAnimationFix(element: HTMLElement): void {
export function performSafariAnimationFix(element: HTMLElement): void {
const isSafari = /Safari/.test(navigator.userAgent) || /AppleWebKit/.test(navigator.userAgent)
if (!isSafari) {
return
@@ -36,8 +36,12 @@ const supportsPassive = (() => {
export const usePaneSwipeGesture = (
direction: 'left' | 'right',
onSwipeEnd: (element: HTMLElement) => void,
gesture: 'pan' | 'swipe' = 'pan',
options?: {
gesture?: 'swipe' | 'pan'
requiresStartFromEdge?: boolean
},
) => {
const { gesture = 'pan', requiresStartFromEdge = true } = options || {}
const application = useApplication()
const underlayElementRef = useRef<HTMLElement | null>(null)
@@ -100,10 +104,11 @@ export const usePaneSwipeGesture = (
const touch = event.touches[0]
startX = touch.clientX
if (
const isStartOutOfThreshold =
(direction === 'right' && startX > TouchStartThreshold) ||
(direction === 'left' && startX < TouchStartThreshold)
) {
if (isStartOutOfThreshold && requiresStartFromEdge) {
canceled = true
return
}
@@ -197,6 +202,10 @@ export const usePaneSwipeGesture = (
closestScrollContainer.style.overflowY = 'hidden'
}
if (document.activeElement) {
;(document.activeElement as HTMLElement).blur()
}
if (adjustedGesture === 'pan') {
const x =
direction === 'right' ? Math.max(deltaX - TouchMoveThreshold, 0) : Math.min(deltaX + TouchMoveThreshold, 0)
@@ -265,7 +274,7 @@ export const usePaneSwipeGesture = (
element.removeEventListener('touchend', touchEndListener)
disposeUnderlay()
}
}, [direction, element, isMobileScreen, onSwipeEndRef, isEnabled, adjustedGesture])
}, [direction, element, isMobileScreen, onSwipeEndRef, isEnabled, adjustedGesture, requiresStartFromEdge])
return [setElement]
}
@@ -44,7 +44,7 @@ const PermissionsModalWrapper: FunctionComponent<Props> = ({ application }) => {
}, [application, onAppStart])
return (
<ModalOverlay isOpen={!!dialog}>
<ModalOverlay isOpen={!!dialog} close={dismissPermissionsDialog}>
{dialog && (
<PermissionsModal
callback={dialog.callback}
@@ -58,12 +58,12 @@ const Credentials: FunctionComponent<Props> = ({ application }: Props) => {
Current password was set on <span className="font-bold">{passwordCreatedOn}</span>
</Text>
<Button className="mt-3 min-w-20" label="Change password" onClick={presentPasswordWizard} />
<ModalOverlay isOpen={isChangeEmailDialogOpen}>
<ModalOverlay isOpen={isChangeEmailDialogOpen} close={closeChangeEmailDialog}>
<ChangeEmail onCloseDialog={closeChangeEmailDialog} application={application} />
</ModalOverlay>
</PreferencesSegment>
</PreferencesGroup>
<ModalOverlay isOpen={shouldShowPasswordWizard}>
<ModalOverlay isOpen={shouldShowPasswordWizard} close={dismissPasswordWizard}>
<PasswordWizard application={application} dismissModal={dismissPasswordWizard} />
</ModalOverlay>
</>
@@ -110,7 +110,7 @@ const Email: FunctionComponent<Props> = ({ application }: Props) => {
<PreferencesSegment>
<Title>Email</Title>
<div>
<div className="flex items-center justify-between">
<div className="flex items-start justify-between gap-2 md:items-center">
<div className="flex flex-col">
<Subtitle>Mute sign-in notification emails</Subtitle>
{isMuteSignInEmailsFeatureAvailable ? (
@@ -132,7 +132,7 @@ const Email: FunctionComponent<Props> = ({ application }: Props) => {
)}
</div>
{isLoading ? (
<Spinner className="ml-2 flex-shrink-0" />
<Spinner className="h-5 w-5 flex-shrink-0" />
) : (
isMuteSignInEmailsFeatureAvailable && (
<Switch
@@ -143,13 +143,13 @@ const Email: FunctionComponent<Props> = ({ application }: Props) => {
)}
</div>
<HorizontalSeparator classes="my-4" />
<div className="flex items-center justify-between">
<div className="flex items-start justify-between gap-2 md:items-center">
<div className="flex flex-col">
<Subtitle>Mute marketing notification emails</Subtitle>
<Text>Disables email notifications with special deals and promotions.</Text>
</div>
{isLoading ? (
<Spinner className="ml-2 flex-shrink-0" />
<Spinner className="h-5 w-5 flex-shrink-0" />
) : (
<Switch
onChange={toggleMuteMarketingEmails}

Some files were not shown because too many files have changed in this diff Show More