* Implement custom study on backend
* Switch frontend to backend custom study
* Skip typecheck for new pb classes
* Build tag search string on backend
Also fixes escaping of special characters in tag names.
* `cram.cards` -> `cram.card_limit`
* Assign more meaningful names in `TagLimit`
* Broaden rustfmt glob
* Use `invalid_input()` helper
* Assign `FilteredDeckForUpdate` to temp var
* Implement `SearchBuilder`
* Rewrite `custom_study()` with `SearchBuilder`
* Replace match macros with `SearchBuilder`
* Remove `into_nodes_list` & `concatenate_searches`
* Make webview zoom optional
Also suppress mouse wheel zooming.
* Disable zoom for top and bottom bars in main view
* Factor in macos zoom by scrolling and refactor
* Improve side margins in card info screen
* Improve top margin in deck options screen
* Hide revlog time of day on narrow screens
* Remove monospace for now (dae)
* fix: AttributeError: 'QMouseEvent' object has no attribute 'pos'
```
Caught exception:
Traceback (most recent call last):
File "D:\Python\Python39\lib\site-packages\aqt\browser\sidebar\tree.py", line 328, in mouseReleaseEvent
if (index := self.currentIndex()) == self.indexAt(event.pos()):
d
```
* fix: AttributeError: 'QMouseEvent' object has no attribute 'pos'
* Move some AddCards specific code to NoteCreator.svelte
* Add new strings for Toggling the Visual / HTML editor
* Set LabelContainer vertical-align to text-top
- Makes them look more centered
* Remove appendInParentheses helper
* Make all ts/*.html files include only module.js and module.css
* Move any JS from .html to index files
* Remove .html files from ts modules
* Remove Python with Starlark implemenation
* Remove reference to non-existing file
* Remove deck-option.html as well
* fix change-notetype screen (dae)
* fix: try catch excepton on get_windows_dark_mode and global cache that check
* add commitor email to CONTRIBUTORS
* remove is_windows_dark_mode cache
* avoid logging the missing key (dae)
The check happens frequently, so this will fill up the user's console if we print it each time.
- fixes warnings about security issues in marked/markdown-it
- jsdoc is mostly unmaintained at this point, and we need to override
its dependencies manually
- typescript is still pinned
- The way mypy gathers site packages has changed slightly, so we had to
update extendsitepkgs.py to work with it.
- Not sure if there's a way to avoid the ignore in
operations/__init__.py. mypy is still ensuring a provided argument has
a .changes attribute, so thankfully we don't seem to have lost much here.
* Forbid inserting object and iframe tags via PlainTextInput
* Add optional browserMode parameter to Editor
* Create new ts modules for three editor instances
- note-creator for AddCards
- browser-editor for the editor in the Browser
- reviewer-editor for the EditCurrent
* Revert "Forbid inserting object and iframe tags via PlainTextInput"
This reverts commit ab90ae8194494d883a1863126496e2d8f332509e.
* Refactor browserMode to editorMode
* Move new editor variants inside /ts/editor directory
* Fix typo
* Avoid initial call of mirror-dom
* Disable updateFocus from OldEditorAdapter
* fixes IME input duplication bug
* Fix saving of latestLocation for ContentEditable
* Fix IME after calling placeCaretAfterContent
* Export other libraries from domlib/index.ts
* Remove dead code
+ Uncomment code which was mistakenly left commmented
* Fix cardtype icon, add flag-off icon, remove flag.svg
* This removes the old flag.svg, because mdi-icons also has
one icon called `flag.svg`, and there was undefined behavior
which flag icon was being picked, when requesting "flag.svg"
* Sort no-flag to beginning of subtree
* to match tags
* Use nested tables in revlog
This allows for centered rows, while still preserving internal
alignment.
* Fix hidden columns
* Replace inner tables with flexbox divs
* Replace revlog table with flexbox divs
* Replace flex-gap in revlog
Unsupported on iOS and Qt5.
* Move move-nodes logic into domlib
Refactor input-manager
Refactor out FocusTrap from EditingArea
Remove unnecessary selecting of node from surround
Add onInput interface to input-manager
Create MathjaxElement.svelte
- This should contain all the setup necessary for displaying
<anki-mathjax> elements in the rich text input
- Does not contain setup necessary for Mathjax Overlay
Deal with backwards deletion, when caret inside anki-mathjax
Set mathjax elements contenteditable=false
Do not undecorate mathjaxx element on disconnect
- Fixes issues, where Mathjax might undecorate when it is moved into a
different div
Add framed element custom element
Introduce iterateActions to allow global hooks for RichTextInput
Remove some old code
Deal with deletion of frame handles
Make Anki frame and frame handles restore each other
Make FrameElement restore its structure upon modification
Frame and strip off framing from MathjaxElement automatically
Move FrameHandle to separate FrameStart/FrameEnd
Refactor FrameHandle
Set data-frames on FrameElement
Fix logic error connected to FrameElement
Communicate frameHandle move{in,out} to anki-mathjax
Clear selection when blurring ContentEditable
Make sure frame is destroyed when undecorating Mathjax
Use Hairline space instead of zeroWidth
- it has better behavior in the contenteditable when placing the caret
via clicking
Allow detection of block elements with `block` attribute
- This way, anki-mathjax block="true" will make field a
field be recognized to have block content
Make block frame element operater without handles
- Clicking on the left/right side of a block mathjax will insert a br
element to that side
When deleting, remove mathajax-element not just image
Update MathjaxButtons to correctly show block state
SelectAll when moving into inline anki mathjax
Remove CodeMirror autofocus functionality
Move it to Mathjaxeditor directly
Fix getRangeAt throwing error
Update older code to use cross-browser
Fix issue with FrameHandles not being properyly removed
Satisfy formatting
Use === instead of node.isSameNode()
Fix issue of focusTrap not initialized
* Fix after rebasing
* Fix focus not being moved to first field
* Add documentation for input-manager and iterate-actions
* Export logic of ContentEditable to content-editable
* Fix issue with inserting newline right next to inline Mathjax
* Fix reframing issue of Mathjax Svelte component
* Allow for deletion of Inline Mathjax again
* Rename iterate-actions to action-list
* Add copyright header
* Split off frame-handle from frame-element
* Add some comments for framing process
* Add mising return types
* Fix new preview card's position being interpreted as a date
Can be reproduced by opening the Card Info screen of a new preview card
not answered yet.
* Update rslib/src/stats/card.rs
Since this commit (ebd2acd98e),
Plasma Desktop will check "X-GNOME-SingleWindow" property to determine
whether to show "Open New Window" action in the context menu of a task.
Anki cannot launch a new instance or open a new window, so add the
property and set it to true to hide the action.
* Add thousands comma separator for card counts graph
* Fix Answer Buttons graph's tooltip
Changes to the "times pressed" heading
* Shows the percent of that button out of all the presses
* Comma separates total on thousands
* Update CONTRIBUTERS
* Wider spacing for graph tables
* Switch to locale-based stats numbers
* Update CONTRIBUTORS
Wrong email?
* Fix counts graph on narrow devices
Graph and table now align in a column when the device's screen is narrow. Columns widths are bounded to not get too wide
* Rename toLocaleXXX functions
* toLocaleNumber -> localizedNumber
* toLocaleString -> localizedDate
Also cleans up sketchy "card counts" table formatting
* Localize more numbers
Uses locale-based rounding for more numbers now
* Localize graph axis ticks
* Fix future-due graph tooltip
* avoid div by zero (dae)
Ignoring NaN in localizedNumber() could potentially mask a mistake
in the future - better to explicitly handle the invalid case at the
source instead.