Commit Graph

227 Commits

Author SHA1 Message Date
toasted-nutbread
ec42a7e4d6
Message handler refactor (#660)
* Refactor searchQueryUpdate action

* Use standard message handler style

* Use name "promiseOrResult" for consistency

* Use standard message handler convention for Yomichan message handlers

* Use common message handler invoker
2020-07-11 15:20:00 -04:00
toasted-nutbread
964f011409
Various updates to FrameOffsetForwarder (#657)
* Remove bindings

* Fast exit if same window

* Simplify selector

* Rename functions, reuse _getFrameOffsetParent

* Update message style

* Send reply message to a specific frame
2020-07-10 22:13:11 -04:00
toasted-nutbread
59c224d99d
Add support for async vs non-async (#656) 2020-07-10 22:12:14 -04:00
toasted-nutbread
295ffa6e54
Refactor DisplayFloat=>Frontend message passing (#652)
* Change getOrCreatePopup arguments to be an object

* Add ownerFrameId to popup and DisplayFloat

* Refactor DisplayFloat host action invocation

* Use CrossFrameAPI instead of window.postMessage

* Update popup closing functionality on the search page
2020-07-08 19:50:13 -04:00
toasted-nutbread
a07a8dfff6
Extension unload detection (#647)
* Update how extension unload is detected

* Remove event handlers and use yomichan.isExtensionUnloaded instead

* Update terminology
2020-07-03 12:20:22 -04:00
toasted-nutbread
3e68af8666
Shadow DOM container for popup iframes (#623)
* Add support for injecting stylesheets into a custom parent node

* Add api.getStylesheetContent

* Add support for injecting a CSS file's content

* Add usePopupShadowDom option

* Use a per-parentNode cache

* Add support for using a shadow DOM wrapper around popup iframes

* Ignore the popup container instead of the frame
2020-06-24 21:46:13 -04:00
toasted-nutbread
96932119f8
Remove window. from visualViewport, use local variable instead (#621) 2020-06-22 19:27:40 -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
e23504613f
Use DOMTextScanner (#536)
* Use DOMTextScanner instead of TextSourceRange.seek*

* Move getNodesInRange to dom.js

* Move anyNodeMatchesSelector to dom.js

* Remove unused functions

* Update tests

* Add layoutAwareScan option

* Use layoutAwareScan for source and sentence scanning

* Remove unused IGNORE_TEXT_PATTERN
2020-06-21 16:07:51 -04:00
toasted-nutbread
b4a617cac3
Ignore getZoom errors (#604) 2020-06-14 15:14:47 -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
toasted-nutbread
69c783f861
Frontend/popup proxy message refactoring (#520)
* Use direct message handler functions

* Remove unused targetPopupId

* Make target a member of FrontendApiSender

* Rename frameId to parentFrameId for clarity

* Remove _parentFrameId

* Rename _parentId to _parentPopupId for clarity
2020-05-09 12:27:56 -04:00
toasted-nutbread
48cf646973
Popup refactor (#518)
* Add default

* Convert function to non-static

* Remove static for private functions

* Replace .call

* Move functions with side effects into a synchronous prepare function

* Rename variables with "container" to "frame" in _initializeFrame

* Rename variables with "container" to "frame"

* Rename getContainer to getFrame

* Rename getContainerRect to getFrameRect

* Organize and simplify

* Fix incorrect change of "popup" => "this"

* Move initial _updateVisibility into prepare()
2020-05-08 19:10:06 -04:00
toasted-nutbread
3949db26d7
Text scanner refactor (#517)
* Fix return type

* Pass search function as a constructor argument

* Pass constructor as a details object

For consistency with other complex constructors and improved semantics.

* Convert _ignorePoints to a single optional function

* Organize functions

* Rename ignorePoints to ignorePoint
2020-05-08 19:05:50 -04:00
toasted-nutbread
edb86d9ec3
Organize frontend functions (#513) 2020-05-07 19:38:09 -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
siikamiika
a88501ff10
Text selection fixes (#511)
* select matched text in Frontend.findKanji

* blur search query input when setting content
2020-05-07 01:49:42 +03:00
siikamiika
7d7ff165ce
Extract textSource text inside TextScanner (#500)
* extract text inside TextScanner

* clone textSource before text extraction
2020-05-05 00:13:43 +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
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
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
siikamiika
e6053eefa5
Merge pull request #439 from siikamiika/popup-live-toggle
Popup live toggle
2020-04-17 01:31:25 +03:00
siikamiika
b6f7f8c026 fix _canEnable being used before setting options 2020-04-14 20:59:42 +03:00
siikamiika
950f50ef94 don't focus tab when changing settings 2020-04-14 20:35:52 +03:00
toasted-nutbread
bf4c1aef6a Fix default value of _orphaned 2020-04-11 22:27:31 -04:00
siikamiika
5c3641eadb simplify frontend disable override 2020-04-11 21:04:30 +03:00
siikamiika
d93e3e1a67 use setters instead of EventDispatcher 2020-04-11 21:04:30 +03:00
siikamiika
275f455e73 fix preview frame error 2020-04-11 21:04:30 +03:00
siikamiika
565e3a8c6a change iframe popup live 2020-04-11 21:04:30 +03:00
siikamiika
92109bb5d2 allow disabling scan on search page live 2020-04-11 21:01:27 +03:00
siikamiika
1df59d57b5 limit popup depth live 2020-04-11 21:01:27 +03:00
toasted-nutbread
a864cf094f
Merge pull request #437 from toasted-nutbread/backend-api-handler-changes
Backend api handler changes
2020-04-11 11:32:52 -04:00
toasted-nutbread
a296c758b9 apiBroadcast => apiBroadcastTab 2020-04-10 20:00:18 -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
a2b66dc6cc Rename apiForward to apiBroadcast 2020-04-07 19:51:39 -04:00
toasted-nutbread
696897f6fa Add support for getting the document title 2020-04-06 18:55:36 -04:00
siikamiika
e4fc53480f move broadcastRootPopupInformation to Frontend 2020-04-05 19:57:37 +03:00
siikamiika
9fe1e38afb refactor 2020-04-05 19:57:37 +03:00
siikamiika
b996d0b1e0 fix and simplify 2020-04-05 19:57:37 +03:00
siikamiika
6806e7055f show iframe popups in root frame 2020-04-05 19:57:37 +03:00
siikamiika
b616bac66e remove targetPopupId 'all'
Make unset targetPopupId mean the same thing instead
2020-03-21 22:13:07 +02:00
siikamiika
962c2a381f apply all options on profile change 2020-03-21 22:13:07 +02:00
toasted-nutbread
64fc0349a1 Update global declarations 2020-03-10 22:40:35 -04:00
toasted-nutbread
8bc1a40914 Use .bind instead of () => {} 2020-02-26 21:01:40 -05:00
toasted-nutbread
d08ac02c6a Move event handler definitions 2020-02-26 19:52:12 -05:00
toasted-nutbread
b5d32c73e6 Simplify process to wait for iframe prepare completion 2020-02-16 12:23:20 -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
siikamiika
c09a3ded1d
Merge pull request #357 from siikamiika/simplify-display-prepare
Simplify display prepare
2020-02-14 11:00:36 +02:00
siikamiika
810a7e7d92 use sendMessage to notify about initialization 2020-02-14 02:33:54 +02:00
toasted-nutbread
e2ac478cb7 Define more globals 2020-02-11 22:22:16 -05:00
toasted-nutbread
8e15c20311 Remove window.onscroll handler since it causes a warning 2020-01-22 20:38:21 -05:00
toasted-nutbread
21dbb19565 Update popup position on scroll 2020-01-22 20:38:21 -05:00
toasted-nutbread
e73e4c032c Implement scale relative to visual viewport 2020-01-22 20:38:21 -05:00
toasted-nutbread
351598a182 Add settings to control popup content scale 2020-01-22 20:38:21 -05:00
toasted-nutbread
e740965d4f Scale popup based on current page zoom factor 2020-01-22 20:38:21 -05:00
toasted-nutbread
f725549330 Remove redundant window resize handler 2020-01-22 20:38:21 -05:00
toasted-nutbread
14e48cf854 Create single function for how the frontend shows popup content 2020-01-22 20:38:21 -05:00
siikamiika
8292be92d8 use TextScanner in QueryParser 2020-01-16 23:22:38 +02:00
toasted-nutbread
0d7ccf25b8 Update license info URL 2020-01-01 12:00:31 -05:00
toasted-nutbread
899ef167d1 Update copyright 2020-01-01 12:00:00 -05:00
toasted-nutbread
7ae0584077 Update initialization 2019-12-21 13:19:31 -05:00
toasted-nutbread
2519f99f54 Update how orphan state is observed 2019-12-20 13:44:33 -05:00
toasted-nutbread
2a95f1420f Move optionsUpdate message handler into Yomichan class 2019-12-20 13:36:54 -05:00
toasted-nutbread
d6c64643b1 Don't return promises for frontend message handlers 2019-12-16 19:54:41 -05:00
toasted-nutbread
0fb2357ec7 isVisibleAsync => isVisible 2019-12-16 19:54:41 -05:00
toasted-nutbread
30e13354b3 Add Popup.isProxy 2019-12-16 19:54:41 -05:00
toasted-nutbread
c4719cb7f4 Add getContainer to popup 2019-12-16 19:54:41 -05:00
toasted-nutbread
4177b63726 Remove redundant getUrl handlers 2019-12-13 23:11:56 -05:00
toasted-nutbread
863e36e829 Update frontend message handlers 2019-12-13 23:11:56 -05:00
toasted-nutbread
f287d68624 Add showContentCompleted for improved semantic clarity 2019-12-11 21:31:21 -05:00
siikamiika
f6d0503604 simplify with inheritance 2019-12-06 21:39:29 +02:00
siikamiika
595636c40b move text selection to TextScanner 2019-12-05 22:48:05 +02:00
siikamiika
e5be42d3de scan decoupling 2019-12-05 22:12:43 +02:00
siikamiika
02a34bb4bc initial text scanner extract 2019-12-05 03:58:35 +02:00
siikamiika
a40f3b1c9f add missing disableHistory 2019-12-01 06:32:17 +02:00
siikamiika
be23ad7213 remove dead code 2019-11-30 04:59:36 +02:00
siikamiika
1dd88763de clear Display history on new lookup 2019-11-28 18:24:24 +02:00
toasted-nutbread
acb70f126c Update unused arguments 2019-11-26 22:06:27 -05:00
toasted-nutbread
ef833d2bea Use const rather than let where possible 2019-11-26 22:06:27 -05:00
toasted-nutbread
0aed27b66d Replace hasOwnProperty with simplified hasOwn function 2019-11-26 22:06:27 -05:00
toasted-nutbread
4110a848f5 Move additional utility functions to DOM 2019-11-26 18:59:52 -05:00
toasted-nutbread
96aad50340 Create DOM utility file 2019-11-26 18:59:52 -05:00
toasted-nutbread
3a225c3f91 Add details field to apiTermsFind 2019-11-10 14:02:43 -05:00
toasted-nutbread
d9b4404075 Create functions for the cases of isMouseButton
jshint was showing a warning that there was no break statement
after the first case, which there doesn't need to be.

The most straightforward way to fix this without using the unclear
// jshint ignore:line
is to just have two functions.

This change also updates invocations of isMouseButton to use
the exact case function, as this will remove the need to check
the case of mosueEvent.type. This was done because onMouseMove
is invoked at a high frequency.
2019-11-10 14:00:44 -05:00
toasted-nutbread
a85ec440d6 Fix overlapping popup timers 2019-11-05 19:48:08 -05:00
siikamiika
83460bcdad refactoring and optimization 2019-11-04 02:15:33 +02:00
siikamiika
f4a987912a prevent accidental lookup on glossary text select 2019-11-03 18:56:22 +02:00
toasted-nutbread
75ff05148d Fix autoHideResults not working 2019-11-03 11:06:31 -05:00
toasted-nutbread
bcffe80a1e Group similar functions together 2019-10-28 17:03:42 -04:00
toasted-nutbread
6d85dae68d Fix some issues with the context menu 2019-10-28 17:03:42 -04:00
toasted-nutbread
d2644c0776 Style update 2019-10-28 17:03:42 -04:00
toasted-nutbread
c365101ec2 Reset preventions earlier 2019-10-28 17:03:42 -04:00
toasted-nutbread
e542f38110 Check pendingLookup earlier 2019-10-28 17:03:42 -04:00
toasted-nutbread
9703e123bf Remove setPrimaryTouch 2019-10-28 17:03:42 -04:00
toasted-nutbread
80eb357527 Simplify touch event implementation 2019-10-28 17:03:42 -04:00
toasted-nutbread
131dc8397d Make selectionContainsPoint static 2019-10-28 17:03:42 -04:00
toasted-nutbread
a648e05091 Improve naming 2019-10-28 17:03:42 -04:00
toasted-nutbread
9178636613 Remove setters 2019-10-28 17:03:42 -04:00
toasted-nutbread
c74c466c36 Remove unused variable 2019-10-28 17:03:42 -04:00