Commit Graph

218 Commits

Author SHA1 Message Date
toasted-nutbread
0a5e832dfd
Mouse inputs (#783)
* Add mouse icon

* Add _updateModifiers

* Add support for mouse button modifiers

* Improve names of mouse inputs

* Improve mouse input sorting

* Rename getModifierKeyStrings to getModifierInputStrings

* Refactor keyboard/mouse inputs into KeyboardMouseInputField
2020-09-07 20:12:43 -04:00
toasted-nutbread
59559fc560
Profile conditions fixes and improvements (#782)
* Fix operator changes

* Fix default value not changing during type change

* Fix incorrect display value being assigned

* Refactor _updateValueInput
2020-09-07 13:22:34 -04:00
toasted-nutbread
d8f488e28c
Settings dictionary import refactor (#759)
* Fix .purge not re-opening the database after deletion failure

* Create DictionaryImportController

* Remove backend dictionary import
2020-09-04 17:54:34 -04:00
toasted-nutbread
f3dd2270a5
Json schema profile conditions (#758)
* Add clearCache function

* Add upgrade

* Use schema-based profile condition validation

* Update profile conditions settings controller

* Remove unnecessary async

* Remove old

* Remove unused templates
2020-09-04 17:44:00 -04:00
toasted-nutbread
f0c974d319
Move generateId to core.js (#748) 2020-08-22 15:49:24 -04:00
toasted-nutbread
c26c4ae0cb
Frontend initialization refactor (#737)
* Fix incorrect popup depth reassignment

* Rename variable

* Rename property

* Use explicit parameter values

* Refactor setupNestedPopups

* Refactor frontend initialization
2020-08-16 16:16:18 -04:00
toasted-nutbread
2a86d66092
DOM + DocumentUtil merge (#727)
* Add DOM functions to DocumentUtil

* Use DocumentUtil instead of DOM

* Remove DOM

* Move document-util.js into mixed
2020-08-09 21:07:11 -04:00
toasted-nutbread
838fd211c6
Pitch accent Anki field templates (#701)
* Template helper updates

* Add pitch data to exported field formatting data

* Reuse note data

* Add no-op

* Set up pitch accent templates

* Refactor version update functions

* Implement upgrade process for new Anki templates

* Consistency

* Update README and anki.js to have matching markers
2020-08-01 16:23:33 -04:00
toasted-nutbread
b52074b3f0
Options util (#700)
* Move options functions into a class

* Rename and privatize

* Organize by public/private

* Refactor to use async function

* Simplify update function signature

* Add comment for update

* Rename

* Copy _applyUpdates into _legacyProfileUpdateUpdateVersion

* Organize

* Move profile options updates

* Refactor update details

* Add async support

* Formatting
2020-08-01 11:46:35 -04:00
toasted-nutbread
d7f78c23b5
Script ready state change (#672)
* Update how backend/frontend ready states are awaited and signaled

* Log errors on the search page

* Update action name
2020-07-18 17:11:38 -04:00
toasted-nutbread
fc31e6fab5
Fix incorrect field name (#665) 2020-07-14 21:58:53 -04:00
toasted-nutbread
c13160d784
Page exit prevention refactor (#637)
* Add page exit prevention functionality to SettingsController

* Update dictionary controller to use new page exit prevention system

* Remove page-exit-prevention.js
2020-07-03 11:56:26 -04:00
toasted-nutbread
5bf805755a
Yomichan object separation (#627)
* Move "yomichan" object setup to a separate file

* Update script imports

* Align message handlers

* Rename Yomichan.prepare to Yomichan.ready

* Add new prepare function

* Improve isExtensionUrl
2020-06-28 11:26:43 -04:00
toasted-nutbread
6ee50b3c95
Make PopupFactory.prepare non-async (#625) 2020-06-25 18:32:29 -04:00
toasted-nutbread
f2991fb9ee
Frontend initialization refactor (#610)
* Create member functions for ignoreElements and ignorePoint

* Create addFullscreenChangeEventListener utility

* Move popup creation management into Frontend

* Move getUrl implementation

* Remove old setup

* Remove try/catch block

* Error wrap

* Add prepare call to TextScanner

* Update depth when popup changes

* Refactor how Frontend gets PopupFactory and frameId

* Update popup preview to work

* Update popup preview frame to use the frontend's popup

* Update how nested popups are set up

* Error wrap

* Update how popups are set up on the search page

* Error wrap

* Error unwrap

* Add missing prepare

* Remove use of frontendInitializationData

* Catch and log errors
2020-06-21 16:14:05 -04:00
toasted-nutbread
8bc15e60b5
Detect language tags starting with "ja_" (#596) 2020-06-13 10:18:44 -04:00
toasted-nutbread
cfd3a1ec3a
Update AudioController to not use mutable options references (#585) 2020-05-30 21:54:38 -04:00
toasted-nutbread
db209c9116
Generic settings controller merge (#584)
* Update how optionsContext is assigned to targets

* Add getSettings and modifySettings

* Merge DOMSettingsBinder into GenericSettingController

* Remove old DOMSettingsBinder
2020-05-30 21:53:36 -04:00
toasted-nutbread
ce7f9dd09a
Update how assignment of general.enableClipboardPopups works (#583) 2020-05-30 16:24:51 -04:00
toasted-nutbread
976a200ffc
Backup update (#582)
* Add function to assign all settings

* Update how settings backups are restored

* Remove page reload

* Update profile index after importing
2020-05-30 16:23:56 -04:00
toasted-nutbread
c8810bc929
Update AnkiController (#581)
* Update how fields are populated

* Update how fields are modified after a model change

* Update how _onFieldsChanged assigns fields

* Update how spinner is hidden

* Remove jQuery usage

* Use non-jQuery events
2020-05-30 16:22:51 -04:00
toasted-nutbread
ad8df26b6b
Update AnkiTemplatesController (#580)
* Use this._defaultFieldTemplates

* Don't use mutable options

* Remove some use of jQuery
2020-05-30 16:22:05 -04:00
toasted-nutbread
395a0f4096
Update GenericSettingController to use DOMSettingsBinder (#578) 2020-05-30 16:20:31 -04:00
toasted-nutbread
f228078613
SettingsController API update (#579)
* Include optionsContext as part of optionsChanged event

* Add get/modify functions
2020-05-30 11:24:34 -04:00
toasted-nutbread
789da0206b
Organize settings/main.js (#577) 2020-05-30 09:50:33 -04:00
toasted-nutbread
63a3e56367
Use SettingsController (#576)
* Use settingsController internally in settings/main.js

* Replace modifyingProfileChange with SettingsController.optionsContextChanged

* Update ClipboardPopupsController to use SettingsController

* Store reference to checkbox

* Use this._settingsController for everything

* Change where current profile is initially assigned from

* Remove some unnecessary async calls

* Move setup calls

* Update AnkiTemplatesController to use SettingsController

* Cache default field templates

* Update AnkiController to use SettingsController

* Update AudioController to use SettingsController

* Update SettingsBackup to use SettingsController

* Update DictionaryController to use SettingsController

* Update GenericSettingController to use SettingsController

* Update ProfileController to use SettingsController

* Remove unused

* Remove unused

* Replace some uses of api.options* functions

* Fix missing awaits

* Fix invalid function
2020-05-30 09:33:13 -04:00
toasted-nutbread
1a5a37c9e4
Fix frontend being null if messages are received early (#575) 2020-05-30 09:31:46 -04:00
toasted-nutbread
18f376358c
Generic settings controller + clipboard popups controller (#573)
* Create GenericSettingController

* Create ClipboardPopupsController
2020-05-29 20:33:40 -04:00
toasted-nutbread
df040b104a
Popup preview frame refactor (#572)
* Use private variables

* Use private methods

* Update overrides

* Make prepare called in the entry point function

* Change format of handlers

* Change where _apiOptionsGetOld is assigned

* Rename class
2020-05-29 20:29:19 -04:00
toasted-nutbread
9624566d2a
Convert popup-preview.js to a class (#571)
* Convert popup-preview.js to a class

* Don't invoke 'prepare'
2020-05-29 20:28:12 -04:00
toasted-nutbread
418e8a57bf
Convert dictionaries.js and storage.js to classes (#570)
* Convert dictionaries.js to a class

* Remove storage spinner

* Convert storage.js to a class

* Move dataset assignments into main.js
2020-05-29 20:25:22 -04:00
toasted-nutbread
c62f980f37
Audio controller (#569)
* Convert audio.js into a class

* Move audio-ui.js classes into audio.js

* Rename fields

* Merge classes

* Remove audio-ui.js
2020-05-29 19:56:38 -04:00
toasted-nutbread
5f9889fd26
Anki settings controllers (#567)
* Convert anki-templates.js to a class

* Convert anki.js to a class
2020-05-29 19:52:51 -04:00
toasted-nutbread
fde0072118
Change profile.js into a class (#566)
* Update how settings profile is stored and accessed

* Convert profiles.js into a class

* Rename members of ProfileController
2020-05-29 19:47:18 -04:00
toasted-nutbread
8537c8f386
Create class to abstract access, mutation, and events for settings (#565) 2020-05-29 19:45:54 -04:00
toasted-nutbread
37f0396f1c
DOM binder fixes (#564)
* Fix incorrect updateValue function

* Add source
2020-05-29 19:44:53 -04:00
toasted-nutbread
13f57cccba
Settings backup refactor (#551)
* Update backup.js to be a class

* Move utilReadFileArrayBuffer
2020-05-24 13:56:46 -04:00
toasted-nutbread
66e1185686
Settings binder (#542)
* Fix _modifySetting being async

* Return values for modifySettings's set and splice actions

* Add apiGetSettings

* Create a class which can accumulate tasks to run in bulk

* Create a class which binds input elements to customizable sources

* Create class which binds input elements to settings

* Add support for value transforms

* Remove redundant ObjectPropertyAccessor.getPathArray

* Fix not using correct types for input.min/max/step

* Fix wrong condition

* Use api object
2020-05-24 13:50:34 -04:00
toasted-nutbread
3089bb7908
Settings refactor (#541)
* Remove debug info

* Trigger onOptionsUpdated instead of formWrite when profile changes

* Update how Anki field changes are observed

* Update how general.enableClipboardPopups setting is changed

* Change where ankiTemplatesUpdateValue occurs

* Change where onDictionaryOptionsChanged occurs

* Remove unused global declarations

* Remove stray data attribute
2020-05-24 13:38:48 -04:00
toasted-nutbread
c61a87b152
API refactor (#532)
* Convert api.js into a class instance

* Use new api.* functions

* Fix missing binds

* Group functions with progress callbacks together

* Change style

* Fix API override not working
2020-05-24 13:30:40 -04:00
siikamiika
d6a3825a38
Modifier key platform names (#519)
* wip

* add environment class

* use Environment class

* use Environment for scanning modifier options

* remove Environment in favor of API

* await promise

* use modifier symbols on macOS

* fix key separator issues

* if else to switch

* simplify variable names
2020-05-09 18:36:00 +03:00
toasted-nutbread
b936c3e4b1
Popup proxy host refactor (#516)
* Rename PopupProxyHost to PopupFactory

* Update FrontendApiReceiver to support non-async handlers

* Make some functions non-async

* Make setCustomCss non-async

* Make setContentScale non-async

* Remove static

* Rename variables

* Pass frameId into PopupFactory's constructor

* Change FrontendApiReceiver source from popup-proxy-host to popup-factor

* Rename _invokeHostApi to _invoke

* Rename PopupProxy.getHostUrl to getUrl
2020-05-08 19:04:53 -04:00
toasted-nutbread
38d6f58fac
Frontend refactor (#508)
* Use this.popup instead of this.frontend.popup

* Rename Frontend.popup to _popup

* Make Frontend functions private

* Clean up Frontend constructor
2020-05-06 19:35:36 -04:00
toasted-nutbread
021ccb5ac3
Move util database modification functions (#499)
* Update onProgress callback to handle multiple arguments

* Add apiImportDictionaryArchive

* Add apiDeleteDictionary

* Make onProgress the last argument for consistency

* Remove deprecated util functions

* Fix issue with missing progress args

* Remove function calls which modify the database from Translator

* Update tests

* Fix errors not being serialized correctly in _createActionListenerPort
2020-05-06 19:28:26 -04:00
siikamiika
253dcf8b38
Fix modifier key condition data (#506)
* save transformed data for modifier key conditions

* validate transformed input

* fix regression

* undo rename

* refactor transformInput handling

* don't overwrite value with null
2020-05-06 19:44:56 +03:00
siikamiika
77b744e675
Modifier key profile condition (#487)
* update Frontend options on modifier change

* add modifier key profile condition

* use select element for modifier condition value

* support "is" and "is not" modifier key conditions

* use plural

* remove dead null check

it's never null in that function

* pass element on rather than assigning to this

* rename event

* remove Firefox OS key to Meta detection

* hide Meta from dropdown on Firefox

* move input type
2020-05-03 04:39:24 +03:00
toasted-nutbread
08ada6844a
Remove Frontend inheritance (#486)
* Make Frontend use composition instead of inheritance for TextScanner

* Use push instead of concat

* Update setOptions and setEnabled APIs

* Update how onWindowMessage event listener is added/removed

* Rename options to _options

* Use bind instead of arrow function

* Fix selection being cleared due to settings changes
2020-05-02 12:47:15 -04:00
toasted-nutbread
0956634d61
Add duplicateScope: 'deck' option (#476)
* Add duplicateScope: 'deck' option

* Add option to control duplicate scope

* Use duplicateScope for findNoteIds

* Update location of quotes
2020-04-27 18:10:59 -04:00
toasted-nutbread
48c7010f4e
Frontend refactor (part 1) (#484)
* Remove _getVisualViewportScale

* Use super's mouse event listener definitions

* Remove redundant override

* Remove getTouchEventListeners override

* Rename Display.onSearchClear to onEscape

* Change onSearchClear to clearSelection and use an event

* Update how text is marked for selection and deselection

* Replace onError with yomichan.logError

* Update setEnabled to refresh all event listeners
2020-04-27 18:10:37 -04:00
toasted-nutbread
5b96559df8
Error logging refactoring (#454)
* Create new logging methods on yomichan object

* Use new yomichan.logError instead of global logError

* Remove old logError

* Handle unhandledrejection events

* Add addEventListener stub

* Update log function

* Update error conversion to support more types

* Add log event

* Add API log function

* Log errors to the backend

* Make error/warning logs update the badge

* Clear log error indicator on extension button click

* Log correct URL on the background page

* Fix incorrect error conversion

* Remove unhandledrejection handling

Firefox doesn't support it properly.

* Remove unused argument type from log function

* Improve function name

* Change console.warn to yomichan.logWarning

* Move log forwarding initialization into main scripts
2020-04-26 16:55:25 -04:00
siikamiika
ca033a87a0
Update Popup and DisplayFloat optionsContext from Frontend (#464)
* set optionsContext from Frontend

* update Popup+Display options on Frontend change

* remove popup setOptions

* only update DisplayFloat options from Frontend

* fix optionsContext usage

* fix preview frame arguments

* keep Frontend URL up to date

* cache url

* fix preview frame

* trigger modifyingProfileChange in correct places

* remove async from function not using await

* refactor optionsContext in Frontend
2020-04-26 22:33:50 +03:00
toasted-nutbread
9216d1862f
Merge pull request #463 from toasted-nutbread/explicit-entry-point
Explicit entry points
2020-04-23 18:26:34 -04:00
toasted-nutbread
d8276a9d5d Use IIFE for entry points 2020-04-22 21:42:20 -04:00
toasted-nutbread
c43dac19a4 Use wanakana object directly 2020-04-20 22:23:07 -04:00
toasted-nutbread
7c578f7582 Create popup-preview-frame-main.js 2020-04-19 14:29:43 -04:00
toasted-nutbread
9fe7b9ad29 Remove unused global 2020-04-18 14:23:34 -04:00
toasted-nutbread
e1ebfb02f7 Disable cache on the backend and fix a bug with the cache key 2020-04-18 14:23:34 -04:00
toasted-nutbread
823c026533 Remove de/structuring from public API 2020-04-18 14:23:34 -04:00
toasted-nutbread
7fc3882607 Update the parameters passed to various audio-related functions 2020-04-18 14:23:34 -04:00
toasted-nutbread
106172e2c1
Merge pull request #447 from toasted-nutbread/util-conversions
Util conversions
2020-04-18 14:12:41 -04:00
toasted-nutbread
649adb13d8
Merge pull request #440 from toasted-nutbread/collapse-emphatic-sequences
Add support for collapsing emphatic character sequences
2020-04-12 11:42:46 -04:00
toasted-nutbread
51e17b35e3 Convert some util* functions into api* functions 2020-04-11 15:25:19 -04:00
4e5029f7ec Update license author field to broader to explicitly reflect that
Yomichan is an ongoing community project. It really does take a village,
and everyone who contributes code owns a part of it :)
2020-04-10 11:10:21 -07:00
toasted-nutbread
42a2917bf7 Add support for collapsing emphatic character sequences 2020-04-10 11:56:18 -04:00
toasted-nutbread
f177e3699a
Merge pull request #434 from toasted-nutbread/error-fixes
Error fixes
2020-04-07 19:28:07 -04:00
toasted-nutbread
ac1ecb35ee
Merge pull request #433 from toasted-nutbread/extra-dictionary-information
Extra dictionary information
2020-04-07 19:27:58 -04:00
toasted-nutbread
1d7c86ded0 Add document-title tag to settings options 2020-04-06 18:20:04 -04:00
toasted-nutbread
4011a091b6 Add support for {document-title} 2020-04-06 18:20:04 -04:00
toasted-nutbread
059db280bb Add custom context object for note creation 2020-04-06 18:20:04 -04:00
toasted-nutbread
9dfe531dfd Use logError instead of console.log 2020-04-05 18:27:53 -04:00
toasted-nutbread
7449ffd4dc Fix error reporting during dictionary import 2020-04-05 18:26:38 -04:00
toasted-nutbread
dd9d50bfc1 Update settings page to display additional information 2020-04-05 14:46:45 -04:00
siikamiika
31a326fe63 add option for iframe popups 2020-04-05 20:03:42 +03:00
toasted-nutbread
cbc7e2646d Add options 2020-03-28 10:25:57 -04:00
toasted-nutbread
64fc0349a1 Update global declarations 2020-03-10 22:40:35 -04:00
toasted-nutbread
aad4ab5ecc Rename audio functions using "url" to use "uri" 2020-03-07 21:57:26 -05:00
toasted-nutbread
7ac1c843a9 Use dependency injection for apiTemplateRender 2020-03-07 21:47:48 -05:00
toasted-nutbread
69cce49b0d Move Anki note generation functionality into a new class 2020-03-07 21:46:59 -05:00
toasted-nutbread
a8eb50d96f Use dependency injection for getAudioUri implementation 2020-03-07 21:43:51 -05:00
toasted-nutbread
d8e2e69ca5 Use AudioSystem on the audio settings page 2020-03-07 21:42:18 -05:00
siikamiika
e0edb30efd fix Backend prepare issues in settings 2020-03-02 11:18:09 +02:00
siikamiika
2abf46b6fa simplify backend prepare 2020-03-01 23:06:37 +02:00
toasted-nutbread
8e29da0c6b Load default Anki field templates from a file 2020-02-27 20:33:13 -05:00
toasted-nutbread
fdfc2d33bb Simplify event to use bind 2020-02-26 21:19:22 -05:00
toasted-nutbread
2d109c3e56 Use functions directly rather than wrapping in () => {} when args are same 2020-02-26 21:17:01 -05:00
toasted-nutbread
8bc1a40914 Use .bind instead of () => {} 2020-02-26 21:01:40 -05:00
toasted-nutbread
78dc501d02 Move event handler definitions 2020-02-26 20:07:14 -05:00
toasted-nutbread
6bd714fec0 Use Map to avoid using for in 2020-02-25 22:12:00 -05:00
toasted-nutbread
15f79bc78b Fix popupScalingFactor being limited to integer values 2020-02-23 21:12:43 -05:00
toasted-nutbread
c0d91bffc4 Add no-shadow 2020-02-22 14:53:02 -05:00
toasted-nutbread
56567903a5 Fix unnamed functions 2020-02-22 14:52:09 -05:00
toasted-nutbread
aa76113e75 Fix block padding 2020-02-22 14:52:09 -05:00
toasted-nutbread
452eec8a88 Use Map 2020-02-22 14:36:07 -05:00
toasted-nutbread
aee16c4431 Check origin on window messages 2020-02-16 23:41:17 -05:00
toasted-nutbread
9fd6ee382d Create more generic function for injecting stylesheets 2020-02-16 21:46:13 -05:00
toasted-nutbread
d3aefdc4e3 Override setCustomOuterCss instead of Popup.injectOuterStylesheet 2020-02-16 21:45:30 -05:00
toasted-nutbread
b6a50e234c Change parameter name 2020-02-16 21:44:45 -05:00
toasted-nutbread
dcd243c9e9 Update how popups are created 2020-02-16 18:59:08 -05:00
toasted-nutbread
070ae70f7c Create EventListenerCollection class 2020-02-16 18:47:57 -05:00
toasted-nutbread
faf15c08aa Rename optionsUpdate event to optionsUpdated
Past tense better indicates that the options were changed, but no data
is being included as part of the event. It is also more consistent with
the other event names the yomichan object currently provides.
2020-02-14 22:34:44 -05:00