SYMBOL INDEX (637 symbols across 26 files) FILE: src/js/data/config.js constant EXPERT_CONFIG_NAME (line 16) | const EXPERT_CONFIG_NAME = 'expert'; FILE: src/js/data/options.js class ConfigOption (line 17) | class ConfigOption { method constructor (line 19) | constructor(config) { method type (line 36) | get type() { throw Error('Unimplementated'); } method subPageType (line 37) | get subPageType() { return this.type; } method setConfig (line 38) | setConfig(value) { method getConfig (line 42) | getConfig(value) { method render (line 49) | render(container) { method renderValue (line 60) | renderValue(value) { } method isValidValue (line 61) | isValidValue(value) { return true; } method normalizeConfig (line 62) | async normalizeConfig() { method setup (line 75) | async setup(container) { method detailIcon (line 89) | detailIcon() { class SelectConfigOption (line 97) | class SelectConfigOption extends ConfigOption { method constructor (line 99) | constructor(config) { method type (line 104) | get type() { return 'select'; } method isValidValue (line 105) | isValidValue(value) { method render (line 108) | render(container) { method renderValue (line 118) | renderValue(value) { class ColorConfigOption (line 124) | class ColorConfigOption extends ConfigOption { method constructor (line 126) | constructor(config) { method type (line 130) | get type() { return 'color'; } method isValidValue (line 131) | isValidValue(value) { method render (line 134) | render(container) { method renderValue (line 144) | renderValue(value) { class FontConfigOption (line 150) | class FontConfigOption extends ConfigOption { method constructor (line 152) | constructor(config) { method type (line 156) | get type() { return 'font'; } method isValidValue (line 157) | async isValidValue(value) { method render (line 163) | render(container) { method renderValue (line 173) | renderValue(value) { class VoiceConfigOption (line 180) | class VoiceConfigOption extends ConfigOption { method constructor (line 182) | constructor(config) { method type (line 186) | get type() { return 'voice'; } method render (line 187) | render(container) { class TextConfigOption (line 194) | class TextConfigOption extends ConfigOption { method constructor (line 196) | constructor(config) { method type (line 201) | get type() { return 'text'; } method isValidValue (line 202) | isValidValue(value) { return typeof value === 'string'; } method render (line 203) | render(container) { method renderValue (line 213) | renderValue(value) { class StubConfigOption (line 218) | class StubConfigOption extends ConfigOption { method constructor (line 219) | constructor(config) { super(config); } method setConfig (line 220) | setConfig(value) { } method getConfig (line 221) | getConfig(value) { } method renderValue (line 222) | renderValue(value) { } method isValidValue (line 223) | isValidValue(value) { return true; } method normalizeConfig (line 224) | async normalizeConfig() { } method setup (line 225) | async setup(container) { class WebpageConfigOption (line 232) | class WebpageConfigOption extends StubConfigOption { method constructor (line 234) | constructor(config) { method type (line 238) | get type() { return 'webpage'; } class ValueConfigOption (line 241) | class ValueConfigOption extends ConfigOption { method constructor (line 243) | constructor(config) { method type (line 248) | get type() { return 'value'; } method setConfig (line 249) | async setConfig(value) { method getConfig (line 253) | async getConfig(defaultValue) { class ExpertConfigOption (line 259) | class ExpertConfigOption extends ConfigOption { method constructor (line 261) | constructor(config) { method type (line 266) | get type() { return 'expert'; } method isValidValue (line 267) | isValidValue(value) { return typeof value === 'string'; } method render (line 268) | render(container) { method renderValue (line 273) | renderValue(value) { class ButtonConfigOption (line 277) | class ButtonConfigOption extends StubConfigOption { method constructor (line 279) | constructor(config) { method type (line 283) | get type() { return 'button'; } method subPageType (line 284) | get subPageType() { return null; } method renderValue (line 285) | renderValue() { method onClick (line 309) | onClick() { method setup (line 318) | async setup(container) { FILE: src/js/page/config/configpage.js class ConfigOptionPage (line 53) | class ConfigOptionPage { method constructor (line 58) | constructor(container, mainPage) { method show (line 78) | show() { method hide (line 93) | hide() { method onFirstActivate (line 105) | onFirstActivate() { method onActivate (line 109) | onActivate() { } method onInactivate (line 110) | onInactivate() { } method setConfigOption (line 111) | async setConfigOption(configOption) { method cleanUp (line 121) | cleanUp() { method renderOptions (line 127) | async renderOptions() { } method renderValue (line 128) | renderValue(value) { } method onConfigValueChange (line 129) | onConfigValueChange(value) { method setValue (line 132) | async setValue(value) { method getValue (line 135) | async getValue(value) { class SelectConfigOptionPage (line 140) | class SelectConfigOptionPage extends ConfigOptionPage { method constructor (line 141) | constructor(container, mainPage) { method optionList (line 146) | async optionList() { method clearOptions (line 149) | async clearOptions() { method renderOptions (line 152) | async renderOptions() { method cleanUp (line 182) | cleanUp() { method renderValue (line 190) | async renderValue(value) { class ColorConfigOptionPage (line 207) | class ColorConfigOptionPage extends ConfigOptionPage { method constructor (line 208) | constructor(container, mainPage) { method renderOptions (line 213) | async renderOptions() { method cleanUp (line 220) | cleanUp() { method renderValue (line 227) | renderValue(value) { method onConfigValueChange (line 230) | onConfigValueChange() { } class FontConfigOptionPage (line 233) | class FontConfigOptionPage extends SelectConfigOptionPage { method constructor (line 234) | constructor(container, mainPage) { method onFirstActivate (line 244) | onFirstActivate() { method fontList (line 275) | async fontList() { method optionList (line 280) | async optionList() { method getValue (line 286) | async getValue() { method isValidFont (line 289) | async isValidFont(font) { method addFont (line 301) | async addFont(font) { method itemMayRemove (line 310) | itemMayRemove(item, index) { method onItemRemove (line 313) | async onItemRemove(item, index) { method updateRender (line 328) | async updateRender() { class VoiceConfigOptionPage (line 336) | class VoiceConfigOptionPage extends SelectConfigOptionPage { method constructor (line 337) | constructor(container, mainPage) { method onFirstActivate (line 347) | onFirstActivate() { method updateVoiceList (line 369) | async updateVoiceList(list, prefer) { method updatePrefer (line 377) | async updatePrefer(prefer) { method optionList (line 383) | async optionList() { method getValue (line 389) | async getValue() { method setConfigOption (line 398) | async setConfigOption(configOption) { method renderOptions (line 406) | async renderOptions() { method cleanUp (line 410) | cleanUp() { method emptyListRender (line 417) | emptyListRender(container) { class TextConfigOptionPage (line 423) | class TextConfigOptionPage extends ConfigOptionPage { method constructor (line 424) | constructor(container, mainPage) { method onFirstActivate (line 428) | onFirstActivate() { method renderOptions (line 435) | async renderOptions() { method renderValue (line 442) | async renderValue(value) { method onInput (line 444) | onInput() { class WebpageConfigOptionPage (line 450) | class WebpageConfigOptionPage extends ConfigOptionPage { method constructor (line 451) | constructor(container, mainPage) { method getUrl (line 455) | getUrl() { method onFirstActivate (line 458) | onFirstActivate() { method show (line 465) | show() { method hide (line 481) | hide() { method themeChange (line 490) | themeChange() { class ExpertConfigOptionPage (line 495) | class ExpertConfigOptionPage extends ConfigOptionPage { method constructor (line 496) | constructor(container, mainPage) { method onFirstActivate (line 500) | onFirstActivate() { method renderOptions (line 506) | async renderOptions() { method renderValue (line 512) | async renderValue(value) { method onInput (line 514) | onInput() { class ConfigPage (line 520) | class ConfigPage extends Page { method constructor (line 521) | constructor() { method addHeader (line 565) | addHeader() { method matchUrl (line 575) | matchUrl(url) { return /^\/settings(\/.*)?$/.test(url); } method getUrl (line 576) | getUrl(item) { method onFirstActivate (line 579) | async onFirstActivate() { method onActivate (line 637) | async onActivate() { method onInactivate (line 641) | async onInactivate() { method isPreserve (line 646) | isPreserve() { return false; } method keyboardHandler (line 648) | keyboardHandler(event) { method gotoList (line 656) | gotoList() { FILE: src/js/page/list/listpage.js class ListPage (line 20) | class ListPage extends Page { method constructor (line 21) | constructor() { method matchUrl (line 24) | matchUrl(url) { return url === '/'; } method getUrl (line 25) | getUrl(param) { return '/'; } method onFirstActivate (line 26) | async onFirstActivate() { method onActivate (line 69) | async onActivate() { method show (line 74) | show() { method onInactivate (line 78) | async onInactivate() { method initialListener (line 81) | initialListener() { method importFile (line 146) | async importFile(item) { method scrollToList (line 166) | scrollToList() { method updateList (line 175) | async updateList() { method clearList (line 228) | clearList() { method updateSearch (line 234) | updateSearch() { method clearSearch (line 240) | clearSearch() { method updateSort (line 244) | updateSort() { method searchFiles (line 247) | searchFiles(/** @type {import('../../data/storage.js').ReaderFileMeta[... method sortFiles (line 253) | sortFiles(/** @type {import('../../data/storage.js').ReaderFileMeta[]}... FILE: src/js/page/page.js class Page (line 10) | class Page { method constructor (line 11) | constructor(/** @type {HTMLElement} */element) { method setRouter (line 19) | setRouter(router) { method show (line 22) | show() { method hide (line 26) | hide() { method onFirstActivate (line 30) | async onFirstActivate() { } method onActivate (line 31) | async onActivate() { } method onUpdate (line 32) | async onUpdate() { } method onInactivate (line 33) | async onInactivate() { } method activate (line 34) | async activate(param) { method inactivate (line 47) | async inactivate() { method isActive (line 52) | isActive() { method matchUrl (line 55) | matchUrl(url) { return false; } method getUrl (line 56) | getUrl(param) { return '/'; } method isPreserve (line 57) | isPreserve() { return true; } FILE: src/js/page/read/control/controlpage.js class ControlPage (line 17) | class ControlPage extends ReadSubPage { method constructor (line 22) | constructor(container, readPage) { method onFirstActivate (line 25) | onFirstActivate() { method onActivate (line 117) | onActivate() { method onInactivate (line 124) | onInactivate() { method hide (line 129) | hide() { method show (line 138) | show() { method disable (line 146) | disable() { method enable (line 150) | enable() { method focus (line 154) | focus() { method registerMoreMenu (line 157) | registerMoreMenu(title, handler) { FILE: src/js/page/read/index/bookmarkpage.js class IndexBookmarkPage (line 17) | class IndexBookmarkPage extends IndexSubPage { method constructor (line 25) | constructor(container, tabItem, index, indexPage, readPage) { method createPageButton (line 28) | createPageButton() { method onFirstActivate (line 31) | onFirstActivate() { method addBookmark (line 38) | addBookmark() { method pageButtonAction (line 42) | pageButtonAction() { method emptyListRender (line 45) | emptyListRender(container) { method listItemRender (line 49) | listItemRender(container, item) { method getListItems (line 67) | getListItems() { method getCurrentIndex (line 70) | getCurrentIndex() { method onRemoveItem (line 73) | onRemoveItem(bookmark) { FILE: src/js/page/read/index/contentspage.js class IndexContentsTemplatePage (line 19) | class IndexContentsTemplatePage { method constructor (line 20) | constructor() { method onFirstActivate (line 27) | onFirstActivate(contentsPage, container) { method renderTemplateHistoryList (line 73) | renderTemplateHistoryList(history) { method show (line 113) | show() { method hide (line 138) | hide() { method addHistory (line 159) | async addHistory(template) { method keyboardEvents (line 167) | keyboardEvents(event) { class IndexContentsPage (line 175) | class IndexContentsPage extends IndexSubPage { method constructor (line 183) | constructor(container, tabItem, index, indexPage, readPage) { method onFirstActivate (line 187) | onFirstActivate() { method onActivate (line 195) | onActivate() { method onInactivate (line 200) | onInactivate() { method onResize (line 206) | onResize() { method setCurrent (line 209) | setCurrent() { method unsetCurrent (line 212) | unsetCurrent() { method updateListRender (line 216) | updateListRender() { method createPageButton (line 232) | createPageButton() { method refreshContents (line 235) | refreshContents(input) { method pageButtonAction (line 243) | pageButtonAction() { method emptyListRender (line 246) | emptyListRender(container) { method listItemRender (line 250) | listItemRender(container, item) { method getListItems (line 260) | getListItems() { method getCurrentIndex (line 264) | getCurrentIndex() { method updateCurrentHighlight (line 268) | updateCurrentHighlight(position) { method refreshList (line 279) | refreshList() { method recoverRealList (line 288) | recoverRealList() { method hideRealList (line 295) | hideRealList() { method updateFakeList (line 308) | updateFakeList() { FILE: src/js/page/read/index/indexpage.js class IndexPage (line 20) | class IndexPage extends ReadSubPage { method constructor (line 25) | constructor(container, readPage) { method onFirstActivate (line 28) | onFirstActivate() { method onActivate (line 67) | onActivate() { method onInactivate (line 73) | onInactivate() { method slideShow (line 81) | slideShow(action, offset) { method setCurrentSubPage (line 105) | setCurrentSubPage(targetPage) { method initUpdatePage (line 115) | initUpdatePage() { method show (line 118) | show(/** @type {'contents'|'bookmark'|'search'|null} */page = null) { method hide (line 129) | hide() { method isSubPageCurrent (line 138) | isSubPageCurrent(/** @type {'contents'|'bookmark'|'search'} */page = n... method cursorChange (line 141) | cursorChange(cursor, config) { method onResize (line 146) | onResize() { FILE: src/js/page/read/index/indexsubpage.js class IndexSubPage (line 18) | class IndexSubPage extends ReadSubPage { method constructor (line 26) | constructor(container, tabItem, index, indexPage, readPage) { method updateListRender (line 36) | updateListRender() { method setCurrent (line 44) | setCurrent() { method unsetCurrent (line 49) | unsetCurrent() { method show (line 54) | show() { method hide (line 58) | hide() { method createPageButton (line 63) | createPageButton() { } method onFirstActivate (line 64) | onFirstActivate() { method onActivate (line 86) | onActivate() { method onInactivate (line 102) | onInactivate() { method initUpdatePage (line 106) | initUpdatePage() { method onResize (line 110) | onResize() { } method enablePageButton (line 111) | enablePageButton() { method disablePageButton (line 114) | disablePageButton() { method getCurrentIndex (line 118) | getCurrentIndex() { method needUpdateCurrentHighlight (line 132) | needUpdateCurrentHighlight() { method updateCurrentHighlight (line 141) | updateCurrentHighlight(position) { method getListItems (line 158) | getListItems() { method cursorChange (line 161) | cursorChange(cursor, config) { method emptyListRender (line 165) | emptyListRender(container) { } method listItemRender (line 166) | listItemRender(container, item) { } method onItemClick (line 167) | onItemClick(item) { method pageButtonAction (line 173) | pageButtonAction() { } method listUpdated (line 174) | listUpdated() { method refreshList (line 179) | refreshList() { FILE: src/js/page/read/index/readindex.js class ReadIndex (line 15) | class ReadIndex { method constructor (line 19) | constructor(readPage) { method writeIndex (line 44) | writeIndex() { method getBookmarkList (line 47) | getBookmarkList() { method addBookmark (line 50) | addBookmark(cursor) { method deleteBookmark (line 61) | deleteBookmark(cursor) { method getIndexOfBookmarksByCursor (line 68) | getIndexOfBookmarksByCursor(cursor) { method getContentsList (line 73) | getContentsList() { method getIndexOfContentsByCursor (line 77) | getIndexOfContentsByCursor(cursor) { method getContentsByIndex (line 91) | getContentsByIndex(index) { method getContentsByCursor (line 96) | getContentsByCursor(cursor) { method getContentsTemplate (line 100) | getContentsTemplate() { method setContents (line 103) | setContents(template) { FILE: src/js/page/read/index/searchpage.js class IndexSearchPage (line 17) | class IndexSearchPage extends IndexSubPage { method constructor (line 25) | constructor(container, tabItem, index, indexPage, readPage) { method createPageButton (line 28) | createPageButton() { method onFirstActivate (line 31) | onFirstActivate() { method onActivate (line 56) | onActivate() { method setCurrent (line 61) | setCurrent() { method searchText (line 82) | async searchText(searchTerm) { method clearSearch (line 146) | clearSearch() { method pageButtonAction (line 152) | pageButtonAction() { method emptyListRender (line 156) | emptyListRender(container) { method listItemRender (line 161) | listItemRender(container, item) { method getListItems (line 187) | getListItems() { method getCurrentIndex (line 190) | getCurrentIndex() { method onItemClick (line 193) | onItemClick(searchResult) { FILE: src/js/page/read/jump/jumppage.js class JumpPage (line 14) | class JumpPage extends ReadSubPage { method constructor (line 19) | constructor(container, readPage) { method onFirstActivate (line 22) | onFirstActivate() { method onActivate (line 36) | onActivate() { method show (line 45) | show() { method hide (line 51) | hide() { method cursorChange (line 55) | cursorChange(cursor, config) { method updateInputValue (line 58) | updateInputValue() { FILE: src/js/page/read/readpage.js class ReadPage (line 24) | class ReadPage extends Page { method constructor (line 25) | constructor() { method matchUrl (line 33) | matchUrl(url) { method getUrl (line 39) | getUrl({ id }) { return '/read/' + id; } method onFirstActivate (line 40) | async onFirstActivate() { method onActivate (line 78) | async onActivate({ id }) { method onUpdate (line 128) | async onUpdate({ id }) { method onInactivate (line 132) | async onInactivate() { method gotoList (line 151) | gotoList() { method show (line 154) | show() { method hide (line 162) | hide() { method onResize (line 166) | onResize() { method keyboardEvents (line 170) | keyboardEvents(event) { method updateIndexRender (line 178) | updateIndexRender(resized = this.useSideIndex) { method updateSideIndex (line 199) | updateSideIndex() { method isIndexActive (line 215) | isIndexActive() { method isSideIndexActive (line 218) | isSideIndexActive() { method slideIndexPage (line 221) | slideIndexPage(action, offset) { method toggleIndexPage (line 224) | toggleIndexPage(page) { method isControlActive (line 231) | isControlActive() { method disableControlPage (line 234) | disableControlPage() { method enableControlPage (line 238) | enableControlPage() { method showControlPage (line 241) | showControlPage(focus) { method hideControlPage (line 248) | hideControlPage() { method toggleControlPage (line 251) | toggleControlPage() { method isJumpActive (line 255) | isJumpActive() { method showJumpPage (line 258) | showJumpPage() { method activedSubpage (line 261) | activedSubpage() { method isTextPageOnTop (line 267) | isTextPageOnTop() { method toggleSpeech (line 272) | async toggleSpeech() { method getRawCursor (line 278) | getRawCursor() { method getRenderCursor (line 284) | getRenderCursor() { method setCursor (line 296) | setCursor(cursor, config) { method getContent (line 304) | getContent() { return this.content; } method getMeta (line 305) | getMeta() { return this.meta; } method getLang (line 306) | getLang() { return this.langTag; } method isSpeaking (line 307) | isSpeaking() { return this.speech.isWorking(); } method getBookmarks (line 308) | getBookmarks() { return this.index.bookmarks; } method getContents (line 309) | getContents() { return this.index.content; } method canShareFile (line 310) | canShareFile() { method downloadContent (line 320) | downloadContent() { method shareFile (line 324) | shareFile() { method downloadFile (line 328) | downloadFile() { FILE: src/js/page/read/readsubpage.js class ReadSubPage (line 13) | class ReadSubPage { method constructor (line 18) | constructor(container, readPage) { method show (line 25) | show() { method hide (line 32) | hide() { method currentActive (line 39) | currentActive() { method onFirstActivate (line 42) | onFirstActivate() { } method onActivate (line 43) | onActivate() { method onInactivate (line 46) | onInactivate() { } method onResize (line 47) | onResize() { } method cursorChange (line 48) | cursorChange(cursor, config) { } FILE: src/js/page/read/speech/readspeech.js class ReadSpeech (line 16) | class ReadSpeech { method constructor (line 20) | constructor(page) { method init (line 40) | async init() { method listenEvents (line 90) | listenEvents() { method listenMediaDeviceChange (line 108) | async listenMediaDeviceChange() { method onStart (line 127) | onStart(event) { method onBoundary (line 140) | onBoundary(event) { method onEnd (line 162) | onEnd(event) { method onError (line 180) | onError(event) { method getSsuInfo (line 184) | getSsuInfo(ssu) { method readEnd (line 189) | readEnd() { method readNext (line 197) | readNext() { method readMore (line 217) | async readMore() { method spokenInPage (line 237) | spokenInPage() { method start (line 241) | async start() { method stop (line 265) | async stop() { method reset (line 295) | async reset() { method toggle (line 311) | async toggle() { method cursorChange (line 321) | cursorChange(cursor, config) { method metaLoad (line 331) | metaLoad(meta) { method metaUnload (line 363) | metaUnload() { method onMediaKey (line 379) | onMediaKey(event) { method updateMediaSession (line 395) | updateMediaSession() { method isWorking (line 408) | isWorking() { FILE: src/js/page/read/text/fliptextpage.js class FlipTextPage (line 31) | class FlipTextPage extends TextPage { method constructor (line 35) | constructor(readPage) { method onActivate (line 38) | async onActivate({ id }) { method onInactivate (line 58) | async onInactivate() { method initUpdatePage (line 63) | initUpdatePage() { method clearPrevCursor (line 67) | clearPrevCursor() { method initPrevCursor (line 70) | initPrevCursor() { method getPrevCursor (line 74) | getPrevCursor(nextCursor) { method setPrevCursor (line 81) | setPrevCursor(cursor, nextCursor) { method createContainer (line 88) | createContainer() { method removeContainer (line 171) | removeContainer(container) { method isAnythingSelected (line 177) | isAnythingSelected() { method keyboardEvents (line 191) | keyboardEvents(event) { method wheelEvents (line 207) | wheelEvents(event) { method mouseEvents (line 224) | mouseEvents(event) { method slidePage (line 238) | slidePage(action, offset) { method slideCancel (line 264) | slideCancel() { method nextPage (line 268) | nextPage(config) { method prevPage (line 276) | prevPage(config) { method resetPage (line 284) | resetPage(config) { method updatePages (line 290) | updatePages(config) { method disposePage (line 363) | disposePage(page) { method disposePages (line 367) | disposePages() { method addRenderedPage (line 376) | addRenderedPage(page) { method isTwoColumn (line 380) | isTwoColumn() { method renderContent (line 402) | renderContent(body, context) { method layoutPageColumn (line 465) | layoutPageColumn(cursor, body) { method layoutPageStartsWith (line 556) | layoutPageStartsWith(cursor) { method layoutPageEndsWith (line 608) | layoutPageEndsWith(nextCursor) { method clearHighlight (line 704) | clearHighlight() { method highlightChars (line 711) | highlightChars(start, length, depth = 0) { method forceUpdate (line 793) | forceUpdate() { method isInPage (line 796) | isInPage(cursor) { method cursorChange (line 809) | cursorChange(cursor, config) { method onResize (line 815) | onResize() { FILE: src/js/page/read/text/scrolltextpage.js class ScrollTextPage (line 42) | class ScrollTextPage extends TextPage { method constructor (line 46) | constructor(readPage) { method onActivate (line 51) | async onActivate({ id }) { method onInactivate (line 89) | async onInactivate() { method initUpdatePage (line 110) | initUpdatePage() { method createContainer (line 115) | createContainer() { method updatePaddingArea (line 276) | updatePaddingArea() { method fixIosScrollReset (line 296) | fixIosScrollReset() { method onScroll (line 303) | onScroll() { method onScrollDone (line 325) | onScrollDone(config) { method onScrollToEnd (line 331) | onScrollToEnd() { method abortScrollTo (line 344) | abortScrollTo() { method scrollTo (line 352) | scrollTo(scrollTop, config) { method removeContainer (line 384) | removeContainer(container) { method isAnythingSelected (line 395) | isAnythingSelected() { method keyboardEvents (line 409) | keyboardEvents(event) { method mouseEvents (line 458) | mouseEvents(event) { method isScrollReachTop (line 468) | isScrollReachTop() { method isScrollReachBottom (line 472) | isScrollReachBottom() { method pageUp (line 476) | pageUp(config) { method pageDown (line 496) | pageDown(config) { method pageDone (line 517) | pageDone() { method pageTo (line 540) | pageTo(scrollTop, config, action) { method setScrollTop (line 546) | setScrollTop(scrollTop) { method getParagraphByCursor (line 554) | getParagraphByCursor(cursor) { method clearPage (line 576) | clearPage() { method renderParagraph (line 592) | renderParagraph(text, trunk, { start, end, last, heading, trucked }) { method updateTrunkOffsetTop (line 613) | updateTrunkOffsetTop() { method renderTrunk (line 626) | renderTrunk(start, end, position) { method removeTrunk (line 701) | removeTrunk(position) { method getTrunkEndPosition (line 724) | getTrunkEndPosition(start) { method getTrunkStartPosition (line 737) | getTrunkStartPosition(end) { method renderTrunkStartsWith (line 750) | renderTrunkStartsWith(start, position) { method renderTrunkEndsWith (line 759) | renderTrunkEndsWith(end, position) { method renderTrunkContains (line 768) | renderTrunkContains(cursor, position) { method getTextPosition (line 779) | getTextPosition(paragraph, index, type) { method getScrollPosition (line 814) | getScrollPosition(reference, useBefore) { method getPageStartPosition (line 862) | getPageStartPosition() { method getPageEndPosition (line 868) | getPageEndPosition() { method getRenderCursor (line 874) | getRenderCursor() { method getTextBufferHeight (line 877) | getTextBufferHeight() { method updatePagePrev (line 883) | updatePagePrev() { method updatePageCurrent (line 916) | updatePageCurrent() { method updatePageNext (line 943) | updatePageNext() { method updatePageMeta (line 975) | updatePageMeta() { method updatePageRender (line 989) | updatePageRender() { method updatePage (line 1003) | async updatePage(config) { method clearHighlight (line 1036) | clearHighlight() { method highlightChars (line 1041) | highlightChars(start, length, depth = 0) { method resetHighlightChars (line 1103) | resetHighlightChars() { method forceUpdate (line 1110) | forceUpdate() { method isInPage (line 1113) | isInPage(cursor) { method cursorChange (line 1120) | cursorChange(cursor, config) { method resetPage (line 1131) | resetPage(config) { method onResize (line 1139) | onResize() { method step (line 1144) | step() { method hide (line 1147) | hide() { method checkTimeResolutionForAutoScroll (line 1154) | checkTimeResolutionForAutoScroll() { method autoScrollStart (line 1170) | autoScrollStart() { method autoScrollStop (line 1192) | autoScrollStop({ paging } = {}) { method autoScrollDistance (line 1213) | autoScrollDistance(now) { method autoScrollUpdate (line 1219) | autoScrollUpdate({ scrollDelta = 0, speedFactor = null, paused = null,... method autoScrollTick (line 1240) | autoScrollTick(isNextTick) { method autoScrollPause (line 1257) | autoScrollPause() { method autoScrollResume (line 1260) | autoScrollResume() { method autoScrollOnVisibilityChange (line 1263) | autoScrollOnVisibilityChange() { method autoScrollBusy (line 1268) | autoScrollBusy() { method observeEdgeReadAloud (line 1271) | observeEdgeReadAloud() { method unobserveEdgeReadAloud (line 1296) | unobserveEdgeReadAloud() { FILE: src/js/page/read/text/textpage.js class TextPage (line 15) | class TextPage { method constructor (line 19) | constructor(readPage) { method onActivate (line 27) | async onActivate({ id }) { method createContainer (line 42) | createContainer() { method onInactivate (line 45) | async onInactivate() { method removeContainer (line 58) | removeContainer(container) { method initUpdatePage (line 61) | initUpdatePage() { method show (line 64) | show() { method hide (line 72) | hide() { method isInPage (line 80) | isInPage(cursor) { method onResize (line 83) | onResize() { method forceUpdate (line 86) | forceUpdate() { } method keyboardEvents (line 87) | keyboardEvents(event) { } method wheelEvents (line 88) | wheelEvents(event) { } method mouseEvents (line 89) | mouseEvents(event) { } method clearHighlight (line 90) | clearHighlight() { } method highlightChars (line 91) | highlightChars(start, length) { return false; } method cursorChange (line 92) | cursorChange(cursor, config) { } method getRenderCursor (line 93) | getRenderCursor() { method updateStyleConfig (line 101) | async updateStyleConfig() { method ignoreSpaces (line 148) | ignoreSpaces(cursor) { method ignoreSpacesBackward (line 162) | ignoreSpacesBackward(cursor) { method step (line 167) | step() { FILE: src/js/page/router.js class Router (line 14) | class Router { method constructor (line 15) | constructor(pages, fallback) { method go (line 39) | go(id, param) { method initial (line 43) | async initial() { method update (line 49) | async update() { method goFallback (line 64) | goFallback() { method hashTo (line 69) | async hashTo(hash) { method setTitle (line 77) | setTitle(text, lang) { method getCurrentPage (line 86) | getCurrentPage() { FILE: src/js/ui/component/color.js class Color (line 13) | class Color { method constructor (line 14) | constructor(/** @type {number} */r, /** @type {number} */g, /** @type ... method set (line 19) | set(/** @type {number} */r, /** @type {number} */g, /** @type {number}... method get (line 24) | get() { method toHex (line 27) | toHex() { method fromHex (line 32) | static fromHex(/** @type {string} */hex) { class ColorPicker (line 40) | class ColorPicker { method constructor (line 44) | constructor(container) { method renderColor (line 85) | renderColor() { method setHSV (line 117) | setHSV({ hue, saturation, value }) { method normalizeValue (line 124) | normalizeValue(value, max) { method setHue (line 129) | setHue(hue) { method setSaturation (line 133) | setSaturation(saturation) { method setValue (line 137) | setValue(value) { method onChange (line 142) | onChange(callback) { method setColor (line 145) | setColor(color) { method triggerCallback (line 168) | triggerCallback() { method setCandidateList (line 175) | setCandidateList(colors) { method dispatch (line 186) | dispatch() { FILE: src/js/ui/component/itemlist.js class ItemList (line 17) | class ItemList { method constructor (line 30) | constructor(container, config) { method renderItem (line 106) | renderItem(item, index) { method renderList (line 201) | renderList() { method dispatch (line 211) | dispatch() { method isListEmpty (line 215) | isListEmpty() { method clearList (line 218) | clearList() { method setList (line 222) | setList(list) { method appendList (line 226) | appendList(list) { method getList (line 234) | getList() { method setItem (line 237) | setItem(item, index) { method getItem (line 247) | getItem(index) { method getItemElement (line 250) | getItemElement(index) { method listAllSelected (line 253) | listAllSelected(index) { method setSelectItem (line 256) | setSelectItem(index, selected) { method scrollIntoView (line 275) | scrollIntoView(index, options) { method clearSelectItem (line 279) | clearSelectItem() { method getSelectItems (line 283) | getSelectItems() { method renderRemoveItem (line 287) | renderRemoveItem(element) { method indexMapping (line 298) | indexMapping(f) { method removeItem (line 315) | removeItem(index) { method insertItem (line 324) | insertItem(item, index) { method focusItemContent (line 332) | focusItemContent(index) { FILE: src/js/ui/component/menu.js class Menu (line 23) | class Menu { method constructor (line 27) | constructor({ groups }) { method keyboardHandler (line 39) | keyboardHandler(event) { method clickHandler (line 59) | clickHandler(event) { method renderMenu (line 66) | renderMenu() { method cleanMenu (line 81) | cleanMenu() { method hideMenu (line 85) | hideMenu() { method showMenu (line 92) | showMenu() { method focusMenu (line 99) | focusMenu() { method open (line 102) | open() { method buttonClickHandler (line 118) | buttonClickHandler() { method bind (line 131) | bind(button, callback) { method unbind (line 138) | unbind() { FILE: src/js/ui/component/range.js class RangeInput (line 20) | class RangeInput { method constructor (line 25) | constructor(outer, config) { method setConfig (line 86) | setConfig(config) { method getConfig (line 99) | getConfig() { method setValue (line 103) | setValue(value) { method updateValue (line 110) | async updateValue(newValue) { method onChange (line 128) | onChange(callback) { method renderValue (line 131) | renderValue() { method normalizeConfig (line 141) | normalizeConfig(config) { method normalizeValue (line 149) | normalizeValue(config) { method textValue (line 161) | textValue() { method keyboardHandler (line 165) | keyboardHandler(event) { method inputHandler (line 185) | inputHandler(event) { method wheelHandler (line 190) | wheelHandler(event) { method dispatch (line 199) | dispatch() { FILE: src/js/ui/util/touch.js class TouchGestureListener (line 15) | class TouchGestureListener { method constructor (line 19) | constructor(targetElement, { minDistanceX = 20, minDistanceY = 20, cli... method trigger (line 111) | trigger(action, ...meta) { method addListener (line 117) | addListener(action, listener) { method onStart (line 123) | onStart(listener) { return this.addListener('start', listener); } method onEnd (line 124) | onEnd(listener) { return this.addListener('end', listener); } method onTouch (line 125) | onTouch(listener) { return this.addListener('touch', listener); } method onMoveX (line 126) | onMoveX(listener) { return this.addListener('movex', listener); } method onMoveY (line 127) | onMoveY(listener) { return this.addListener('movey', listener); } method onCancelX (line 128) | onCancelX(listener) { return this.addListener('cancelx', listener); } method onCancelY (line 129) | onCancelY(listener) { return this.addListener('cancely', listener); } method onSlideUp (line 130) | onSlideUp(listener) { return this.addListener('slideup', listener); } method onSlideDown (line 131) | onSlideDown(listener) { return this.addListener('slidedown', listener); } method onSlideLeft (line 132) | onSlideLeft(listener) { return this.addListener('slideleft', listener); } method onSlideRight (line 133) | onSlideRight(listener) { return this.addListener('slideright', listene... class TouchMoveListener (line 136) | class TouchMoveListener { method constructor (line 140) | constructor(element) { method triggerCallback (line 235) | triggerCallback(type, data) { method onTouchMove (line 247) | onTouchMove(callback) { method onTouchStart (line 251) | onTouchStart(callback) { method onTouchEnd (line 255) | onTouchEnd(callback) { method onTouchCancel (line 259) | onTouchCancel(callback) { FILE: src/worker/toc.js constant MAX_CONTENTS_LENGTH (line 11) | const MAX_CONTENTS_LENGTH = 2000; constant MIN_CONTENTS (line 13) | const MIN_CONTENTS = 3; constant MAX_SECTION (line 15) | const MAX_SECTION = 15; constant MAX_TITLE_LENGTH (line 17) | const MAX_TITLE_LENGTH = 100; constant MAX_MEAN_TITLE_LENGTH (line 19) | const MAX_MEAN_TITLE_LENGTH = 80; constant FACTOR_CONTENTS_SIZE (line 21) | const FACTOR_CONTENTS_SIZE = 4; constant FACTOR_OUTLIER (line 23) | const FACTOR_OUTLIER = 10; constant FACTOR_VARIANCE_SIZE (line 25) | const FACTOR_VARIANCE_SIZE = 5; constant OUTLIER_DISTANCE (line 27) | const OUTLIER_DISTANCE = 3; constant FACTOR_TITLE_INVALID (line 29) | const FACTOR_TITLE_INVALID = 8; constant TOC_DUPLICATE_TOLERATE (line 31) | const TOC_DUPLICATE_TOLERATE = 1; constant MAX_NUMERIC_LINE (line 33) | const MAX_NUMERIC_LINE = 2; constant FACTOR_NUMBER_MAX (line 35) | const FACTOR_NUMBER_MAX = 4; constant FACTOR_NUMBER_HOLES (line 37) | const FACTOR_NUMBER_HOLES = 5; constant FACTOR_NUMBER_INVALID (line 39) | const FACTOR_NUMBER_INVALID = 7; constant KEYWORD_UNIQUE_FACTOR (line 41) | const KEYWORD_UNIQUE_FACTOR = 5; constant KEYWORD_PREFIX_FACTOR (line 43) | const KEYWORD_PREFIX_FACTOR = 3; constant BEAUTY_MIN_1 (line 45) | const BEAUTY_MIN_1 = 0.1; constant PREFIX_MIN_RATIO (line 47) | const PREFIX_MIN_RATIO = 0.45; constant TEMPLATE_NUMBER_COUNT_1 (line 49) | const TEMPLATE_NUMBER_COUNT_1 = 30; constant TEMPLATE_PREFIX_COUNT_1 (line 51) | const TEMPLATE_PREFIX_COUNT_1 = 10; constant FACTOR_MISMATCH (line 53) | const FACTOR_MISMATCH = 8; constant BEAUTY_MIN_2 (line 55) | const BEAUTY_MIN_2 = 0.16; constant SYMBOL_REGEX (line 57) | const SYMBOL_REGEX = /[^\p{L}\p{N}]/ug; constant TOKEN_REGEX (line 59) | const TOKEN_REGEX = /(?:\p{Script=Latn}+|\p{Script=Cyrl}+|\p{Script=Grek...