anki/ts
Henrik Giesel 64d46ca638
Reverse-engineer surrounding with execCommand (#1377)
* 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
2021-11-18 19:18:39 +10:00
..
card-info Introduce our own Container, Row, and Col components (#1495) 2021-11-17 13:49:52 +10:00
change-notetype Introduce our own Container, Row, and Col components (#1495) 2021-11-17 13:49:52 +10:00
components Reverse-engineer surrounding with execCommand (#1377) 2021-11-18 19:18:39 +10:00
congrats revert congrats h3 style change from #1470 2021-11-01 12:55:31 +10:00
deck-options Introduce our own Container, Row, and Col components (#1495) 2021-11-17 13:49:52 +10:00
domlib Reverse-engineer surrounding with execCommand (#1377) 2021-11-18 19:18:39 +10:00
editable Reverse-engineer surrounding with execCommand (#1377) 2021-11-18 19:18:39 +10:00
editor Reverse-engineer surrounding with execCommand (#1377) 2021-11-18 19:18:39 +10:00
graphs Garbage collect unused Fluent strings (#1482) 2021-11-12 18:19:01 +10:00
html-filter Use trailingComma: all setting in .prettierrc (#1435) 2021-10-19 09:06:00 +10:00
lib Reverse-engineer surrounding with execCommand (#1377) 2021-11-18 19:18:39 +10:00
patches update to latest rules_nodejs & switch to ts_project 2021-10-01 12:52:53 +10:00
reviewer Set "no-non-null-assertion: off" by default (#1475) 2021-11-04 11:42:51 +10:00
sql_format use absolute path for sql_format 2021-10-31 11:13:38 +10:00
svelte another external workspace fix for sass 2021-11-12 15:02:17 +10:00
sveltelib Reverse-engineer surrounding with execCommand (#1377) 2021-11-18 19:18:39 +10:00
.eslintrc.js Set "no-non-null-assertion: off" by default (#1475) 2021-11-04 11:42:51 +10:00
.gitignore Update eslint to 4.22.0 2021-04-22 19:19:39 +02:00
BUILD.bazel add aliases to run vendored python and node from command line 2021-10-18 19:50:41 +10:00
compile_sass.bzl Put sass into repo directory (#1409) 2021-10-09 10:25:03 +10:00
copy.bzl include sourcemaps for pages/* in dev builds 2021-04-20 17:33:46 +10:00
esbuild.bzl update to latest rules_nodejs & switch to ts_project 2021-10-01 12:52:53 +10:00
eslint.bzl use absolute package paths in eslint.bzl 2021-11-02 13:49:19 +10:00
format.sh //ts:format now runs on current working directory, instead of entire repo 2021-10-23 15:48:33 +10:00
jest.bzl Reverse-engineer surrounding with execCommand (#1377) 2021-11-18 19:18:39 +10:00
jest.config.js update to latest rules_nodejs & switch to ts_project 2021-10-01 12:52:53 +10:00
licenses.json update js deps 2021-10-26 08:30:13 +10:00
prettier.bzl include subfolders in eslint/prettier checks 2021-11-02 12:50:27 +10:00
proto.bzl update to latest rules_nodejs & switch to ts_project 2021-10-01 12:52:53 +10:00
protobuf-no-long.js add a hack to avoid Long.js in Jest tests 2021-04-17 17:05:48 +10:00
protobuf.bzl force number in protobuf generation 2021-04-12 14:33:20 +10:00
README.md add add.sh helper for adding dependency and updating licenses 2020-12-31 12:20:51 +10:00
tsconfig.json Introduce our own Container, Row, and Col components (#1495) 2021-11-17 13:49:52 +10:00
typescript.bzl Refactor i18n (#1405) 2021-10-07 23:31:49 +10:00
update-licenses.sh move node_modules into root folder [action required] 2021-10-07 11:42:27 +10:00
update.sh add add.sh helper for adding dependency and updating licenses 2020-12-31 12:20:51 +10:00
vendor.bzl add workaround for protobufjs requiring uppercase package names 2021-07-10 15:24:01 +10:00
yarn.sh Replace individual d3 libraries with encompassing d3 2021-01-30 00:00:22 +01:00

Anki's TypeScript and Sass dependencies. Some TS/JS code is also stored separately in ../qt/aqt/data/web/.

To update all dependencies:

./update.sh

To add a new dev dependency, use something like:

./add.sh -D @rollup/plugin-alias