* Add utility functions for saving and restoring the caret location
Implement surroundNoSplitting
Clarify surroundNoSplitting comments
Start implementing surroundSplitting and triggerIfSimpleInput
Fix after rebase
Implement findBefore / findAfter in lib/surround
* to merge adjacent nodes into the surrounding nodes
Use new prettier settings with lib/{location,surround}
Fix imports that I missed to rename
Add some tests for find-adjacent
Split find-within from find-adjacent
Normalize nodes after insertion in surroundNoSplitting
Do not deep clone surroundNode
-> no intention of supporting deep nodes, as normalization would be impossible
Add some tests concerning nested surrounding nested nodes
Select surroundedRange after surrounding
Fix ascendWhileSingleInline
A flawed first surround/trigger implementation
Move trigger out of lib/surround
Implement Input Manager as a way to handle bold on empty selection
Switch bold button away from execCommand
Pass in Matcher instead of selector to find-adjacent and surroundNoSplitting
* Also adds a failing test for no-splitting
Refactor find-adjacent
* add failing test when findBefore's nodes have different amounts of
child nodes
Change type signature of find-adjacent methods to more single-concern
Add test for surrounding where adjacent block becomes three Text elements
Make nodes found within surrounded range extend the ranges endOffset
Add base parameter to surroundNoSplitting to stop ascending beyond container
Stop surrounding from bubbling beyond base in merge-match
Make all tests pass
Add some failing tests to point to future development
Add empty elements as constant
Implement a broken version of unsurround
Even split text if it creates zero-length texts
-> they are still valid, despite what Chromium says
Rename {start,end} to {start,end}Container
Add more unit tests with surround after a nested element
Set endOffset after split-off possibly zero length text nodes
Deal with empty elements when surrounding
Only include split off end text if zero length
Use range anchors instead off calcluating surroundedRange from offsets
* this approach allows for removal of base elements when unsurrounding
Comment out test which fail because of jsdom bugs
We'll be able to enable them again after Jest 28
Make the first unsurround tests pass
Add new failing test for unsurround text within tag
Fix unsurround
Test is deactivated until Jest 28
Rewrite input-manager and trigger callback after insertion
Avoid creating zero length text nodes by using insertBefore when appropriate
Implement matches vs keepMatches
Make shadow root and editable element available on component tree
Make WithState work with asynchronous updater functions
Add new Bold/Italic/UnderlineButton using our logic
Add failing test for unsurrounding
* Move surround/ to domlib
* Add jest dependency
* Make find-within return a sum type array rather than two arrays
* Use FoundMatch sum-type for find-above (and find-within)
* Fix issue where elements could be cleared twice
* if they are IN the range.endContainer
* Pass remaining test
* Add another failing test
* Fix empty text nodes being considered for surrounding
* Satisfy svelte check
* Make on more type correct
* Satisfy remaining tests
* Add missing copyright header
Merging note: the typing changes were fixed in a separate PR.
* Put rootDirs into subprojects
- typings do not work for any ts or svelte files
- if we set the 'rootDirs' in ts/tsconfig.json to '../bazel-bin/ts' and then inherit
them from e.g. editor, the root will be changed to '../../bazel-bin/ts',
however editor needs look in '../../bazel-bin/ts/editor' instead.
* Rename i18n and i18n_helpers to i18n-generated and i18n
- This way, we can restrict the awkwardness of importing files outside
the ts directory within lib
* Fix missing typing of i18n and backend_proto by adding back symlinks
* Split up i18n-generated into i18n-{translate,modules}
* Change i18n from singleton to functions
* Revert "Put rootDirs into subprojects"
This partially reverts commit e1d4292ce3979e7b7ee21bf3951b8a462d45c29c.
It seems like this might not be necessary after all.
However some other change made on this branch seems to have fixed
the .svelte.d.ts imports
* Introduce i18n-bundles to remove circular import
There was a circular import i18n.ts <-> i18n-translate.ts
* Create own directory for i18n
* Move lib/i18n/translate to lib/translate
* This restores tree shaking
* Update tsconfig libs and module
* es2018-2020 have wide support on all modern browsers including
* Switch bundles and langs inside i18n to variables again
* Add missing copyright header
* Rename translate.ts to ftl.ts
* Remove the symlinks again
I added them to fix to have completion for tr, however this would have
also have meant to abandon the tree shaking.
As we want to have tree shaking, it's also not necessary to have the
symlinks anymore
* Revert "Update tsconfig libs and module"
This reverts commit 0a96776a475e9901c1f9f3407c726d1d002fb9ef.
* move withCollapsedWhitespace back to i18n/utils
* Add back /ts as in rootDirs