Compare commits

...
Author SHA1 Message Date
StandardNotes CI cdb380dbc8 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].7
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].8
2024-04-20 10:53:36 +00:00
Aman Harwara 85d0550a20 chore: fix evernote attachment imports causing CSP issues [skip e2e] 2024-04-20 16:13:59 +05:30
Aman Harwara f7a3d493f1 Merge branch 'main' of github.com:standardnotes/app 2024-04-20 16:00:43 +05:30
Aman Harwara 8c40a8f90d chore: trigger release [skip e2e] 2024-04-20 16:00:37 +05:30
Aman Harwara 10c9acf061 fix: Fixed issue with Keep HTML imports not working 2024-04-20 16:00:22 +05:30
StandardNotes CI 7e75dc4bcf chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].6
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].7
2024-04-19 11:40:44 +00:00
Aman Harwara 4810791885 chore: trigger release [skip e2e] 2024-04-19 16:56:02 +05:30
Aman Harwara 2bc7d57235 fix: Fixed issue with some Evernote imports getting cut-off 2024-04-19 16:55:45 +05:30
StandardNotes CI 6e282c1c9a chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].6
2024-04-17 15:05:19 +00:00
Aman Harwara e0f84f23ac chore: trigger release [skip e2e] 2024-04-17 20:22:10 +05:30
Aman Harwara 9c2bf946ce Revert "chore: add and fix margins inside super note content [skip e2e]"
This reverts commit 562e1bef17.
2024-04-17 20:21:33 +05:30
StandardNotes CI b240e3a4fa chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
2024-04-17 10:16:11 +00:00
Aman Harwara 562e1bef17 chore: add and fix margins inside super note content [skip e2e] 2024-04-17 15:36:05 +05:30
Aman Harwara ec2d6c5506 chore: remove unused css [skip e2e] 2024-04-17 13:55:27 +05:30
Aman Harwara 3c6de3a6c8 chore: update colors [skip e2e] 2024-04-17 13:30:47 +05:30
StandardNotes CI c7cf2b9b91 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].4
2024-04-15 15:42:54 +00:00
Aman Harwara 32b6e97f64 chore: update colors [skip e2e] 2024-04-15 21:03:23 +05:30
Aman Harwara 896d346c27 chore: update lexical and rebuild patches (#2864) 2024-04-15 20:11:19 +05:30
StandardNotes CI eb90005939 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
2024-04-15 13:38:07 +00:00
moughxyz 14b2f916df ci: tests [skip e2e] 2024-04-15 08:28:39 -05:00
StandardNotes CI db93237d9f chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].2
2024-04-15 08:19:58 +00:00
Aman Harwara 795ca5b883 refactor: super date time plugin [skip e2e] 2024-04-15 13:41:07 +05:30
StandardNotes CI cf60d8f0d5 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
2024-04-14 07:54:26 +00:00
Aman Harwara 129c44310c chore: show sync error in footer corner instead of toast notification [skip e2e] 2024-04-14 13:13:44 +05:30
StandardNotes CI 9a4e6102b9 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].9
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].0
2024-04-13 07:19:15 +00:00
Aman Harwara 269db1a5b1 chore: trigger release [skip e2e] 2024-04-13 12:40:25 +05:30
Aman Harwara 9800570fb1 feat: Added "Upload file" option to the super note Insert menu and block picker menu (#2869) 2024-04-13 12:39:38 +05:30
moughxyz 7f1baf52c1 fix: Fixes an issue where importing an encrypted backup file may not successfully complete in some cases 2024-04-12 11:40:33 -05:00
StandardNotes CI 241a973880 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2024-04-11 07:59:11 +00:00
Aman Harwara d983d6854c chore: add css variable for preferences background color [skip e2e] 2024-04-11 13:20:13 +05:30
StandardNotes CI 432ebbdfbe chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2024-04-11 07:43:32 +00:00
Aman Harwara 933d2309f4 chore: update colors [skip e2e] 2024-04-11 13:02:09 +05:30
Aman Harwara 6fc2b25e14 chore: update colors 2024-04-11 00:40:00 +05:30
StandardNotes CI d4f9a18135 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].8
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2024-04-10 18:14:48 +00:00
Aman Harwara 65c16ed246 chore: rename theme [skip e2e] 2024-04-10 23:18:26 +05:30
Aman Harwara 852ddc677d chore: fix some issues with theme [skip e2e] 2024-04-10 23:13:48 +05:30
StandardNotes CI 17458b61d1 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].2
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].4
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].2
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].7
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].9
 - @standardnotes/[email protected]
2024-04-10 10:57:00 +00:00
Aman Harwara 03da45537d chore: add proton theme [skip e2e] 2024-04-10 16:18:01 +05:30
StandardNotes CI 7332f10ff4 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].6
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].8
 - @standardnotes/[email protected]
2024-04-08 16:02:49 +00:00
Mo b6eda707bd chore: auth verification (#2867) [skip e2e] 2024-04-08 21:22:56 +05:30
StandardNotes CI a37e095907 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2024-04-04 11:31:41 +00:00
Aman Harwara ef81e9d97e chore: fix super block dragging indicator line not disappearing correctly (#2866) [skip e2e] 2024-04-04 16:53:02 +05:30
Aman Harwara c6a31f209d chore: fix tags list not scrolling correctly when dragging a tag (#2865) 2024-04-04 16:52:41 +05:30
StandardNotes CI 292153333f chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].9
2024-04-01 14:12:16 +00:00
Aman Harwara 6cef772212 refactor: link editor [skip e2e] 2024-04-01 19:33:12 +05:30
Aman Harwara f4ab9b0d97 chore: fix keyboard nav on super toolbar [skip e2e] 2024-04-01 18:26:49 +05:30
Aman Harwara 73eba38c14 fix: Fixed super note "Table of contents" not working on mobile 2024-04-01 17:34:03 +05:30
Micah Zoltu 4b19076f9b chore: fix webapp build instructions (#2856) 2024-03-31 15:43:09 +05:30
StandardNotes CI da9c412703 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].8
2024-03-28 08:36:52 +00:00
Aman Harwara 9784ff0173 chore: fix PDF export CSP error on webapp [skip e2e] 2024-03-28 13:57:49 +05:30
StandardNotes CI d8df19b0bd chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].7
2024-03-27 16:11:01 +00:00
Aman Harwara da16a779ce chore: dedupe embedded file ids when exporting a super note [skip e2e] 2024-03-27 21:31:56 +05:30
StandardNotes CI 473fb6be53 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].7
 - @standardnotes/[email protected].6
2024-03-26 15:48:01 +00:00
Aman Harwara d5cac8e32d chore: trigger release [skip e2e] 2024-03-26 21:08:45 +05:30
Aman Harwara 45ca99c627 fix: Fixed issue with system color scheme on mobile 2024-03-26 21:08:04 +05:30
StandardNotes CI 8a6e123fbc chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
2024-03-26 13:35:04 +00:00
Karol Sójko 914c444349 chore(web): remove unused setting for failed email backups - skip e2e (#2863)
* chore(web): remove unused setting for failed email backups

* adjust tests
2024-03-26 14:25:19 +01:00
StandardNotes CI bf8ad837ef 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].6
 - @standardnotes/[email protected].4
2024-03-22 19:21:42 +00:00
Aman Harwara e3ae421f7c chore: fix issues with multiple non-layerable themes being active on color scheme change [skip e2e] 2024-03-23 00:43:02 +05:30
Aman Harwara a162294d04 chore: fix csp errors in dev server 2024-03-23 00:25:02 +05:30
Aman Harwara f0613e7af5 chore: fix theme not toggling when changing auto-light/dark theme selection 2024-03-23 00:24:41 +05:30
Aman Harwara 7967ddead7 fix: Fixed issue with system color scheme not being applied correctly on start 2024-03-23 00:01:54 +05:30
StandardNotes CI f868989bb5 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
2024-03-22 13:59:33 +00:00
Aman Harwara eb5e5e11e0 chore: fix dark mode keyboard shortcut [skip e2e] 2024-03-22 19:19:23 +05:30
StandardNotes CI 0d1831ea49 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].2
2024-03-22 08:55:23 +00:00
Karol Sójko a22000242a chore: block disabling 2FA if U2F authenticators present - skip e2e (#2862)
* chore: block disabling 2FA if U2F authenticators present

* chore: remove the u2f wrapper component

* chore: adjust fetching 2fa status

* chore: fix property name

* chore: remove wrapper
2024-03-22 09:45:15 +01:00
Karol Sójko 4068d5b480 chore(web): prevent from adding U2F if 2FA is not enabled (#2861) 2024-03-20 15:31:40 +01:00
StandardNotes CI fd0d08c153 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
2024-03-14 15:03:24 +00:00
Aman Harwara adef74f23f chore: release [skip e2e] 2024-03-14 20:24:30 +05:30
Aman Harwara b90c725f96 chore: remove unused patch [skip e2] 2024-03-14 20:13:15 +05:30
Aman Harwara 74b459cae0 chore: update changelog [skip e2e] 2024-03-14 20:12:23 +05:30
Aman Harwara c1e9a7fe40 chore: revert changes [skip e2e] 2024-03-14 20:11:17 +05:30
Aman Harwara edf8de4468 Revert "chore: sync lexical with patch [skip e2e]"
This reverts commit 45c661c136.
2024-03-14 20:10:55 +05:30
Aman Harwara bb81c8acfc Revert "feat: Markdown text is now parsed correctly when pasted"
This reverts commit c5ca4a9857.
2024-03-14 20:10:35 +05:30
StandardNotes CI 414a2dda0b chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].0
2024-03-14 13:47:55 +00:00
Aman Harwara 45c661c136 chore: sync lexical with patch [skip e2e] 2024-03-14 19:09:00 +05:30
Aman Harwara c5ca4a9857 feat: Markdown text is now parsed correctly when pasted 2024-03-14 19:01:39 +05:30
StandardNotes CI 56813909bb chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].4
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
 - @standardnotes/[email protected]
2024-03-14 10:21:01 +00:00
Karol Sójkoandmoughxyz 7a4172ad11 chore: add e2e test for refresh tokens cooldown period - skip e2e (#2860)
* chore: add e2e test for refresh tokens cooldown period

* chore: fix refreshing session in e2e

* chore: fix session refresh cooldown test

* chore: fix e2e test

* Add dropped response simulation test

---------

Co-authored-by: moughxyz <[email protected]>
2024-03-14 11:11:17 +01:00
StandardNotes CI e97e788b5f chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].4
 - @standardnotes/[email protected]
2024-03-13 18:48:39 +00:00
Aman Harwara 20a9ef0dad chore: stable scrollbar gutters on windows [skip e2e] 2024-03-14 00:09:50 +05:30
Aman Harwara 670f27b9cd chore: update changelog [skip ci] 2024-03-12 19:41:34 +05:30
Aman Harwara f45d854006 chore: update changelog [skip e2e] 2024-03-12 19:34:38 +05:30
StandardNotes CI 5043b4c110 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2024-03-12 11:30:04 +00:00
Aman Harwara e1981f4eae chore: add "Clear formatting" option to text format menu and make selected options clearer by showing check if selected [skip e2e] 2024-03-12 16:51:08 +05:30
Aman Harwara 3fb6d10a7f chore: fix issue with super toolbar menu items not working on mobile [skip e2e] 2024-03-12 16:33:52 +05:30
StandardNotes CI 498cd1b27c chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2024-03-11 19:25:47 +00:00
moughxyz 6d872cd45a fix: use API v0 for Android [skip e2e] 2024-03-11 14:15:15 -05:00
StandardNotes CI 9e2d496804 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2024-03-11 10:50:23 +00:00
Karol Sójko 7febc1fac6 chore: fix calling subscription settings endpoints - skip e2e 2024-03-11 11:40:58 +01:00
StandardNotes CI 6f571936c3 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2024-03-11 10:21:38 +00:00
Karol Sójko 065f3562f4 chore: fix muting sign in emails - skip e2e (#2859)
* chore: fix muting sign in emails - skip e2e

* chore: fix api version for e2e tests
2024-03-11 11:12:23 +01:00
StandardNotes CI 41f542d1c5 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2024-03-08 05:54:51 +00:00
Aman Harwara 94840a7afb chore: trigger release [skip e2e] 2024-03-08 11:15:18 +05:30
StandardNotes CI fb19b37d5b chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
 - @standardnotes/[email protected]
2024-03-07 15:40:21 +00:00
Mo 3b2f761661 fix: use API v0 on iOS (#2858) [skip e2e] 2024-03-07 09:29:46 -06:00
StandardNotes CI b28b59e4a0 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2024-03-07 12:38:06 +00:00
Karol Sójko 9238759d38 chore: add building web app image - skip e2e (#2857) 2024-03-07 13:28:13 +01:00
StandardNotes CI d2404ba276 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].9
 - @standardnotes/[email protected]
2024-03-06 11:43:03 +00:00
Karol Sójko 7301acd36c chore: fix e2e tests for no cookie support setup - skip e2e 2024-03-06 12:33:30 +01:00
StandardNotes CI bf997e356c chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
2024-03-05 14:20:50 +00:00
Aman Harwara c151c3c6d7 chore: fix issue with sibling lists not being merged correctly in Super [skip e2e] 2024-03-05 19:39:49 +05:30
StandardNotes CI 6af7f66f46 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].2
 - @standardnotes/[email protected].8
 - @standardnotes/[email protected].2
 - @standardnotes/[email protected]
2024-03-05 08:34:17 +00:00
Karol Sójko 1d0e8cfc7f chore: switch api to cookie based sessions - skip e2e (#2854)
* chore: switch api to cookie based sessions - skip e2e

* chore: fix legacy http service to include api version in requests - skip e2e
2024-03-05 09:25:53 +01:00
StandardNotes CI f3f5c63185 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].7
 - @standardnotes/[email protected]
2024-03-01 13:51:47 +00:00
Karol Sójko 1651a24370 chore: replace sncrypto web with a published version - skip e2e 2024-03-01 14:41:58 +01:00
StandardNotes CI e6b6674407 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].6
 - @standardnotes/[email protected]
2024-03-01 13:21:26 +00:00
Karol Sójko 7aaa92ba57 chore: publish sncrypto web to npm - skip e2e 2024-03-01 14:12:53 +01:00
StandardNotes CI 612df361d7 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
 - @standardnotes/[email protected]
2024-03-01 11:51:21 +00:00
Karol Sójko d23f3ba4d5 chore: add required deps for snjs binary - skip e2e 2024-03-01 12:42:41 +01:00
StandardNotes CI 43dd51b7e5 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].4
 - @standardnotes/[email protected].9
2024-03-01 11:37:17 +00:00
Karol Sójko e4d85d50c9 chore: add snjs binary - skip e2e 2024-03-01 12:28:42 +01:00
StandardNotes CI 4bd44c3a6a chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].8
2024-02-28 15:48:02 +00:00
Aman Harwara c42bfdcd2a refactor: hide unnecessary header options on mobile when typing in super note [skip e2e] 2024-02-28 21:09:14 +05:30
Aman Harwara 89491870eb chore: make super item links wrap like normal links 2024-02-28 21:05:06 +05:30
StandardNotes CI f797128e32 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
 - @standardnotes/[email protected].7
2024-02-26 15:32:04 +00:00
Aman Harwara 2acb7e3808 chore: fix font size preference not working for blockquotes [skip e2e] 2024-02-26 20:53:12 +05:30
Aman Harwara f8e3c4bbbd chore: editor header not working correctly in focus mode on macOS [skip e2e] 2024-02-26 20:46:38 +05:30
Aman Harwara 06ca2bdedb chore: ignore editor width setting if window size is too small 2024-02-26 20:40:41 +05:30
Aman Harwara f9be8b3d03 chore: add extra bottom padding to plain editor on iOS so text doesn't get hidden by floating butotn 2024-02-26 20:21:41 +05:30
Karol Sójko fa2543b188 chore(snjs): fix session invalidation test 2024-02-26 10:35:11 +01:00
StandardNotes CI eb8794823c chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
 - @standardnotes/[email protected].2
 - @standardnotes/[email protected].1
 - @standardnotes/[email protected].6
2024-02-22 12:03:51 +00:00
Karol Sójko d4c94a67e2 chore(api): add sending cookie credentials with requests - skip e2e 2024-02-22 12:54:31 +01:00
Aman Harwara 3e78e6faf1 chore: update ios ci 2024-02-21 19:12:05 +05:30
StandardNotes CI c85d7b556c chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
2024-02-21 08:16:14 +00:00
Aman Harwara 5d14abe9d7 chore: fix ios ci [skip e2e] 2024-02-21 13:37:08 +05:30
StandardNotes CI 8aa4729233 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].4
2024-02-20 19:36:52 +00:00
Mo 8e11227e8e refactor: exclude protected previews from linking search (#2853) 2024-02-20 13:08:16 -06:00
StandardNotes CI d6cb83a2bb chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
 - @standardnotes/[email protected].3
2024-02-19 17:12:02 +00:00
Mo a455304a7a refactor: remove application mfa helper functions (#2852) 2024-02-19 10:43:05 -06:00
moughxyz 74da19add8 Update readme [no ci] 2024-02-19 10:32:14 -06:00
StandardNotes CI e46f1b3c39 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].2
2024-02-18 10:28:20 +00:00
Aman Harwara 84ee718330 Merge branch 'main' of github.com:standardnotes/app 2024-02-18 15:29:40 +05:30
Aman Harwara 015660a2b3 chore: update ios dependencies [skip e2e] 2024-02-18 15:29:11 +05:30
StandardNotes CI 9a7c947038 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
2024-02-18 09:18:53 +00:00
Aman Harwara 7c0bf5a9a7 chore: fix ios deploy [skip e2e] 2024-02-18 14:35:19 +05:30
StandardNotes CI d13b51697e chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].0
2024-02-17 14:19:16 +00:00
Aman Harwara 47745cb79c feat: Added "Find in note" option to note options/context menu for Super notes 2024-02-17 19:20:16 +05:30
StandardNotes CI 85c401fa6e chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].2
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].0
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].0
 - @standardnotes/[email protected].0
 - @standardnotes/[email protected].0
 - @standardnotes/[email protected].0
2024-02-17 09:13:16 +00:00
Aman Harwara 79374f017b chore: fix Open button in duplicate toast not working correctly on mobile [skip e2e] 2024-02-17 14:34:29 +05:30
Aman Harwara bfbf9ab8ce feat: Themes and appeareance settings are now local to your device and not synced (#2847) 2024-02-17 14:23:37 +05:30
Aman Harwara 3d1a038393 chore: fix issue on macOS where close button on preferences header is not fully clickable 2024-02-17 14:23:00 +05:30
StandardNotes CI 8542616a5d chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
2024-02-15 15:42:08 +00:00
Aman Harwara 51600f15ad chore: update lexical patch to fix autocorrect issue on android [skip e2e] 2024-02-15 21:01:50 +05:30
StandardNotes CI 306a5e93b8 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
 - @standardnotes/[email protected].4
2024-02-08 15:20:34 +00:00
moughxyz 77f692fe66 fix: Fixed an issue where signing into a self-hosted account would not correctly load subscription status 2024-02-08 08:51:18 -06:00
StandardNotes CI 32c5005b0c chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
2024-02-07 07:52:55 +00:00
Aman Harwara 1ebe036149 chore: fix issue with PDF viewer on desktop [skip e2e] 2024-02-07 13:14:05 +05:30
StandardNotes CI 6893f02652 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected].9
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].2
2024-02-07 06:15:33 +00:00
Aman Harwara 345d188fbb chore: update lexical patch [skip e2e] 2024-02-07 11:36:23 +05:30
Aman Harwara c3dad5ae8d chore: fix UI freezing when loading a Super note with a lot of list items [skip e2e] 2024-02-07 00:49:50 +05:30
StandardNotes CI 11a17086ac chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected].8
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
2024-02-05 08:38:59 +00:00
Aman Harwara 5f6c8dedf2 chore: fix clipper width & height issues [skip e2e] 2024-02-05 13:59:58 +05:30
StandardNotes CI e81cf1f1e0 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected].7
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].0
2024-02-03 09:14:11 +00:00
Aman Harwara 2d168a68cf feat: Improved keyboard navigation for tags and smart views. Tags can now be expanded/closed using left and right arrow keys. 2024-02-03 14:13:29 +05:30
StandardNotes CI 700a9953dc chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected].6
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
2024-02-02 17:34:52 +00:00
Aman Harwara 8f15652ba1 chore: fix super table-related styling and deletion behaviors [skip e2e] 2024-02-02 22:55:24 +05:30
Mo 1c6b31f643 chore: update csp (#2826) 2024-02-02 10:59:58 -06:00
StandardNotes CI 19a515ee6e chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].5
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].0
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].0
 - @standardnotes/[email protected].0
 - @standardnotes/[email protected].3
 - @standardnotes/[email protected].0
2024-02-02 16:08:18 +00:00
Aman Harwara 16c21f40d1 chore: fix super menu contrast issues [skip e2e] 2024-02-02 21:29:04 +05:30
Aman Harwara 4c21a61dcf chore: show selected tag options by default when opening display options menu 2024-02-02 20:57:00 +05:30
Aman Harwara cfde0fd9b8 chore: fix tag context menu not closing on delete 2024-02-02 16:20:40 +05:30
Aman Harwara 28825bc2ee refactor: list keyboard navigation 2024-02-02 16:12:36 +05:30
Aman Harwara b07abaa5df feat: Added search bar to navigation panel for searching tags and smart views (#2815) 2024-02-02 16:07:55 +05:30
StandardNotes CI 50c1977410 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected].4
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].3
2024-01-31 18:15:42 +00:00
Aman Harwara 703a2898ac chore: fix freezing when pressing Enter after adding an inline link to a Super note [skip e2e] 2024-01-31 23:33:56 +05:30
StandardNotes CI e1905fa121 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected].3
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].2
 - @standardnotes/[email protected].2
2024-01-30 13:36:38 +00:00
Aman Harwara 9c73a23ca0 chore: fix modal header on small window size on macOS [skip e2e] 2024-01-30 18:57:38 +05:30
Aman Harwara 2950aaa09a fix: Changed shortcut for Replace on macOS to Opt+Cmd+F 2024-01-30 18:44:56 +05:30
Aman Harwara 3c0370aae2 chore: fix macOS issue with top-half of toolbar buttons dragging the window 2024-01-30 18:09:37 +05:30
Aman Harwara 9854ca898e chore: upgrade lexical 2024-01-29 13:20:04 +05:30
StandardNotes CI 8977da3960 chore(release): publish
- @standardnotes/[email protected]
 - @standardnotes/[email protected].2
 - @standardnotes/[email protected]
 - @standardnotes/[email protected]
 - @standardnotes/[email protected].1
 - @standardnotes/[email protected].1
2024-01-28 17:31:50 +00:00
Aman Harwara 5a49005e79 fix: The shortcut for displaying the keyboard shortcut help dialog has been changed to Ctrl + / 2024-01-28 22:32:32 +05:30
StandardNotes CI 865ebe58d3 chore(release): publish
- @standardnotes/[email protected].1
 - @standardnotes/[email protected]
2024-01-27 11:30:57 +00:00
Aman Harwara 07cba245c1 chore: fix issue on mac where app is not draggable if locked [skip e2e] 2024-01-27 16:51:38 +05:30
290 changed files with 5895 additions and 3824 deletions
+5 -5
View File
@@ -77,8 +77,12 @@ jobs:
- name: Export version from package.json
run:
echo "PACKAGE_VERSION=$(grep '"version"' ../web/package.json | cut -d '"' -f 4 | cut -d "-" -f 1)" >> $GITHUB_ENV
- name: Ruby Setup for Fastlane
uses: ruby/setup-ruby@v1
with:
working-directory: 'packages/mobile'
- name: Install dependencies
run: yarn install --immutable && yarn install:pods
run: yarn install --immutable && bundle install && yarn install:pods
- run: yarn build:mobile
- name: Set ssh connection to Github
uses: webfactory/[email protected]
@@ -86,10 +90,6 @@ jobs:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Export Apple AppStore Connect API key
run: echo "${{ secrets.APPSTORE_CONNECT_KEY }}" > ios/Authkey.p8
- name: Ruby Setup for Fastlane
uses: ruby/setup-ruby@v1
with:
working-directory: 'packages/mobile'
- name: Setup fastlane
uses: maierj/[email protected]
env:
+38
View File
@@ -103,6 +103,44 @@ jobs:
trigger_workflow: true
wait_workflow: true
publish-web-docker:
name: Build and publish Docker Image for Web App
needs: [e2e-base, e2e-vaults]
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
token: ${{ secrets.CI_PAT_TOKEN }}
fetch-depth: 0
- name: Set up Node
uses: actions/setup-node@v3
with:
registry-url: 'https://registry.npmjs.org'
node-version-file: '.nvmrc'
cache: 'yarn'
- name: Install dependencies
run: yarn install --immutable
- name: Build
run: yarn build:web
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Publish SNJS Docker image for E2E testing
run: |
cd packages/web
docker build -t standardnotes/web:${{ github.sha }} .
docker tag standardnotes/web:${{ github.sha }} standardnotes/web:latest
docker push standardnotes/web:${{ github.sha }}
docker push standardnotes/web:latest
publish:
name: Publish to NPM
needs: [e2e-base, e2e-vaults]
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,77 +0,0 @@
diff --git a/LexicalClipboard.dev.js b/LexicalClipboard.dev.js
index 08c80def0bffdd5011948bc73733af51a2f95b3f..b8d5a467b6964b88002d1f0c2ce5d5974755ec75 100644
--- a/LexicalClipboard.dev.js
+++ b/LexicalClipboard.dev.js
@@ -102,7 +102,7 @@ function $insertDataTransferForPlainText(dataTransfer, selection) {
* @param selection the selection to use as the insertion point for the content in the DataTransfer object
* @param editor the LexicalEditor the content is being inserted into.
*/
-function $insertDataTransferForRichText(dataTransfer, selection, editor) {
+function $insertDataTransferForRichText(dataTransfer, selection, editor, event) {
const lexicalString = dataTransfer.getData('application/x-lexical-editor');
if (lexicalString) {
try {
@@ -115,15 +115,18 @@ function $insertDataTransferForRichText(dataTransfer, selection, editor) {
// Fail silently.
}
}
- const htmlString = dataTransfer.getData('text/html');
- if (htmlString) {
- try {
- const parser = new DOMParser();
- const dom = parser.parseFromString(htmlString, 'text/html');
- const nodes = html.$generateNodesFromDOM(editor, dom);
- return $insertGeneratedNodes(editor, nodes, selection);
- } catch (_unused2) {
- // Fail silently.
+ const shouldIgnoreHTML = event && event.inputType === 'insertReplacementText' && dataTransfer.types.includes('text/plain');
+ if (!shouldIgnoreHTML) {
+ const htmlString = dataTransfer.getData('text/html');
+ if (htmlString) {
+ try {
+ const parser = new DOMParser();
+ const dom = parser.parseFromString(htmlString, 'text/html');
+ const nodes = html.$generateNodesFromDOM(editor, dom);
+ return $insertGeneratedNodes(editor, nodes, selection);
+ } catch (_unused2) {
+ // Fail silently.
+ }
}
}
diff --git a/LexicalClipboard.prod.js b/LexicalClipboard.prod.js
index 217fed14ce25e926fafe748de74a9cc2597854ea..0489348de734c563e7befc0af50aaefec74ccd98 100644
--- a/LexicalClipboard.prod.js
+++ b/LexicalClipboard.prod.js
@@ -7,11 +7,11 @@
'use strict';var f=require("@lexical/html"),m=require("@lexical/selection"),q=require("@lexical/utils"),r=require("lexical");function t(a){let b=new URLSearchParams;b.append("code",a);for(let c=1;c<arguments.length;c++)b.append("v",arguments[c]);throw Error(`Minified Lexical error #${a}; visit https://lexical.dev/docs/error?${b} for the full message or `+"use the non-minified dev environment for full errors and additional helpful warnings.");}
let u="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement;function v(a){let b=r.$getSelection();if(null==b)throw Error("Expected valid LexicalSelection");return r.$isRangeSelection(b)&&b.isCollapsed()||0===b.getNodes().length?"":f.$generateHtmlFromNodes(a,b)}
function w(a){let b=r.$getSelection();if(null==b)throw Error("Expected valid LexicalSelection");return r.$isRangeSelection(b)&&b.isCollapsed()||0===b.getNodes().length?null:JSON.stringify(x(a,b))}function y(a,b,c){a.dispatchCommand(r.SELECTION_INSERT_CLIPBOARD_NODES_COMMAND,{nodes:b,selection:c})||c.insertNodes(b)}
-function z(a,b,c,d=[]){let e=null!=b?c.isSelected(b):!0,h=r.$isElementNode(c)&&c.excludeFromCopy("html");var g=c;if(null!==b){var k=m.$cloneWithProperties(c);g=k=r.$isTextNode(k)&&null!=b?m.$sliceSelectedTextNodeContent(b,k):k}let n=r.$isElementNode(g)?g.getChildren():[];var l=g;k=l.exportJSON();var p=l.constructor;k.type!==p.getType()&&t(58,p.name);r.$isElementNode(l)&&(Array.isArray(k.children)||t(59,p.name));r.$isTextNode(g)&&(g=g.__text,0<g.length?k.text=g:e=!1);for(g=0;g<n.length;g++)l=n[g],
-p=z(a,b,l,k.children),!e&&r.$isElementNode(c)&&p&&c.extractWithChild(l,b,"clone")&&(e=!0);if(e&&!h)d.push(k);else if(Array.isArray(k.children))for(a=0;a<k.children.length;a++)d.push(k.children[a]);return e}function x(a,b){let c=[],d=r.$getRoot().getChildren();for(let e=0;e<d.length;e++)z(a,b,d[e],c);return{namespace:a._config.namespace,nodes:c}}function A(a){let b=[];for(let c=0;c<a.length;c++){let d=r.$parseSerializedNode(a[c]);r.$isTextNode(d)&&m.$addNodeStyle(d);b.push(d)}return b}let B=null;
-function C(a,b){var c=u?(a._window||window).getSelection():null;if(!c)return!1;var d=c.anchorNode;c=c.focusNode;if(null!==d&&null!==c&&!r.isSelectionWithinEditor(a,d,c))return!1;b.preventDefault();b=b.clipboardData;d=r.$getSelection();if(null===b||null===d)return!1;c=v(a);a=w(a);let e="";null!==d&&(e=d.getTextContent());null!==c&&b.setData("text/html",c);null!==a&&b.setData("application/x-lexical-editor",a);b.setData("text/plain",e);return!0}exports.$generateJSONFromSelectedNodes=x;
+function z(a,b,c,e=[]){let g=null!=b?c.isSelected(b):!0,k=r.$isElementNode(c)&&c.excludeFromCopy("html");var d=c;if(null!==b){var h=m.$cloneWithProperties(c);d=h=r.$isTextNode(h)&&null!=b?m.$sliceSelectedTextNodeContent(b,h):h}let n=r.$isElementNode(d)?d.getChildren():[];var l=d;h=l.exportJSON();var p=l.constructor;h.type!==p.getType()&&t(58,p.name);r.$isElementNode(l)&&(Array.isArray(h.children)||t(59,p.name));r.$isTextNode(d)&&(d=d.__text,0<d.length?h.text=d:g=!1);for(d=0;d<n.length;d++)l=n[d],
+p=z(a,b,l,h.children),!g&&r.$isElementNode(c)&&p&&c.extractWithChild(l,b,"clone")&&(g=!0);if(g&&!k)e.push(h);else if(Array.isArray(h.children))for(a=0;a<h.children.length;a++)e.push(h.children[a]);return g}function x(a,b){let c=[],e=r.$getRoot().getChildren();for(let g=0;g<e.length;g++)z(a,b,e[g],c);return{namespace:a._config.namespace,nodes:c}}function A(a){let b=[];for(let c=0;c<a.length;c++){let e=r.$parseSerializedNode(a[c]);r.$isTextNode(e)&&m.$addNodeStyle(e);b.push(e)}return b}let B=null;
+function C(a,b){var c=u?(a._window||window).getSelection():null;if(!c)return!1;var e=c.anchorNode;c=c.focusNode;if(null!==e&&null!==c&&!r.isSelectionWithinEditor(a,e,c))return!1;b.preventDefault();b=b.clipboardData;e=r.$getSelection();if(null===b||null===e)return!1;c=v(a);a=w(a);let g="";null!==e&&(g=e.getTextContent());null!==c&&b.setData("text/html",c);null!==a&&b.setData("application/x-lexical-editor",a);b.setData("text/plain",g);return!0}exports.$generateJSONFromSelectedNodes=x;
exports.$generateNodesFromSerializedNodes=A;exports.$getHtmlContent=v;exports.$getLexicalContent=w;exports.$insertDataTransferForPlainText=function(a,b){a=a.getData("text/plain")||a.getData("text/uri-list");null!=a&&b.insertRawText(a)};
-exports.$insertDataTransferForRichText=function(a,b,c){var d=a.getData("application/x-lexical-editor");if(d)try{let h=JSON.parse(d);if(h.namespace===c._config.namespace&&Array.isArray(h.nodes)){let g=A(h.nodes);return y(c,g,b)}}catch(h){}if(d=a.getData("text/html"))try{var e=(new DOMParser).parseFromString(d,"text/html");let h=f.$generateNodesFromDOM(c,e);return y(c,h,b)}catch(h){}a=a.getData("text/plain")||a.getData("text/uri-list");if(null!=a)if(r.$isRangeSelection(b))for(a=a.split(/(\r?\n|\t)/),
-""===a[a.length-1]&&a.pop(),c=0;c<a.length;c++)e=a[c],"\n"===e||"\r\n"===e?b.insertParagraph():"\t"===e?b.insertNodes([r.$createTabNode()]):b.insertText(e);else b.insertRawText(a)};exports.$insertGeneratedNodes=y;
-exports.copyToClipboard=async function(a,b){if(null!==B)return!1;if(null!==b)return new Promise(g=>{a.update(()=>{g(C(a,b))})});var c=a.getRootElement();let d=null==a._window?window.document:a._window.document,e=u?(a._window||window).getSelection():null;if(null===c||null===e)return!1;let h=d.createElement("span");h.style.cssText="position: fixed; top: -1000px;";h.append(d.createTextNode("#"));c.append(h);c=new Range;c.setStart(h,0);c.setEnd(h,1);e.removeAllRanges();e.addRange(c);return new Promise(g=>
-{let k=a.registerCommand(r.COPY_COMMAND,n=>{q.objectKlassEquals(n,ClipboardEvent)&&(k(),null!==B&&(window.clearTimeout(B),B=null),g(C(a,n)));return!0},r.COMMAND_PRIORITY_CRITICAL);B=window.setTimeout(()=>{k();B=null;g(!1)},50);d.execCommand("copy");h.remove()})}
+exports.$insertDataTransferForRichText=function(a,b,c,e){let g=a.getData("application/x-lexical-editor");if(g)try{let d=JSON.parse(g);if(d.namespace===c._config.namespace&&Array.isArray(d.nodes)){let h=A(d.nodes);return y(c,h,b)}}catch(d){}if(!e||"insertReplacementText"!==e.inputType||!a.types.includes("text/plain"))if(e=a.getData("text/html"))try{var k=(new DOMParser).parseFromString(e,"text/html");let d=f.$generateNodesFromDOM(c,k);return y(c,d,b)}catch(d){}a=a.getData("text/plain")||a.getData("text/uri-list");
+if(null!=a)if(r.$isRangeSelection(b))for(a=a.split(/(\r?\n|\t)/),""===a[a.length-1]&&a.pop(),c=0;c<a.length;c++)k=a[c],"\n"===k||"\r\n"===k?b.insertParagraph():"\t"===k?b.insertNodes([r.$createTabNode()]):b.insertText(k);else b.insertRawText(a)};exports.$insertGeneratedNodes=y;
+exports.copyToClipboard=async function(a,b){if(null!==B)return!1;if(null!==b)return new Promise(d=>{a.update(()=>{d(C(a,b))})});var c=a.getRootElement();let e=null==a._window?window.document:a._window.document,g=u?(a._window||window).getSelection():null;if(null===c||null===g)return!1;let k=e.createElement("span");k.style.cssText="position: fixed; top: -1000px;";k.append(e.createTextNode("#"));c.append(k);c=new Range;c.setStart(k,0);c.setEnd(k,1);g.removeAllRanges();g.addRange(c);return new Promise(d=>
+{let h=a.registerCommand(r.COPY_COMMAND,n=>{q.objectKlassEquals(n,ClipboardEvent)&&(h(),null!==B&&(window.clearTimeout(B),B=null),d(C(a,n)));return!0},r.COMMAND_PRIORITY_CRITICAL);B=window.setTimeout(()=>{h();B=null;d(!1)},50);e.execCommand("copy");k.remove()})}
diff --git a/clipboard.d.ts b/clipboard.d.ts
index 99e2138389b64d298a1330d7b354ba87d2e6f24e..83250a4c2049f94e08bfdfc757e03e8a85a08dd4 100644
--- a/clipboard.d.ts
+++ b/clipboard.d.ts
@@ -44,7 +44,7 @@ export declare function $insertDataTransferForPlainText(dataTransfer: DataTransf
* @param selection the selection to use as the insertion point for the content in the DataTransfer object
* @param editor the LexicalEditor the content is being inserted into.
*/
-export declare function $insertDataTransferForRichText(dataTransfer: DataTransfer, selection: BaseSelection, editor: LexicalEditor): void;
+export declare function $insertDataTransferForRichText(dataTransfer: DataTransfer, selection: BaseSelection, editor: LexicalEditor, event?: InputEvent): void;
/**
* Inserts Lexical nodes into the editor using different strategies depending on
* some simple selection-based heuristics. If you're looking for a generic way to
@@ -0,0 +1,128 @@
diff --git a/LexicalClipboard.dev.js b/LexicalClipboard.dev.js
index 9e72de896d52d9c342e520a79b05dbf8fd9bcee3..512433f1dac08f8b8bd261315827924020035f85 100644
--- a/LexicalClipboard.dev.js
+++ b/LexicalClipboard.dev.js
@@ -102,7 +102,7 @@ function $insertDataTransferForPlainText(dataTransfer, selection) {
* @param selection the selection to use as the insertion point for the content in the DataTransfer object
* @param editor the LexicalEditor the content is being inserted into.
*/
-function $insertDataTransferForRichText(dataTransfer, selection, editor) {
+function $insertDataTransferForRichText(dataTransfer, selection, editor, event) {
const lexicalString = dataTransfer.getData('application/x-lexical-editor');
if (lexicalString) {
try {
@@ -115,15 +115,18 @@ function $insertDataTransferForRichText(dataTransfer, selection, editor) {
// Fail silently.
}
}
- const htmlString = dataTransfer.getData('text/html');
- if (htmlString) {
- try {
- const parser = new DOMParser();
- const dom = parser.parseFromString(htmlString, 'text/html');
- const nodes = html.$generateNodesFromDOM(editor, dom);
- return $insertGeneratedNodes(editor, nodes, selection);
- } catch (_unused2) {
- // Fail silently.
+ const shouldIgnoreHTML = event && event.inputType === 'insertReplacementText' && dataTransfer.types.includes('text/plain');
+ if (!shouldIgnoreHTML) {
+ const htmlString = dataTransfer.getData('text/html');
+ if (htmlString) {
+ try {
+ const parser = new DOMParser();
+ const dom = parser.parseFromString(htmlString, 'text/html');
+ const nodes = html.$generateNodesFromDOM(editor, dom);
+ return $insertGeneratedNodes(editor, nodes, selection);
+ } catch (_unused2) {
+ // Fail silently.
+ }
}
}
diff --git a/LexicalClipboard.dev.mjs b/LexicalClipboard.dev.mjs
index e5b580537bc7b3ce1bd9546f6858988b4f58003f..d43c3be65b908bc4c6ba1b5c95100fa1739765f7 100644
--- a/LexicalClipboard.dev.mjs
+++ b/LexicalClipboard.dev.mjs
@@ -100,7 +100,7 @@ function $insertDataTransferForPlainText(dataTransfer, selection) {
* @param selection the selection to use as the insertion point for the content in the DataTransfer object
* @param editor the LexicalEditor the content is being inserted into.
*/
-function $insertDataTransferForRichText(dataTransfer, selection, editor) {
+function $insertDataTransferForRichText(dataTransfer, selection, editor, event) {
const lexicalString = dataTransfer.getData('application/x-lexical-editor');
if (lexicalString) {
try {
@@ -113,15 +113,18 @@ function $insertDataTransferForRichText(dataTransfer, selection, editor) {
// Fail silently.
}
}
- const htmlString = dataTransfer.getData('text/html');
- if (htmlString) {
- try {
- const parser = new DOMParser();
- const dom = parser.parseFromString(htmlString, 'text/html');
- const nodes = $generateNodesFromDOM(editor, dom);
- return $insertGeneratedNodes(editor, nodes, selection);
- } catch (_unused2) {
- // Fail silently.
+ const shouldIgnoreHTML = event && event.inputType === 'insertReplacementText' && dataTransfer.types.includes('text/plain');
+ if (!shouldIgnoreHTML) {
+ const htmlString = dataTransfer.getData('text/html');
+ if (htmlString) {
+ try {
+ const parser = new DOMParser();
+ const dom = parser.parseFromString(htmlString, 'text/html');
+ const nodes = $generateNodesFromDOM(editor, dom);
+ return $insertGeneratedNodes(editor, nodes, selection);
+ } catch (_unused2) {
+ // Fail silently.
+ }
}
}
diff --git a/LexicalClipboard.prod.js b/LexicalClipboard.prod.js
index 494ab7597d14cfa0386f7bad294c567a8f0110c1..f60bbdf361d44ed078cf9cb403251f8976d665f9 100644
--- a/LexicalClipboard.prod.js
+++ b/LexicalClipboard.prod.js
@@ -7,11 +7,11 @@
'use strict';var f=require("@lexical/html"),m=require("@lexical/selection"),q=require("@lexical/utils"),r=require("lexical");function t(a){let b=new URLSearchParams;b.append("code",a);for(let c=1;c<arguments.length;c++)b.append("v",arguments[c]);throw Error(`Minified Lexical error #${a}; visit https://lexical.dev/docs/error?${b} for the full message or `+"use the non-minified dev environment for full errors and additional helpful warnings.");}
let u="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement;function v(a){let b=r.$getSelection();if(null==b)throw Error("Expected valid LexicalSelection");return r.$isRangeSelection(b)&&b.isCollapsed()||0===b.getNodes().length?"":f.$generateHtmlFromNodes(a,b)}
function w(a){let b=r.$getSelection();if(null==b)throw Error("Expected valid LexicalSelection");return r.$isRangeSelection(b)&&b.isCollapsed()||0===b.getNodes().length?null:JSON.stringify(x(a,b))}function y(a,b,c){a.dispatchCommand(r.SELECTION_INSERT_CLIPBOARD_NODES_COMMAND,{nodes:b,selection:c})||c.insertNodes(b)}
-function z(a,b,c,d=[]){let e=null!==b?c.isSelected(b):!0,h=r.$isElementNode(c)&&c.excludeFromCopy("html");var g=c;if(null!==b){var k=m.$cloneWithProperties(c);g=k=r.$isTextNode(k)&&null!==b?m.$sliceSelectedTextNodeContent(b,k):k}let n=r.$isElementNode(g)?g.getChildren():[];var l=g;k=l.exportJSON();var p=l.constructor;k.type!==p.getType()&&t(58,p.name);r.$isElementNode(l)&&(Array.isArray(k.children)||t(59,p.name));r.$isTextNode(g)&&(g=g.__text,0<g.length?k.text=g:e=!1);for(g=0;g<n.length;g++)l=n[g],
-p=z(a,b,l,k.children),!e&&r.$isElementNode(c)&&p&&c.extractWithChild(l,b,"clone")&&(e=!0);if(e&&!h)d.push(k);else if(Array.isArray(k.children))for(a=0;a<k.children.length;a++)d.push(k.children[a]);return e}function x(a,b){let c=[],d=r.$getRoot().getChildren();for(let e=0;e<d.length;e++)z(a,b,d[e],c);return{namespace:a._config.namespace,nodes:c}}function A(a){let b=[];for(let c=0;c<a.length;c++){let d=r.$parseSerializedNode(a[c]);r.$isTextNode(d)&&m.$addNodeStyle(d);b.push(d)}return b}let B=null;
-function C(a,b){var c=u?(a._window||window).getSelection():null;if(!c)return!1;var d=c.anchorNode;c=c.focusNode;if(null!==d&&null!==c&&!r.isSelectionWithinEditor(a,d,c))return!1;b.preventDefault();b=b.clipboardData;d=r.$getSelection();if(null===b||null===d)return!1;c=v(a);a=w(a);let e="";null!==d&&(e=d.getTextContent());null!==c&&b.setData("text/html",c);null!==a&&b.setData("application/x-lexical-editor",a);b.setData("text/plain",e);return!0}exports.$generateJSONFromSelectedNodes=x;
+function z(a,b,c,e=[]){let g=null!==b?c.isSelected(b):!0,k=r.$isElementNode(c)&&c.excludeFromCopy("html");var d=c;if(null!==b){var h=m.$cloneWithProperties(c);d=h=r.$isTextNode(h)&&null!==b?m.$sliceSelectedTextNodeContent(b,h):h}let n=r.$isElementNode(d)?d.getChildren():[];var l=d;h=l.exportJSON();var p=l.constructor;h.type!==p.getType()&&t(58,p.name);r.$isElementNode(l)&&(Array.isArray(h.children)||t(59,p.name));r.$isTextNode(d)&&(d=d.__text,0<d.length?h.text=d:g=!1);for(d=0;d<n.length;d++)l=n[d],
+p=z(a,b,l,h.children),!g&&r.$isElementNode(c)&&p&&c.extractWithChild(l,b,"clone")&&(g=!0);if(g&&!k)e.push(h);else if(Array.isArray(h.children))for(a=0;a<h.children.length;a++)e.push(h.children[a]);return g}function x(a,b){let c=[],e=r.$getRoot().getChildren();for(let g=0;g<e.length;g++)z(a,b,e[g],c);return{namespace:a._config.namespace,nodes:c}}function A(a){let b=[];for(let c=0;c<a.length;c++){let e=r.$parseSerializedNode(a[c]);r.$isTextNode(e)&&m.$addNodeStyle(e);b.push(e)}return b}let B=null;
+function C(a,b){var c=u?(a._window||window).getSelection():null;if(!c)return!1;var e=c.anchorNode;c=c.focusNode;if(null!==e&&null!==c&&!r.isSelectionWithinEditor(a,e,c))return!1;b.preventDefault();b=b.clipboardData;e=r.$getSelection();if(null===b||null===e)return!1;c=v(a);a=w(a);let g="";null!==e&&(g=e.getTextContent());null!==c&&b.setData("text/html",c);null!==a&&b.setData("application/x-lexical-editor",a);b.setData("text/plain",g);return!0}exports.$generateJSONFromSelectedNodes=x;
exports.$generateNodesFromSerializedNodes=A;exports.$getHtmlContent=v;exports.$getLexicalContent=w;exports.$insertDataTransferForPlainText=function(a,b){a=a.getData("text/plain")||a.getData("text/uri-list");null!=a&&b.insertRawText(a)};
-exports.$insertDataTransferForRichText=function(a,b,c){var d=a.getData("application/x-lexical-editor");if(d)try{let h=JSON.parse(d);if(h.namespace===c._config.namespace&&Array.isArray(h.nodes)){let g=A(h.nodes);return y(c,g,b)}}catch(h){}if(d=a.getData("text/html"))try{var e=(new DOMParser).parseFromString(d,"text/html");let h=f.$generateNodesFromDOM(c,e);return y(c,h,b)}catch(h){}a=a.getData("text/plain")||a.getData("text/uri-list");if(null!=a)if(r.$isRangeSelection(b))for(a=a.split(/(\r?\n|\t)/),
-""===a[a.length-1]&&a.pop(),c=0;c<a.length;c++)e=a[c],"\n"===e||"\r\n"===e?b.insertParagraph():"\t"===e?b.insertNodes([r.$createTabNode()]):b.insertText(e);else b.insertRawText(a)};exports.$insertGeneratedNodes=y;
-exports.copyToClipboard=async function(a,b){if(null!==B)return!1;if(null!==b)return new Promise(g=>{a.update(()=>{g(C(a,b))})});var c=a.getRootElement();let d=null==a._window?window.document:a._window.document,e=u?(a._window||window).getSelection():null;if(null===c||null===e)return!1;let h=d.createElement("span");h.style.cssText="position: fixed; top: -1000px;";h.append(d.createTextNode("#"));c.append(h);c=new Range;c.setStart(h,0);c.setEnd(h,1);e.removeAllRanges();e.addRange(c);return new Promise(g=>
-{let k=a.registerCommand(r.COPY_COMMAND,n=>{q.objectKlassEquals(n,ClipboardEvent)&&(k(),null!==B&&(window.clearTimeout(B),B=null),g(C(a,n)));return!0},r.COMMAND_PRIORITY_CRITICAL);B=window.setTimeout(()=>{k();B=null;g(!1)},50);d.execCommand("copy");h.remove()})}
+exports.$insertDataTransferForRichText=function(a,b,c,e){let g=a.getData("application/x-lexical-editor");if(g)try{let d=JSON.parse(g);if(d.namespace===c._config.namespace&&Array.isArray(d.nodes)){let h=A(d.nodes);return y(c,h,b)}}catch(d){}if(!e||"insertReplacementText"!==e.inputType||!a.types.includes("text/plain"))if(e=a.getData("text/html"))try{var k=(new DOMParser).parseFromString(e,"text/html");let d=f.$generateNodesFromDOM(c,k);return y(c,d,b)}catch(d){}a=a.getData("text/plain")||a.getData("text/uri-list");
+if(null!=a)if(r.$isRangeSelection(b))for(a=a.split(/(\r?\n|\t)/),""===a[a.length-1]&&a.pop(),c=0;c<a.length;c++)k=a[c],"\n"===k||"\r\n"===k?b.insertParagraph():"\t"===k?b.insertNodes([r.$createTabNode()]):b.insertText(k);else b.insertRawText(a)};exports.$insertGeneratedNodes=y;
+exports.copyToClipboard=async function(a,b){if(null!==B)return!1;if(null!==b)return new Promise(d=>{a.update(()=>{d(C(a,b))})});var c=a.getRootElement();let e=null==a._window?window.document:a._window.document,g=u?(a._window||window).getSelection():null;if(null===c||null===g)return!1;let k=e.createElement("span");k.style.cssText="position: fixed; top: -1000px;";k.append(e.createTextNode("#"));c.append(k);c=new Range;c.setStart(k,0);c.setEnd(k,1);g.removeAllRanges();g.addRange(c);return new Promise(d=>
+{let h=a.registerCommand(r.COPY_COMMAND,n=>{q.objectKlassEquals(n,ClipboardEvent)&&(h(),null!==B&&(window.clearTimeout(B),B=null),d(C(a,n)));return!0},r.COMMAND_PRIORITY_CRITICAL);B=window.setTimeout(()=>{h();B=null;d(!1)},50);e.execCommand("copy");k.remove()})}
diff --git a/LexicalClipboard.prod.mjs b/LexicalClipboard.prod.mjs
index e975808a82c8e8bd1b7dc80867ba65bec9a96fa9..3c7ab354805312e4b432c7e1f27e8095faf07162 100644
--- a/LexicalClipboard.prod.mjs
+++ b/LexicalClipboard.prod.mjs
@@ -4,4 +4,4 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
-import{$generateHtmlFromNodes as e,$generateNodesFromDOM as t}from"@lexical/html";import{$addNodeStyle as n,$cloneWithProperties as o,$sliceSelectedTextNodeContent as l}from"@lexical/selection";import{objectKlassEquals as r}from"@lexical/utils";import{$getSelection as i,$isRangeSelection as a,$createTabNode as c,SELECTION_INSERT_CLIPBOARD_NODES_COMMAND as s,$getRoot as u,$parseSerializedNode as d,$isTextNode as f,COPY_COMMAND as p,COMMAND_PRIORITY_CRITICAL as m,isSelectionWithinEditor as h,$isElementNode as x}from"lexical";var g=function(e){const t=new URLSearchParams;t.append("code",e);for(let e=1;e<arguments.length;e++)t.append("v",arguments[e]);throw Error(`Minified Lexical error #${e}; visit https://lexical.dev/docs/error?${t} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)};const w="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,y=e=>w?(e||window).getSelection():null;function v(t){const n=i();if(null==n)throw Error("Expected valid LexicalSelection");return a(n)&&n.isCollapsed()||0===n.getNodes().length?"":e(t,n)}function D(e){const t=i();if(null==t)throw Error("Expected valid LexicalSelection");return a(t)&&t.isCollapsed()||0===t.getNodes().length?null:JSON.stringify(T(e,t))}function C(e,t){const n=e.getData("text/plain")||e.getData("text/uri-list");null!=n&&t.insertRawText(n)}function E(e,n,o){const l=e.getData("application/x-lexical-editor");if(l)try{const e=JSON.parse(l);if(e.namespace===o._config.namespace&&Array.isArray(e.nodes)){return N(o,_(e.nodes),n)}}catch(e){}const r=e.getData("text/html");if(r)try{const e=(new DOMParser).parseFromString(r,"text/html");return N(o,t(o,e),n)}catch(e){}const i=e.getData("text/plain")||e.getData("text/uri-list");if(null!=i)if(a(n)){const e=i.split(/(\r?\n|\t)/);""===e[e.length-1]&&e.pop();for(let t=0;t<e.length;t++){const o=e[t];"\n"===o||"\r\n"===o?n.insertParagraph():"\t"===o?n.insertNodes([c()]):n.insertText(o)}}else n.insertRawText(i)}function N(e,t,n){e.dispatchCommand(s,{nodes:t,selection:n})||n.insertNodes(t)}function S(e,t,n,r=[]){let i=null===t||n.isSelected(t);const a=x(n)&&n.excludeFromCopy("html");let c=n;if(null!==t){let e=o(n);e=f(e)&&null!==t?l(t,e):e,c=e}const s=x(c)?c.getChildren():[],u=function(e){const t=e.exportJSON(),n=e.constructor;if(t.type!==n.getType()&&g(58,n.name),x(e)){const e=t.children;Array.isArray(e)||g(59,n.name)}return t}(c);if(f(c)){const e=c.__text;e.length>0?u.text=e:i=!1}for(let o=0;o<s.length;o++){const l=s[o],r=S(e,t,l,u.children);!i&&x(n)&&r&&n.extractWithChild(l,t,"clone")&&(i=!0)}if(i&&!a)r.push(u);else if(Array.isArray(u.children))for(let e=0;e<u.children.length;e++){const t=u.children[e];r.push(t)}return i}function T(e,t){const n=[],o=u().getChildren();for(let l=0;l<o.length;l++){S(e,t,o[l],n)}return{namespace:e._config.namespace,nodes:n}}function _(e){const t=[];for(let o=0;o<e.length;o++){const l=e[o],r=d(l);f(r)&&n(r),t.push(r)}return t}let A=null;async function R(e,t){if(null!==A)return!1;if(null!==t)return new Promise(((n,o)=>{e.update((()=>{n(P(e,t))}))}));const n=e.getRootElement(),o=null==e._window?window.document:e._window.document,l=y(e._window);if(null===n||null===l)return!1;const i=o.createElement("span");i.style.cssText="position: fixed; top: -1000px;",i.append(o.createTextNode("#")),n.append(i);const a=new Range;return a.setStart(i,0),a.setEnd(i,1),l.removeAllRanges(),l.addRange(a),new Promise(((t,n)=>{const l=e.registerCommand(p,(n=>(r(n,ClipboardEvent)&&(l(),null!==A&&(window.clearTimeout(A),A=null),t(P(e,n))),!0)),m);A=window.setTimeout((()=>{l(),A=null,t(!1)}),50),o.execCommand("copy"),i.remove()}))}function P(e,t){const n=y(e._window);if(!n)return!1;const o=n.anchorNode,l=n.focusNode;if(null!==o&&null!==l&&!h(e,o,l))return!1;t.preventDefault();const r=t.clipboardData,a=i();if(null===r||null===a)return!1;const c=v(e),s=D(e);let u="";return null!==a&&(u=a.getTextContent()),null!==c&&r.setData("text/html",c),null!==s&&r.setData("application/x-lexical-editor",s),r.setData("text/plain",u),!0}export{T as $generateJSONFromSelectedNodes,_ as $generateNodesFromSerializedNodes,v as $getHtmlContent,D as $getLexicalContent,C as $insertDataTransferForPlainText,E as $insertDataTransferForRichText,N as $insertGeneratedNodes,R as copyToClipboard};
+import{$generateHtmlFromNodes as e,$generateNodesFromDOM as t}from"@lexical/html";import{$addNodeStyle as n,$cloneWithProperties as l,$sliceSelectedTextNodeContent as o}from"@lexical/selection";import{objectKlassEquals as r}from"@lexical/utils";import{$getSelection as i,$isRangeSelection as a,$createTabNode as c,SELECTION_INSERT_CLIPBOARD_NODES_COMMAND as s,$getRoot as u,$parseSerializedNode as d,$isTextNode as p,COPY_COMMAND as f,COMMAND_PRIORITY_CRITICAL as m,isSelectionWithinEditor as h,$isElementNode as x}from"lexical";var g=function(e){const t=new URLSearchParams;t.append("code",e);for(let e=1;e<arguments.length;e++)t.append("v",arguments[e]);throw Error(`Minified Lexical error #${e}; visit https://lexical.dev/docs/error?${t} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)};const w="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,y=e=>w?(e||window).getSelection():null;function v(t){const n=i();if(null==n)throw Error("Expected valid LexicalSelection");return a(n)&&n.isCollapsed()||0===n.getNodes().length?"":e(t,n)}function D(e){const t=i();if(null==t)throw Error("Expected valid LexicalSelection");return a(t)&&t.isCollapsed()||0===t.getNodes().length?null:JSON.stringify(S(e,t))}function C(e,t){const n=e.getData("text/plain")||e.getData("text/uri-list");null!=n&&t.insertRawText(n)}function T(e,n,l,o){const r=e.getData("application/x-lexical-editor");if(r)try{const e=JSON.parse(r);if(e.namespace===l._config.namespace&&Array.isArray(e.nodes)){return E(l,R(e.nodes),n)}}catch(e){}if(!(o&&"insertReplacementText"===o.inputType&&e.types.includes("text/plain"))){const o=e.getData("text/html");if(o)try{const e=(new DOMParser).parseFromString(o,"text/html");return E(l,t(l,e),n)}catch(e){}}const i=e.getData("text/plain")||e.getData("text/uri-list");if(null!=i)if(a(n)){const e=i.split(/(\r?\n|\t)/);""===e[e.length-1]&&e.pop();for(let t=0;t<e.length;t++){const l=e[t];"\n"===l||"\r\n"===l?n.insertParagraph():"\t"===l?n.insertNodes([c()]):n.insertText(l)}}else n.insertRawText(i)}function E(e,t,n){e.dispatchCommand(s,{nodes:t,selection:n})||n.insertNodes(t)}function N(e,t,n,r=[]){let i=null===t||n.isSelected(t);const a=x(n)&&n.excludeFromCopy("html");let c=n;if(null!==t){let e=l(n);e=p(e)&&null!==t?o(t,e):e,c=e}const s=x(c)?c.getChildren():[],u=function(e){const t=e.exportJSON(),n=e.constructor;if(t.type!==n.getType()&&g(58,n.name),x(e)){const e=t.children;Array.isArray(e)||g(59,n.name)}return t}(c);if(p(c)){const e=c.__text;e.length>0?u.text=e:i=!1}for(let l=0;l<s.length;l++){const o=s[l],r=N(e,t,o,u.children);!i&&x(n)&&r&&n.extractWithChild(o,t,"clone")&&(i=!0)}if(i&&!a)r.push(u);else if(Array.isArray(u.children))for(let e=0;e<u.children.length;e++){const t=u.children[e];r.push(t)}return i}function S(e,t){const n=[],l=u().getChildren();for(let o=0;o<l.length;o++){N(e,t,l[o],n)}return{namespace:e._config.namespace,nodes:n}}function R(e){const t=[];for(let l=0;l<e.length;l++){const o=e[l],r=d(o);p(r)&&n(r),t.push(r)}return t}let _=null;async function A(e,t){if(null!==_)return!1;if(null!==t)return new Promise(((n,l)=>{e.update((()=>{n(P(e,t))}))}));const n=e.getRootElement(),l=null==e._window?window.document:e._window.document,o=y(e._window);if(null===n||null===o)return!1;const i=l.createElement("span");i.style.cssText="position: fixed; top: -1000px;",i.append(l.createTextNode("#")),n.append(i);const a=new Range;return a.setStart(i,0),a.setEnd(i,1),o.removeAllRanges(),o.addRange(a),new Promise(((t,n)=>{const o=e.registerCommand(f,(n=>(r(n,ClipboardEvent)&&(o(),null!==_&&(window.clearTimeout(_),_=null),t(P(e,n))),!0)),m);_=window.setTimeout((()=>{o(),_=null,t(!1)}),50),l.execCommand("copy"),i.remove()}))}function P(e,t){const n=y(e._window);if(!n)return!1;const l=n.anchorNode,o=n.focusNode;if(null!==l&&null!==o&&!h(e,l,o))return!1;t.preventDefault();const r=t.clipboardData,a=i();if(null===r||null===a)return!1;const c=v(e),s=D(e);let u="";return null!==a&&(u=a.getTextContent()),null!==c&&r.setData("text/html",c),null!==s&&r.setData("application/x-lexical-editor",s),r.setData("text/plain",u),!0}export{S as $generateJSONFromSelectedNodes,R as $generateNodesFromSerializedNodes,v as $getHtmlContent,D as $getLexicalContent,C as $insertDataTransferForPlainText,T as $insertDataTransferForRichText,E as $insertGeneratedNodes,A as copyToClipboard};
diff --git a/clipboard.d.ts b/clipboard.d.ts
index 99e2138389b64d298a1330d7b354ba87d2e6f24e..83250a4c2049f94e08bfdfc757e03e8a85a08dd4 100644
--- a/clipboard.d.ts
+++ b/clipboard.d.ts
@@ -44,7 +44,7 @@ export declare function $insertDataTransferForPlainText(dataTransfer: DataTransf
* @param selection the selection to use as the insertion point for the content in the DataTransfer object
* @param editor the LexicalEditor the content is being inserted into.
*/
-export declare function $insertDataTransferForRichText(dataTransfer: DataTransfer, selection: BaseSelection, editor: LexicalEditor): void;
+export declare function $insertDataTransferForRichText(dataTransfer: DataTransfer, selection: BaseSelection, editor: LexicalEditor, event?: InputEvent): void;
/**
* Inserts Lexical nodes into the editor using different strategies depending on
* some simple selection-based heuristics. If you're looking for a generic way to
@@ -1,26 +0,0 @@
diff --git a/LexicalRichText.dev.js b/LexicalRichText.dev.js
index 235657f94e5563d9be091677ec30a2814bc9fdcf..778c7a77da5d5ab04c3cc5d13a1d6c1f4e781864 100644
--- a/LexicalRichText.dev.js
+++ b/LexicalRichText.dev.js
@@ -458,7 +458,7 @@ function registerRichText(editor) {
}
const dataTransfer = eventOrText.dataTransfer;
if (dataTransfer != null) {
- clipboard.$insertDataTransferForRichText(dataTransfer, selection, editor);
+ clipboard.$insertDataTransferForRichText(dataTransfer, selection, editor, eventOrText);
} else if (lexical.$isRangeSelection(selection)) {
const data = eventOrText.data;
if (data) {
diff --git a/LexicalRichText.prod.js b/LexicalRichText.prod.js
index 796f509fe353577592040c0bcd31e4d0155eb661..a91ec007ab7fd4f50e21dda262151b95441a5212 100644
--- a/LexicalRichText.prod.js
+++ b/LexicalRichText.prod.js
@@ -18,7 +18,7 @@ function H(b){let a=null;b instanceof DragEvent?a=b.dataTransfer:b instanceof Cl
function I(b){var a=k.$getSelection();if(!k.$isRangeSelection(a))return!1;let d=new Set;a=a.getNodes();for(let m=0;m<a.length;m++){var e=a[m],f=e.getKey();d.has(f)||(e=h.$getNearestBlockElementAncestorOrThrow(e),f=e.getKey(),e.canIndent()&&!d.has(f)&&(d.add(f),b(e)))}return 0<d.size}function J(b){b=k.$getNearestNodeFromDOMNode(b);return k.$isDecoratorNode(b)}exports.$createHeadingNode=E;exports.$createQuoteNode=z;exports.$isHeadingNode=function(b){return b instanceof B};
exports.$isQuoteNode=function(b){return b instanceof x};exports.DRAG_DROP_PASTE=w;exports.HeadingNode=B;exports.QuoteNode=x;exports.eventFiles=H;
exports.registerRichText=function(b){return h.mergeRegister(b.registerCommand(k.CLICK_COMMAND,()=>{const a=k.$getSelection();return k.$isNodeSelection(a)?(a.clear(),!0):!1},0),b.registerCommand(k.DELETE_CHARACTER_COMMAND,a=>{const d=k.$getSelection();if(!k.$isRangeSelection(d))return!1;d.deleteCharacter(a);return!0},k.COMMAND_PRIORITY_EDITOR),b.registerCommand(k.DELETE_WORD_COMMAND,a=>{const d=k.$getSelection();if(!k.$isRangeSelection(d))return!1;d.deleteWord(a);return!0},k.COMMAND_PRIORITY_EDITOR),
-b.registerCommand(k.DELETE_LINE_COMMAND,a=>{const d=k.$getSelection();if(!k.$isRangeSelection(d))return!1;d.deleteLine(a);return!0},k.COMMAND_PRIORITY_EDITOR),b.registerCommand(k.CONTROLLED_TEXT_INSERTION_COMMAND,a=>{const d=k.$getSelection();if("string"===typeof a)k.$INTERNAL_isPointSelection(d)&&d.insertText(a);else{if(!k.$INTERNAL_isPointSelection(d))return!1;const e=a.dataTransfer;null!=e?c.$insertDataTransferForRichText(e,d,b):k.$isRangeSelection(d)&&(a=a.data)&&d.insertText(a)}return!0},k.COMMAND_PRIORITY_EDITOR),
+b.registerCommand(k.DELETE_LINE_COMMAND,a=>{const d=k.$getSelection();if(!k.$isRangeSelection(d))return!1;d.deleteLine(a);return!0},k.COMMAND_PRIORITY_EDITOR),b.registerCommand(k.CONTROLLED_TEXT_INSERTION_COMMAND,a=>{const d=k.$getSelection();if("string"===typeof a)k.$INTERNAL_isPointSelection(d)&&d.insertText(a);else{if(!k.$INTERNAL_isPointSelection(d))return!1;const e=a.dataTransfer;null!=e?c.$insertDataTransferForRichText(e,d,b,a):k.$isRangeSelection(d)&&(a=a.data)&&d.insertText(a)}return!0},k.COMMAND_PRIORITY_EDITOR),
b.registerCommand(k.REMOVE_TEXT_COMMAND,()=>{const a=k.$getSelection();if(!k.$isRangeSelection(a))return!1;a.removeText();return!0},k.COMMAND_PRIORITY_EDITOR),b.registerCommand(k.FORMAT_TEXT_COMMAND,a=>{const d=k.$getSelection();if(!k.$isRangeSelection(d))return!1;d.formatText(a);return!0},k.COMMAND_PRIORITY_EDITOR),b.registerCommand(k.FORMAT_ELEMENT_COMMAND,a=>{var d=k.$getSelection();if(!k.$isRangeSelection(d)&&!k.$isNodeSelection(d))return!1;d=d.getNodes();for(const e of d)d=h.$findMatchingParent(e,
f=>k.$isElementNode(f)&&!f.isInline()),null!==d&&d.setFormat(a);return!0},k.COMMAND_PRIORITY_EDITOR),b.registerCommand(k.INSERT_LINE_BREAK_COMMAND,a=>{const d=k.$getSelection();if(!k.$isRangeSelection(d))return!1;d.insertLineBreak(a);return!0},k.COMMAND_PRIORITY_EDITOR),b.registerCommand(k.INSERT_PARAGRAPH_COMMAND,()=>{const a=k.$getSelection();if(!k.$isRangeSelection(a))return!1;a.insertParagraph();return!0},k.COMMAND_PRIORITY_EDITOR),b.registerCommand(k.INSERT_TAB_COMMAND,()=>{k.$insertNodes([k.$createTabNode()]);
return!0},k.COMMAND_PRIORITY_EDITOR),b.registerCommand(k.INDENT_CONTENT_COMMAND,()=>I(a=>{const d=a.getIndent();a.setIndent(d+1)}),k.COMMAND_PRIORITY_EDITOR),b.registerCommand(k.OUTDENT_CONTENT_COMMAND,()=>I(a=>{const d=a.getIndent();0<d&&a.setIndent(d-1)}),k.COMMAND_PRIORITY_EDITOR),b.registerCommand(k.KEY_ARROW_UP_COMMAND,a=>{var d=k.$getSelection();if(k.$isNodeSelection(d)&&!J(a.target)){if(a=d.getNodes(),0<a.length)return a[0].selectPrevious(),!0}else if(k.$isRangeSelection(d)&&(d=k.$getAdjacentNode(d.focus,
File diff suppressed because one or more lines are too long
@@ -1,319 +0,0 @@
diff --git a/Lexical.dev.js b/Lexical.dev.js
index 9de98c64cf4aab8b575d25d9b4b998cd29e7eb54..eae21f07cfc917ca316719b27dc54ae0635afc7c 100644
--- a/Lexical.dev.js
+++ b/Lexical.dev.js
@@ -2517,8 +2517,10 @@ function onBeforeInput(event, editor) {
}
selection.style = anchorNode.getStyle();
}
- const selectedText = selection.anchor.getNode().getTextContent();
- if (selectedText.length <= 1) {
+ const selectedNodeText = selection.anchor.getNode().getTextContent();
+ const isSelectedNodeTextOneOrLessCharacters = selectedNodeText.length <= 1;
+ const hasSelectedAllTextInNode = selection.anchor.offset === 0 && selection.focus.offset === selectedNodeText.length;
+ if (isSelectedNodeTextOneOrLessCharacters || hasSelectedAllTextInNode) {
event.preventDefault();
dispatchCommand(editor, DELETE_CHARACTER_COMMAND, true);
}
@@ -4123,11 +4125,7 @@ class LineBreakNode extends LexicalNode {
static importDOM() {
return {
br: node => {
- const parentElement = node.parentElement;
- // If the <br> is the only child, then skip including it
- let firstChild;
- let lastChild;
- if (parentElement !== null && ((firstChild = parentElement.firstChild) === node || firstChild.nextSibling === node && firstChild.nodeType === DOM_TEXT_TYPE && (firstChild.textContent || '').match(/^( |\t|\r?\n)+$/) !== null) && ((lastChild = parentElement.lastChild) === node || lastChild.previousSibling === node && lastChild.nodeType === DOM_TEXT_TYPE && (lastChild.textContent || '').match(/^( |\t|\r?\n)+$/) !== null)) {
+ if (isOnlyChild(node)) {
return null;
}
return {
@@ -4158,6 +4156,22 @@ function $createLineBreakNode() {
function $isLineBreakNode(node) {
return node instanceof LineBreakNode;
}
+function isOnlyChild(node) {
+ const parentElement = node.parentElement;
+ if (parentElement !== null) {
+ const firstChild = parentElement.firstChild;
+ if (firstChild === node || firstChild.nextSibling === node && isWhitespaceDomTextNode(firstChild)) {
+ const lastChild = parentElement.lastChild;
+ if (lastChild === node || lastChild.previousSibling === node && isWhitespaceDomTextNode(lastChild)) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+function isWhitespaceDomTextNode(node) {
+ return node.nodeType === DOM_TEXT_TYPE && /^( |\t|\r?\n)+$/.test(node.textContent || '');
+}
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -6251,7 +6265,8 @@ class RangeSelection extends INTERNAL_PointSelection {
}
return selection.insertNodes(nodes);
}
- const firstBlock = $getAncestor(this.anchor.getNode(), INTERNAL_$isBlock);
+ const firstPoint = this.isBackward() ? this.focus : this.anchor;
+ const firstBlock = $getAncestor(firstPoint.getNode(), INTERNAL_$isBlock);
const last = nodes[nodes.length - 1];
// CASE 1: insert inside a code block
diff --git a/Lexical.prod.js b/Lexical.prod.js
index 6e381d4f241e25f09a347718c83c72cb1672505d..dbed04f260ac47fd0ea20c919ac26cb5ce98cc9d 100644
--- a/Lexical.prod.js
+++ b/Lexical.prod.js
@@ -52,11 +52,11 @@ function Pd(a,b,c){let {anchorNode:d,anchorOffset:e,focusNode:f,focusOffset:g}=a
h.format=m.getFormat();h.style=m.getStyle()}else"element"!==k.type||p||(h.format=0,h.style="")}else{k=255;m=!1;n=h.getNodes();p=n.length;for(let l=0;l<p;l++){let r=n[l];if(B(r)&&(m=!0,k&=r.getFormat(),0===k))break}h.format=m?k:0}}R(b,aa,void 0)}})}
function Ad(a,b){v(b,()=>{let c=u();var d=xb(b._window);let e=nc();if(d)if(C(c)){let g=c.anchor;var f=g.getNode();"element"===g.type&&0===g.offset&&c.isCollapsed()&&!L(f)&&1===J().getChildrenSize()&&f.getTopLevelElementOrThrow().isEmpty()&&null!==e&&c.is(e)?(d.removeAllRanges(),c.dirty=!0):3!==a.detail||c.isCollapsed()||(d=c.focus.getNode(),f!==d&&(E(f)?f.select(0):f.getParentOrThrow().select(0)))}else"touch"===a.pointerType&&(f=d.anchorNode,null!==f&&(f=f.nodeType,1===f||3===f))&&(d=Qd(e,d,b,a),
Ab(d));R(b,ba,a)})}function wd(a,b){let c=a.target;a=a.pointerType;c instanceof Node&&"touch"!==a&&v(b,()=>{x(wb(c))||(Jd=!0)})}function Rd(a){if(!a.getTargetRanges)return null;a=a.getTargetRanges();return 0===a.length?null:a[0]}function Sd(a,b){return a!==b||E(a)||E(b)||!a.isToken()||!b.isToken()}
-function Cd(a,b){let c=a.inputType,d=Rd(a);"deleteCompositionText"===c||Xa&&Bb(b)||"insertCompositionText"!==c&&v(b,()=>{let e=u();if("deleteContentBackward"===c){if(null===e){var f=nc();if(!C(f))return;Ab(f.clone())}if(C(e)){ab&&H(e.anchor.key);if(229===Ed&&a.timeStamp<Dd+30&&b.isComposing()&&e.anchor.key===e.focus.key){H(null);Dd=0;setTimeout(()=>{v(b,()=>{H(null)})},30);if(C(e)){f=e.anchor.getNode();f.markDirty();e.format=f.getFormat();if(!B(f))throw Error("Anchor node must be a TextNode");e.style=
-f.getStyle()}1>=e.anchor.getNode().getTextContent().length&&(a.preventDefault(),R(b,da,!0))}else H(null),a.preventDefault(),R(b,da,!0);return}}if(C(e)){f=a.data;null!==Gd&&mc(!1,b,Gd);e.dirty&&null===Gd||!e.isCollapsed()||L(e.anchor.getNode())||null===d||e.applyDOMRange(d);Gd=null;var g=e.focus,h=e.anchor.getNode();g=g.getNode();if("insertText"===c||"insertTranspose"===c)"\n"===f?(a.preventDefault(),R(b,ea,!1)):"\n\n"===f?(a.preventDefault(),R(b,ja,void 0)):null==f&&a.dataTransfer?(f=a.dataTransfer.getData("text/plain"),
-a.preventDefault(),e.insertRawText(f)):null!=f&&Nd(e,d,f,a.timeStamp,!0)?(a.preventDefault(),R(b,ka,f)):Gd=f,Fd=a.timeStamp;else switch(a.preventDefault(),c){case "insertFromYank":case "insertFromDrop":case "insertReplacementText":R(b,ka,a);break;case "insertFromComposition":H(null);R(b,ka,a);break;case "insertLineBreak":H(null);R(b,ea,!1);break;case "insertParagraph":H(null);Kd&&!$a?(Kd=!1,R(b,ea,!1)):R(b,ja,void 0);break;case "insertFromPaste":case "insertFromPasteAsQuotation":R(b,la,a);break;case "deleteByComposition":Sd(h,
-g)&&R(b,na,a);break;case "deleteByDrag":case "deleteByCut":R(b,na,a);break;case "deleteContent":R(b,da,!1);break;case "deleteWordBackward":R(b,oa,!0);break;case "deleteWordForward":R(b,oa,!1);break;case "deleteHardLineBackward":case "deleteSoftLineBackward":R(b,pa,!0);break;case "deleteContentForward":case "deleteHardLineForward":case "deleteSoftLineForward":R(b,pa,!1);break;case "formatStrikeThrough":R(b,qa,"strikethrough");break;case "formatBold":R(b,qa,"bold");break;case "formatItalic":R(b,qa,
-"italic");break;case "formatUnderline":R(b,qa,"underline");break;case "historyUndo":R(b,ra,void 0);break;case "historyRedo":R(b,sa,void 0)}}})}
+function Cd(a,b){let c=a.inputType,d=Rd(a);"deleteCompositionText"===c||Xa&&Bb(b)||"insertCompositionText"!==c&&v(b,()=>{var e=u();if("deleteContentBackward"===c){if(null===e){var f=nc();if(!C(f))return;Ab(f.clone())}if(C(e)){ab&&H(e.anchor.key);if(229===Ed&&a.timeStamp<Dd+30&&b.isComposing()&&e.anchor.key===e.focus.key){H(null);Dd=0;setTimeout(()=>{v(b,()=>{H(null)})},30);if(C(e)){f=e.anchor.getNode();f.markDirty();e.format=f.getFormat();if(!B(f))throw Error("Anchor node must be a TextNode");e.style=
+f.getStyle()}f=e.anchor.getNode().getTextContent();e=0===e.anchor.offset&&e.focus.offset===f.length;if(1>=f.length||e)a.preventDefault(),R(b,da,!0)}else H(null),a.preventDefault(),R(b,da,!0);return}}if(C(e)){f=a.data;null!==Gd&&mc(!1,b,Gd);e.dirty&&null===Gd||!e.isCollapsed()||L(e.anchor.getNode())||null===d||e.applyDOMRange(d);Gd=null;var g=e.focus,h=e.anchor.getNode();g=g.getNode();if("insertText"===c||"insertTranspose"===c)"\n"===f?(a.preventDefault(),R(b,ea,!1)):"\n\n"===f?(a.preventDefault(),
+R(b,ja,void 0)):null==f&&a.dataTransfer?(f=a.dataTransfer.getData("text/plain"),a.preventDefault(),e.insertRawText(f)):null!=f&&Nd(e,d,f,a.timeStamp,!0)?(a.preventDefault(),R(b,ka,f)):Gd=f,Fd=a.timeStamp;else switch(a.preventDefault(),c){case "insertFromYank":case "insertFromDrop":case "insertReplacementText":R(b,ka,a);break;case "insertFromComposition":H(null);R(b,ka,a);break;case "insertLineBreak":H(null);R(b,ea,!1);break;case "insertParagraph":H(null);Kd&&!$a?(Kd=!1,R(b,ea,!1)):R(b,ja,void 0);
+break;case "insertFromPaste":case "insertFromPasteAsQuotation":R(b,la,a);break;case "deleteByComposition":Sd(h,g)&&R(b,na,a);break;case "deleteByDrag":case "deleteByCut":R(b,na,a);break;case "deleteContent":R(b,da,!1);break;case "deleteWordBackward":R(b,oa,!0);break;case "deleteWordForward":R(b,oa,!1);break;case "deleteHardLineBackward":case "deleteSoftLineBackward":R(b,pa,!0);break;case "deleteContentForward":case "deleteHardLineForward":case "deleteSoftLineForward":R(b,pa,!1);break;case "formatStrikeThrough":R(b,
+qa,"strikethrough");break;case "formatBold":R(b,qa,"bold");break;case "formatItalic":R(b,qa,"italic");break;case "formatUnderline":R(b,qa,"underline");break;case "historyUndo":R(b,ra,void 0);break;case "historyRedo":R(b,sa,void 0)}}})}
function zd(a,b){a.stopPropagation();v(b,()=>{var c=u(),d=a.data,e=Rd(a);if(null!=d&&C(c)&&Nd(c,e,d,a.timeStamp,!1)){Ld&&(Td(b,d),Ld=!1);var f=c.anchor,g=f.getNode();e=xb(b._window);if(null===e)return;let h=f.offset;if(f=Ya&&!c.isCollapsed()&&B(g)&&null!==e.anchorNode)g=g.getTextContent().slice(0,h)+d+g.getTextContent().slice(h+c.focus.offset),e=e.anchorNode,f=g===(3===e.nodeType?e.nodeValue:null);f||R(b,ka,d);d=d.length;Xa&&1<d&&"insertCompositionText"===a.inputType&&!b.isComposing()&&(c.anchor.offset-=
d);Za||$a||cb||!b.isComposing()||(Dd=0,H(null))}else mc(!1,b,null!==d?d:void 0),Ld&&(Td(b,d||void 0),Ld=!1);G();c=F();Cb(c)});Gd=null}function xd(a,b){v(b,()=>{let c=u();if(C(c)&&!b.isComposing()){let d=c.anchor,e=c.anchor.getNode();H(d.key);(a.timeStamp<Dd+30||"element"===d.type||!c.isCollapsed()||e.getFormat()!==c.format||B(e)&&e.getStyle()!==c.style)&&R(b,ka,eb)}})}
function Td(a,b){var c=a._compositionKey;H(null);if(null!==c&&null!=b){if(""===b){b=I(c);a=Xb(a.getElementByKey(c));null!==a&&null!==a.nodeValue&&B(b)&&yb(b,a.nodeValue,null,null,!0);return}if("\n"===b[b.length-1]&&(c=u(),C(c))){b=c.focus;c.anchor.set(b.key,b.offset,b.type);R(a,Ba,null);return}}mc(!0,a,b)}function yd(a,b){Xa?Ld=!0:v(b,()=>{Td(b,a.data)})}
@@ -82,134 +82,134 @@ null!==c&&(c=c.clone());Ac(this,a);let d=this.getLatest(),e=this.__key,f=a.__key
n=c.__next;null===e?k.__last=m:e.getWritable().__prev=m;k.__size++;c.__next=m;d.__next=n;d.__prev=c.__key;d.__parent=c.__parent;b&&C(f)&&(b=this.getIndexWithinParent(),ae(f,k,b+1),c=k.__key,g&&f.anchor.set(c,b+2,"element"),h&&f.focus.set(c,b+2,"element"));return a}insertBefore(a,b=!0){G();Ac(this,a);var c=this.getWritable();let d=a.getWritable(),e=d.__key;bc(d);let f=this.getPreviousSibling(),g=this.getParentOrThrow().getWritable(),h=c.__prev,k=this.getIndexWithinParent();null===f?g.__first=e:f.getWritable().__next=
e;g.__size++;c.__prev=e;d.__prev=h;d.__next=c.__key;d.__parent=c.__parent;c=u();b&&C(c)&&(b=this.getParentOrThrow(),ae(c,b,k));return a}isParentRequired(){return!1}createParentElementNode(){return ee()}selectStart(){return this.selectPrevious()}selectEnd(){return this.selectNext(0,0)}selectPrevious(a,b){G();let c=this.getPreviousSibling(),d=this.getParentOrThrow();return null===c?d.select(0,0):E(c)?c.select():B(c)?c.select(a,b):(a=c.getIndexWithinParent()+1,d.select(a,a))}selectNext(a,b){G();let c=
this.getNextSibling(),d=this.getParentOrThrow();return null===c?d.select():E(c)?c.select(0,0):B(c)?c.select(a,b):(a=c.getIndexWithinParent(),d.select(a,a))}markDirty(){this.getWritable()}}function fe(a,b,c){c=c||b.getParentOrThrow().getLastChild();let d=b;for(b=[b];d!==c;){if(!d.getNextSibling())throw Error("insertRangeAfter: lastToInsert must be a later sibling of firstToInsert");d=d.getNextSibling();b.push(d)}for(let e of b)a=a.insertAfter(e)}
-class ge extends be{static getType(){return"linebreak"}static clone(a){return new ge(a.__key)}constructor(a){super(a)}getTextContent(){return"\n"}createDOM(){return document.createElement("br")}updateDOM(){return!1}static importDOM(){return{br:a=>{let b=a.parentElement,c,d;return null!==b&&((c=b.firstChild)===a||c.nextSibling===a&&3===c.nodeType&&null!==(c.textContent||"").match(/^( |\t|\r?\n)+$/))&&((d=b.lastChild)===a||d.previousSibling===a&&3===d.nodeType&&null!==(d.textContent||"").match(/^( |\t|\r?\n)+$/))?
-null:{conversion:he,priority:0}}}}static importJSON(){return ie()}exportJSON(){return{type:"linebreak",version:1}}}function he(){return{node:ie()}}function ie(){return zc(new ge)}function Gc(a){return a instanceof ge}function je(a,b){return b&16?"code":b&128?"mark":b&32?"sub":b&64?"sup":null}function ke(a,b){return b&1?"strong":b&2?"em":"span"}
-function le(a,b,c,d,e){a=d.classList;d=pc(e,"base");void 0!==d&&a.add(...d);d=pc(e,"underlineStrikethrough");let f=!1,g=b&8&&b&4;var h=c&8&&c&4;void 0!==d&&(h?(f=!0,g||a.add(...d)):g&&a.remove(...d));for(let k in hb)h=hb[k],d=pc(e,k),void 0!==d&&(c&h?!f||"underline"!==k&&"strikethrough"!==k?(0===(b&h)||g&&"underline"===k||"strikethrough"===k)&&a.add(...d):b&h&&a.remove(...d):b&h&&a.remove(...d))}
-function me(a,b,c){let d=b.firstChild;c=c.isComposing();a+=c?db:"";if(null==d)b.textContent=a;else if(b=d.nodeValue,b!==a)if(c||Xa){c=b.length;let e=a.length,f=0,g=0;for(;f<c&&f<e&&b[f]===a[f];)f++;for(;g+f<c&&g+f<e&&b[c-g-1]===a[e-g-1];)g++;a=[f,c-f-g,a.slice(f,e-g)];let [h,k,m]=a;0!==k&&d.deleteData(h,k);d.insertData(h,m)}else d.nodeValue=a}function ne(a,b){b=document.createElement(b);b.appendChild(a);return b}
-class oe extends be{static getType(){return"text"}static clone(a){return new oe(a.__text,a.__key)}constructor(a,b){super(b);this.__text=a;this.__format=0;this.__style="";this.__detail=this.__mode=0}getFormat(){return this.getLatest().__format}getDetail(){return this.getLatest().__detail}getMode(){let a=this.getLatest();return pb[a.__mode]}getStyle(){return this.getLatest().__style}isToken(){return 1===this.getLatest().__mode}isComposing(){return this.__key===dc()}isSegmented(){return 2===this.getLatest().__mode}isDirectionless(){return 0!==
-(this.getLatest().__detail&1)}isUnmergeable(){return 0!==(this.getLatest().__detail&2)}hasFormat(a){a=hb[a];return 0!==(this.getFormat()&a)}isSimpleText(){return"text"===this.__type&&0===this.__mode}getTextContent(){return this.getLatest().__text}getFormatFlags(a,b){let c=this.getLatest().__format;return Yb(c,a,b)}createDOM(a){var b=this.__format,c=je(this,b);let d=ke(this,b),e=document.createElement(null===c?d:c),f=e;this.hasFormat("code")&&e.setAttribute("spellcheck","false");null!==c&&(f=document.createElement(d),
-e.appendChild(f));c=f;me(this.__text,c,this);a=a.theme.text;void 0!==a&&le(d,0,b,c,a);b=this.__style;""!==b&&(e.style.cssText=b);return e}updateDOM(a,b,c){let d=this.__text;var e=a.__format,f=this.__format,g=je(this,e);let h=je(this,f);var k=ke(this,e);let m=ke(this,f);if((null===g?k:g)!==(null===h?m:h))return!0;if(g===h&&k!==m)return e=b.firstChild,null==e&&q(48),a=g=document.createElement(m),me(d,a,this),c=c.theme.text,void 0!==c&&le(m,0,f,a,c),b.replaceChild(g,e),!1;k=b;null!==h&&null!==g&&(k=
-b.firstChild,null==k&&q(49));me(d,k,this);c=c.theme.text;void 0!==c&&e!==f&&le(m,e,f,k,c);f=this.__style;a.__style!==f&&(b.style.cssText=f);return!1}static importDOM(){return{"#text":()=>({conversion:pe,priority:0}),b:()=>({conversion:qe,priority:0}),code:()=>({conversion:re,priority:0}),em:()=>({conversion:re,priority:0}),i:()=>({conversion:re,priority:0}),s:()=>({conversion:re,priority:0}),span:()=>({conversion:se,priority:0}),strong:()=>({conversion:re,priority:0}),sub:()=>({conversion:re,priority:0}),
-sup:()=>({conversion:re,priority:0}),u:()=>({conversion:re,priority:0})}}static importJSON(a){let b=K(a.text);b.setFormat(a.format);b.setDetail(a.detail);b.setMode(a.mode);b.setStyle(a.style);return b}exportDOM(a){({element:a}=super.exportDOM(a));null!==a&&Ec(a)||q(132);a.style.whiteSpace="pre-wrap";this.hasFormat("bold")&&(a=ne(a,"b"));this.hasFormat("italic")&&(a=ne(a,"i"));this.hasFormat("strikethrough")&&(a=ne(a,"s"));this.hasFormat("underline")&&(a=ne(a,"u"));return{element:a}}exportJSON(){return{detail:this.getDetail(),
+class ge extends be{static getType(){return"linebreak"}static clone(a){return new ge(a.__key)}constructor(a){super(a)}getTextContent(){return"\n"}createDOM(){return document.createElement("br")}updateDOM(){return!1}static importDOM(){return{br:a=>{a:{var b=a.parentElement;if(null!==b){let c=b.firstChild;if(c===a||c.nextSibling===a&&he(c))if(b=b.lastChild,b===a||b.previousSibling===a&&he(b)){a=!0;break a}}a=!1}return a?null:{conversion:ie,priority:0}}}}static importJSON(){return je()}exportJSON(){return{type:"linebreak",
+version:1}}}function ie(){return{node:je()}}function je(){return zc(new ge)}function Gc(a){return a instanceof ge}function he(a){return 3===a.nodeType&&/^( |\t|\r?\n)+$/.test(a.textContent||"")}function ke(a,b){return b&16?"code":b&128?"mark":b&32?"sub":b&64?"sup":null}function le(a,b){return b&1?"strong":b&2?"em":"span"}
+function me(a,b,c,d,e){a=d.classList;d=pc(e,"base");void 0!==d&&a.add(...d);d=pc(e,"underlineStrikethrough");let f=!1,g=b&8&&b&4;var h=c&8&&c&4;void 0!==d&&(h?(f=!0,g||a.add(...d)):g&&a.remove(...d));for(let k in hb)h=hb[k],d=pc(e,k),void 0!==d&&(c&h?!f||"underline"!==k&&"strikethrough"!==k?(0===(b&h)||g&&"underline"===k||"strikethrough"===k)&&a.add(...d):b&h&&a.remove(...d):b&h&&a.remove(...d))}
+function ne(a,b,c){let d=b.firstChild;c=c.isComposing();a+=c?db:"";if(null==d)b.textContent=a;else if(b=d.nodeValue,b!==a)if(c||Xa){c=b.length;let e=a.length,f=0,g=0;for(;f<c&&f<e&&b[f]===a[f];)f++;for(;g+f<c&&g+f<e&&b[c-g-1]===a[e-g-1];)g++;a=[f,c-f-g,a.slice(f,e-g)];let [h,k,m]=a;0!==k&&d.deleteData(h,k);d.insertData(h,m)}else d.nodeValue=a}function oe(a,b){b=document.createElement(b);b.appendChild(a);return b}
+class pe extends be{static getType(){return"text"}static clone(a){return new pe(a.__text,a.__key)}constructor(a,b){super(b);this.__text=a;this.__format=0;this.__style="";this.__detail=this.__mode=0}getFormat(){return this.getLatest().__format}getDetail(){return this.getLatest().__detail}getMode(){let a=this.getLatest();return pb[a.__mode]}getStyle(){return this.getLatest().__style}isToken(){return 1===this.getLatest().__mode}isComposing(){return this.__key===dc()}isSegmented(){return 2===this.getLatest().__mode}isDirectionless(){return 0!==
+(this.getLatest().__detail&1)}isUnmergeable(){return 0!==(this.getLatest().__detail&2)}hasFormat(a){a=hb[a];return 0!==(this.getFormat()&a)}isSimpleText(){return"text"===this.__type&&0===this.__mode}getTextContent(){return this.getLatest().__text}getFormatFlags(a,b){let c=this.getLatest().__format;return Yb(c,a,b)}createDOM(a){var b=this.__format,c=ke(this,b);let d=le(this,b),e=document.createElement(null===c?d:c),f=e;this.hasFormat("code")&&e.setAttribute("spellcheck","false");null!==c&&(f=document.createElement(d),
+e.appendChild(f));c=f;ne(this.__text,c,this);a=a.theme.text;void 0!==a&&me(d,0,b,c,a);b=this.__style;""!==b&&(e.style.cssText=b);return e}updateDOM(a,b,c){let d=this.__text;var e=a.__format,f=this.__format,g=ke(this,e);let h=ke(this,f);var k=le(this,e);let m=le(this,f);if((null===g?k:g)!==(null===h?m:h))return!0;if(g===h&&k!==m)return e=b.firstChild,null==e&&q(48),a=g=document.createElement(m),ne(d,a,this),c=c.theme.text,void 0!==c&&me(m,0,f,a,c),b.replaceChild(g,e),!1;k=b;null!==h&&null!==g&&(k=
+b.firstChild,null==k&&q(49));ne(d,k,this);c=c.theme.text;void 0!==c&&e!==f&&me(m,e,f,k,c);f=this.__style;a.__style!==f&&(b.style.cssText=f);return!1}static importDOM(){return{"#text":()=>({conversion:qe,priority:0}),b:()=>({conversion:re,priority:0}),code:()=>({conversion:se,priority:0}),em:()=>({conversion:se,priority:0}),i:()=>({conversion:se,priority:0}),s:()=>({conversion:se,priority:0}),span:()=>({conversion:te,priority:0}),strong:()=>({conversion:se,priority:0}),sub:()=>({conversion:se,priority:0}),
+sup:()=>({conversion:se,priority:0}),u:()=>({conversion:se,priority:0})}}static importJSON(a){let b=K(a.text);b.setFormat(a.format);b.setDetail(a.detail);b.setMode(a.mode);b.setStyle(a.style);return b}exportDOM(a){({element:a}=super.exportDOM(a));null!==a&&Ec(a)||q(132);a.style.whiteSpace="pre-wrap";this.hasFormat("bold")&&(a=oe(a,"b"));this.hasFormat("italic")&&(a=oe(a,"i"));this.hasFormat("strikethrough")&&(a=oe(a,"s"));this.hasFormat("underline")&&(a=oe(a,"u"));return{element:a}}exportJSON(){return{detail:this.getDetail(),
format:this.getFormat(),mode:this.getMode(),style:this.getStyle(),text:this.getTextContent(),type:"text",version:1}}selectionTransform(){}setFormat(a){let b=this.getWritable();b.__format="string"===typeof a?hb[a]:a;return b}setDetail(a){let b=this.getWritable();b.__detail="string"===typeof a?ib[a]:a;return b}setStyle(a){let b=this.getWritable();b.__style=a;return b}toggleFormat(a){let b=this.getFormat();a=Yb(b,a,null);return this.setFormat(a)}toggleDirectionless(){let a=this.getWritable();a.__detail^=
1;return a}toggleUnmergeable(){let a=this.getWritable();a.__detail^=2;return a}setMode(a){a=ob[a];if(this.__mode===a)return this;let b=this.getWritable();b.__mode=a;return b}setTextContent(a){if(this.__text===a)return this;let b=this.getWritable();b.__text=a;return b}select(a,b){G();let c=u();var d=this.getTextContent();let e=this.__key;"string"===typeof d?(d=d.length,void 0===a&&(a=d),void 0===b&&(b=d)):b=a=0;if(C(c))d=dc(),d!==c.anchor.key&&d!==c.focus.key||H(e),c.setTextNodeRange(this,a,this,b);
-else return te(e,a,e,b,"text","text");return c}selectStart(){return this.select(0,0)}selectEnd(){let a=this.getTextContentSize();return this.select(a,a)}spliceText(a,b,c,d){let e=this.getWritable(),f=e.__text,g=c.length,h=a;0>h&&(h=g+h,0>h&&(h=0));let k=u();d&&C(k)&&(a+=g,k.setTextNodeRange(e,a,e,a));b=f.slice(0,h)+c+f.slice(h+b);e.__text=b;return e}canInsertTextBefore(){return!0}canInsertTextAfter(){return!0}splitText(...a){G();var b=this.getLatest(),c=b.getTextContent(),d=b.__key,e=dc(),f=new Set(a);
+else return ue(e,a,e,b,"text","text");return c}selectStart(){return this.select(0,0)}selectEnd(){let a=this.getTextContentSize();return this.select(a,a)}spliceText(a,b,c,d){let e=this.getWritable(),f=e.__text,g=c.length,h=a;0>h&&(h=g+h,0>h&&(h=0));let k=u();d&&C(k)&&(a+=g,k.setTextNodeRange(e,a,e,a));b=f.slice(0,h)+c+f.slice(h+b);e.__text=b;return e}canInsertTextBefore(){return!0}canInsertTextAfter(){return!0}splitText(...a){G();var b=this.getLatest(),c=b.getTextContent(),d=b.__key,e=dc(),f=new Set(a);
a=[];var g=c.length,h="";for(var k=0;k<g;k++)""!==h&&f.has(k)&&(a.push(h),h=""),h+=c[k];""!==h&&a.push(h);f=a.length;if(0===f)return[];if(a[0]===c)return[b];var m=a[0];c=b.getParentOrThrow();k=b.getFormat();let n=b.getStyle(),p=b.__detail;g=!1;b.isSegmented()?(h=K(m),h.__format=k,h.__style=n,h.__detail=p,g=!0):(h=b.getWritable(),h.__text=m);b=u();h=[h];m=m.length;for(let w=1;w<f;w++){var l=a[w],r=l.length;l=K(l).getWritable();l.__format=k;l.__style=n;l.__detail=p;let y=l.__key;r=m+r;if(C(b)){let z=
b.anchor,A=b.focus;z.key===d&&"text"===z.type&&z.offset>m&&z.offset<=r&&(z.key=y,z.offset-=m,b.dirty=!0);A.key===d&&"text"===A.type&&A.offset>m&&A.offset<=r&&(A.key=y,A.offset-=m,b.dirty=!0)}e===d&&H(y);m=r;h.push(l)}d=this.getPreviousSibling();e=this.getNextSibling();null!==d&&cc(d);null!==e&&cc(e);d=c.getWritable();e=this.getIndexWithinParent();g?(d.splice(e,0,h),this.remove()):d.splice(e,1,h);C(b)&&ae(b,c,e,f-1);return h}mergeWithSibling(a){var b=a===this.getPreviousSibling();b||a===this.getNextSibling()||
-q(50);var c=this.__key;let d=a.__key,e=this.__text,f=e.length;dc()===d&&H(c);let g=u();if(C(g)){let h=g.anchor,k=g.focus;null!==h&&h.key===d&&(ue(h,b,c,a,f),g.dirty=!0);null!==k&&k.key===d&&(ue(k,b,c,a,f),g.dirty=!0)}c=a.__text;this.setTextContent(b?c+e:e+c);b=this.getWritable();a.remove();return b}isTextEntity(){return!1}}
-function se(a){let b="700"===a.style.fontWeight,c="line-through"===a.style.textDecoration,d="italic"===a.style.fontStyle,e="underline"===a.style.textDecoration,f=a.style.verticalAlign;return{forChild:g=>{if(!B(g))return g;b&&g.toggleFormat("bold");c&&g.toggleFormat("strikethrough");d&&g.toggleFormat("italic");e&&g.toggleFormat("underline");"sub"===f&&g.toggleFormat("subscript");"super"===f&&g.toggleFormat("superscript");return g},node:null}}
-function qe(a){let b="normal"===a.style.fontWeight;return{forChild:c=>{B(c)&&!b&&c.toggleFormat("bold");return c},node:null}}let ve=new WeakMap;
-function pe(a){null===a.parentElement&&q(129);for(var b=a.textContent||"",c,d=a.parentNode,e=[a];null!==d&&void 0===(c=ve.get(d))&&!("PRE"===d.nodeName||1===d.nodeType&&void 0!==d.style&&void 0!==d.style.whiteSpace&&d.style.whiteSpace.startsWith("pre"));)e.push(d),d=d.parentNode;c=void 0===c?d:c;for(d=0;d<e.length;d++)ve.set(e[d],c);if(null!==c){b=b.split(/(\r?\n|\t)/);a=[];e=b.length;for(c=0;c<e;c++)d=b[c],"\n"===d||"\r\n"===d?a.push(ie()):"\t"===d?a.push(we()):""!==d&&a.push(K(d));return{node:a}}b=
-b.replace(/\r/g,"").replace(/[ \t\n]+/g," ");if(""===b)return{node:null};if(" "===b[0]){e=a;for(c=!0;null!==e&&null!==(e=xe(e,!1));)if(d=e.textContent||"",0<d.length){/[ \t\n]$/.test(d)&&(b=b.slice(1));c=!1;break}c&&(b=b.slice(1))}if(" "===b[b.length-1]){for(e=!0;null!==a&&null!==(a=xe(a,!0));)if(0<(a.textContent||"").replace(/^( |\t|\r?\n)+/,"").length){e=!1;break}e&&(b=b.slice(0,b.length-1))}return""===b?{node:null}:{node:K(b)}}
-let ye=new RegExp(/^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/,"i");function xe(a,b){for(;;){for(var c=void 0;null===(c=b?a.nextSibling:a.previousSibling);)if(a=a.parentElement,null===a)return null;a=c;if(1===a.nodeType&&(c=a.style.display,""===c&&null===a.nodeName.match(ye)||""!==c&&!c.startsWith("inline")))return null;for(;null!==(c=b?a.firstChild:a.lastChild);)a=c;if(3===a.nodeType)return a;if("BR"===a.nodeName)return null}}
-let ze={code:"code",em:"italic",i:"italic",s:"strikethrough",strong:"bold",sub:"subscript",sup:"superscript",u:"underline"};function re(a){let b=ze[a.nodeName.toLowerCase()];return void 0===b?{node:null}:{forChild:c=>{B(c)&&!c.hasFormat(b)&&c.toggleFormat(b);return c},node:null}}function K(a=""){return zc(new oe(a))}function B(a){return a instanceof oe}
-class Ae extends oe{static getType(){return"tab"}static clone(a){let b=new Ae(a.__key);b.__text=a.__text;b.__format=a.__format;b.__style=a.__style;return b}constructor(a){super("\t",a);this.__detail=2}static importDOM(){return null}static importJSON(a){let b=we();b.setFormat(a.format);b.setStyle(a.style);return b}exportJSON(){return{...super.exportJSON(),type:"tab",version:1}}setTextContent(){q(126)}setDetail(){q(127)}setMode(){q(128)}canInsertTextBefore(){return!1}canInsertTextAfter(){return!1}}
-function we(){return zc(new Ae)}function Be(a){return a instanceof Ae}
-class Ce{constructor(a,b,c){this._selection=null;this.key=a;this.offset=b;this.type=c}is(a){return this.key===a.key&&this.offset===a.offset&&this.type===a.type}isBefore(a){let b=this.getNode(),c=a.getNode(),d=this.offset;a=a.offset;if(E(b)){var e=b.getDescendantByIndex(d);b=null!=e?e:b}E(c)&&(e=c.getDescendantByIndex(a),c=null!=e?e:c);return b===c?d<a:b.isBefore(c)}getNode(){let a=I(this.key);null===a&&q(20);return a}set(a,b,c){let d=this._selection,e=this.key;this.key=a;this.offset=b;this.type=c;
-ec()||(dc()===e&&H(a),null!==d&&(d.setCachedNodes(null),d.dirty=!0))}}function S(a,b,c){return new Ce(a,b,c)}function Me(a,b){let c=b.__key,d=a.offset,e="element";if(B(b))e="text",b=b.getTextContentSize(),d>b&&(d=b);else if(!E(b)){var f=b.getNextSibling();if(B(f))c=f.__key,d=0,e="text";else if(f=b.getParent())c=f.__key,d=b.getIndexWithinParent()+1}a.set(c,d,e)}function de(a,b){if(E(b)){let c=b.getLastDescendant();E(c)||B(c)?Me(a,c):Me(a,b)}else Me(a,b)}
-function Ne(a,b,c,d){let e=a.getNode(),f=e.getChildAtIndex(a.offset),g=K(),h=L(e)?ee().append(g):g;g.setFormat(c);g.setStyle(d);null===f?e.append(h):f.insertBefore(h);a.is(b)&&b.set(g.__key,0,"text");a.set(g.__key,0,"text")}function Oe(a,b,c,d){a.key=b;a.offset=c;a.type=d}
-class Pe{constructor(a,b){this.anchor=a;this.focus=b;a._selection=this;b._selection=this;this._cachedNodes=null;this.dirty=!1}getCachedNodes(){return this._cachedNodes}setCachedNodes(a){this._cachedNodes=a}is(a){return ce(a)?this.anchor.is(a.anchor)&&this.focus.is(a.focus):!1}isCollapsed(){return!1}extract(){return this.getNodes()}isBackward(){return this.focus.isBefore(this.anchor)}getCharacterOffsets(){return Qe(this)}}
-class Re{constructor(a){this.dirty=!1;this._nodes=a;this._cachedNodes=null}getCachedNodes(){return this._cachedNodes}setCachedNodes(a){this._cachedNodes=a}is(a){if(!Ud(a))return!1;let b=this._nodes,c=a._nodes;return b.size===c.size&&Array.from(b).every(d=>c.has(d))}add(a){this.dirty=!0;this._nodes.add(a);this._cachedNodes=null}delete(a){this.dirty=!0;this._nodes.delete(a);this._cachedNodes=null}clear(){this.dirty=!0;this._nodes.clear();this._cachedNodes=null}has(a){return this._nodes.has(a)}clone(){return new Re(new Set(this._nodes))}extract(){return this.getNodes()}insertRawText(){}insertText(){}insertNodes(a){let b=
-this.getNodes(),c=b.length;var d=b[c-1];if(B(d))d=d.select();else{let e=d.getIndexWithinParent()+1;d=d.getParentOrThrow().select(e,e)}d.insertNodes(a);for(a=0;a<c;a++)b[a].remove()}getNodes(){var a=this._cachedNodes;if(null!==a)return a;var b=this._nodes;a=[];for(let c of b)b=I(c),null!==b&&a.push(b);ec()||(this._cachedNodes=a);return a}getTextContent(){let a=this.getNodes(),b="";for(let c=0;c<a.length;c++)b+=a[c].getTextContent();return b}}function C(a){return a instanceof Se}
-function ce(a){return a instanceof Pe}
-class Se extends Pe{constructor(a,b,c,d){super(a,b);this.format=c;this.style=d}is(a){return C(a)?this.anchor.is(a.anchor)&&this.focus.is(a.focus)&&this.format===a.format&&this.style===a.style:!1}isCollapsed(){return this.anchor.is(this.focus)}getNodes(){var a=this._cachedNodes;if(null!==a)return a;a=this.anchor;var b=this.focus,c=a.isBefore(b),d=c?a:b;c=c?b:a;a=d.getNode();b=c.getNode();let e=d.offset;d=c.offset;E(a)&&(c=a.getDescendantByIndex(e),a=null!=c?c:a);E(b)&&(c=b.getDescendantByIndex(d),
-null!==c&&c!==a&&b.getChildAtIndex(d)===c&&(c=c.getPreviousSibling()),b=null!=c?c:b);a=a.is(b)?E(a)&&0<a.getChildrenSize()?[]:[a]:a.getNodesBetween(b);ec()||(this._cachedNodes=a);return a}setTextNodeRange(a,b,c,d){Oe(this.anchor,a.__key,b,"text");Oe(this.focus,c.__key,d,"text");this._cachedNodes=null;this.dirty=!0}getTextContent(){let a=this.getNodes();if(0===a.length)return"";let b=a[0],c=a[a.length-1],d=this.anchor,e=this.focus,f=d.isBefore(e),[g,h]=Qe(this),k="",m=!0;for(let n=0;n<a.length;n++){let p=
-a[n];if(E(p)&&!p.isInline())m||(k+="\n"),m=p.isEmpty()?!1:!0;else if(m=!1,B(p)){let l=p.getTextContent();if(p===b)if(p===c){if("element"!==d.type||"element"!==e.type||e.offset===d.offset)l=g<h?l.slice(g,h):l.slice(h,g)}else l=f?l.slice(g):l.slice(h);else p===c&&(l=f?l.slice(0,h):l.slice(0,g));k+=l}else!x(p)&&!Gc(p)||p===c&&this.isCollapsed()||(k+=p.getTextContent())}return k}applyDOMRange(a){let b=F(),c=b.getEditorState()._selection;a=Te(a.startContainer,a.startOffset,a.endContainer,a.endOffset,b,
-c);if(null!==a){var [d,e]=a;Oe(this.anchor,d.key,d.offset,d.type);Oe(this.focus,e.key,e.offset,e.type);this._cachedNodes=null}}clone(){let a=this.anchor,b=this.focus;return new Se(S(a.key,a.offset,a.type),S(b.key,b.offset,b.type),this.format,this.style)}toggleFormat(a){this.format=Yb(this.format,a,null);this.dirty=!0}setStyle(a){this.style=a;this.dirty=!0}hasFormat(a){return 0!==(this.format&hb[a])}insertRawText(a){a=a.split(/(\r?\n|\t)/);let b=[],c=a.length;for(let d=0;d<c;d++){let e=a[d];"\n"===
-e||"\r\n"===e?b.push(ie()):"\t"===e?b.push(we()):b.push(K(e))}this.insertNodes(b)}insertText(a){var b=this.anchor,c=this.focus,d=this.isCollapsed()||b.isBefore(c),e=this.format,f=this.style;d&&"element"===b.type?Ne(b,c,e,f):d||"element"!==c.type||Ne(c,b,e,f);var g=this.getNodes(),h=g.length,k=d?c:b;c=(d?b:c).offset;var m=k.offset;b=g[0];B(b)||q(26);d=b.getTextContent().length;var n=b.getParentOrThrow(),p=g[h-1];if(this.isCollapsed()&&c===d&&(b.isSegmented()||b.isToken()||!b.canInsertTextAfter()||
+q(50);var c=this.__key;let d=a.__key,e=this.__text,f=e.length;dc()===d&&H(c);let g=u();if(C(g)){let h=g.anchor,k=g.focus;null!==h&&h.key===d&&(ve(h,b,c,a,f),g.dirty=!0);null!==k&&k.key===d&&(ve(k,b,c,a,f),g.dirty=!0)}c=a.__text;this.setTextContent(b?c+e:e+c);b=this.getWritable();a.remove();return b}isTextEntity(){return!1}}
+function te(a){let b="700"===a.style.fontWeight,c="line-through"===a.style.textDecoration,d="italic"===a.style.fontStyle,e="underline"===a.style.textDecoration,f=a.style.verticalAlign;return{forChild:g=>{if(!B(g))return g;b&&g.toggleFormat("bold");c&&g.toggleFormat("strikethrough");d&&g.toggleFormat("italic");e&&g.toggleFormat("underline");"sub"===f&&g.toggleFormat("subscript");"super"===f&&g.toggleFormat("superscript");return g},node:null}}
+function re(a){let b="normal"===a.style.fontWeight;return{forChild:c=>{B(c)&&!b&&c.toggleFormat("bold");return c},node:null}}let we=new WeakMap;
+function qe(a){null===a.parentElement&&q(129);for(var b=a.textContent||"",c,d=a.parentNode,e=[a];null!==d&&void 0===(c=we.get(d))&&!("PRE"===d.nodeName||1===d.nodeType&&void 0!==d.style&&void 0!==d.style.whiteSpace&&d.style.whiteSpace.startsWith("pre"));)e.push(d),d=d.parentNode;c=void 0===c?d:c;for(d=0;d<e.length;d++)we.set(e[d],c);if(null!==c){b=b.split(/(\r?\n|\t)/);a=[];e=b.length;for(c=0;c<e;c++)d=b[c],"\n"===d||"\r\n"===d?a.push(je()):"\t"===d?a.push(xe()):""!==d&&a.push(K(d));return{node:a}}b=
+b.replace(/\r/g,"").replace(/[ \t\n]+/g," ");if(""===b)return{node:null};if(" "===b[0]){e=a;for(c=!0;null!==e&&null!==(e=ye(e,!1));)if(d=e.textContent||"",0<d.length){/[ \t\n]$/.test(d)&&(b=b.slice(1));c=!1;break}c&&(b=b.slice(1))}if(" "===b[b.length-1]){for(e=!0;null!==a&&null!==(a=ye(a,!0));)if(0<(a.textContent||"").replace(/^( |\t|\r?\n)+/,"").length){e=!1;break}e&&(b=b.slice(0,b.length-1))}return""===b?{node:null}:{node:K(b)}}
+let ze=new RegExp(/^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/,"i");function ye(a,b){for(;;){for(var c=void 0;null===(c=b?a.nextSibling:a.previousSibling);)if(a=a.parentElement,null===a)return null;a=c;if(1===a.nodeType&&(c=a.style.display,""===c&&null===a.nodeName.match(ze)||""!==c&&!c.startsWith("inline")))return null;for(;null!==(c=b?a.firstChild:a.lastChild);)a=c;if(3===a.nodeType)return a;if("BR"===a.nodeName)return null}}
+let Ae={code:"code",em:"italic",i:"italic",s:"strikethrough",strong:"bold",sub:"subscript",sup:"superscript",u:"underline"};function se(a){let b=Ae[a.nodeName.toLowerCase()];return void 0===b?{node:null}:{forChild:c=>{B(c)&&!c.hasFormat(b)&&c.toggleFormat(b);return c},node:null}}function K(a=""){return zc(new pe(a))}function B(a){return a instanceof pe}
+class Be extends pe{static getType(){return"tab"}static clone(a){let b=new Be(a.__key);b.__text=a.__text;b.__format=a.__format;b.__style=a.__style;return b}constructor(a){super("\t",a);this.__detail=2}static importDOM(){return null}static importJSON(a){let b=xe();b.setFormat(a.format);b.setStyle(a.style);return b}exportJSON(){return{...super.exportJSON(),type:"tab",version:1}}setTextContent(){q(126)}setDetail(){q(127)}setMode(){q(128)}canInsertTextBefore(){return!1}canInsertTextAfter(){return!1}}
+function xe(){return zc(new Be)}function Ce(a){return a instanceof Be}
+class De{constructor(a,b,c){this._selection=null;this.key=a;this.offset=b;this.type=c}is(a){return this.key===a.key&&this.offset===a.offset&&this.type===a.type}isBefore(a){let b=this.getNode(),c=a.getNode(),d=this.offset;a=a.offset;if(E(b)){var e=b.getDescendantByIndex(d);b=null!=e?e:b}E(c)&&(e=c.getDescendantByIndex(a),c=null!=e?e:c);return b===c?d<a:b.isBefore(c)}getNode(){let a=I(this.key);null===a&&q(20);return a}set(a,b,c){let d=this._selection,e=this.key;this.key=a;this.offset=b;this.type=c;
+ec()||(dc()===e&&H(a),null!==d&&(d.setCachedNodes(null),d.dirty=!0))}}function S(a,b,c){return new De(a,b,c)}function Ne(a,b){let c=b.__key,d=a.offset,e="element";if(B(b))e="text",b=b.getTextContentSize(),d>b&&(d=b);else if(!E(b)){var f=b.getNextSibling();if(B(f))c=f.__key,d=0,e="text";else if(f=b.getParent())c=f.__key,d=b.getIndexWithinParent()+1}a.set(c,d,e)}function de(a,b){if(E(b)){let c=b.getLastDescendant();E(c)||B(c)?Ne(a,c):Ne(a,b)}else Ne(a,b)}
+function Oe(a,b,c,d){let e=a.getNode(),f=e.getChildAtIndex(a.offset),g=K(),h=L(e)?ee().append(g):g;g.setFormat(c);g.setStyle(d);null===f?e.append(h):f.insertBefore(h);a.is(b)&&b.set(g.__key,0,"text");a.set(g.__key,0,"text")}function Pe(a,b,c,d){a.key=b;a.offset=c;a.type=d}
+class Qe{constructor(a,b){this.anchor=a;this.focus=b;a._selection=this;b._selection=this;this._cachedNodes=null;this.dirty=!1}getCachedNodes(){return this._cachedNodes}setCachedNodes(a){this._cachedNodes=a}is(a){return ce(a)?this.anchor.is(a.anchor)&&this.focus.is(a.focus):!1}isCollapsed(){return!1}extract(){return this.getNodes()}isBackward(){return this.focus.isBefore(this.anchor)}getCharacterOffsets(){return Re(this)}}
+class Se{constructor(a){this.dirty=!1;this._nodes=a;this._cachedNodes=null}getCachedNodes(){return this._cachedNodes}setCachedNodes(a){this._cachedNodes=a}is(a){if(!Ud(a))return!1;let b=this._nodes,c=a._nodes;return b.size===c.size&&Array.from(b).every(d=>c.has(d))}add(a){this.dirty=!0;this._nodes.add(a);this._cachedNodes=null}delete(a){this.dirty=!0;this._nodes.delete(a);this._cachedNodes=null}clear(){this.dirty=!0;this._nodes.clear();this._cachedNodes=null}has(a){return this._nodes.has(a)}clone(){return new Se(new Set(this._nodes))}extract(){return this.getNodes()}insertRawText(){}insertText(){}insertNodes(a){let b=
+this.getNodes(),c=b.length;var d=b[c-1];if(B(d))d=d.select();else{let e=d.getIndexWithinParent()+1;d=d.getParentOrThrow().select(e,e)}d.insertNodes(a);for(a=0;a<c;a++)b[a].remove()}getNodes(){var a=this._cachedNodes;if(null!==a)return a;var b=this._nodes;a=[];for(let c of b)b=I(c),null!==b&&a.push(b);ec()||(this._cachedNodes=a);return a}getTextContent(){let a=this.getNodes(),b="";for(let c=0;c<a.length;c++)b+=a[c].getTextContent();return b}}function C(a){return a instanceof Te}
+function ce(a){return a instanceof Qe}
+class Te extends Qe{constructor(a,b,c,d){super(a,b);this.format=c;this.style=d}is(a){return C(a)?this.anchor.is(a.anchor)&&this.focus.is(a.focus)&&this.format===a.format&&this.style===a.style:!1}isCollapsed(){return this.anchor.is(this.focus)}getNodes(){var a=this._cachedNodes;if(null!==a)return a;a=this.anchor;var b=this.focus,c=a.isBefore(b),d=c?a:b;c=c?b:a;a=d.getNode();b=c.getNode();let e=d.offset;d=c.offset;E(a)&&(c=a.getDescendantByIndex(e),a=null!=c?c:a);E(b)&&(c=b.getDescendantByIndex(d),
+null!==c&&c!==a&&b.getChildAtIndex(d)===c&&(c=c.getPreviousSibling()),b=null!=c?c:b);a=a.is(b)?E(a)&&0<a.getChildrenSize()?[]:[a]:a.getNodesBetween(b);ec()||(this._cachedNodes=a);return a}setTextNodeRange(a,b,c,d){Pe(this.anchor,a.__key,b,"text");Pe(this.focus,c.__key,d,"text");this._cachedNodes=null;this.dirty=!0}getTextContent(){let a=this.getNodes();if(0===a.length)return"";let b=a[0],c=a[a.length-1],d=this.anchor,e=this.focus,f=d.isBefore(e),[g,h]=Re(this),k="",m=!0;for(let n=0;n<a.length;n++){let p=
+a[n];if(E(p)&&!p.isInline())m||(k+="\n"),m=p.isEmpty()?!1:!0;else if(m=!1,B(p)){let l=p.getTextContent();if(p===b)if(p===c){if("element"!==d.type||"element"!==e.type||e.offset===d.offset)l=g<h?l.slice(g,h):l.slice(h,g)}else l=f?l.slice(g):l.slice(h);else p===c&&(l=f?l.slice(0,h):l.slice(0,g));k+=l}else!x(p)&&!Gc(p)||p===c&&this.isCollapsed()||(k+=p.getTextContent())}return k}applyDOMRange(a){let b=F(),c=b.getEditorState()._selection;a=Ue(a.startContainer,a.startOffset,a.endContainer,a.endOffset,b,
+c);if(null!==a){var [d,e]=a;Pe(this.anchor,d.key,d.offset,d.type);Pe(this.focus,e.key,e.offset,e.type);this._cachedNodes=null}}clone(){let a=this.anchor,b=this.focus;return new Te(S(a.key,a.offset,a.type),S(b.key,b.offset,b.type),this.format,this.style)}toggleFormat(a){this.format=Yb(this.format,a,null);this.dirty=!0}setStyle(a){this.style=a;this.dirty=!0}hasFormat(a){return 0!==(this.format&hb[a])}insertRawText(a){a=a.split(/(\r?\n|\t)/);let b=[],c=a.length;for(let d=0;d<c;d++){let e=a[d];"\n"===
+e||"\r\n"===e?b.push(je()):"\t"===e?b.push(xe()):b.push(K(e))}this.insertNodes(b)}insertText(a){var b=this.anchor,c=this.focus,d=this.isCollapsed()||b.isBefore(c),e=this.format,f=this.style;d&&"element"===b.type?Oe(b,c,e,f):d||"element"!==c.type||Oe(c,b,e,f);var g=this.getNodes(),h=g.length,k=d?c:b;c=(d?b:c).offset;var m=k.offset;b=g[0];B(b)||q(26);d=b.getTextContent().length;var n=b.getParentOrThrow(),p=g[h-1];if(this.isCollapsed()&&c===d&&(b.isSegmented()||b.isToken()||!b.canInsertTextAfter()||
!n.canInsertTextAfter()&&null===b.getNextSibling())){var l=b.getNextSibling();B(l)&&l.canInsertTextBefore()&&!Wb(l)||(l=K(),l.setFormat(e),n.canInsertTextAfter()?b.insertAfter(l):n.insertAfter(l));l.select(0,0);b=l;if(""!==a){this.insertText(a);return}}else if(this.isCollapsed()&&0===c&&(b.isSegmented()||b.isToken()||!b.canInsertTextBefore()||!n.canInsertTextBefore()&&null===b.getPreviousSibling())){l=b.getPreviousSibling();if(!B(l)||Wb(l))l=K(),l.setFormat(e),n.canInsertTextBefore()?b.insertBefore(l):
-n.insertBefore(l);l.select();b=l;if(""!==a){this.insertText(a);return}}else if(b.isSegmented()&&c!==d)n=K(b.getTextContent()),n.setFormat(e),b.replace(n),b=n;else if(!(this.isCollapsed()||""===a||(l=p.getParent(),n.canInsertTextBefore()&&n.canInsertTextAfter()&&(!E(l)||l.canInsertTextBefore()&&l.canInsertTextAfter())))){this.insertText("");Ue(this.anchor,this.focus,null);this.insertText(a);return}if(1===h)if(b.isToken())a=K(a),a.select(),b.replace(a);else{g=b.getFormat();h=b.getStyle();if(c===m&&
-(g!==e||h!==f))if(""===b.getTextContent())b.setFormat(e),b.setStyle(f);else{g=K(a);g.setFormat(e);g.setStyle(f);g.select();0===c?b.insertBefore(g,!1):([h]=b.splitText(c),h.insertAfter(g,!1));g.isComposing()&&"text"===this.anchor.type&&(this.anchor.offset-=a.length);return}else if(Be(b)){a=K(a);a.setFormat(e);a.setStyle(f);a.select();b.replace(a);return}b=b.spliceText(c,m-c,a,!0);""===b.getTextContent()?b.remove():"text"===this.anchor.type&&(b.isComposing()?this.anchor.offset-=a.length:(this.format=
+n.insertBefore(l);l.select();b=l;if(""!==a){this.insertText(a);return}}else if(b.isSegmented()&&c!==d)n=K(b.getTextContent()),n.setFormat(e),b.replace(n),b=n;else if(!(this.isCollapsed()||""===a||(l=p.getParent(),n.canInsertTextBefore()&&n.canInsertTextAfter()&&(!E(l)||l.canInsertTextBefore()&&l.canInsertTextAfter())))){this.insertText("");Ve(this.anchor,this.focus,null);this.insertText(a);return}if(1===h)if(b.isToken())a=K(a),a.select(),b.replace(a);else{g=b.getFormat();h=b.getStyle();if(c===m&&
+(g!==e||h!==f))if(""===b.getTextContent())b.setFormat(e),b.setStyle(f);else{g=K(a);g.setFormat(e);g.setStyle(f);g.select();0===c?b.insertBefore(g,!1):([h]=b.splitText(c),h.insertAfter(g,!1));g.isComposing()&&"text"===this.anchor.type&&(this.anchor.offset-=a.length);return}else if(Ce(b)){a=K(a);a.setFormat(e);a.setStyle(f);a.select();b.replace(a);return}b=b.spliceText(c,m-c,a,!0);""===b.getTextContent()?b.remove():"text"===this.anchor.type&&(b.isComposing()?this.anchor.offset-=a.length:(this.format=
g,this.style=h))}else{e=new Set([...b.getParentKeys(),...p.getParentKeys()]);l=E(b)?b:b.getParentOrThrow();f=E(p)?p:p.getParentOrThrow();n=p;if(!l.is(f)&&f.isInline()){do n=f,f=f.getParentOrThrow();while(f.isInline())}if("text"===k.type&&(0!==m||""===p.getTextContent())||"element"===k.type&&p.getIndexWithinParent()<m)if(B(p)&&!p.isToken()&&m!==p.getTextContentSize()){if(p.isSegmented()){var r=K(p.getTextContent());p.replace(r);p=r}L(k.getNode())||"text"!==k.type||(p=p.spliceText(0,m,""));e.add(p.__key)}else k=
p.getParentOrThrow(),k.canBeEmpty()||1!==k.getChildrenSize()?p.remove():k.remove();else e.add(p.__key);k=f.getChildren();m=new Set(g);p=l.is(f);l=l.isInline()&&null===b.getNextSibling()?l:b;for(r=k.length-1;0<=r;r--){let w=k[r];if(w.is(b)||E(w)&&w.isParentOf(b))break;w.isAttached()&&(!m.has(w)||w.is(n)?p||l.insertAfter(w,!1):w.remove())}if(!p)for(k=f,f=null;null!==k;){m=k.getChildren();p=m.length;if(0===p||m[p-1].is(f))e.delete(k.__key),f=k;k=k.getParent()}b.isToken()?c===d?b.select():(a=K(a),a.select(),
b.replace(a)):(b=b.spliceText(c,d-c,a,!0),""===b.getTextContent()?b.remove():b.isComposing()&&"text"===this.anchor.type&&(this.anchor.offset-=a.length));for(a=1;a<h;a++)b=g[a],e.has(b.__key)||b.remove()}}removeText(){this.insertText("")}formatText(a){if(this.isCollapsed())this.toggleFormat(a),H(null);else{var b=this.getNodes(),c=[];for(var d of b)B(d)&&c.push(d);var e=c.length;if(0===e)this.toggleFormat(a),H(null);else{d=this.anchor;var f=this.focus,g=this.isBackward();b=g?f:d;d=g?d:f;var h=0,k=c[0];
f="element"===b.type?0:b.offset;"text"===b.type&&f===k.getTextContentSize()&&(h=1,k=c[1],f=0);if(null!=k){g=k.getFormatFlags(a,null);var m=e-1,n=c[m];e="text"===d.type?d.offset:n.getTextContentSize();if(k.is(n))f!==e&&(0===f&&e===k.getTextContentSize()?k.setFormat(g):(a=k.splitText(f,e),a=0===f?a[0]:a[1],a.setFormat(g),"text"===b.type&&b.set(a.__key,0,"text"),"text"===d.type&&d.set(a.__key,e-f,"text")),this.format=g);else{0!==f&&([,k]=k.splitText(f),f=0);k.setFormat(g);var p=n.getFormatFlags(a,g);
-0<e&&(e!==n.getTextContentSize()&&([n]=n.splitText(e)),n.setFormat(p));for(h+=1;h<m;h++){let l=c[h];if(!l.isToken()){let r=l.getFormatFlags(a,p);l.setFormat(r)}}"text"===b.type&&b.set(k.__key,f,"text");"text"===d.type&&d.set(n.__key,e,"text");this.format=g|p}}}}}insertNodes(a){if(0!==a.length){if("root"===this.anchor.key){this.insertParagraph();var b=u();if(!C(b))throw Error("Expected RangeSelection after insertParagraph");return b.insertNodes(a)}var c=Hc(this.anchor.getNode(),Fc);b=a[a.length-1];
-if("__language"in c&&E(c))if("__language"in a[0])this.insertText(a[0].getTextContent());else{var d=Ve(this);c.splice(d,0,a);b.selectEnd()}else if(a.some(g=>(E(g)||x(g))&&!g.isInline())){b=We(a);a=b.getLastDescendant();var e=b.getChildren();b=E(c)&&c.isEmpty()?null:this.insertParagraph();d=e[e.length-1];var f=e[0];if((g=>E(g)&&Fc(g)&&!g.isEmpty()&&E(c)&&(!c.isEmpty()||"__value"in c&&"__checked"in c))(f)){if(!E(c))throw Error("Expected 'firstBlock' to be an ElementNode");c.append(...f.getChildren());
-f=e[1]}f&&fe(c,f);e=Hc(a,Fc);b&&E(e)&&("__value"in b&&"__checked"in b||Fc(d))&&(e.append(...b.getChildren()),b.remove());E(c)&&c.isEmpty()&&c.remove();a.selectEnd();a=E(c)?c.getLastChild():null;Gc(a)&&e!==c&&a.remove()}else{if(!E(c))throw Error("Expected 'firstBlock' to be an ElementNode");d=Ve(this);c.splice(d,0,a);b.selectEnd()}}}insertParagraph(){if("root"===this.anchor.key){var a=ee();J().splice(this.anchor.offset,0,[a]);a.select();return a}var b=Ve(this);a=Hc(this.anchor.getNode(),Fc);if(!E(a))throw Error("Expected ancestor to be an ElementNode");
-b=(b=a.getChildAtIndex(b))?[b,...b.getNextSiblings()]:[];return(a=a.insertNewAfter(this,!1))?(a.append(...b),a.selectStart(),a):null}insertLineBreak(a){var b=ie();this.insertNodes([b]);a&&(a=b.getParentOrThrow(),b=b.getIndexWithinParent(),a.select(b,b))}extract(){var a=this.getNodes(),b=a.length,c=b-1,d=this.anchor;let e=this.focus;var f=a[0];let g=a[c],[h,k]=Qe(this);if(0===b)return[];if(1===b)return B(f)&&!this.isCollapsed()?(a=h>k?k:h,c=f.splitText(a,h>k?h:k),a=0===a?c[0]:c[1],null!=a?[a]:[]):
-[f];b=d.isBefore(e);B(f)&&(d=b?h:k,d===f.getTextContentSize()?a.shift():0!==d&&([,f]=f.splitText(d),a[0]=f));B(g)&&(f=g.getTextContent().length,b=b?k:h,0===b?a.pop():b!==f&&([g]=g.splitText(b),a[c]=g));return a}modify(a,b,c){var d=this.focus,e=this.anchor,f="move"===a,g=sc(d,b);if(x(g)&&!g.isIsolated())f&&g.isKeyboardSelectable()?(b=Xe(),b.add(g.__key),Ab(b)):(a=b?g.getPreviousSibling():g.getNextSibling(),B(a)?(g=a.__key,b=b?a.getTextContent().length:0,d.set(g,b,"text"),f&&e.set(g,b,"text")):(c=g.getParentOrThrow(),
+0<e&&(e!==n.getTextContentSize()&&([n]=n.splitText(e)),n.setFormat(p));for(h+=1;h<m;h++){let l=c[h];if(!l.isToken()){let r=l.getFormatFlags(a,p);l.setFormat(r)}}"text"===b.type&&b.set(k.__key,f,"text");"text"===d.type&&d.set(n.__key,e,"text");this.format=g|p}}}}}insertNodes(a){if(0!==a.length){if("root"===this.anchor.key){this.insertParagraph();var b=u();if(!C(b))throw Error("Expected RangeSelection after insertParagraph");return b.insertNodes(a)}b=this.isBackward()?this.focus:this.anchor;var c=Hc(b.getNode(),
+Fc);b=a[a.length-1];if("__language"in c&&E(c))if("__language"in a[0])this.insertText(a[0].getTextContent());else{var d=We(this);c.splice(d,0,a);b.selectEnd()}else if(a.some(g=>(E(g)||x(g))&&!g.isInline())){b=Xe(a);a=b.getLastDescendant();var e=b.getChildren();b=E(c)&&c.isEmpty()?null:this.insertParagraph();d=e[e.length-1];var f=e[0];if((g=>E(g)&&Fc(g)&&!g.isEmpty()&&E(c)&&(!c.isEmpty()||"__value"in c&&"__checked"in c))(f)){if(!E(c))throw Error("Expected 'firstBlock' to be an ElementNode");c.append(...f.getChildren());
+f=e[1]}f&&fe(c,f);e=Hc(a,Fc);b&&E(e)&&("__value"in b&&"__checked"in b||Fc(d))&&(e.append(...b.getChildren()),b.remove());E(c)&&c.isEmpty()&&c.remove();a.selectEnd();a=E(c)?c.getLastChild():null;Gc(a)&&e!==c&&a.remove()}else{if(!E(c))throw Error("Expected 'firstBlock' to be an ElementNode");d=We(this);c.splice(d,0,a);b.selectEnd()}}}insertParagraph(){if("root"===this.anchor.key){var a=ee();J().splice(this.anchor.offset,0,[a]);a.select();return a}var b=We(this);a=Hc(this.anchor.getNode(),Fc);if(!E(a))throw Error("Expected ancestor to be an ElementNode");
+b=(b=a.getChildAtIndex(b))?[b,...b.getNextSiblings()]:[];return(a=a.insertNewAfter(this,!1))?(a.append(...b),a.selectStart(),a):null}insertLineBreak(a){var b=je();this.insertNodes([b]);a&&(a=b.getParentOrThrow(),b=b.getIndexWithinParent(),a.select(b,b))}extract(){var a=this.getNodes(),b=a.length,c=b-1,d=this.anchor;let e=this.focus;var f=a[0];let g=a[c],[h,k]=Re(this);if(0===b)return[];if(1===b)return B(f)&&!this.isCollapsed()?(a=h>k?k:h,c=f.splitText(a,h>k?h:k),a=0===a?c[0]:c[1],null!=a?[a]:[]):
+[f];b=d.isBefore(e);B(f)&&(d=b?h:k,d===f.getTextContentSize()?a.shift():0!==d&&([,f]=f.splitText(d),a[0]=f));B(g)&&(f=g.getTextContent().length,b=b?k:h,0===b?a.pop():b!==f&&([g]=g.splitText(b),a[c]=g));return a}modify(a,b,c){var d=this.focus,e=this.anchor,f="move"===a,g=sc(d,b);if(x(g)&&!g.isIsolated())f&&g.isKeyboardSelectable()?(b=Ye(),b.add(g.__key),Ab(b)):(a=b?g.getPreviousSibling():g.getNextSibling(),B(a)?(g=a.__key,b=b?a.getTextContent().length:0,d.set(g,b,"text"),f&&e.set(g,b,"text")):(c=g.getParentOrThrow(),
E(a)?(c=a.__key,g=b?a.getChildrenSize():0):(g=g.getIndexWithinParent(),c=c.__key,b||g++),d.set(c,g,"element"),f&&e.set(c,g,"element")));else if(e=F(),d=xb(e._window)){var h=e._blockCursorElement,k=e._rootElement;null===k||null===h||!E(g)||g.isInline()||g.canBeEmpty()||Cc(h,e,k);d.modify(a,b?"backward":"forward",c);if(0<d.rangeCount&&(g=d.getRangeAt(0),e=this.anchor.getNode(),e=L(e)?e:wc(e),this.applyDOMRange(g),this.dirty=!0,!f)){f=this.getNodes();a=[];c=!1;for(h=0;h<f.length;h++)k=f[h],vc(k,e)?a.push(k):
-c=!0;c&&0<a.length&&(b?(b=a[0],E(b)?b.selectStart():b.getParentOrThrow().selectStart()):(b=a[a.length-1],E(b)?b.selectEnd():b.getParentOrThrow().selectEnd()));if(d.anchorNode!==g.startContainer||d.anchorOffset!==g.startOffset)b=this.focus,f=this.anchor,d=f.key,g=f.offset,e=f.type,Oe(f,b.key,b.offset,b.type),Oe(b,d,g,e),this._cachedNodes=null}}}deleteCharacter(a){let b=this.isCollapsed();if(this.isCollapsed()){var c=this.anchor,d=this.focus,e=c.getNode();if(!a&&("element"===c.type&&E(e)&&c.offset===
-e.getChildrenSize()||"text"===c.type&&c.offset===e.getTextContentSize())){var f=e.getParent();f=e.getNextSibling()||(null===f?null:f.getNextSibling());if(E(f)&&f.isShadowRoot())return}f=sc(d,a);if(x(f)&&!f.isIsolated()){f.isKeyboardSelectable()&&E(e)&&0===e.getChildrenSize()?(e.remove(),a=Xe(),a.add(f.__key),Ab(a)):(f.remove(),F().dispatchCommand(aa,void 0));return}if(!a&&E(f)&&E(e)&&e.isEmpty()){e.remove();f.selectStart();return}this.modify("extend",a,"character");if(!this.isCollapsed()){f="text"===
-d.type?d.getNode():null;e="text"===c.type?c.getNode():null;if(null!==f&&f.isSegmented()){if(c=d.offset,d=f.getTextContentSize(),f.is(e)||a&&c!==d||!a&&0!==c){Ye(f,a,c);return}}else if(null!==e&&e.isSegmented()&&(c=c.offset,d=e.getTextContentSize(),e.is(f)||a&&0!==c||!a&&c!==d)){Ye(e,a,c);return}e=this.anchor;f=this.focus;c=e.getNode();d=f.getNode();if(c===d&&"text"===e.type&&"text"===f.type){var g=e.offset,h=f.offset;let k=g<h;d=k?g:h;h=k?h:g;g=h-1;d!==g&&(c=c.getTextContent().slice(d,h),jc(c)||(a?
+c=!0;c&&0<a.length&&(b?(b=a[0],E(b)?b.selectStart():b.getParentOrThrow().selectStart()):(b=a[a.length-1],E(b)?b.selectEnd():b.getParentOrThrow().selectEnd()));if(d.anchorNode!==g.startContainer||d.anchorOffset!==g.startOffset)b=this.focus,f=this.anchor,d=f.key,g=f.offset,e=f.type,Pe(f,b.key,b.offset,b.type),Pe(b,d,g,e),this._cachedNodes=null}}}deleteCharacter(a){let b=this.isCollapsed();if(this.isCollapsed()){var c=this.anchor,d=this.focus,e=c.getNode();if(!a&&("element"===c.type&&E(e)&&c.offset===
+e.getChildrenSize()||"text"===c.type&&c.offset===e.getTextContentSize())){var f=e.getParent();f=e.getNextSibling()||(null===f?null:f.getNextSibling());if(E(f)&&f.isShadowRoot())return}f=sc(d,a);if(x(f)&&!f.isIsolated()){f.isKeyboardSelectable()&&E(e)&&0===e.getChildrenSize()?(e.remove(),a=Ye(),a.add(f.__key),Ab(a)):(f.remove(),F().dispatchCommand(aa,void 0));return}if(!a&&E(f)&&E(e)&&e.isEmpty()){e.remove();f.selectStart();return}this.modify("extend",a,"character");if(!this.isCollapsed()){f="text"===
+d.type?d.getNode():null;e="text"===c.type?c.getNode():null;if(null!==f&&f.isSegmented()){if(c=d.offset,d=f.getTextContentSize(),f.is(e)||a&&c!==d||!a&&0!==c){Ze(f,a,c);return}}else if(null!==e&&e.isSegmented()&&(c=c.offset,d=e.getTextContentSize(),e.is(f)||a&&0!==c||!a&&c!==d)){Ze(e,a,c);return}e=this.anchor;f=this.focus;c=e.getNode();d=f.getNode();if(c===d&&"text"===e.type&&"text"===f.type){var g=e.offset,h=f.offset;let k=g<h;d=k?g:h;h=k?h:g;g=h-1;d!==g&&(c=c.getTextContent().slice(d,h),jc(c)||(a?
f.offset=g:e.offset=g))}}else if(a&&0===c.offset&&("element"===c.type?c.getNode():c.getNode().getParentOrThrow()).collapseAtStart(this))return}this.removeText();a&&!b&&this.isCollapsed()&&"element"===this.anchor.type&&0===this.anchor.offset&&(a=this.anchor.getNode(),a.isEmpty()&&L(a.getParent())&&0===a.getIndexWithinParent()&&a.collapseAtStart(this))}deleteLine(a){this.isCollapsed()&&("text"===this.anchor.type&&this.modify("extend",a,"lineboundary"),0===(a?this.focus:this.anchor).offset&&this.modify("extend",
-a,"character"));this.removeText()}deleteWord(a){this.isCollapsed()&&this.modify("extend",a,"word");this.removeText()}}function Ud(a){return a instanceof Re}function Ze(a){let b=a.offset;if("text"===a.type)return b;a=a.getNode();return b===a.getChildrenSize()?a.getTextContent().length:0}function Qe(a){let b=a.anchor;a=a.focus;return"element"===b.type&&"element"===a.type&&b.key===a.key&&b.offset===a.offset?[0,0]:[Ze(b),Ze(a)]}
-function Ye(a,b,c){let d=a.getTextContent().split(/(?=\s)/g),e=d.length,f=0,g=0;for(let h=0;h<e;h++){let k=d[h],m=h===e-1;g=f;f+=k.length;if(b&&f===c||f>c||m){d.splice(h,1);m&&(g=void 0);break}}b=d.join("").trim();""===b?a.remove():(a.setTextContent(b),a.select(g,g))}
-function $e(a,b,c,d){var e=b;if(1===a.nodeType){let h=!1;var f=a.childNodes,g=f.length;e===g&&(h=!0,e=g-1);let k=f[e];g=!1;k===d._blockCursorElement?(k=f[e+1],g=!0):null!==d._blockCursorElement&&e--;d=ic(k);if(B(d))e=h?d.getTextContentSize():0;else{f=ic(a);if(null===f)return null;if(E(f)){a=f.getChildAtIndex(e);if(b=E(a))b=a.getParent(),b=null===c||null===b||!b.canBeEmpty()||b!==c.getNode();b&&(c=h?a.getLastDescendant():a.getFirstDescendant(),null===c?(f=a,e=0):(a=c,f=E(a)?a:a.getParentOrThrow()));
+a,"character"));this.removeText()}deleteWord(a){this.isCollapsed()&&this.modify("extend",a,"word");this.removeText()}}function Ud(a){return a instanceof Se}function $e(a){let b=a.offset;if("text"===a.type)return b;a=a.getNode();return b===a.getChildrenSize()?a.getTextContent().length:0}function Re(a){let b=a.anchor;a=a.focus;return"element"===b.type&&"element"===a.type&&b.key===a.key&&b.offset===a.offset?[0,0]:[$e(b),$e(a)]}
+function Ze(a,b,c){let d=a.getTextContent().split(/(?=\s)/g),e=d.length,f=0,g=0;for(let h=0;h<e;h++){let k=d[h],m=h===e-1;g=f;f+=k.length;if(b&&f===c||f>c||m){d.splice(h,1);m&&(g=void 0);break}}b=d.join("").trim();""===b?a.remove():(a.setTextContent(b),a.select(g,g))}
+function af(a,b,c,d){var e=b;if(1===a.nodeType){let h=!1;var f=a.childNodes,g=f.length;e===g&&(h=!0,e=g-1);let k=f[e];g=!1;k===d._blockCursorElement?(k=f[e+1],g=!0):null!==d._blockCursorElement&&e--;d=ic(k);if(B(d))e=h?d.getTextContentSize():0;else{f=ic(a);if(null===f)return null;if(E(f)){a=f.getChildAtIndex(e);if(b=E(a))b=a.getParent(),b=null===c||null===b||!b.canBeEmpty()||b!==c.getNode();b&&(c=h?a.getLastDescendant():a.getFirstDescendant(),null===c?(f=a,e=0):(a=c,f=E(a)?a:a.getParentOrThrow()));
B(a)?(d=a,f=null,e=h?a.getTextContentSize():0):a!==f&&h&&!g&&e++}else e=f.getIndexWithinParent(),e=0===b&&x(f)&&ic(a)===f?e:e+1,f=f.getParentOrThrow();if(E(f))return S(f.__key,e,"element")}}else d=ic(a);return B(d)?S(d.__key,e,"text"):null}
-function af(a,b,c){var d=a.offset,e=a.getNode();0===d?(d=e.getPreviousSibling(),e=e.getParent(),b)?(c||!b)&&null===d&&E(e)&&e.isInline()&&(b=e.getPreviousSibling(),B(b)&&(a.key=b.__key,a.offset=b.getTextContent().length)):E(d)&&!c&&d.isInline()?(a.key=d.__key,a.offset=d.getChildrenSize(),a.type="element"):B(d)&&(a.key=d.__key,a.offset=d.getTextContent().length):d===e.getTextContent().length&&(d=e.getNextSibling(),e=e.getParent(),b&&E(d)&&d.isInline()?(a.key=d.__key,a.offset=0,a.type="element"):(c||
-b)&&null===d&&E(e)&&e.isInline()&&!e.canInsertTextAfter()&&(b=e.getNextSibling(),B(b)&&(a.key=b.__key,a.offset=0)))}function Ue(a,b,c){if("text"===a.type&&"text"===b.type){var d=a.isBefore(b);let e=a.is(b);af(a,d,e);af(b,!d,e);e&&(b.key=a.key,b.offset=a.offset,b.type=a.type);d=F();d.isComposing()&&d._compositionKey!==a.key&&C(c)&&(d=c.anchor,c=c.focus,Oe(a,d.key,d.offset,d.type),Oe(b,c.key,c.offset,c.type))}}
-function Te(a,b,c,d,e,f){if(null===a||null===c||!Tb(e,a,c))return null;b=$e(a,b,C(f)?f.anchor:null,e);if(null===b)return null;d=$e(c,d,C(f)?f.focus:null,e);if(null===d||"element"===b.type&&"element"===d.type&&(a=ic(a),c=ic(c),x(a)&&x(c)))return null;Ue(b,d,f);return[b,d]}function te(a,b,c,d,e,f){let g=ac();a=new Se(S(a,b,e),S(c,d,f),0,"");a.dirty=!0;return g._selection=a}function Xe(){return new Re(new Set)}
-function bf(a){let b=a.getEditorState()._selection,c=xb(a._window);return C(b)||null==b?Qd(b,c,a,null):b.clone()}
-function Qd(a,b,c,d){var e=c._window;if(null===e)return null;var f=(e=d||e.event)?e.type:void 0;d="selectionchange"===f;e=!qb&&(d||"beforeinput"===f||"compositionstart"===f||"compositionend"===f||"click"===f&&e&&3===e.detail||"drop"===f||void 0===f);let g;if(!C(a)||e){if(null===b)return null;e=b.anchorNode;f=b.focusNode;g=b.anchorOffset;b=b.focusOffset;if(d&&C(a)&&!Tb(c,e,f))return a.clone()}else return a.clone();c=Te(e,g,f,b,c,a);if(null===c)return null;let [h,k]=c;return new Se(h,k,C(a)?a.format:
+function bf(a,b,c){var d=a.offset,e=a.getNode();0===d?(d=e.getPreviousSibling(),e=e.getParent(),b)?(c||!b)&&null===d&&E(e)&&e.isInline()&&(b=e.getPreviousSibling(),B(b)&&(a.key=b.__key,a.offset=b.getTextContent().length)):E(d)&&!c&&d.isInline()?(a.key=d.__key,a.offset=d.getChildrenSize(),a.type="element"):B(d)&&(a.key=d.__key,a.offset=d.getTextContent().length):d===e.getTextContent().length&&(d=e.getNextSibling(),e=e.getParent(),b&&E(d)&&d.isInline()?(a.key=d.__key,a.offset=0,a.type="element"):(c||
+b)&&null===d&&E(e)&&e.isInline()&&!e.canInsertTextAfter()&&(b=e.getNextSibling(),B(b)&&(a.key=b.__key,a.offset=0)))}function Ve(a,b,c){if("text"===a.type&&"text"===b.type){var d=a.isBefore(b);let e=a.is(b);bf(a,d,e);bf(b,!d,e);e&&(b.key=a.key,b.offset=a.offset,b.type=a.type);d=F();d.isComposing()&&d._compositionKey!==a.key&&C(c)&&(d=c.anchor,c=c.focus,Pe(a,d.key,d.offset,d.type),Pe(b,c.key,c.offset,c.type))}}
+function Ue(a,b,c,d,e,f){if(null===a||null===c||!Tb(e,a,c))return null;b=af(a,b,C(f)?f.anchor:null,e);if(null===b)return null;d=af(c,d,C(f)?f.focus:null,e);if(null===d||"element"===b.type&&"element"===d.type&&(a=ic(a),c=ic(c),x(a)&&x(c)))return null;Ve(b,d,f);return[b,d]}function ue(a,b,c,d,e,f){let g=ac();a=new Te(S(a,b,e),S(c,d,f),0,"");a.dirty=!0;return g._selection=a}function Ye(){return new Se(new Set)}
+function cf(a){let b=a.getEditorState()._selection,c=xb(a._window);return C(b)||null==b?Qd(b,c,a,null):b.clone()}
+function Qd(a,b,c,d){var e=c._window;if(null===e)return null;var f=(e=d||e.event)?e.type:void 0;d="selectionchange"===f;e=!qb&&(d||"beforeinput"===f||"compositionstart"===f||"compositionend"===f||"click"===f&&e&&3===e.detail||"drop"===f||void 0===f);let g;if(!C(a)||e){if(null===b)return null;e=b.anchorNode;f=b.focusNode;g=b.anchorOffset;b=b.focusOffset;if(d&&C(a)&&!Tb(c,e,f))return a.clone()}else return a.clone();c=Ue(e,g,f,b,c,a);if(null===c)return null;let [h,k]=c;return new Te(h,k,C(a)?a.format:
0,C(a)?a.style:"")}function u(){return ac()._selection}function nc(){return F()._editorState._selection}
-function ae(a,b,c,d=1){var e=a.anchor,f=a.focus,g=e.getNode(),h=f.getNode();if(b.is(g)||b.is(h)){g=b.__key;if(a.isCollapsed()){if(b=e.offset,c<=b&&0<d||c<b&&0>d)c=Math.max(0,b+d),e.set(g,c,"element"),f.set(g,c,"element"),cf(a)}else{let m=a.isBackward();h=m?f:e;var k=h.getNode();e=m?e:f;f=e.getNode();b.is(k)&&(k=h.offset,(c<=k&&0<d||c<k&&0>d)&&h.set(g,Math.max(0,k+d),"element"));b.is(f)&&(b=e.offset,(c<=b&&0<d||c<b&&0>d)&&e.set(g,Math.max(0,b+d),"element"))}cf(a)}}
-function cf(a){var b=a.anchor,c=b.offset;let d=a.focus;var e=d.offset,f=b.getNode(),g=d.getNode();if(a.isCollapsed())E(f)&&(g=f.getChildrenSize(),g=(e=c>=g)?f.getChildAtIndex(g-1):f.getChildAtIndex(c),B(g)&&(c=0,e&&(c=g.getTextContentSize()),b.set(g.__key,c,"text"),d.set(g.__key,c,"text")));else{if(E(f)){let h=f.getChildrenSize();c=(a=c>=h)?f.getChildAtIndex(h-1):f.getChildAtIndex(c);B(c)&&(f=0,a&&(f=c.getTextContentSize()),b.set(c.__key,f,"text"))}E(g)&&(c=g.getChildrenSize(),e=(b=e>=c)?g.getChildAtIndex(c-
-1):g.getChildAtIndex(e),B(e)&&(g=0,b&&(g=e.getTextContentSize()),d.set(e.__key,g,"text")))}}function df(a,b){b=b.getEditorState()._selection;a=a._selection;if(C(a)){var c=a.anchor;let d=a.focus,e;"text"===c.type&&(e=c.getNode(),e.selectionTransform(b,a));"text"===d.type&&(c=d.getNode(),e!==c&&c.selectionTransform(b,a))}}
-function $d(a,b,c,d,e){let f=null,g=0,h=null;null!==d?(f=d.__key,B(d)?(g=d.getTextContentSize(),h="text"):E(d)&&(g=d.getChildrenSize(),h="element")):null!==e&&(f=e.__key,B(e)?h="text":E(e)&&(h="element"));null!==f&&null!==h?a.set(f,g,h):(g=b.getIndexWithinParent(),-1===g&&(g=c.getChildrenSize()),a.set(c.__key,g,"element"))}function ue(a,b,c,d,e){"text"===a.type?(a.key=c,b||(a.offset+=e)):a.offset>d.getIndexWithinParent()&&--a.offset}
-function ef(a){a instanceof ff||(a instanceof be?(a=Dc(a,gf),gf(a)||q(114)):(a=Dc(a.getNode(),gf),gf(a)||q(114)));let b=a.getParent();hf(b)||q(115);let c=b.getParent();jf(c)||q(116);return[a,b,c]}function Ve(a){a.isCollapsed()||a.removeText();var b=a.anchor;a=b.getNode();for(b=b.offset;!Fc(a);)[a,b]=kf(a,b);return b}
-function kf(a,b){var c=a.getParent();if(!c)return c=ee(),J().append(c),c.select(),[J(),0];if(B(a)){var d=a.splitText(b);if(0===d.length)return[c,a.getIndexWithinParent()];a=0===b?0:1;a=d[0].getIndexWithinParent()+a;return[c,a]}if(!E(a)||0===b)return[c,a.getIndexWithinParent()];if(d=a.getChildAtIndex(b))b=new Se(S(a.__key,b,"element"),S(a.__key,b,"element"),0,""),(b=a.insertNewAfter(b))&&b.append(d,...d.getNextSiblings());return[c,a.getIndexWithinParent()+1]}
-function We(a){let b=ee(),c=null;for(let d=0;d<a.length;d++){let e=a[d],f=Gc(e);if(f||x(e)&&e.isInline()||E(e)&&e.isInline()||B(e)||e.isParentRequired()){if(null===c&&(c=e.createParentElementNode(),b.append(c),f))continue;null!==c&&c.append(e)}else b.append(e),c=null}return b}let T=null,U=null,Z=!1,lf=!1,$b=0,mf={characterData:!0,childList:!0,subtree:!0};function ec(){return Z||null!==T&&T._readOnly}function G(){Z&&q(13)}function ac(){null===T&&q(15);return T}
-function F(){null===U&&q(16);return U}function nf(a,b,c){var d=b.__type;let e=a._nodes.get(d);void 0===e&&q(30,d);a=c.get(d);void 0===a&&(a=Array.from(e.transforms),c.set(d,a));c=a.length;for(d=0;d<c&&(a[d](b),b.isAttached());d++);}function of(a,b){b=b._dirtyLeaves;a=a._nodeMap;for(let c of b)b=a.get(c),B(b)&&b.isAttached()&&b.isSimpleText()&&!b.isUnmergeable()&&Hb(b)}
-function pf(a,b){let c=b._dirtyLeaves,d=b._dirtyElements;a=a._nodeMap;let e=dc(),f=new Map;var g=c;let h=g.size;for(var k=d,m=k.size;0<h||0<m;){if(0<h){b._dirtyLeaves=new Set;for(let n of g)g=a.get(n),B(g)&&g.isAttached()&&g.isSimpleText()&&!g.isUnmergeable()&&Hb(g),void 0!==g&&void 0!==g&&g.__key!==e&&g.isAttached()&&nf(b,g,f),c.add(n);g=b._dirtyLeaves;h=g.size;if(0<h){$b++;continue}}b._dirtyLeaves=new Set;b._dirtyElements=new Map;for(let n of k)if(k=n[0],m=n[1],"root"===k||m)g=a.get(k),void 0!==
-g&&void 0!==g&&g.__key!==e&&g.isAttached()&&nf(b,g,f),d.set(k,m);g=b._dirtyLeaves;h=g.size;k=b._dirtyElements;m=k.size;$b++}b._dirtyLeaves=c;b._dirtyElements=d}function qf(a,b){var c=a.type,d=b.get(c);void 0===d&&q(17,c);c=d.klass;a.type!==c.getType()&&q(18,c.name);c=c.importJSON(a);a=a.children;if(E(c)&&Array.isArray(a))for(d=0;d<a.length;d++){let e=qf(a[d],b);c.append(e)}return c}function rf(a,b){let c=T,d=Z,e=U;T=a;Z=!0;U=null;try{return b()}finally{T=c,Z=d,U=e}}
-function sf(a,b){let c=a._pendingEditorState,d=a._rootElement,e=a._headless||null===d;if(null!==c){var f=a._editorState,g=f._selection,h=c._selection,k=0!==a._dirtyType,m=T,n=Z,p=U,l=a._updating,r=a._observer,w=null;a._pendingEditorState=null;a._editorState=c;if(!e&&k&&null!==r){U=a;T=c;Z=!1;a._updating=!0;try{let D=a._dirtyType,P=a._dirtyElements,Q=a._dirtyLeaves;r.disconnect();var y=D,z=P,A=Q;N=Kc=M="";Nc=2===y;Qc=null;O=a;Lc=a._config;Mc=a._nodes;Pc=O._listeners.mutation;Rc=z;Sc=A;Tc=f._nodeMap;
-Uc=c._nodeMap;Oc=c._readOnly;dd=new Map(a._keyToDOMMap);let fa=new Map;ed=fa;sd("root",null);ed=dd=Lc=Uc=Tc=Sc=Rc=Mc=O=void 0;w=fa}catch(D){D instanceof Error&&a._onError(D);if(lf)throw D;tf(a,null,d,c);Db(a);a._dirtyType=2;lf=!0;sf(a,f);lf=!1;return}finally{r.observe(d,mf),a._updating=l,T=m,Z=n,U=p}}c._readOnly||(c._readOnly=!0);var Ia=a._dirtyLeaves,ca=a._dirtyElements,Wa=a._normalizedNodes,ia=a._updateTags,Vc=a._deferred;k&&(a._dirtyType=0,a._cloneNotNeeded.clear(),a._dirtyLeaves=new Set,a._dirtyElements=
-new Map,a._normalizedNodes=new Set,a._updateTags=new Set);var De=a._decorators,Nb=a._pendingDecorators||De,Hf=c._nodeMap,Wc;for(Wc in Nb)Hf.has(Wc)||(Nb===De&&(Nb=fc(a)),delete Nb[Wc]);var ha=e?null:xb(a._window);if(a._editable&&null!==ha&&(k||null===h||h.dirty)){U=a;T=c;try{null!==r&&r.disconnect();if(k||null===h||h.dirty){let D=a._blockCursorElement;null!==D&&Cc(D,a,d);a:{let P=ha.anchorNode,Q=ha.focusNode,fa=ha.anchorOffset,lb=ha.focusOffset,W=document.activeElement;if(!(ia.has("collaboration")&&
-W!==d||null!==W&&Mb(W)))if(C(h)){var mb=h.anchor,Xc=h.focus,Ee=mb.key,If=Xc.key,Fe=uc(a,Ee),Ge=uc(a,If),Ob=mb.offset,He=Xc.offset,Yc=h.format,Zc=h.style,Ie=h.isCollapsed(),nb=Fe,Pb=Ge,$c=!1;if("text"===mb.type){nb=Xb(Fe);let X=mb.getNode();$c=X.getFormat()!==Yc||X.getStyle()!==Zc}else C(g)&&"text"===g.anchor.type&&($c=!0);"text"===Xc.type&&(Pb=Xb(Ge));if(null!==nb&&null!==Pb){if(Ie&&(null===g||$c||C(g)&&(g.format!==Yc||g.style!==Zc))){var Jf=performance.now();Md=[Yc,Zc,Ob,Ee,Jf]}if(fa===Ob&&lb===
-He&&P===nb&&Q===Pb&&("Range"!==ha.type||!Ie)&&(null!==W&&d.contains(W)||d.focus({preventScroll:!0}),"element"!==mb.type))break a;try{ha.setBaseAndExtent(nb,Ob,Pb,He)}catch(X){}if(!ia.has("skip-scroll-into-view")&&h.isCollapsed()&&null!==d&&d===document.activeElement){let X=h instanceof Se&&"element"===h.anchor.type?nb.childNodes[Ob]||null:0<ha.rangeCount?ha.getRangeAt(0):null;if(null!==X){let Y;if(X instanceof Text){let V=document.createRange();V.selectNode(X);Y=V.getBoundingClientRect()}else Y=X.getBoundingClientRect();
-let wa=d.ownerDocument,Da=wa.defaultView;if(null!==Da)for(var {top:ad,bottom:bd}=Y,Qb,Rb,ma=d;null!==ma;){let V=ma===wa.body;if(V)Qb=0,Rb=Eb(a).innerHeight;else{let Sb=ma.getBoundingClientRect();Qb=Sb.top;Rb=Sb.bottom}let Ea=0;ad<Qb?Ea=-(Qb-ad):bd>Rb&&(Ea=bd-Rb);if(0!==Ea)if(V)Da.scrollBy(0,Ea);else{let Sb=ma.scrollTop;ma.scrollTop+=Ea;let Je=ma.scrollTop-Sb;ad-=Je;bd-=Je}if(V)break;ma=Vb(ma)}}}Id=!0}}else null!==g&&Tb(a,P,Q)&&ha.removeAllRanges()}}a:{let D=a._blockCursorElement;if(C(h)&&h.isCollapsed()&&
+function ae(a,b,c,d=1){var e=a.anchor,f=a.focus,g=e.getNode(),h=f.getNode();if(b.is(g)||b.is(h)){g=b.__key;if(a.isCollapsed()){if(b=e.offset,c<=b&&0<d||c<b&&0>d)c=Math.max(0,b+d),e.set(g,c,"element"),f.set(g,c,"element"),df(a)}else{let m=a.isBackward();h=m?f:e;var k=h.getNode();e=m?e:f;f=e.getNode();b.is(k)&&(k=h.offset,(c<=k&&0<d||c<k&&0>d)&&h.set(g,Math.max(0,k+d),"element"));b.is(f)&&(b=e.offset,(c<=b&&0<d||c<b&&0>d)&&e.set(g,Math.max(0,b+d),"element"))}df(a)}}
+function df(a){var b=a.anchor,c=b.offset;let d=a.focus;var e=d.offset,f=b.getNode(),g=d.getNode();if(a.isCollapsed())E(f)&&(g=f.getChildrenSize(),g=(e=c>=g)?f.getChildAtIndex(g-1):f.getChildAtIndex(c),B(g)&&(c=0,e&&(c=g.getTextContentSize()),b.set(g.__key,c,"text"),d.set(g.__key,c,"text")));else{if(E(f)){let h=f.getChildrenSize();c=(a=c>=h)?f.getChildAtIndex(h-1):f.getChildAtIndex(c);B(c)&&(f=0,a&&(f=c.getTextContentSize()),b.set(c.__key,f,"text"))}E(g)&&(c=g.getChildrenSize(),e=(b=e>=c)?g.getChildAtIndex(c-
+1):g.getChildAtIndex(e),B(e)&&(g=0,b&&(g=e.getTextContentSize()),d.set(e.__key,g,"text")))}}function ef(a,b){b=b.getEditorState()._selection;a=a._selection;if(C(a)){var c=a.anchor;let d=a.focus,e;"text"===c.type&&(e=c.getNode(),e.selectionTransform(b,a));"text"===d.type&&(c=d.getNode(),e!==c&&c.selectionTransform(b,a))}}
+function $d(a,b,c,d,e){let f=null,g=0,h=null;null!==d?(f=d.__key,B(d)?(g=d.getTextContentSize(),h="text"):E(d)&&(g=d.getChildrenSize(),h="element")):null!==e&&(f=e.__key,B(e)?h="text":E(e)&&(h="element"));null!==f&&null!==h?a.set(f,g,h):(g=b.getIndexWithinParent(),-1===g&&(g=c.getChildrenSize()),a.set(c.__key,g,"element"))}function ve(a,b,c,d,e){"text"===a.type?(a.key=c,b||(a.offset+=e)):a.offset>d.getIndexWithinParent()&&--a.offset}
+function ff(a){a instanceof gf||(a instanceof be?(a=Dc(a,hf),hf(a)||q(114)):(a=Dc(a.getNode(),hf),hf(a)||q(114)));let b=a.getParent();jf(b)||q(115);let c=b.getParent();kf(c)||q(116);return[a,b,c]}function We(a){a.isCollapsed()||a.removeText();var b=a.anchor;a=b.getNode();for(b=b.offset;!Fc(a);)[a,b]=lf(a,b);return b}
+function lf(a,b){var c=a.getParent();if(!c)return c=ee(),J().append(c),c.select(),[J(),0];if(B(a)){var d=a.splitText(b);if(0===d.length)return[c,a.getIndexWithinParent()];a=0===b?0:1;a=d[0].getIndexWithinParent()+a;return[c,a]}if(!E(a)||0===b)return[c,a.getIndexWithinParent()];if(d=a.getChildAtIndex(b))b=new Te(S(a.__key,b,"element"),S(a.__key,b,"element"),0,""),(b=a.insertNewAfter(b))&&b.append(d,...d.getNextSiblings());return[c,a.getIndexWithinParent()+1]}
+function Xe(a){let b=ee(),c=null;for(let d=0;d<a.length;d++){let e=a[d],f=Gc(e);if(f||x(e)&&e.isInline()||E(e)&&e.isInline()||B(e)||e.isParentRequired()){if(null===c&&(c=e.createParentElementNode(),b.append(c),f))continue;null!==c&&c.append(e)}else b.append(e),c=null}return b}let T=null,U=null,Z=!1,mf=!1,$b=0,nf={characterData:!0,childList:!0,subtree:!0};function ec(){return Z||null!==T&&T._readOnly}function G(){Z&&q(13)}function ac(){null===T&&q(15);return T}
+function F(){null===U&&q(16);return U}function of(a,b,c){var d=b.__type;let e=a._nodes.get(d);void 0===e&&q(30,d);a=c.get(d);void 0===a&&(a=Array.from(e.transforms),c.set(d,a));c=a.length;for(d=0;d<c&&(a[d](b),b.isAttached());d++);}function pf(a,b){b=b._dirtyLeaves;a=a._nodeMap;for(let c of b)b=a.get(c),B(b)&&b.isAttached()&&b.isSimpleText()&&!b.isUnmergeable()&&Hb(b)}
+function qf(a,b){let c=b._dirtyLeaves,d=b._dirtyElements;a=a._nodeMap;let e=dc(),f=new Map;var g=c;let h=g.size;for(var k=d,m=k.size;0<h||0<m;){if(0<h){b._dirtyLeaves=new Set;for(let n of g)g=a.get(n),B(g)&&g.isAttached()&&g.isSimpleText()&&!g.isUnmergeable()&&Hb(g),void 0!==g&&void 0!==g&&g.__key!==e&&g.isAttached()&&of(b,g,f),c.add(n);g=b._dirtyLeaves;h=g.size;if(0<h){$b++;continue}}b._dirtyLeaves=new Set;b._dirtyElements=new Map;for(let n of k)if(k=n[0],m=n[1],"root"===k||m)g=a.get(k),void 0!==
+g&&void 0!==g&&g.__key!==e&&g.isAttached()&&of(b,g,f),d.set(k,m);g=b._dirtyLeaves;h=g.size;k=b._dirtyElements;m=k.size;$b++}b._dirtyLeaves=c;b._dirtyElements=d}function rf(a,b){var c=a.type,d=b.get(c);void 0===d&&q(17,c);c=d.klass;a.type!==c.getType()&&q(18,c.name);c=c.importJSON(a);a=a.children;if(E(c)&&Array.isArray(a))for(d=0;d<a.length;d++){let e=rf(a[d],b);c.append(e)}return c}function sf(a,b){let c=T,d=Z,e=U;T=a;Z=!0;U=null;try{return b()}finally{T=c,Z=d,U=e}}
+function tf(a,b){let c=a._pendingEditorState,d=a._rootElement,e=a._headless||null===d;if(null!==c){var f=a._editorState,g=f._selection,h=c._selection,k=0!==a._dirtyType,m=T,n=Z,p=U,l=a._updating,r=a._observer,w=null;a._pendingEditorState=null;a._editorState=c;if(!e&&k&&null!==r){U=a;T=c;Z=!1;a._updating=!0;try{let D=a._dirtyType,P=a._dirtyElements,Q=a._dirtyLeaves;r.disconnect();var y=D,z=P,A=Q;N=Kc=M="";Nc=2===y;Qc=null;O=a;Lc=a._config;Mc=a._nodes;Pc=O._listeners.mutation;Rc=z;Sc=A;Tc=f._nodeMap;
+Uc=c._nodeMap;Oc=c._readOnly;dd=new Map(a._keyToDOMMap);let fa=new Map;ed=fa;sd("root",null);ed=dd=Lc=Uc=Tc=Sc=Rc=Mc=O=void 0;w=fa}catch(D){D instanceof Error&&a._onError(D);if(mf)throw D;uf(a,null,d,c);Db(a);a._dirtyType=2;mf=!0;tf(a,f);mf=!1;return}finally{r.observe(d,nf),a._updating=l,T=m,Z=n,U=p}}c._readOnly||(c._readOnly=!0);var Ia=a._dirtyLeaves,ca=a._dirtyElements,Wa=a._normalizedNodes,ia=a._updateTags,Vc=a._deferred;k&&(a._dirtyType=0,a._cloneNotNeeded.clear(),a._dirtyLeaves=new Set,a._dirtyElements=
+new Map,a._normalizedNodes=new Set,a._updateTags=new Set);var Ee=a._decorators,Nb=a._pendingDecorators||Ee,If=c._nodeMap,Wc;for(Wc in Nb)If.has(Wc)||(Nb===Ee&&(Nb=fc(a)),delete Nb[Wc]);var ha=e?null:xb(a._window);if(a._editable&&null!==ha&&(k||null===h||h.dirty)){U=a;T=c;try{null!==r&&r.disconnect();if(k||null===h||h.dirty){let D=a._blockCursorElement;null!==D&&Cc(D,a,d);a:{let P=ha.anchorNode,Q=ha.focusNode,fa=ha.anchorOffset,lb=ha.focusOffset,W=document.activeElement;if(!(ia.has("collaboration")&&
+W!==d||null!==W&&Mb(W)))if(C(h)){var mb=h.anchor,Xc=h.focus,Fe=mb.key,Jf=Xc.key,Ge=uc(a,Fe),He=uc(a,Jf),Ob=mb.offset,Ie=Xc.offset,Yc=h.format,Zc=h.style,Je=h.isCollapsed(),nb=Ge,Pb=He,$c=!1;if("text"===mb.type){nb=Xb(Ge);let X=mb.getNode();$c=X.getFormat()!==Yc||X.getStyle()!==Zc}else C(g)&&"text"===g.anchor.type&&($c=!0);"text"===Xc.type&&(Pb=Xb(He));if(null!==nb&&null!==Pb){if(Je&&(null===g||$c||C(g)&&(g.format!==Yc||g.style!==Zc))){var Kf=performance.now();Md=[Yc,Zc,Ob,Fe,Kf]}if(fa===Ob&&lb===
+Ie&&P===nb&&Q===Pb&&("Range"!==ha.type||!Je)&&(null!==W&&d.contains(W)||d.focus({preventScroll:!0}),"element"!==mb.type))break a;try{ha.setBaseAndExtent(nb,Ob,Pb,Ie)}catch(X){}if(!ia.has("skip-scroll-into-view")&&h.isCollapsed()&&null!==d&&d===document.activeElement){let X=h instanceof Te&&"element"===h.anchor.type?nb.childNodes[Ob]||null:0<ha.rangeCount?ha.getRangeAt(0):null;if(null!==X){let Y;if(X instanceof Text){let V=document.createRange();V.selectNode(X);Y=V.getBoundingClientRect()}else Y=X.getBoundingClientRect();
+let wa=d.ownerDocument,Da=wa.defaultView;if(null!==Da)for(var {top:ad,bottom:bd}=Y,Qb,Rb,ma=d;null!==ma;){let V=ma===wa.body;if(V)Qb=0,Rb=Eb(a).innerHeight;else{let Sb=ma.getBoundingClientRect();Qb=Sb.top;Rb=Sb.bottom}let Ea=0;ad<Qb?Ea=-(Qb-ad):bd>Rb&&(Ea=bd-Rb);if(0!==Ea)if(V)Da.scrollBy(0,Ea);else{let Sb=ma.scrollTop;ma.scrollTop+=Ea;let Ke=ma.scrollTop-Sb;ad-=Ke;bd-=Ke}if(V)break;ma=Vb(ma)}}}Id=!0}}else null!==g&&Tb(a,P,Q)&&ha.removeAllRanges()}}a:{let D=a._blockCursorElement;if(C(h)&&h.isCollapsed()&&
"element"===h.anchor.type&&d.contains(document.activeElement)){let P=h.anchor,Q=P.getNode(),fa=P.offset,lb=Q.getChildrenSize(),W=!1,X=null;if(fa===lb){let Y=Q.getChildAtIndex(fa-1);Bc(Y)&&(W=!0)}else{let Y=Q.getChildAtIndex(fa);if(Bc(Y)){let wa=Y.getPreviousSibling();if(null===wa||Bc(wa))W=!0,X=a.getElementByKey(Y.__key)}}if(W){let Y=a.getElementByKey(Q.__key);if(null===D){let wa=a._config.theme,Da=document.createElement("div");Da.contentEditable="false";Da.setAttribute("data-lexical-cursor","true");
-let V=wa.blockCursor;if(void 0!==V){if("string"===typeof V){let Ea=V.split(" ");V=wa.blockCursor=Ea}void 0!==V&&Da.classList.add(...V)}a._blockCursorElement=D=Da}d.style.caretColor="transparent";null===X?Y.appendChild(D):Y.insertBefore(D,X);break a}}null!==D&&Cc(D,a,d)}null!==r&&r.observe(d,mf)}finally{U=p,T=m}}if(null!==w){var Kf=w;let D=Array.from(a._listeners.mutation),P=D.length;for(let Q=0;Q<P;Q++){let [fa,lb]=D[Q],W=Kf.get(lb);void 0!==W&&fa(W,{dirtyLeaves:Ia,prevEditorState:f,updateTags:ia})}}C(h)||
-null===h||null!==g&&g.is(h)||a.dispatchCommand(aa,void 0);var cd=a._pendingDecorators;null!==cd&&(a._decorators=cd,a._pendingDecorators=null,uf("decorator",a,!0,cd));var Lf=gc(b||f),Ke=gc(c);Lf!==Ke&&uf("textcontent",a,!0,Ke);uf("update",a,!0,{dirtyElements:ca,dirtyLeaves:Ia,editorState:c,normalizedNodes:Wa,prevEditorState:b||f,tags:ia});a._deferred=[];if(0!==Vc.length){let D=a._updating;a._updating=!0;try{for(let P=0;P<Vc.length;P++)Vc[P]()}finally{a._updating=D}}var Le=a._updates;if(0!==Le.length){let D=
-Le.shift();if(D){let [P,Q]=D;vf(a,P,Q)}}}}function uf(a,b,c,...d){let e=b._updating;b._updating=c;try{let f=Array.from(b._listeners[a]);for(a=0;a<f.length;a++)f[a].apply(null,d)}finally{b._updating=e}}
+let V=wa.blockCursor;if(void 0!==V){if("string"===typeof V){let Ea=V.split(" ");V=wa.blockCursor=Ea}void 0!==V&&Da.classList.add(...V)}a._blockCursorElement=D=Da}d.style.caretColor="transparent";null===X?Y.appendChild(D):Y.insertBefore(D,X);break a}}null!==D&&Cc(D,a,d)}null!==r&&r.observe(d,nf)}finally{U=p,T=m}}if(null!==w){var Lf=w;let D=Array.from(a._listeners.mutation),P=D.length;for(let Q=0;Q<P;Q++){let [fa,lb]=D[Q],W=Lf.get(lb);void 0!==W&&fa(W,{dirtyLeaves:Ia,prevEditorState:f,updateTags:ia})}}C(h)||
+null===h||null!==g&&g.is(h)||a.dispatchCommand(aa,void 0);var cd=a._pendingDecorators;null!==cd&&(a._decorators=cd,a._pendingDecorators=null,vf("decorator",a,!0,cd));var Mf=gc(b||f),Le=gc(c);Mf!==Le&&vf("textcontent",a,!0,Le);vf("update",a,!0,{dirtyElements:ca,dirtyLeaves:Ia,editorState:c,normalizedNodes:Wa,prevEditorState:b||f,tags:ia});a._deferred=[];if(0!==Vc.length){let D=a._updating;a._updating=!0;try{for(let P=0;P<Vc.length;P++)Vc[P]()}finally{a._updating=D}}var Me=a._updates;if(0!==Me.length){let D=
+Me.shift();if(D){let [P,Q]=D;wf(a,P,Q)}}}}function vf(a,b,c,...d){let e=b._updating;b._updating=c;try{let f=Array.from(b._listeners[a]);for(a=0;a<f.length;a++)f[a].apply(null,d)}finally{b._updating=e}}
function R(a,b,c){if(!1===a._updating||U!==a){let f=!1;a.update(()=>{f=R(a,b,c)});return f}let d=kc(a);for(let f=4;0<=f;f--)for(let g=0;g<d.length;g++){var e=d[g]._commands.get(b);if(void 0!==e&&(e=e[f],void 0!==e)){e=Array.from(e);let h=e.length;for(let k=0;k<h;k++)if(!0===e[k](c,a))return!0}}return!1}
-function wf(a,b){let c=a._updates;for(b=b||!1;0!==c.length;){var d=c.shift();if(d){let [e,f]=d,g;void 0!==f&&(d=f.onUpdate,g=f.tag,f.skipTransforms&&(b=!0),d&&a._deferred.push(d),g&&a._updateTags.add(g));e()}}return b}
-function vf(a,b,c){let d=a._updateTags;var e,f=e=!1;if(void 0!==c){var g=c.onUpdate;e=c.tag;null!=e&&d.add(e);e=c.skipTransforms||!1;f=c.discrete||!1}g&&a._deferred.push(g);c=a._editorState;g=a._pendingEditorState;let h=!1;if(null===g||g._readOnly)g=a._pendingEditorState=new xf(new Map((g||c)._nodeMap)),h=!0;g._flushSync=f;f=T;let k=Z,m=U,n=a._updating;T=g;Z=!1;a._updating=!0;U=a;try{h&&(a._headless?null!=c._selection&&(g._selection=c._selection.clone()):g._selection=bf(a));let p=a._compositionKey;
-b();e=wf(a,e);df(g,a);0!==a._dirtyType&&(e?of(g,a):pf(g,a),wf(a),Jc(c,g,a._dirtyLeaves,a._dirtyElements));p!==a._compositionKey&&(g._flushSync=!0);let l=g._selection;if(C(l)){let r=g._nodeMap,w=l.focus.key;void 0!==r.get(l.anchor.key)&&void 0!==r.get(w)||q(19)}else Ud(l)&&0===l._nodes.size&&(g._selection=null)}catch(p){p instanceof Error&&a._onError(p);a._pendingEditorState=c;a._dirtyType=2;a._cloneNotNeeded.clear();a._dirtyLeaves=new Set;a._dirtyElements.clear();sf(a);return}finally{T=f,Z=k,U=m,
-a._updating=n,$b=0}0!==a._dirtyType||yf(g,a)?g._flushSync?(g._flushSync=!1,sf(a)):h&&Lb(()=>{sf(a)}):(g._flushSync=!1,h&&(d.clear(),a._deferred=[],a._pendingEditorState=null))}function v(a,b,c){a._updating?a._updates.push([b,c]):vf(a,b,c)}class zf extends be{constructor(a){super(a)}decorate(){q(47)}isIsolated(){return!1}isInline(){return!0}isKeyboardSelectable(){return!0}}function x(a){return a instanceof zf}
-class Af extends be{constructor(a){super(a);this.__last=this.__first=null;this.__indent=this.__format=this.__size=0;this.__dir=null}getFormat(){return this.getLatest().__format}getFormatType(){let a=this.getFormat();return kb[a]||""}getIndent(){return this.getLatest().__indent}getChildren(){let a=[],b=this.getFirstChild();for(;null!==b;)a.push(b),b=b.getNextSibling();return a}getChildrenKeys(){let a=[],b=this.getFirstChild();for(;null!==b;)a.push(b.__key),b=b.getNextSibling();return a}getChildrenSize(){return this.getLatest().__size}isEmpty(){return 0===
+function xf(a,b){let c=a._updates;for(b=b||!1;0!==c.length;){var d=c.shift();if(d){let [e,f]=d,g;void 0!==f&&(d=f.onUpdate,g=f.tag,f.skipTransforms&&(b=!0),d&&a._deferred.push(d),g&&a._updateTags.add(g));e()}}return b}
+function wf(a,b,c){let d=a._updateTags;var e,f=e=!1;if(void 0!==c){var g=c.onUpdate;e=c.tag;null!=e&&d.add(e);e=c.skipTransforms||!1;f=c.discrete||!1}g&&a._deferred.push(g);c=a._editorState;g=a._pendingEditorState;let h=!1;if(null===g||g._readOnly)g=a._pendingEditorState=new yf(new Map((g||c)._nodeMap)),h=!0;g._flushSync=f;f=T;let k=Z,m=U,n=a._updating;T=g;Z=!1;a._updating=!0;U=a;try{h&&(a._headless?null!=c._selection&&(g._selection=c._selection.clone()):g._selection=cf(a));let p=a._compositionKey;
+b();e=xf(a,e);ef(g,a);0!==a._dirtyType&&(e?pf(g,a):qf(g,a),xf(a),Jc(c,g,a._dirtyLeaves,a._dirtyElements));p!==a._compositionKey&&(g._flushSync=!0);let l=g._selection;if(C(l)){let r=g._nodeMap,w=l.focus.key;void 0!==r.get(l.anchor.key)&&void 0!==r.get(w)||q(19)}else Ud(l)&&0===l._nodes.size&&(g._selection=null)}catch(p){p instanceof Error&&a._onError(p);a._pendingEditorState=c;a._dirtyType=2;a._cloneNotNeeded.clear();a._dirtyLeaves=new Set;a._dirtyElements.clear();tf(a);return}finally{T=f,Z=k,U=m,
+a._updating=n,$b=0}0!==a._dirtyType||zf(g,a)?g._flushSync?(g._flushSync=!1,tf(a)):h&&Lb(()=>{tf(a)}):(g._flushSync=!1,h&&(d.clear(),a._deferred=[],a._pendingEditorState=null))}function v(a,b,c){a._updating?a._updates.push([b,c]):wf(a,b,c)}class Af extends be{constructor(a){super(a)}decorate(){q(47)}isIsolated(){return!1}isInline(){return!0}isKeyboardSelectable(){return!0}}function x(a){return a instanceof Af}
+class Bf extends be{constructor(a){super(a);this.__last=this.__first=null;this.__indent=this.__format=this.__size=0;this.__dir=null}getFormat(){return this.getLatest().__format}getFormatType(){let a=this.getFormat();return kb[a]||""}getIndent(){return this.getLatest().__indent}getChildren(){let a=[],b=this.getFirstChild();for(;null!==b;)a.push(b),b=b.getNextSibling();return a}getChildrenKeys(){let a=[],b=this.getFirstChild();for(;null!==b;)a.push(b.__key),b=b.getNextSibling();return a}getChildrenSize(){return this.getLatest().__size}isEmpty(){return 0===
this.getChildrenSize()}isDirty(){let a=F()._dirtyElements;return null!==a&&a.has(this.__key)}isLastChild(){let a=this.getLatest(),b=this.getParentOrThrow().getLastChild();return null!==b&&b.is(a)}getAllTextNodes(){let a=[],b=this.getFirstChild();for(;null!==b;){B(b)&&a.push(b);if(E(b)){let c=b.getAllTextNodes();a.push(...c)}b=b.getNextSibling()}return a}getFirstDescendant(){let a=this.getFirstChild();for(;null!==a;){if(E(a)){let b=a.getFirstChild();if(null!==b){a=b;continue}}break}return a}getLastDescendant(){let a=
this.getLastChild();for(;null!==a;){if(E(a)){let b=a.getLastChild();if(null!==b){a=b;continue}}break}return a}getDescendantByIndex(a){let b=this.getChildren(),c=b.length;if(a>=c)return a=b[c-1],E(a)&&a.getLastDescendant()||a||null;a=b[a];return E(a)&&a.getFirstDescendant()||a||null}getFirstChild(){let a=this.getLatest().__first;return null===a?null:I(a)}getFirstChildOrThrow(){let a=this.getFirstChild();null===a&&q(45,this.__key);return a}getLastChild(){let a=this.getLatest().__last;return null===
a?null:I(a)}getLastChildOrThrow(){let a=this.getLastChild();null===a&&q(96,this.__key);return a}getChildAtIndex(a){var b=this.getChildrenSize();let c;if(a<b/2){c=this.getFirstChild();for(b=0;null!==c&&b<=a;){if(b===a)return c;c=c.getNextSibling();b++}return null}c=this.getLastChild();for(--b;null!==c&&b>=a;){if(b===a)return c;c=c.getPreviousSibling();b--}return null}getTextContent(){let a="",b=this.getChildren(),c=b.length;for(let d=0;d<c;d++){let e=b[d];a+=e.getTextContent();E(e)&&d!==c-1&&!e.isInline()&&
(a+="\n\n")}return a}getTextContentSize(){let a=0,b=this.getChildren(),c=b.length;for(let d=0;d<c;d++){let e=b[d];a+=e.getTextContentSize();E(e)&&d!==c-1&&!e.isInline()&&(a+=2)}return a}getDirection(){return this.getLatest().__dir}hasFormat(a){return""!==a?(a=jb[a],0!==(this.getFormat()&a)):!1}select(a,b){G();let c=u(),d=a,e=b;var f=this.getChildrenSize();if(!this.canBeEmpty())if(0===a&&0===b){if(a=this.getFirstChild(),B(a)||E(a))return a.select(0,0)}else if(!(void 0!==a&&a!==f||void 0!==b&&b!==f)&&
-(a=this.getLastChild(),B(a)||E(a)))return a.select();void 0===d&&(d=f);void 0===e&&(e=f);f=this.__key;if(C(c))c.anchor.set(f,d,"element"),c.focus.set(f,e,"element"),c.dirty=!0;else return te(f,d,f,e,"element","element");return c}selectStart(){let a=this.getFirstDescendant();return a?a.selectStart():this.select()}selectEnd(){let a=this.getLastDescendant();return a?a.selectEnd():this.select()}clear(){let a=this.getWritable();this.getChildren().forEach(b=>b.remove());return a}append(...a){return this.splice(this.getChildrenSize(),
+(a=this.getLastChild(),B(a)||E(a)))return a.select();void 0===d&&(d=f);void 0===e&&(e=f);f=this.__key;if(C(c))c.anchor.set(f,d,"element"),c.focus.set(f,e,"element"),c.dirty=!0;else return ue(f,d,f,e,"element","element");return c}selectStart(){let a=this.getFirstDescendant();return a?a.selectStart():this.select()}selectEnd(){let a=this.getLastDescendant();return a?a.selectEnd():this.select()}clear(){let a=this.getWritable();this.getChildren().forEach(b=>b.remove());return a}append(...a){return this.splice(this.getChildrenSize(),
0,a)}setDirection(a){let b=this.getWritable();b.__dir=a;return b}setFormat(a){this.getWritable().__format=""!==a?jb[a]:0;return this}setIndent(a){this.getWritable().__indent=a;return this}splice(a,b,c){let d=c.length,e=this.getChildrenSize(),f=this.getWritable(),g=f.__key;var h=[],k=[];let m=this.getChildAtIndex(a+b),n=null,p=e-b+d;if(0!==a)if(a===e)n=this.getLastChild();else{var l=this.getChildAtIndex(a);null!==l&&(n=l.getPreviousSibling())}if(0<b){var r=null===n?this.getFirstChild():n.getNextSibling();
for(l=0;l<b;l++){null===r&&q(100);var w=r.getNextSibling(),y=r.__key;r=r.getWritable();bc(r);k.push(y);r=w}}l=n;for(w=0;w<d;w++){y=c[w];null!==l&&y.is(l)&&(n=l=l.getPreviousSibling());r=y.getWritable();r.__parent===g&&p--;bc(r);let z=y.__key;null===l?(f.__first=z,r.__prev=null):(l=l.getWritable(),l.__next=z,r.__prev=l.__key);y.__key===g&&q(76);r.__parent=g;h.push(z);l=y}a+b===e?null!==l&&(l.getWritable().__next=null,f.__last=l.__key):null!==m&&(a=m.getWritable(),null!==l?(b=l.getWritable(),a.__prev=
-l.__key,b.__next=m.__key):a.__prev=null);f.__size=p;if(k.length&&(a=u(),C(a))){k=new Set(k);h=new Set(h);let {anchor:z,focus:A}=a;Bf(z,k,h)&&$d(z,z.getNode(),this,n,m);Bf(A,k,h)&&$d(A,A.getNode(),this,n,m);0!==p||this.canBeEmpty()||xc(this)||this.remove()}return f}exportJSON(){return{children:[],direction:this.getDirection(),format:this.getFormatType(),indent:this.getIndent(),type:"element",version:1}}insertNewAfter(){return null}canIndent(){return!0}collapseAtStart(){return!1}excludeFromCopy(){return!1}canExtractContents(){return!0}canReplaceWith(){return!0}canInsertAfter(){return!0}canBeEmpty(){return!0}canInsertTextBefore(){return!0}canInsertTextAfter(){return!0}isInline(){return!1}isShadowRoot(){return!1}canMergeWith(){return!1}extractWithChild(){return!1}}
-function E(a){return a instanceof Af}function Bf(a,b,c){for(a=a.getNode();a;){let d=a.__key;if(b.has(d)&&!c.has(d))return!0;a=a.getParent()}return!1}
-class Cf extends Af{static getType(){return"root"}static clone(){return new Cf}constructor(){super("root");this.__cachedText=null}getTopLevelElementOrThrow(){q(51)}getTextContent(){let a=this.__cachedText;return!ec()&&0!==F()._dirtyType||null===a?super.getTextContent():a}remove(){q(52)}replace(){q(53)}insertBefore(){q(54)}insertAfter(){q(55)}updateDOM(){return!1}append(...a){for(let b=0;b<a.length;b++){let c=a[b];E(c)||x(c)||q(56)}return super.append(...a)}static importJSON(a){let b=J();b.setFormat(a.format);
-b.setIndent(a.indent);b.setDirection(a.direction);return b}exportJSON(){return{children:[],direction:this.getDirection(),format:this.getFormatType(),indent:this.getIndent(),type:"root",version:1}}collapseAtStart(){return!0}}function L(a){return a instanceof Cf}function yf(a,b){b=b.getEditorState()._selection;a=a._selection;if(null!==a){if(a.dirty||!a.is(b))return!0}else if(null!==b)return!0;return!1}function Df(){return new xf(new Map([["root",new Cf]]))}
-function Ef(a){let b=a.exportJSON();var c=a.constructor;b.type!==c.getType()&&q(130,c.name);if(E(a)){let d=b.children;Array.isArray(d)||q(59,c.name);a=a.getChildren();for(c=0;c<a.length;c++){let e=Ef(a[c]);d.push(e)}}return b}
-class xf{constructor(a,b){this._nodeMap=a;this._selection=b||null;this._readOnly=this._flushSync=!1}isEmpty(){return 1===this._nodeMap.size&&null===this._selection}read(a){return rf(this,a)}clone(a){a=new xf(this._nodeMap,void 0===a?this._selection:a);a._readOnly=!0;return a}toJSON(){return rf(this,()=>({root:Ef(J())}))}}
-class Ff extends Af{static getType(){return"paragraph"}static clone(a){return new Ff(a.__key)}createDOM(a){let b=document.createElement("p");a=pc(a.theme,"paragraph");void 0!==a&&b.classList.add(...a);return b}updateDOM(){return!1}static importDOM(){return{p:()=>({conversion:Gf,priority:0})}}exportDOM(a){({element:a}=super.exportDOM(a));if(a&&Ec(a)){this.isEmpty()&&a.append(document.createElement("br"));var b=this.getFormatType();a.style.textAlign=b;if(b=this.getDirection())a.dir=b;b=this.getIndent();
+l.__key,b.__next=m.__key):a.__prev=null);f.__size=p;if(k.length&&(a=u(),C(a))){k=new Set(k);h=new Set(h);let {anchor:z,focus:A}=a;Cf(z,k,h)&&$d(z,z.getNode(),this,n,m);Cf(A,k,h)&&$d(A,A.getNode(),this,n,m);0!==p||this.canBeEmpty()||xc(this)||this.remove()}return f}exportJSON(){return{children:[],direction:this.getDirection(),format:this.getFormatType(),indent:this.getIndent(),type:"element",version:1}}insertNewAfter(){return null}canIndent(){return!0}collapseAtStart(){return!1}excludeFromCopy(){return!1}canExtractContents(){return!0}canReplaceWith(){return!0}canInsertAfter(){return!0}canBeEmpty(){return!0}canInsertTextBefore(){return!0}canInsertTextAfter(){return!0}isInline(){return!1}isShadowRoot(){return!1}canMergeWith(){return!1}extractWithChild(){return!1}}
+function E(a){return a instanceof Bf}function Cf(a,b,c){for(a=a.getNode();a;){let d=a.__key;if(b.has(d)&&!c.has(d))return!0;a=a.getParent()}return!1}
+class Df extends Bf{static getType(){return"root"}static clone(){return new Df}constructor(){super("root");this.__cachedText=null}getTopLevelElementOrThrow(){q(51)}getTextContent(){let a=this.__cachedText;return!ec()&&0!==F()._dirtyType||null===a?super.getTextContent():a}remove(){q(52)}replace(){q(53)}insertBefore(){q(54)}insertAfter(){q(55)}updateDOM(){return!1}append(...a){for(let b=0;b<a.length;b++){let c=a[b];E(c)||x(c)||q(56)}return super.append(...a)}static importJSON(a){let b=J();b.setFormat(a.format);
+b.setIndent(a.indent);b.setDirection(a.direction);return b}exportJSON(){return{children:[],direction:this.getDirection(),format:this.getFormatType(),indent:this.getIndent(),type:"root",version:1}}collapseAtStart(){return!0}}function L(a){return a instanceof Df}function zf(a,b){b=b.getEditorState()._selection;a=a._selection;if(null!==a){if(a.dirty||!a.is(b))return!0}else if(null!==b)return!0;return!1}function Ef(){return new yf(new Map([["root",new Df]]))}
+function Ff(a){let b=a.exportJSON();var c=a.constructor;b.type!==c.getType()&&q(130,c.name);if(E(a)){let d=b.children;Array.isArray(d)||q(59,c.name);a=a.getChildren();for(c=0;c<a.length;c++){let e=Ff(a[c]);d.push(e)}}return b}
+class yf{constructor(a,b){this._nodeMap=a;this._selection=b||null;this._readOnly=this._flushSync=!1}isEmpty(){return 1===this._nodeMap.size&&null===this._selection}read(a){return sf(this,a)}clone(a){a=new yf(this._nodeMap,void 0===a?this._selection:a);a._readOnly=!0;return a}toJSON(){return sf(this,()=>({root:Ff(J())}))}}
+class Gf extends Bf{static getType(){return"paragraph"}static clone(a){return new Gf(a.__key)}createDOM(a){let b=document.createElement("p");a=pc(a.theme,"paragraph");void 0!==a&&b.classList.add(...a);return b}updateDOM(){return!1}static importDOM(){return{p:()=>({conversion:Hf,priority:0})}}exportDOM(a){({element:a}=super.exportDOM(a));if(a&&Ec(a)){this.isEmpty()&&a.append(document.createElement("br"));var b=this.getFormatType();a.style.textAlign=b;if(b=this.getDirection())a.dir=b;b=this.getIndent();
0<b&&(a.style.textIndent=`${20*b}px`)}return{element:a}}static importJSON(a){let b=ee();b.setFormat(a.format);b.setIndent(a.indent);b.setDirection(a.direction);return b}exportJSON(){return{...super.exportJSON(),type:"paragraph",version:1}}insertNewAfter(a,b){a=ee();let c=this.getDirection();a.setDirection(c);this.insertAfter(a,b);return a}collapseAtStart(){let a=this.getChildren();if(0===a.length||B(a[0])&&""===a[0].getTextContent().trim()){if(null!==this.getNextSibling())return this.selectNext(),
-this.remove(),!0;if(null!==this.getPreviousSibling())return this.selectPrevious(),this.remove(),!0}return!1}}function Gf(a){let b=ee();a.style&&(b.setFormat(a.style.textAlign),a=parseInt(a.style.textIndent,10)/20,0<a&&b.setIndent(a));return{node:b}}function ee(){return zc(new Ff)}
-function tf(a,b,c,d){let e=a._keyToDOMMap;e.clear();a._editorState=Df();a._pendingEditorState=d;a._compositionKey=null;a._dirtyType=0;a._cloneNotNeeded.clear();a._dirtyLeaves=new Set;a._dirtyElements.clear();a._normalizedNodes=new Set;a._updateTags=new Set;a._updates=[];a._blockCursorElement=null;d=a._observer;null!==d&&(d.disconnect(),a._observer=null);null!==b&&(b.textContent="");null!==c&&(c.textContent="",e.set("root",c))}
-function Mf(a,b){let c=new Map,d=new Set,e=f=>{Object.keys(f).forEach(g=>{let h=c.get(g);void 0===h&&(h=[],c.set(g,h));h.push(f[g])})};a.forEach(f=>{f=null!=f.klass.importDOM?f.klass.importDOM.bind(f.klass):null;null==f||d.has(f)||(d.add(f),f=f(),null!==f&&e(f))});b&&e(b);return c}
-class Nf{constructor(a,b,c,d,e,f,g){this._parentEditor=b;this._rootElement=null;this._editorState=a;this._compositionKey=this._pendingEditorState=null;this._deferred=[];this._keyToDOMMap=new Map;this._updates=[];this._updating=!1;this._listeners={decorator:new Set,editable:new Set,mutation:new Map,root:new Set,textcontent:new Set,update:new Set};this._commands=new Map;this._config=d;this._nodes=c;this._decorators={};this._pendingDecorators=null;this._dirtyType=0;this._cloneNotNeeded=new Set;this._dirtyLeaves=
+this.remove(),!0;if(null!==this.getPreviousSibling())return this.selectPrevious(),this.remove(),!0}return!1}}function Hf(a){let b=ee();a.style&&(b.setFormat(a.style.textAlign),a=parseInt(a.style.textIndent,10)/20,0<a&&b.setIndent(a));return{node:b}}function ee(){return zc(new Gf)}
+function uf(a,b,c,d){let e=a._keyToDOMMap;e.clear();a._editorState=Ef();a._pendingEditorState=d;a._compositionKey=null;a._dirtyType=0;a._cloneNotNeeded.clear();a._dirtyLeaves=new Set;a._dirtyElements.clear();a._normalizedNodes=new Set;a._updateTags=new Set;a._updates=[];a._blockCursorElement=null;d=a._observer;null!==d&&(d.disconnect(),a._observer=null);null!==b&&(b.textContent="");null!==c&&(c.textContent="",e.set("root",c))}
+function Nf(a,b){let c=new Map,d=new Set,e=f=>{Object.keys(f).forEach(g=>{let h=c.get(g);void 0===h&&(h=[],c.set(g,h));h.push(f[g])})};a.forEach(f=>{f=null!=f.klass.importDOM?f.klass.importDOM.bind(f.klass):null;null==f||d.has(f)||(d.add(f),f=f(),null!==f&&e(f))});b&&e(b);return c}
+class Of{constructor(a,b,c,d,e,f,g){this._parentEditor=b;this._rootElement=null;this._editorState=a;this._compositionKey=this._pendingEditorState=null;this._deferred=[];this._keyToDOMMap=new Map;this._updates=[];this._updating=!1;this._listeners={decorator:new Set,editable:new Set,mutation:new Map,root:new Set,textcontent:new Set,update:new Set};this._commands=new Map;this._config=d;this._nodes=c;this._decorators={};this._pendingDecorators=null;this._dirtyType=0;this._cloneNotNeeded=new Set;this._dirtyLeaves=
new Set;this._dirtyElements=new Map;this._normalizedNodes=new Set;this._updateTags=new Set;this._observer=null;this._key=lc();this._onError=e;this._htmlConversions=f;this._editable=g;this._headless=null!==b&&b._headless;this._blockCursorElement=this._window=null}isComposing(){return null!=this._compositionKey}registerUpdateListener(a){let b=this._listeners.update;b.add(a);return()=>{b.delete(a)}}registerEditableListener(a){let b=this._listeners.editable;b.add(a);return()=>{b.delete(a)}}registerDecoratorListener(a){let b=
this._listeners.decorator;b.add(a);return()=>{b.delete(a)}}registerTextContentListener(a){let b=this._listeners.textcontent;b.add(a);return()=>{b.delete(a)}}registerRootListener(a){let b=this._listeners.root;a(this._rootElement,null);b.add(a);return()=>{a(null,this._rootElement);b.delete(a)}}registerCommand(a,b,c){void 0===c&&q(35);let d=this._commands;d.has(a)||d.set(a,[new Set,new Set,new Set,new Set,new Set]);let e=d.get(a);void 0===e&&q(36,String(a));let f=e[c];f.add(b);return()=>{f.delete(b);
e.every(g=>0===g.size)&&d.delete(a)}}registerMutationListener(a,b){void 0===this._nodes.get(a.getType())&&q(37,a.name);let c=this._listeners.mutation;c.set(b,a);return()=>{c.delete(b)}}registerNodeTransformToKlass(a,b){var c=a.getType();c=this._nodes.get(c);void 0===c&&q(37,a.name);c.transforms.add(b);return c}registerNodeTransform(a,b){var c=this.registerNodeTransformToKlass(a,b);let d=[c];c=c.replaceWithKlass;null!=c&&(c=this.registerNodeTransformToKlass(c,b),d.push(c));hc(this,a.getType());return()=>
-{d.forEach(e=>e.transforms.delete(b))}}hasNode(a){return this._nodes.has(a.getType())}hasNodes(a){return a.every(this.hasNode.bind(this))}dispatchCommand(a,b){return R(this,a,b)}getDecorators(){return this._decorators}getRootElement(){return this._rootElement}getKey(){return this._key}setRootElement(a){let b=this._rootElement;if(a!==b){let f=pc(this._config.theme,"root");var c=this._pendingEditorState||this._editorState;this._rootElement=a;tf(this,b,a,c);if(null!==b){if(!this._config.disableEvents){0!==
+{d.forEach(e=>e.transforms.delete(b))}}hasNode(a){return this._nodes.has(a.getType())}hasNodes(a){return a.every(this.hasNode.bind(this))}dispatchCommand(a,b){return R(this,a,b)}getDecorators(){return this._decorators}getRootElement(){return this._rootElement}getKey(){return this._key}setRootElement(a){let b=this._rootElement;if(a!==b){let f=pc(this._config.theme,"root");var c=this._pendingEditorState||this._editorState;this._rootElement=a;uf(this,b,a,c);if(null!==b){if(!this._config.disableEvents){0!==
Hd&&(Hd--,0===Hd&&b.ownerDocument.removeEventListener("selectionchange",Xd));var d=b.__lexicalEditor;if(null!==d&&void 0!==d){if(null!==d._parentEditor){var e=kc(d);e=e[e.length-1]._key;Wd.get(e)===d&&Wd.delete(e)}else Wd.delete(d._key);b.__lexicalEditor=null}d=Vd(b);for(e=0;e<d.length;e++)d[e]();b.__lexicalEventHandles=[]}null!=f&&b.classList.remove(...f)}null!==a?(c=(c=a.ownerDocument)&&c.defaultView||null,d=a.style,d.userSelect="text",d.whiteSpace="pre-wrap",d.wordBreak="break-word",a.setAttribute("data-lexical-editor",
-"true"),this._window=c,this._dirtyType=2,Db(this),this._updateTags.add("history-merge"),sf(this),this._config.disableEvents||Yd(a,this),null!=f&&a.classList.add(...f)):(this._editorState=c,this._window=this._pendingEditorState=null);uf("root",this,!1,a,b)}}getElementByKey(a){return this._keyToDOMMap.get(a)||null}getEditorState(){return this._editorState}setEditorState(a,b){a.isEmpty()&&q(38);Cb(this);let c=this._pendingEditorState,d=this._updateTags;b=void 0!==b?b.tag:null;null===c||c.isEmpty()||
-(null!=b&&d.add(b),sf(this));this._pendingEditorState=a;this._dirtyType=2;this._dirtyElements.set("root",!1);this._compositionKey=null;null!=b&&d.add(b);sf(this)}parseEditorState(a,b){a="string"===typeof a?JSON.parse(a):a;let c=Df(),d=T,e=Z,f=U,g=this._dirtyElements,h=this._dirtyLeaves,k=this._cloneNotNeeded,m=this._dirtyType;this._dirtyElements=new Map;this._dirtyLeaves=new Set;this._cloneNotNeeded=new Set;this._dirtyType=0;T=c;Z=!1;U=this;try{qf(a.root,this._nodes),b&&b(),c._readOnly=!0}catch(n){n instanceof
+"true"),this._window=c,this._dirtyType=2,Db(this),this._updateTags.add("history-merge"),tf(this),this._config.disableEvents||Yd(a,this),null!=f&&a.classList.add(...f)):(this._editorState=c,this._window=this._pendingEditorState=null);vf("root",this,!1,a,b)}}getElementByKey(a){return this._keyToDOMMap.get(a)||null}getEditorState(){return this._editorState}setEditorState(a,b){a.isEmpty()&&q(38);Cb(this);let c=this._pendingEditorState,d=this._updateTags;b=void 0!==b?b.tag:null;null===c||c.isEmpty()||
+(null!=b&&d.add(b),tf(this));this._pendingEditorState=a;this._dirtyType=2;this._dirtyElements.set("root",!1);this._compositionKey=null;null!=b&&d.add(b);tf(this)}parseEditorState(a,b){a="string"===typeof a?JSON.parse(a):a;let c=Ef(),d=T,e=Z,f=U,g=this._dirtyElements,h=this._dirtyLeaves,k=this._cloneNotNeeded,m=this._dirtyType;this._dirtyElements=new Map;this._dirtyLeaves=new Set;this._cloneNotNeeded=new Set;this._dirtyType=0;T=c;Z=!1;U=this;try{rf(a.root,this._nodes),b&&b(),c._readOnly=!0}catch(n){n instanceof
Error&&this._onError(n)}finally{this._dirtyElements=g,this._dirtyLeaves=h,this._cloneNotNeeded=k,this._dirtyType=m,T=d,Z=e,U=f}return c}update(a,b){v(this,a,b)}focus(a,b={}){let c=this._rootElement;null!==c&&(c.setAttribute("autocapitalize","off"),v(this,()=>{let d=u(),e=J();null!==d?d.dirty=!0:0!==e.getChildrenSize()&&("rootStart"===b.defaultSelection?e.selectStart():e.selectEnd())},{onUpdate:()=>{c.removeAttribute("autocapitalize");a&&a()},tag:"focus"}),null===this._pendingEditorState&&c.removeAttribute("autocapitalize"))}blur(){var a=
-this._rootElement;null!==a&&a.blur();a=xb(this._window);null!==a&&a.removeAllRanges()}isEditable(){return this._editable}setEditable(a){this._editable!==a&&(this._editable=a,uf("editable",this,!0,a))}toJSON(){return{editorState:this._editorState.toJSON()}}}
-class ff extends Af{constructor(a,b){super(b);this.__colSpan=a;this.__rowSpan=1}exportJSON(){return{...super.exportJSON(),colSpan:this.__colSpan,rowSpan:this.__rowSpan}}getColSpan(){return this.__colSpan}setColSpan(a){this.getWritable().__colSpan=a;return this}getRowSpan(){return this.__rowSpan}setRowSpan(a){this.getWritable().__rowSpan=a;return this}}function gf(a){return a instanceof ff}class Of extends Af{}function jf(a){return a instanceof Of}class Pf extends Af{}
-function hf(a){return a instanceof Pf}exports.$INTERNAL_isPointSelection=ce;exports.$addUpdateTag=function(a){G();F()._updateTags.add(a)};exports.$applyNodeReplacement=zc;exports.$copyNode=yc;exports.$createLineBreakNode=ie;exports.$createNodeSelection=Xe;exports.$createParagraphNode=ee;exports.$createPoint=S;exports.$createRangeSelection=function(){let a=S("root",0,"element"),b=S("root",0,"element");return new Se(a,b,0,"")};exports.$createTabNode=we;exports.$createTextNode=K;
+this._rootElement;null!==a&&a.blur();a=xb(this._window);null!==a&&a.removeAllRanges()}isEditable(){return this._editable}setEditable(a){this._editable!==a&&(this._editable=a,vf("editable",this,!0,a))}toJSON(){return{editorState:this._editorState.toJSON()}}}
+class gf extends Bf{constructor(a,b){super(b);this.__colSpan=a;this.__rowSpan=1}exportJSON(){return{...super.exportJSON(),colSpan:this.__colSpan,rowSpan:this.__rowSpan}}getColSpan(){return this.__colSpan}setColSpan(a){this.getWritable().__colSpan=a;return this}getRowSpan(){return this.__rowSpan}setRowSpan(a){this.getWritable().__rowSpan=a;return this}}function hf(a){return a instanceof gf}class Pf extends Bf{}function kf(a){return a instanceof Pf}class Qf extends Bf{}
+function jf(a){return a instanceof Qf}exports.$INTERNAL_isPointSelection=ce;exports.$addUpdateTag=function(a){G();F()._updateTags.add(a)};exports.$applyNodeReplacement=zc;exports.$copyNode=yc;exports.$createLineBreakNode=je;exports.$createNodeSelection=Ye;exports.$createParagraphNode=ee;exports.$createPoint=S;exports.$createRangeSelection=function(){let a=S("root",0,"element"),b=S("root",0,"element");return new Te(a,b,0,"")};exports.$createTabNode=xe;exports.$createTextNode=K;
exports.$getAdjacentNode=sc;exports.$getNearestNodeFromDOMNode=wb;exports.$getNearestRootOrShadowRoot=wc;exports.$getNodeByKey=I;exports.$getPreviousSelection=nc;exports.$getRoot=J;exports.$getSelection=u;exports.$getTextContent=function(){let a=u();return null===a?"":a.getTextContent()};exports.$hasAncestor=vc;exports.$hasUpdateTag=function(a){return F()._updateTags.has(a)};exports.$insertNodes=function(a){let b=u()||nc();null===b&&(b=J().selectEnd());b.insertNodes(a)};
-exports.$isBlockElementNode=function(a){return E(a)&&!a.isInline()};exports.$isDecoratorNode=x;exports.$isElementNode=E;exports.$isInlineElementOrDecoratorNode=function(a){return E(a)&&a.isInline()||x(a)&&a.isInline()};exports.$isLeafNode=function(a){return B(a)||Gc(a)||x(a)};exports.$isLineBreakNode=Gc;exports.$isNodeSelection=Ud;exports.$isParagraphNode=function(a){return a instanceof Ff};exports.$isRangeSelection=C;exports.$isRootNode=L;exports.$isRootOrShadowRoot=xc;exports.$isTabNode=Be;
-exports.$isTextNode=B;exports.$nodesOfType=function(a){var b=ac();let c=b._readOnly,d=a.getType();b=b._nodeMap;let e=[];for(let [,f]of b)f instanceof a&&f.__type===d&&(c||f.isAttached())&&e.push(f);return e};exports.$normalizeSelection__EXPERIMENTAL=Ib;exports.$parseSerializedNode=function(a){return qf(a,F()._nodes)};exports.$selectAll=function(){var a=J();a=a.select(0,a.getChildrenSize());Ab(Ib(a))};exports.$setCompositionKey=H;exports.$setSelection=Ab;
+exports.$isBlockElementNode=function(a){return E(a)&&!a.isInline()};exports.$isDecoratorNode=x;exports.$isElementNode=E;exports.$isInlineElementOrDecoratorNode=function(a){return E(a)&&a.isInline()||x(a)&&a.isInline()};exports.$isLeafNode=function(a){return B(a)||Gc(a)||x(a)};exports.$isLineBreakNode=Gc;exports.$isNodeSelection=Ud;exports.$isParagraphNode=function(a){return a instanceof Gf};exports.$isRangeSelection=C;exports.$isRootNode=L;exports.$isRootOrShadowRoot=xc;exports.$isTabNode=Ce;
+exports.$isTextNode=B;exports.$nodesOfType=function(a){var b=ac();let c=b._readOnly,d=a.getType();b=b._nodeMap;let e=[];for(let [,f]of b)f instanceof a&&f.__type===d&&(c||f.isAttached())&&e.push(f);return e};exports.$normalizeSelection__EXPERIMENTAL=Ib;exports.$parseSerializedNode=function(a){return rf(a,F()._nodes)};exports.$selectAll=function(){var a=J();a=a.select(0,a.getChildrenSize());Ab(Ib(a))};exports.$setCompositionKey=H;exports.$setSelection=Ab;
exports.$splitNode=function(a,b){let c=a.getChildAtIndex(b);null==c&&(c=a);xc(a)&&q(102);let d=g=>{const h=g.getParentOrThrow(),k=xc(h),m=g!==c||k?yc(g):g;if(k){if(!E(g)||!E(m))throw Error("Children of a root must be ElementNode");g.insertAfter(m);return[g,m,m]}const [n,p,l]=d(h);g=g.getNextSiblings();l.append(m,...g);return[n,p,m]},[e,f]=d(c);return[e,f]};exports.BLUR_COMMAND=Sa;exports.CAN_REDO_COMMAND={};exports.CAN_UNDO_COMMAND={};exports.CLEAR_EDITOR_COMMAND={};
exports.CLEAR_HISTORY_COMMAND={};exports.CLICK_COMMAND=ba;exports.COMMAND_PRIORITY_CRITICAL=4;exports.COMMAND_PRIORITY_EDITOR=0;exports.COMMAND_PRIORITY_HIGH=3;exports.COMMAND_PRIORITY_LOW=1;exports.COMMAND_PRIORITY_NORMAL=2;exports.CONTROLLED_TEXT_INSERTION_COMMAND=ka;exports.COPY_COMMAND=Oa;exports.CUT_COMMAND=Pa;exports.DELETE_CHARACTER_COMMAND=da;exports.DELETE_LINE_COMMAND=pa;exports.DELETE_WORD_COMMAND=oa;
-exports.DEPRECATED_$computeGridMap=function(a,b,c){let d=[],e=null,f=null;a=a.getChildren();for(let n=0;n<a.length;n++){var g=a[n];hf(g)||q(108);var h=g.getChildren();g=0;for(let p of h){for(gf(p)||q(109);void 0!==d[n]&&void 0!==d[n][g];)g++;h=n;var k=g,m=p;let l={cell:m,startColumn:k,startRow:h},r=m.__rowSpan,w=m.__colSpan;for(let y=0;y<r;y++){void 0===d[h+y]&&(d[h+y]=[]);for(let z=0;z<w;z++)d[h+y][k+z]=l}b.is(m)&&(e=l);c.is(m)&&(f=l);g+=p.__colSpan}}null===e&&q(110);null===f&&q(111);return[d,e,
-f]};exports.DEPRECATED_$getGridCellNodeRect=function(a){let [b,,c]=ef(a);a=c.getChildren();let d=a.length;var e=a[0].getChildren().length;let f=Array(d);for(var g=0;g<d;g++)f[g]=Array(e);for(e=0;e<d;e++){g=a[e].getChildren();let h=0;for(let k=0;k<g.length;k++){for(;f[e][h];)h++;let m=g[k],n=m.__rowSpan||1,p=m.__colSpan||1;for(let l=0;l<n;l++)for(let r=0;r<p;r++)f[e+l][h+r]=m;if(b===m)return{colSpan:p,columnIndex:h,rowIndex:e,rowSpan:n};h+=p}}return null};exports.DEPRECATED_$getNodeTriplet=ef;
-exports.DEPRECATED_$isGridCellNode=gf;exports.DEPRECATED_$isGridNode=jf;exports.DEPRECATED_$isGridRowNode=hf;exports.DEPRECATED_GridCellNode=ff;exports.DEPRECATED_GridNode=Of;exports.DEPRECATED_GridRowNode=Pf;exports.DRAGEND_COMMAND=Na;exports.DRAGOVER_COMMAND=Ma;exports.DRAGSTART_COMMAND=La;exports.DROP_COMMAND=Ka;exports.DecoratorNode=zf;exports.ElementNode=Af;exports.FOCUS_COMMAND=Ra;exports.FORMAT_ELEMENT_COMMAND={};exports.FORMAT_TEXT_COMMAND=qa;exports.INDENT_CONTENT_COMMAND={};
-exports.INSERT_LINE_BREAK_COMMAND=ea;exports.INSERT_PARAGRAPH_COMMAND=ja;exports.INSERT_TAB_COMMAND={};exports.INTERNAL_PointSelection=Pe;exports.KEY_ARROW_DOWN_COMMAND=Aa;exports.KEY_ARROW_LEFT_COMMAND=xa;exports.KEY_ARROW_RIGHT_COMMAND=ua;exports.KEY_ARROW_UP_COMMAND=za;exports.KEY_BACKSPACE_COMMAND=Fa;exports.KEY_DELETE_COMMAND=Ha;exports.KEY_DOWN_COMMAND=ta;exports.KEY_ENTER_COMMAND=Ba;exports.KEY_ESCAPE_COMMAND=Ga;exports.KEY_MODIFIER_COMMAND=Ta;exports.KEY_SPACE_COMMAND=Ca;
-exports.KEY_TAB_COMMAND=Ja;exports.LineBreakNode=ge;exports.MOVE_TO_END=va;exports.MOVE_TO_START=ya;exports.OUTDENT_CONTENT_COMMAND={};exports.PASTE_COMMAND=la;exports.ParagraphNode=Ff;exports.REDO_COMMAND=sa;exports.REMOVE_TEXT_COMMAND=na;exports.RootNode=Cf;exports.SELECTION_CHANGE_COMMAND=aa;exports.SELECTION_INSERT_CLIPBOARD_NODES_COMMAND={};exports.SELECT_ALL_COMMAND=Qa;exports.TabNode=Ae;exports.TextNode=oe;exports.UNDO_COMMAND=ra;exports.createCommand=function(){return{}};
-exports.createEditor=function(a){var b=a||{},c=U,d=b.theme||{};let e=void 0===a?c:b.parentEditor||null,f=b.disableEvents||!1,g=Df(),h=b.namespace||(null!==e?e._config.namespace:lc()),k=b.editorState,m=[Cf,oe,ge,Ae,Ff,...(b.nodes||[])],{onError:n,html:p}=b;b=void 0!==b.editable?b.editable:!0;if(void 0===a&&null!==c)a=c._nodes;else for(a=new Map,c=0;c<m.length;c++){let r=m[c],w=null;var l=null;"function"!==typeof r&&(l=r,r=l.replace,w=l.with,l=l.withKlass||null);let y=r.getType(),z=r.transform(),A=
-new Set;null!==z&&A.add(z);a.set(y,{exportDOM:p&&p.export?p.export.get(r):void 0,klass:r,replace:w,replaceWithKlass:l,transforms:A})}d=new Nf(g,e,a,{disableEvents:f,namespace:h,theme:d},n?n:console.error,Mf(a,p?p.import:void 0),b);void 0!==k&&(d._pendingEditorState=k,d._dirtyType=2);return d};exports.getNearestEditorFromDOMNode=Ub;exports.isCurrentlyReadOnlyMode=ec;exports.isHTMLAnchorElement=function(a){return Ec(a)&&"A"===a.tagName};exports.isHTMLElement=Ec;
+exports.DEPRECATED_$computeGridMap=function(a,b,c){let d=[],e=null,f=null;a=a.getChildren();for(let n=0;n<a.length;n++){var g=a[n];jf(g)||q(108);var h=g.getChildren();g=0;for(let p of h){for(hf(p)||q(109);void 0!==d[n]&&void 0!==d[n][g];)g++;h=n;var k=g,m=p;let l={cell:m,startColumn:k,startRow:h},r=m.__rowSpan,w=m.__colSpan;for(let y=0;y<r;y++){void 0===d[h+y]&&(d[h+y]=[]);for(let z=0;z<w;z++)d[h+y][k+z]=l}b.is(m)&&(e=l);c.is(m)&&(f=l);g+=p.__colSpan}}null===e&&q(110);null===f&&q(111);return[d,e,
+f]};exports.DEPRECATED_$getGridCellNodeRect=function(a){let [b,,c]=ff(a);a=c.getChildren();let d=a.length;var e=a[0].getChildren().length;let f=Array(d);for(var g=0;g<d;g++)f[g]=Array(e);for(e=0;e<d;e++){g=a[e].getChildren();let h=0;for(let k=0;k<g.length;k++){for(;f[e][h];)h++;let m=g[k],n=m.__rowSpan||1,p=m.__colSpan||1;for(let l=0;l<n;l++)for(let r=0;r<p;r++)f[e+l][h+r]=m;if(b===m)return{colSpan:p,columnIndex:h,rowIndex:e,rowSpan:n};h+=p}}return null};exports.DEPRECATED_$getNodeTriplet=ff;
+exports.DEPRECATED_$isGridCellNode=hf;exports.DEPRECATED_$isGridNode=kf;exports.DEPRECATED_$isGridRowNode=jf;exports.DEPRECATED_GridCellNode=gf;exports.DEPRECATED_GridNode=Pf;exports.DEPRECATED_GridRowNode=Qf;exports.DRAGEND_COMMAND=Na;exports.DRAGOVER_COMMAND=Ma;exports.DRAGSTART_COMMAND=La;exports.DROP_COMMAND=Ka;exports.DecoratorNode=Af;exports.ElementNode=Bf;exports.FOCUS_COMMAND=Ra;exports.FORMAT_ELEMENT_COMMAND={};exports.FORMAT_TEXT_COMMAND=qa;exports.INDENT_CONTENT_COMMAND={};
+exports.INSERT_LINE_BREAK_COMMAND=ea;exports.INSERT_PARAGRAPH_COMMAND=ja;exports.INSERT_TAB_COMMAND={};exports.INTERNAL_PointSelection=Qe;exports.KEY_ARROW_DOWN_COMMAND=Aa;exports.KEY_ARROW_LEFT_COMMAND=xa;exports.KEY_ARROW_RIGHT_COMMAND=ua;exports.KEY_ARROW_UP_COMMAND=za;exports.KEY_BACKSPACE_COMMAND=Fa;exports.KEY_DELETE_COMMAND=Ha;exports.KEY_DOWN_COMMAND=ta;exports.KEY_ENTER_COMMAND=Ba;exports.KEY_ESCAPE_COMMAND=Ga;exports.KEY_MODIFIER_COMMAND=Ta;exports.KEY_SPACE_COMMAND=Ca;
+exports.KEY_TAB_COMMAND=Ja;exports.LineBreakNode=ge;exports.MOVE_TO_END=va;exports.MOVE_TO_START=ya;exports.OUTDENT_CONTENT_COMMAND={};exports.PASTE_COMMAND=la;exports.ParagraphNode=Gf;exports.REDO_COMMAND=sa;exports.REMOVE_TEXT_COMMAND=na;exports.RootNode=Df;exports.SELECTION_CHANGE_COMMAND=aa;exports.SELECTION_INSERT_CLIPBOARD_NODES_COMMAND={};exports.SELECT_ALL_COMMAND=Qa;exports.TabNode=Be;exports.TextNode=pe;exports.UNDO_COMMAND=ra;exports.createCommand=function(){return{}};
+exports.createEditor=function(a){var b=a||{},c=U,d=b.theme||{};let e=void 0===a?c:b.parentEditor||null,f=b.disableEvents||!1,g=Ef(),h=b.namespace||(null!==e?e._config.namespace:lc()),k=b.editorState,m=[Df,pe,ge,Be,Gf,...(b.nodes||[])],{onError:n,html:p}=b;b=void 0!==b.editable?b.editable:!0;if(void 0===a&&null!==c)a=c._nodes;else for(a=new Map,c=0;c<m.length;c++){let r=m[c],w=null;var l=null;"function"!==typeof r&&(l=r,r=l.replace,w=l.with,l=l.withKlass||null);let y=r.getType(),z=r.transform(),A=
+new Set;null!==z&&A.add(z);a.set(y,{exportDOM:p&&p.export?p.export.get(r):void 0,klass:r,replace:w,replaceWithKlass:l,transforms:A})}d=new Of(g,e,a,{disableEvents:f,namespace:h,theme:d},n?n:console.error,Nf(a,p?p.import:void 0),b);void 0!==k&&(d._pendingEditorState=k,d._dirtyType=2);return d};exports.getNearestEditorFromDOMNode=Ub;exports.isCurrentlyReadOnlyMode=ec;exports.isHTMLAnchorElement=function(a){return Ec(a)&&"A"===a.tagName};exports.isHTMLElement=Ec;
exports.isSelectionCapturedInDecoratorInput=Mb;exports.isSelectionWithinEditor=Tb
+9 -6
View File
@@ -45,15 +45,18 @@ Questions? Find answers on our [Help page](https://standardnotes.com/help).
---
### Docker setup
### Self-hosting the web app
If you'd like to self-host the web application, we recommend using our official [Docker hub image](https://hub.docker.com/repository/docker/standardnotes/web).
Our web app is compiled into a folder of static HTML, JS, and CSS files. You can serve these files behind a web server to get started:
```
docker run -d -p 3001:3001 --env-file=.env.sample standardnotes/web:stable
```
1. `git clone https://github.com/standardnotes/app.git`
2. `cd app`
3. `yarn install`
4. `yarn build:web`
5. `cd packages/web`
6. You can then use Python to serve this folder over http: `python -m http.server 8080`
You can then access the app at `http://localhost:3001`. It may take a minute for the server to start up.
You can now access the app at `http://localhost:8080`.
### Running Web App in Development Mode
+2 -3
View File
@@ -44,9 +44,8 @@
"@types/react-native-vector-icons/@types/react": "17.0.2",
"@types/react-native/@types/react": "17.0.2",
"@types/hoist-non-react-statics/@types/react": "17.0.2",
"@lexical/[email protected]2.6": "patch:@lexical/clipboard@npm:0.12.6#.yarn/patches/@lexical-clipboard-npm-0.12.6-4163a238a6.patch",
"@lexical/[email protected]2.6": "patch:@lexical/rich-text@npm:0.12.6#.yarn/patches/@lexical-rich-text-npm-0.12.6-1692a2faf1.patch",
"[email protected]": "patch:lexical@npm:0.12.6#.yarn/patches/lexical-npm-0.12.6-d9d90fc300.patch"
"@lexical/[email protected]4.3": "patch:@lexical/clipboard@npm:0.14.3#.yarn/patches/@lexical-clipboard-npm-0.14.3-58877f1e45.patch",
"@lexical/[email protected]4.3": "patch:@lexical/rich-text@npm:0.14.3#.yarn/patches/@lexical-rich-text-npm-0.14.3-02ac98ca96.patch"
},
"dependencies": {
"@standardnotes/snjs": "workspace:*"
+38
View File
@@ -3,6 +3,44 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.26.87](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/api
## [1.26.86](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/api
## [1.26.85](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-08)
**Note:** Version bump only for package @standardnotes/api
## [1.26.84](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-14)
**Note:** Version bump only for package @standardnotes/api
## [1.26.83](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-07)
### Bug Fixes
* use API v0 on iOS ([#2858](https://github.com/standardnotes/app/issues/2858)) [skip e2e] ([3b2f761](https://github.com/standardnotes/app/commit/3b2f76166126a5b11f35b64aacefa37618622c3d))
## [1.26.82](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-05)
**Note:** Version bump only for package @standardnotes/api
## [1.26.81](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-22)
**Note:** Version bump only for package @standardnotes/api
## [1.26.80](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-17)
**Note:** Version bump only for package @standardnotes/api
## [1.26.79](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-02)
**Note:** Version bump only for package @standardnotes/api
## [1.26.78](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-27)
**Note:** Version bump only for package @standardnotes/api
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/api",
"version": "1.26.78",
"version": "1.26.87",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
@@ -1,3 +1,4 @@
export enum ApiVersion {
v0 = '20200115',
v1 = '20240226',
}
@@ -15,7 +15,10 @@ import { AuthApiServiceInterface } from './AuthApiServiceInterface'
export class AuthApiService implements AuthApiServiceInterface {
private operationsInProgress: Map<AuthApiOperations, boolean>
constructor(private authServer: AuthServerInterface) {
constructor(
private authServer: AuthServerInterface,
private apiVersion: ApiVersion,
) {
this.operationsInProgress = new Map()
}
@@ -50,7 +53,7 @@ export class AuthApiService implements AuthApiServiceInterface {
try {
const response = await this.authServer.recoveryKeyParams({
api_version: ApiVersion.v0,
api_version: this.apiVersion,
code_challenge: dto.codeChallenge,
recovery_codes: dto.recoveryCodes,
username: dto.username,
@@ -69,6 +72,7 @@ export class AuthApiService implements AuthApiServiceInterface {
password: string
codeVerifier: string
recoveryCodes: string
hvmToken?: string
}): Promise<HttpResponse<SignInWithRecoveryCodesResponseBody>> {
if (this.operationsInProgress.get(AuthApiOperations.SignInWithRecoveryCodes)) {
throw new ApiCallError(ErrorMessage.GenericInProgress)
@@ -78,11 +82,12 @@ export class AuthApiService implements AuthApiServiceInterface {
try {
const response = await this.authServer.signInWithRecoveryCodes({
api_version: ApiVersion.v0,
api_version: this.apiVersion,
code_verifier: dto.codeVerifier,
password: dto.password,
recovery_codes: dto.recoveryCodes,
username: dto.username,
hvm_token: dto.hvmToken,
})
return response
@@ -17,5 +17,6 @@ export interface AuthApiServiceInterface {
password: string
codeVerifier: string
recoveryCodes: string
hvmToken?: string
}): Promise<HttpResponse<SignInWithRecoveryCodesResponseBody>>
}
@@ -23,7 +23,10 @@ import { GetUserSubscriptionRequestParams } from '../../Request/Subscription/Get
export class SubscriptionApiService implements SubscriptionApiServiceInterface {
private operationsInProgress: Map<SubscriptionApiOperations, boolean>
constructor(private subscriptionServer: SubscriptionServerInterface) {
constructor(
private subscriptionServer: SubscriptionServerInterface,
private apiVersion: ApiVersion,
) {
this.operationsInProgress = new Map()
}
@@ -36,7 +39,7 @@ export class SubscriptionApiService implements SubscriptionApiServiceInterface {
try {
const response = await this.subscriptionServer.listInvites({
[ApiEndpointParam.ApiVersion]: ApiVersion.v0,
[ApiEndpointParam.ApiVersion]: this.apiVersion,
})
return response
@@ -56,7 +59,7 @@ export class SubscriptionApiService implements SubscriptionApiServiceInterface {
try {
const response = await this.subscriptionServer.cancelInvite({
[ApiEndpointParam.ApiVersion]: ApiVersion.v0,
[ApiEndpointParam.ApiVersion]: this.apiVersion,
inviteUuid,
})
@@ -77,7 +80,7 @@ export class SubscriptionApiService implements SubscriptionApiServiceInterface {
try {
const response = await this.subscriptionServer.invite({
[ApiEndpointParam.ApiVersion]: ApiVersion.v0,
[ApiEndpointParam.ApiVersion]: this.apiVersion,
identifier: inviteeEmail,
})
@@ -22,6 +22,7 @@ export class UserApiService implements UserApiServiceInterface {
constructor(
private userServer: UserServerInterface,
private userRequestServer: UserRequestServerInterface,
private apiVersion: ApiVersion,
) {
this.operationsInProgress = new Map()
}
@@ -65,6 +66,7 @@ export class UserApiService implements UserApiServiceInterface {
async register(registerDTO: {
email: string
serverPassword: string
hvmToken?: string
keyParams: RootKeyParamsInterface
ephemeral: boolean
}): Promise<HttpResponse<UserRegistrationResponseBody>> {
@@ -72,9 +74,10 @@ export class UserApiService implements UserApiServiceInterface {
try {
const response = await this.userServer.register({
[ApiEndpointParam.ApiVersion]: ApiVersion.v0,
[ApiEndpointParam.ApiVersion]: this.apiVersion,
password: registerDTO.serverPassword,
email: registerDTO.email,
hvm_token: registerDTO.hvmToken,
ephemeral: registerDTO.ephemeral,
...registerDTO.keyParams.getPortableValue(),
})
@@ -92,7 +95,7 @@ export class UserApiService implements UserApiServiceInterface {
try {
const response = await this.userServer.update({
[ApiEndpointParam.ApiVersion]: ApiVersion.v0,
[ApiEndpointParam.ApiVersion]: this.apiVersion,
user_uuid: updateDTO.userUuid,
})
@@ -11,6 +11,7 @@ export interface UserApiServiceInterface {
register(registerDTO: {
email: string
serverPassword: string
hvmToken?: string
keyParams: RootKeyParamsInterface
ephemeral: boolean
}): Promise<HttpResponse<UserRegistrationResponseBody>>
@@ -63,6 +63,7 @@ export class FetchRequestHandler implements RequestHandlerInterface {
return new Request(httpRequest.url, {
method: httpRequest.verb,
headers,
credentials: 'include',
})
}
+46 -15
View File
@@ -1,6 +1,6 @@
import { LoggerInterface, joinPaths, sleep } from '@standardnotes/utils'
import { Environment } from '@standardnotes/models'
import { LegacySession, Session, SessionToken } from '@standardnotes/domain-core'
import { LegacySession, Result, Session, SessionToken } from '@standardnotes/domain-core'
import {
HttpStatusCode,
HttpRequestParams,
@@ -9,9 +9,11 @@ import {
HttpResponse,
HttpResponseMeta,
isErrorResponse,
ApiEndpointParam,
} from '@standardnotes/responses'
import { HttpServiceInterface } from './HttpServiceInterface'
import { ApiVersion } from '../Api'
import { Paths } from '../Server/Auth/Paths'
import { SessionRefreshResponseBody } from '../Response/Auth/SessionRefreshResponseBody'
import { FetchRequestHandler } from './FetchRequestHandler'
@@ -21,10 +23,11 @@ import { HttpRequestOptions } from './HttpRequestOptions'
export class HttpService implements HttpServiceInterface {
private session?: Session | LegacySession
private __latencySimulatorMs?: number
private __simulateNextSessionRefreshResponseDrop = false
private declare host: string
loggingEnabled = false
private inProgressRefreshSessionPromise?: Promise<boolean>
private inProgressRefreshSessionPromise?: Promise<Result<HttpResponse<SessionRefreshResponseBody>>>
private updateMetaCallback!: (meta: HttpResponseMeta) => void
private refreshSessionCallback!: (session: Session) => void
@@ -34,6 +37,7 @@ export class HttpService implements HttpServiceInterface {
private environment: Environment,
private appVersion: string,
private snjsVersion: string,
private apiVersion: ApiVersion,
private logger: LoggerInterface,
) {
this.requestHandler = new FetchRequestHandler(this.snjsVersion, this.appVersion, this.environment, this.logger)
@@ -145,6 +149,10 @@ export class HttpService implements HttpServiceInterface {
await sleep(this.__latencySimulatorMs, true)
}
httpRequest.params = httpRequest.params
? this.params(httpRequest.params as Record<string | number | symbol, unknown>)
: undefined
const isRefreshRequest = httpRequest.url === joinPaths(this.host, Paths.v1.refreshSession)
if (this.inProgressRefreshSessionPromise && !isRefreshRequest) {
await this.inProgressRefreshSessionPromise
@@ -166,12 +174,19 @@ export class HttpService implements HttpServiceInterface {
if (this.inProgressRefreshSessionPromise) {
await this.inProgressRefreshSessionPromise
} else {
this.inProgressRefreshSessionPromise = this.refreshSession()
const isSessionRefreshed = await this.inProgressRefreshSessionPromise
this.inProgressRefreshSessionPromise = undefined
const hasSessionTokenRenewedInBetweenOurRequest = httpRequest.authentication !== this.getSessionAccessToken()
if (!hasSessionTokenRenewedInBetweenOurRequest) {
this.inProgressRefreshSessionPromise = this.refreshSession()
const isSessionRefreshedResultOrError = await this.inProgressRefreshSessionPromise
let isSessionRefreshed = false
if (!isSessionRefreshedResultOrError.isFailed()) {
isSessionRefreshed = !isErrorResponse(isSessionRefreshedResultOrError.getValue())
}
this.inProgressRefreshSessionPromise = undefined
if (!isSessionRefreshed) {
return response
if (!isSessionRefreshed) {
return response
}
}
}
@@ -183,13 +198,13 @@ export class HttpService implements HttpServiceInterface {
return response
}
async refreshSession(): Promise<boolean> {
async refreshSession(): Promise<Result<HttpResponse<SessionRefreshResponseBody>>> {
if (!this.session) {
return false
return Result.fail('No session to refresh')
}
if (this.session instanceof LegacySession) {
return false
return Result.fail('Cannot refresh legacy session')
}
const response = await this.post<SessionRefreshResponseBody>(Paths.v1.refreshSession, {
@@ -197,8 +212,13 @@ export class HttpService implements HttpServiceInterface {
refresh_token: this.session.refreshToken.value,
})
if (this.__simulateNextSessionRefreshResponseDrop) {
this.__simulateNextSessionRefreshResponseDrop = false
return Result.fail('Simulating a dropped response')
}
if (isErrorResponse(response)) {
return false
return Result.ok(response)
}
if (response.meta) {
@@ -210,7 +230,7 @@ export class HttpService implements HttpServiceInterface {
response.data.session.access_expiration,
)
if (accessTokenOrError.isFailed()) {
return false
return Result.fail(accessTokenOrError.getError())
}
const accessToken = accessTokenOrError.getValue()
@@ -220,20 +240,31 @@ export class HttpService implements HttpServiceInterface {
response.data.session.refresh_expiration,
)
if (refreshTokenOrError.isFailed()) {
return false
return Result.fail(refreshTokenOrError.getError())
}
const refreshToken = refreshTokenOrError.getValue()
const sessionOrError = Session.create(accessToken, refreshToken, response.data.session.readonly_access)
if (sessionOrError.isFailed()) {
return false
return Result.fail(sessionOrError.getError())
}
this.setSession(sessionOrError.getValue())
this.refreshSessionCallback(this.session)
return true
return Result.ok(response)
}
private params(inParams: Record<string | number | symbol, unknown>): HttpRequestParams {
const params = {
...inParams,
...{
[ApiEndpointParam.ApiVersion]: this.apiVersion,
},
}
return params
}
}
@@ -1,7 +1,8 @@
import { LegacySession, Session } from '@standardnotes/domain-core'
import { LegacySession, Result, Session } from '@standardnotes/domain-core'
import { HttpRequest, HttpRequestParams, HttpResponse, HttpResponseMeta } from '@standardnotes/responses'
import { HttpRequestOptions } from './HttpRequestOptions'
import { SessionRefreshResponseBody } from '../Response'
export interface HttpServiceInterface {
setHost(host: string): void
@@ -16,7 +17,7 @@ export interface HttpServiceInterface {
runHttp<T>(httpRequest: HttpRequest): Promise<HttpResponse<T>>
setSession(session: Session | LegacySession): void
refreshSession(): Promise<boolean>
refreshSession(): Promise<Result<HttpResponse<SessionRefreshResponseBody>>>
setCallbacks(
updateMetaCallback: (meta: HttpResponseMeta) => void,
refreshSessionCallback: (session: Session) => void,
@@ -4,4 +4,5 @@ export interface SignInWithRecoveryCodesRequestParams {
password: string
code_verifier: string
recovery_codes: string
hvm_token?: string
}
@@ -6,5 +6,6 @@ export type UserRegistrationRequestParams = AnyKeyParamsContent & {
[additionalParam: string]: unknown
password: string
email: string
hvm_token?: string
ephemeral: boolean
}
+248
View File
@@ -3,6 +3,254 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.1.461](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-20)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.460](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-19)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.459](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-17)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.458](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-17)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.457](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-15)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.456](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-15)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.455](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-15)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.454](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-14)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.453](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-13)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.452](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-11)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.451](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-11)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.450](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.449](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.448](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-08)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.447](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-04)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.446](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-01)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.445](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-28)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.444](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-27)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.443](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-26)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.442](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-26)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.441](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-22)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.440](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-22)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.439](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-22)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.438](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-14)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.437](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-14)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.436](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-14)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.435](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-13)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.434](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-12)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.433](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-11)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.432](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-11)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.431](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-11)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.430](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-08)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.429](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-07)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.428](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-07)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.427](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-06)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.426](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-05)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.425](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-05)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.424](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-01)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.423](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-01)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.422](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-01)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.421](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-01)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.420](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-28)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.419](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-26)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.418](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-22)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.417](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-21)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.416](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-20)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.415](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-19)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.414](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-18)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.413](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-18)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.412](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-17)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.411](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-17)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.410](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-15)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.409](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-08)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.408](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-07)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.407](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-07)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.406](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-05)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.405](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-03)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.404](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-02)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.403](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-02)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.402](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-31)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.401](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-30)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.400](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-28)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.399](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-27)
**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.399",
"version": "1.1.461",
"private": true,
"scripts": {
"build-mv2": "yarn clean && webpack --config ./webpack.config.prod.js",
+1 -1
View File
@@ -16,7 +16,7 @@
"js": ["content.js"]
}
],
"content_security_policy": "default-src 'self'; script-src 'self' 'wasm-eval' 'wasm-unsafe-eval'; worker-src blob:; connect-src * data: blob:; style-src 'unsafe-inline' 'self'; frame-src * blob:; img-src * data: blob:;",
"content_security_policy": "default-src 'self'; script-src 'self' 'wasm-eval' 'wasm-unsafe-eval'; worker-src blob:; connect-src * data: blob:; style-src 'self'; frame-src * blob:; img-src * data: blob:;",
"icons": {
"16": "images/icon16.png",
"32": "images/icon32.png",
+1 -1
View File
@@ -23,7 +23,7 @@
"128": "images/icon128.png"
},
"content_security_policy": {
"extension_pages": "default-src 'self'; script-src 'self' 'wasm-unsafe-eval'; connect-src * data: blob:; style-src 'unsafe-inline' 'self'; frame-src * blob:; img-src * data: blob:;"
"extension_pages": "default-src 'self'; script-src 'self' 'wasm-unsafe-eval'; connect-src * data: blob:; style-src 'self'; frame-src * blob:; img-src * data: blob:;"
},
"browser_specific_settings": {
"gecko": {
+6
View File
@@ -0,0 +1,6 @@
html,
body {
min-width: 350px !important;
max-width: 350px !important;
min-height: 260px !important;
}
+252
View File
@@ -3,6 +3,258 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.110.63](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-20)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.62](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-19)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.61](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-17)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.60](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-17)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.59](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-15)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.58](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-15)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.57](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-15)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.56](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-14)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.55](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-13)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.54](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-11)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.53](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-11)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.52](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.51](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.50](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-08)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.49](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-04)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.48](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-01)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.47](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-28)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.46](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-27)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.45](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-26)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.44](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-26)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.43](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-22)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.42](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-22)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.41](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-22)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.40](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-14)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.39](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-14)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.38](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-14)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.37](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-13)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.36](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-12)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.35](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-11)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.34](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-11)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.33](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-11)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.32](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-08)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.31](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-07)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.30](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-07)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.29](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-06)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.28](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-05)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.27](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-05)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.26](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-01)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.25](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-01)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.24](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-01)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.23](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-01)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.22](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-28)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.21](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-26)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.20](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-22)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.19](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-21)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.18](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-20)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.17](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-19)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.16](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-18)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.15](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-18)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.14](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-17)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.13](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-17)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.12](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-15)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.11](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-08)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.10](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-07)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.9](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-07)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.8](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-05)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-03)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-02)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-02)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-31)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-30)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-28)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.1](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-27)
**Note:** Version bump only for package @standardnotes/desktop
# [3.110.0](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-27)
### Features
+2 -6
View File
@@ -2,18 +2,14 @@
<html>
<head>
<meta charset="utf-8" />
<!--
We need to set 'unsafe-eval' to use wasm.
https://bugs.chromium.org/p/chromium/issues/detail?id=948834
-->
<meta
http-equiv="Content-Security-Policy"
content="
default-src 'self' blob:;
script-src 'self' 'unsafe-eval';
script-src 'self' 'wasm-unsafe-eval';
worker-src 'self' blob:;
connect-src * data: blob:;
style-src 'unsafe-inline' 'self' http://localhost:* http://127.0.0.1:45653;
style-src 'self' 'unsafe-hashes' http://localhost:* http://127.0.0.1:45653 'sha256-jpJOxTrdc58x4woq2mVygDDIvjIAGNkLZ2yfx4ppdXo=' 'sha256-tbWZ4NP1341cpcrZVDn7B3o9bt/muXgduILAnC0Zbaw=';
frame-src * blob:;
img-src * data: blob:;
"
@@ -13,6 +13,9 @@
.mac-desktop .app-pane {
padding-top: 25px;
}
.mac-desktop [data-dialog] [data-mobile-modal-header] {
padding-top: 25px;
}
}
@media screen and (min-width: 768px) {
@@ -74,6 +77,24 @@
-webkit-app-region: drag;
}
.mac-desktop.focus-mode #editor-title-bar {
-webkit-app-region: no-drag;
}
.mac-desktop [data-dialog-portal]:has([data-dialog])::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 32px;
-webkit-app-region: drag;
}
.mac-desktop [data-dialog-portal]:has([data-preferences-header])::after {
height: 0;
}
button,
input,
#navigation #navigation-content,
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@standardnotes/desktop",
"main": "./app/dist/index.js",
"version": "3.110.0",
"version": "3.110.63",
"license": "AGPL-3.0",
"author": "Standard Notes.",
"private": true,
+20
View File
@@ -3,6 +3,26 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.21.105](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/encryption
## [1.21.104](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/encryption
## [1.21.103](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-08)
**Note:** Version bump only for package @standardnotes/encryption
## [1.21.102](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-17)
**Note:** Version bump only for package @standardnotes/encryption
## [1.21.101](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-02)
**Note:** Version bump only for package @standardnotes/encryption
## [1.21.100](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-27)
**Note:** Version bump only for package @standardnotes/encryption
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/encryption",
"version": "1.21.100",
"version": "1.21.105",
"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.61.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/features
## [1.61.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/features
## [1.61.1](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2023-11-30)
### Bug Fixes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/features",
"version": "1.61.1",
"version": "1.61.3",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
@@ -28,6 +28,7 @@ export class NativeFeatureIdentifier extends ValueObject<NativeFeatureIdentifier
MidnightTheme: 'org.standardnotes.theme-midnight',
SolarizedDarkTheme: 'org.standardnotes.theme-solarized-dark',
TitaniumTheme: 'org.standardnotes.theme-titanium',
ProtonTheme: 'com.standardnotes.theme-proton',
PlainEditor: 'com.standardnotes.plain-text',
SuperEditor: 'com.standardnotes.super-editor',
+14 -1
View File
@@ -97,5 +97,18 @@ export function themes(): ThemeFeatureDescription[] {
no_mobile: true,
})
return [midnight, futura, solarizedDark, autobiography, dark, titanium, dynamic]
const proton: ThemeFeatureDescription = FillThemeComponentDefaults({
availableInRoles: [RoleName.NAMES.CoreUser, RoleName.NAMES.PlusUser, RoleName.NAMES.ProUser],
name: 'Carbon',
identifier: NativeFeatureIdentifier.TYPES.ProtonTheme,
permission_name: PermissionName.ProtonTheme,
dock_icon: {
type: 'circle',
background_color: '#16141c',
foreground_color: '#ffffff',
border_color: '#4a4658',
},
})
return [midnight, futura, solarizedDark, autobiography, dark, proton, titanium, dynamic]
}
@@ -40,4 +40,5 @@ export enum PermissionName {
Clipper = 'app:clipper',
Vaults = 'app:vaults',
SharedVaults = 'server:shared-vaults',
ProtonTheme = 'theme:proton',
}
+28
View File
@@ -3,6 +3,34 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.28.122](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-20)
**Note:** Version bump only for package @standardnotes/filepicker
## [1.28.121](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-19)
**Note:** Version bump only for package @standardnotes/filepicker
## [1.28.120](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/filepicker
## [1.28.119](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/filepicker
## [1.28.118](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-08)
**Note:** Version bump only for package @standardnotes/filepicker
## [1.28.117](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-17)
**Note:** Version bump only for package @standardnotes/filepicker
## [1.28.116](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-02)
**Note:** Version bump only for package @standardnotes/filepicker
## [1.28.115](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-27)
**Note:** Version bump only for package @standardnotes/filepicker
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/filepicker",
"version": "1.28.115",
"version": "1.28.122",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
+30
View File
@@ -3,6 +3,36 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.20.7](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-20)
**Note:** Version bump only for package @standardnotes/files
## [1.20.6](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-19)
### Bug Fixes
* Fixed issue with some Evernote imports getting cut-off ([2bc7d57](https://github.com/standardnotes/app/commit/2bc7d572356b285160cf5b811e6b38064f4f7f1b))
## [1.20.5](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/files
## [1.20.4](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/files
## [1.20.3](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-08)
**Note:** Version bump only for package @standardnotes/files
## [1.20.2](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-17)
**Note:** Version bump only for package @standardnotes/files
## [1.20.1](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-02)
**Note:** Version bump only for package @standardnotes/files
# [1.20.0](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-27)
### Features
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/files",
"version": "1.20.0",
"version": "1.20.7",
"engines": {
"node": ">=16.0.0 <17.0.0"
},
@@ -1,5 +1,9 @@
import { FileItem, PrefKey, PrefValue } from '@standardnotes/models'
export type SuperConverterHTMLOptions = {
addLineBreaks?: boolean
}
export interface SuperConverterServiceInterface {
isValidSuperString(superString: string): boolean
convertSuperStringToOtherFormat: (
@@ -18,9 +22,7 @@ export interface SuperConverterServiceInterface {
otherFormatString: string,
fromFormat: 'txt' | 'md' | 'html' | 'json',
options?: {
html?: {
addLineBreaks?: boolean
}
html?: SuperConverterHTMLOptions
},
) => string
getEmbeddedFileIDsFromSuperString(superString: string): string[]
+252
View File
@@ -3,6 +3,258 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.58.120](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-20)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.119](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-19)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.118](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-17)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.117](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-17)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.116](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-15)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.115](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-15)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.114](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-15)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.113](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-14)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.112](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-13)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.111](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-11)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.110](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-11)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.109](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.108](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-10)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.107](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-08)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.106](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-04)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.105](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-04-01)
### Bug Fixes
* Fixed super note "Table of contents" not working on mobile ([73eba38](https://github.com/standardnotes/app/commit/73eba38c1444e85839d771fb297e3035eabd99c8))
## [3.58.104](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-28)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.103](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-27)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.102](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-26)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.101](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-26)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.100](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-22)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.99](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-22)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.98](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-22)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.97](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-14)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.96](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-14)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.95](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-14)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.94](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-13)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.93](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-12)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.92](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-11)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.91](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-11)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.90](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-11)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.89](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-08)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.88](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-07)
### Bug Fixes
* use API v0 on iOS ([#2858](https://github.com/standardnotes/app/issues/2858)) [skip e2e] ([3b2f761](https://github.com/standardnotes/app/commit/3b2f76166126a5b11f35b64aacefa37618622c3d))
## [3.58.87](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-07)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.86](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-06)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.85](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-05)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.84](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-05)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.83](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-01)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.82](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-01)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.81](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-01)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.80](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-03-01)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.79](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-28)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.78](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-26)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.77](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-22)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.76](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-21)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.75](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-20)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.74](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-19)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.73](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-18)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.72](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-18)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.71](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-17)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.70](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-17)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.69](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-15)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.68](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-08)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.67](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-07)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.66](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-07)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.65](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-05)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.64](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-03)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.63](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-02)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.62](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-02-02)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.61](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-31)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.60](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-30)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.59](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-28)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.58](https://github.com/standardnotes/app/compare/@standardnotes/[email protected]...@standardnotes/[email protected]) (2024-01-27)
**Note:** Version bump only for package @standardnotes/mobile
+1 -1
View File
@@ -7,7 +7,7 @@ source "https://rubygems.org"
# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
ruby "2.7.6"
gem 'cocoapods', '~> 1.12'
gem 'cocoapods', '~> 1.14.3'
gem 'fastlane'
gem 'fastlane-plugin-bundletool'
gem 'xcode-install'
+53 -54
View File
@@ -1,9 +1,11 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.6)
CFPropertyList (3.0.7)
base64
nkf
rexml
activesupport (7.1.1)
activesupport (7.1.3)
base64
bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2)
@@ -13,39 +15,39 @@ GEM
minitest (>= 5.1)
mutex_m
tzinfo (~> 2.0)
addressable (2.8.5)
addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
algoliasearch (1.27.5)
httpclient (~> 2.8, >= 2.8.3)
json (>= 1.5.1)
artifactory (3.0.15)
atomos (0.1.3)
aws-eventstream (1.2.0)
aws-partitions (1.843.0)
aws-sdk-core (3.185.1)
aws-eventstream (~> 1, >= 1.0.2)
aws-eventstream (1.3.0)
aws-partitions (1.894.0)
aws-sdk-core (3.191.3)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
aws-sigv4 (~> 1.8)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.72.0)
aws-sdk-core (~> 3, >= 3.184.0)
aws-sdk-kms (1.77.0)
aws-sdk-core (~> 3, >= 3.191.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.136.0)
aws-sdk-core (~> 3, >= 3.181.0)
aws-sdk-s3 (1.143.0)
aws-sdk-core (~> 3, >= 3.191.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.6)
aws-sigv4 (1.6.1)
aws-sigv4 (~> 1.8)
aws-sigv4 (1.8.0)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.1.1)
bigdecimal (3.1.4)
base64 (0.2.0)
bigdecimal (3.1.6)
claide (1.1.0)
cocoapods (1.14.2)
cocoapods (1.14.3)
addressable (~> 2.8)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.14.2)
cocoapods-core (= 1.14.3)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 2.0)
cocoapods-downloader (>= 2.1, < 3.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
cocoapods-search (>= 1.0.0, < 2.0)
cocoapods-trunk (>= 1.6.0, < 2.0)
@@ -58,7 +60,7 @@ GEM
nap (~> 1.0)
ruby-macho (>= 2.3.0, < 3.0)
xcodeproj (>= 1.23.0, < 2.0)
cocoapods-core (1.14.2)
cocoapods-core (1.14.3)
activesupport (>= 5.0, < 8)
addressable (~> 2.8)
algoliasearch (~> 1.0)
@@ -69,7 +71,7 @@ GEM
public_suffix (~> 4.0)
typhoeus (~> 1.0)
cocoapods-deintegrate (1.0.5)
cocoapods-downloader (2.0)
cocoapods-downloader (2.1)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.1)
@@ -81,21 +83,20 @@ GEM
colored2 (3.1.2)
commander (4.6.0)
highline (~> 2.0.0)
concurrent-ruby (1.2.2)
concurrent-ruby (1.2.3)
connection_pool (2.4.1)
declarative (0.0.20)
digest-crc (0.6.5)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
domain_name (0.6.20240107)
dotenv (2.8.1)
drb (2.1.1)
drb (2.2.0)
ruby2_keywords
emoji_regex (3.2.3)
escape (0.0.4)
ethon (0.16.0)
ffi (>= 1.15.0)
excon (0.104.0)
excon (0.109.0)
faraday (1.10.3)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
@@ -124,8 +125,8 @@ GEM
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday (~> 1.0)
fastimage (2.2.7)
fastlane (2.216.0)
fastimage (2.3.0)
fastlane (2.219.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
@@ -144,6 +145,7 @@ GEM
gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-env (>= 1.6.0, < 2.0.0)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
http-cookie (~> 1.0.5)
@@ -152,7 +154,7 @@ GEM
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (>= 2.0.0, < 3.0.0)
naturally (~> 2.2)
optparse (~> 0.1.1)
optparse (>= 0.1.1)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3)
@@ -170,9 +172,9 @@ GEM
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.51.0)
google-apis-androidpublisher_v3 (0.54.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.2)
google-apis-core (0.11.3)
addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
@@ -180,24 +182,23 @@ GEM
representable (~> 3.0)
retriable (>= 2.0, < 4.a)
rexml
webrick
google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.19.0)
google-apis-core (>= 0.9.0, < 2.a)
google-cloud-core (1.6.0)
google-cloud-env (~> 1.0)
google-apis-storage_v1 (0.31.0)
google-apis-core (>= 0.11.0, < 2.a)
google-cloud-core (1.6.1)
google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.3.1)
google-cloud-storage (1.44.0)
google-cloud-storage (1.47.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.19.0)
google-apis-storage_v1 (~> 0.31.0)
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
@@ -214,22 +215,24 @@ GEM
i18n (1.14.1)
concurrent-ruby (~> 1.0)
jmespath (1.6.2)
json (2.6.3)
jwt (2.7.1)
json (2.7.1)
jwt (2.8.0)
base64
mini_magick (4.12.0)
mini_mime (1.1.5)
minitest (5.20.0)
minitest (5.22.2)
molinillo (0.8.0)
multi_json (1.15.0)
multipart-post (2.3.0)
mutex_m (0.1.2)
multipart-post (2.4.0)
mutex_m (0.2.0)
nanaimo (0.3.0)
nap (1.1.0)
naturally (2.2.1)
netrc (0.11.0)
optparse (0.1.1)
nkf (0.2.0)
optparse (0.4.0)
os (1.1.4)
plist (3.7.0)
plist (3.7.1)
public_suffix (4.0.7)
rake (13.1.0)
representable (3.2.0)
@@ -243,7 +246,7 @@ GEM
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
security (0.1.3)
signet (0.18.0)
signet (0.19.0)
addressable (~> 2.8)
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 3.0)
@@ -256,24 +259,20 @@ GEM
unicode-display_width (>= 1.1.1, < 3)
trailblazer-option (0.1.2)
tty-cursor (0.7.1)
tty-screen (0.8.1)
tty-screen (0.8.2)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
typhoeus (1.4.0)
typhoeus (1.4.1)
ethon (>= 0.9.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (2.5.0)
webrick (1.8.1)
word_wrap (1.0.0)
xcode-install (2.8.1)
claide (>= 0.9.1)
fastlane (>= 2.1.0, < 3.0.0)
xcodeproj (1.23.0)
xcodeproj (1.24.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
@@ -290,7 +289,7 @@ PLATFORMS
ruby
DEPENDENCIES
cocoapods (~> 1.12)
cocoapods (~> 1.14.3)
fastlane
fastlane-plugin-bundletool
xcode-install
+1 -1
View File
@@ -158,7 +158,7 @@ platform :android do
desc 'Deploy production app'
lane :prod do
version = 3_002_000 + ENV['BUILD_NUMBER'].to_i
version = 3_004_000 + ENV['BUILD_NUMBER'].to_i
deploy_android 'prod', version
end
end
+10 -10
View File
@@ -70,13 +70,13 @@ PODS:
- FlipperKit/FlipperKitNetworkPlugin
- fmt (6.2.1)
- glog (0.3.5)
- hermes-engine (0.72.4):
- hermes-engine/Pre-built (= 0.72.4)
- hermes-engine/Pre-built (0.72.4)
- hermes-engine (0.72.5):
- hermes-engine/Pre-built (= 0.72.5)
- hermes-engine/Pre-built (0.72.5)
- libevent (2.1.12)
- MMKV (1.2.14):
- MMKVCore (~> 1.2.14)
- MMKVCore (1.2.14)
- MMKV (1.3.0):
- MMKVCore (~> 1.3.0)
- MMKVCore (1.3.0)
- OpenSSL-Universal (1.1.1100)
- RCT-Folly (2021.07.22.00):
- boost
@@ -751,10 +751,10 @@ SPEC CHECKSUMS:
FlipperKit: 2efad7007d6745a3f95e4034d547be637f89d3f6
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b
hermes-engine: 81191603c4eaa01f5e4ae5737a9efcf64756c7b2
hermes-engine: f6cf92a471053245614d9d8097736f6337d5b86c
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
MMKV: 9c4663aa7ca255d478ff10f2f5cb7d17c1651ccd
MMKVCore: 89f5c8a66bba2dcd551779dea4d412eeec8ff5bb
MMKV: 9c6c3fa4ddd849f28c7b9a5c9d23aab84f14ee35
MMKVCore: 9bb7440b170181ac5b81f542ac258103542e693d
OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1
RCTRequired: df81ab637d35fac9e6eb94611cfd20f0feb05455
@@ -809,4 +809,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: c3b827e3c92cdf3199eddc52083480826e717b88
COCOAPODS: 1.14.2
COCOAPODS: 1.14.3
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@standardnotes/mobile",
"version": "3.58.58",
"version": "3.58.120",
"author": "Standard Notes.",
"private": true,
"license": "AGPL-3.0",
@@ -50,7 +50,7 @@
"get-yarn-workspaces": "^1.0.2",
"metro-react-native-babel-preset": "^0.77.0",
"npm-check-updates": "*",
"pod-install": "^0.1.38",
"pod-install": "^0.2.0",
"prettier": "*",
"prettier-plugin-organize-imports": "^3.2.0",
"react": "18.2.0",

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