diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2024-02-18 08:10:09 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-18 13:10:09 +0000 |
commit | 6cf38229b54efbbc3ae7bc174c3999f9dfa7b1d2 (patch) | |
tree | 1d47e64bf80ef2f7fd082dde956d0b214946f189 /ext | |
parent | c48cd6ff6d8dcced7baf1b27ce3ac2449944f5d7 (diff) |
Html templates update (#707)
* Simplify display template loading
* Add helper
* Rename file
* Rename for simplicity
* Create templates file
* Load
* Remove templates
* Move permissions templates
* Remove "templates" from comments
* Fix prepare
Diffstat (limited to 'ext')
-rw-r--r-- | ext/js/background/backend.js | 6 | ||||
-rw-r--r-- | ext/js/comm/api.js | 7 | ||||
-rw-r--r-- | ext/js/display/display-generator.js | 9 | ||||
-rw-r--r-- | ext/js/display/display.js | 2 | ||||
-rw-r--r-- | ext/js/dom/html-template-collection.js | 24 | ||||
-rw-r--r-- | ext/js/pages/settings/settings-controller.js | 2 | ||||
-rw-r--r-- | ext/permissions.html | 10 | ||||
-rw-r--r-- | ext/settings.html | 458 | ||||
-rw-r--r-- | ext/templates-display.html (renamed from ext/display-templates.html) | 12 | ||||
-rw-r--r-- | ext/templates-settings.html | 441 | ||||
-rw-r--r-- | ext/welcome.html | 34 |
11 files changed, 468 insertions, 537 deletions
diff --git a/ext/js/background/backend.js b/ext/js/background/backend.js index f301b4c6..c0410ab8 100644 --- a/ext/js/background/backend.js +++ b/ext/js/background/backend.js @@ -167,7 +167,6 @@ export class Backend { ['getStylesheetContent', this._onApiGetStylesheetContent.bind(this)], ['getEnvironmentInfo', this._onApiGetEnvironmentInfo.bind(this)], ['clipboardGet', this._onApiClipboardGet.bind(this)], - ['getDisplayTemplatesHtml', this._onApiGetDisplayTemplatesHtml.bind(this)], ['getZoom', this._onApiGetZoom.bind(this)], ['getDefaultAnkiFieldTemplates', this._onApiGetDefaultAnkiFieldTemplates.bind(this)], ['getDictionaryInfo', this._onApiGetDictionaryInfo.bind(this)], @@ -686,11 +685,6 @@ export class Backend { return this._clipboardReader.getText(false); } - /** @type {import('api').ApiHandler<'getDisplayTemplatesHtml'>} */ - async _onApiGetDisplayTemplatesHtml() { - return await fetchText('/display-templates.html'); - } - /** @type {import('api').ApiHandler<'getZoom'>} */ _onApiGetZoom(_params, sender) { return new Promise((resolve, reject) => { diff --git a/ext/js/comm/api.js b/ext/js/comm/api.js index f07702da..30fcfc29 100644 --- a/ext/js/comm/api.js +++ b/ext/js/comm/api.js @@ -210,13 +210,6 @@ export class API { } /** - * @returns {Promise<import('api').ApiReturn<'getDisplayTemplatesHtml'>>} - */ - getDisplayTemplatesHtml() { - return this._invoke('getDisplayTemplatesHtml', void 0); - } - - /** * @returns {Promise<import('api').ApiReturn<'getZoom'>>} */ getZoom() { diff --git a/ext/js/display/display-generator.js b/ext/js/display/display-generator.js index 621ea833..65736759 100644 --- a/ext/js/display/display-generator.js +++ b/ext/js/display/display-generator.js @@ -39,12 +39,9 @@ export class DisplayGenerator { this._structuredContentGenerator = new StructuredContentGenerator(this._contentManager, document); } - /** - * @param {import('../comm/api.js').API} api - */ - async prepare(api) { - const html = await api.getDisplayTemplatesHtml(); - this._templates.load(html); + /** */ + async prepare() { + await this._templates.loadFromFiles(['/templates-display.html']); this.updateHotkeys(); } diff --git a/ext/js/display/display.js b/ext/js/display/display.js index 4cd2d611..588508b5 100644 --- a/ext/js/display/display.js +++ b/ext/js/display/display.js @@ -318,7 +318,7 @@ export class Display extends EventDispatcher { // Prepare await this._hotkeyHelpController.prepare(this._application.api); - await this._displayGenerator.prepare(this._application.api); + await this._displayGenerator.prepare(); this._queryParser.prepare(); this._history.prepare(); this._optionToggleHotkeyHandler.prepare(); diff --git a/ext/js/dom/html-template-collection.js b/ext/js/dom/html-template-collection.js index 981d5528..a71d954f 100644 --- a/ext/js/dom/html-template-collection.js +++ b/ext/js/dom/html-template-collection.js @@ -16,6 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ +import {fetchText} from '../core/fetch-utilities.js'; + export class HtmlTemplateCollection { constructor() { /** @type {Map<string, HTMLTemplateElement>} */ @@ -23,17 +25,23 @@ export class HtmlTemplateCollection { } /** - * @param {string|Document} source + * @param {string[]} urls */ - load(source) { - const sourceNode = ( - typeof source === 'string' ? - new DOMParser().parseFromString(source, 'text/html') : - source - ); + async loadFromFiles(urls) { + const htmlRawArray = await Promise.all(urls.map((url) => fetchText(url))); + const domParser = new DOMParser(); + for (const htmlRaw of htmlRawArray) { + const templatesDocument = domParser.parseFromString(htmlRaw, 'text/html'); + this.load(templatesDocument); + } + } + /** + * @param {Document} source + */ + load(source) { const pattern = /^([\w\W]+)-template$/; - for (const template of sourceNode.querySelectorAll('template')) { + for (const template of source.querySelectorAll('template')) { const match = pattern.exec(template.id); if (match === null) { continue; } this._prepareTemplate(template); diff --git a/ext/js/pages/settings/settings-controller.js b/ext/js/pages/settings/settings-controller.js index c835f8e6..d0cfd838 100644 --- a/ext/js/pages/settings/settings-controller.js +++ b/ext/js/pages/settings/settings-controller.js @@ -44,7 +44,6 @@ export class SettingsController extends EventDispatcher { this._pageExitPreventionEventListeners = new EventListenerCollection(); /** @type {HtmlTemplateCollection} */ this._templates = new HtmlTemplateCollection(); - this._templates.load(document); } /** @type {import('../../application.js').Application} */ @@ -69,6 +68,7 @@ export class SettingsController extends EventDispatcher { /** */ async prepare() { + await this._templates.loadFromFiles(['/templates-settings.html']); this._application.on('optionsUpdated', this._onOptionsUpdated.bind(this)); if (this._canObservePermissionsChanges()) { chrome.permissions.onAdded.addListener(this._onPermissionsChanged.bind(this)); diff --git a/ext/permissions.html b/ext/permissions.html index 61b0d363..884687ab 100644 --- a/ext/permissions.html +++ b/ext/permissions.html @@ -227,16 +227,6 @@ </div> </div></div> -<template id="permissions-origin-template"> - <div class="permissions-origin-index generic-list-index-prefix"></div> - <input type="text" class="permissions-origin-input horizontal-flex-fill" autocomplete="off" spellcheck="false" readonly> - <button type="button" class="icon-button permissions-origin-menu-button permissions-origin-button" data-menu="permissions-origin-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> -</template> - -<template id="permissions-origin-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> - <button type="button" class="popup-menu-item" data-menu-action="remove">Remove</button> -</div></div></div></template> - <!-- Scripts --> <script src="/js/pages/permissions-main.js" type="module"></script> diff --git a/ext/settings.html b/ext/settings.html index 8dc70cf3..fc447c29 100644 --- a/ext/settings.html +++ b/ext/settings.html @@ -2321,57 +2321,6 @@ </div></div> -<!-- Profile templates --> -<template id="profile-entry-template"><div class="profile-entry generic-list-entry"> - <div class="profile-entry-cell generic-list-index-prefix"></div> - <div class="profile-entry-cell"><label class="radio"><input type="radio" class="profile-entry-is-default-radio" name="profile-entry-default-radio"><span class="radio-body"><span class="radio-border"></span><span class="radio-dot"></span></span></label></div> - <div class="profile-entry-cell"><input class="profile-entry-name-input" type="text" autocomplete="off" placeholder="Profile name"></div> - <div class="profile-entry-cell"><a tabindex="0" class="profile-entry-condition-count-link"><span class="profile-entry-condition-count">0</span></a></div> - <div class="profile-entry-cell input-height-icon-button-container"><button type="button" class="icon-button profile-entry-menu-button" data-menu="profile-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button></div> -</div></template> - -<template id="profile-condition-group-template"><div class="profile-condition-group"> - <div class="profile-condition-list"></div> - <div class="profile-condition-list-info"> - <div class="profile-condition-group-separator-label">or</div> - <div class="profile-condition-list-info-space"></div> - <button type="button" class="profile-condition-add-button low-emphasis">Add</button> - </div> -</div></template> - -<template id="profile-condition-template"><div class="profile-condition"> - <div class="profile-condition-prefix"></div> - <div class="profile-condition-inner"> - <select class="profile-condition-type"><optgroup label="Type"></optgroup></select> - <select class="profile-condition-operator"><optgroup label="Operator"></optgroup></select> - <div class="profile-condition-input-container"> - <input type="text" class="profile-condition-input" autocomplete="off" spellcheck="false"> - <div class="input-height-icon-button-container mouse-button-container" hidden> - <button type="button" class="icon-button profile-condition-mouse-button mouse-button"><span class="icon-button-inner"><span class="icon" data-icon="mouse"></span></span></button> - </div> - </div> - </div> - <div class="profile-condition-menu-button-container input-height-icon-button-container"> - <button type="button" class="icon-button profile-condition-menu-button" data-menu="profile-condition-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> - </div> -</div></template> - -<template id="profile-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> - <button type="button" class="popup-menu-item" data-menu-action="moveUp">Move up</button> - <button type="button" class="popup-menu-item" data-menu-action="moveDown">Move down</button> - <button type="button" class="popup-menu-item" data-menu-action="copyFrom">Copy from…</button> - <button type="button" class="popup-menu-item" data-menu-action="editConditions">Edit conditions…</button> - <button type="button" class="popup-menu-item" data-menu-action="duplicate">Duplicate</button> - <button type="button" class="popup-menu-item" data-menu-action="delete">Delete</button> -</div></div></div></template> - -<template id="profile-condition-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> - <button type="button" class="popup-menu-item" data-menu-action="resetValue">Reset value</button> - <button type="button" class="popup-menu-item" data-menu-action="delete">Delete</button> - <button type="button" class="popup-menu-item" data-menu-action="deleteGroup">Delete group</button> -</div></div></div></template> - - <!-- Dictionary modals --> <div id="dictionaries-modal" class="modal" tabindex="-1" role="dialog" hidden><div class="modal-content"> <div class="modal-header"> @@ -2692,74 +2641,6 @@ </div></div> -<!-- Dictionary templates --> -<template id="dictionary-template"> - <div class="dictionary-list-index generic-list-index-prefix"></div> - <label class="toggle dictionary-item-enabled-toggle-container"><input type="checkbox" class="dictionary-enabled"><span class="toggle-body"><span class="toggle-track"></span><span class="toggle-knob"></span></span></label> - <div class="dictionary-item-title-container"> - <span> - <strong class="dictionary-title"></strong> <span class="light dictionary-version"></span> - </span> - <button type="button" class="dictionary-outdated-button" hidden> - <div class="badge warning-badge"><span class="icon" data-icon="exclamation-point-short"></span></div> - </button> - <button type="button" class="dictionary-integrity-button" hidden> - <div class="badge info-badge badge-small-icon"><span class="icon" data-icon="checkmark"></span></div> - </button> - </div> - <input type="number" step="1" class="short-height dictionary-priority"> - <button type="button" class="icon-button dictionary-menu-button" data-menu="dictionary-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> -</template> - -<template id="dictionary-details-entry-template"><div class="dictionary-details-entry"> - <span class="dictionary-details-entry-label"></span> - <span class="dictionary-details-entry-info"></span> -</div></template> - -<template id="dictionary-extra-template"> - <div class="dictionary-item-bottom"></div> - <div class="dictionary-item-bottom"></div> - <div class="dictionary-item-bottom dictionary-item-title-container"> - <span> - <strong class="dictionary-title">Unassociated Data</strong> <span class="light dictionary-total-count"></span> - </span> - <button type="button" class="dictionary-integrity-button"> - <div class="badge warning-badge"><span class="icon" data-icon="exclamation-point-short"></span></div> - </button> - </div> - <div class="dictionary-item-bottom"></div> - <div class="dictionary-item-bottom dictionary-item-button-height"></div> -</template> - -<template id="dictionary-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> - <button type="button" class="popup-menu-item" data-menu-action="showDetails">Details…</button> - <button type="button" class="popup-menu-item" data-menu-action="moveUp">Move up</button> - <button type="button" class="popup-menu-item" data-menu-action="moveDown">Move down</button> - <button type="button" class="popup-menu-item" data-menu-action="moveTo">Move to…</button> - <button type="button" class="popup-menu-item" data-menu-action="delete">Delete</button> -</div></div></div></template> - -<template id="secondary-search-dictionary-template"><div class="secondary-search-dictionary-item horizontal-flex"> - <label class="toggle"><input type="checkbox" class="dictionary-allow-secondary-searches"><span class="toggle-body"><span class="toggle-track"></span><span class="toggle-knob"></span></span></label> - <span class="horizontal-flex-fill"><strong class="dictionary-title"></strong> <span class="light dictionary-version"></span></span> -</div></template> - -<template id="collapsible-dictionary-item-template"><div class="collapsible-dictionary-item"> - <div class="collapsible-dictionary-cell"> - <span class="dictionary-info-label"><strong class="dictionary-title"></strong> <span class="light dictionary-version"></span></span> - </div> - <div class="collapsible-dictionary-cell"> - <select class="definitions-collapsible medium-width"> - <option value="not-collapsible">Not collapsible</option> - <option value="collapsed">Collapsed</option> - <option value="expanded">Expanded</option> - <option value="force-collapsed">Force collapsed</option> - <option value="force-expanded">Force expanded</option> - </select> - </div> -</div></template> - - <!-- Custom CSS modal --> <div id="custom-css-modal" class="modal modal-left" tabindex="-1" role="dialog" hidden><div class="modal-content-container1"> <div class="modal-content-container2 modal-content-dimmer"><div class="modal-content"> @@ -2880,37 +2761,6 @@ </div></div> -<!-- Audio templates --> -<template id="audio-source-template"><div class="audio-source"> - <div class="audio-source-index generic-list-index-prefix"></div> - <div class="audio-source-inner"> - <select class="audio-source-type-select"> - <option value="jpod101">JapanesePod101</option> - <option value="jpod101-alternate">JapanesePod101 (Alternate)</option> - <option value="jisho">Jisho.org</option> - <option value="text-to-speech">Text-to-speech</option> - <option value="text-to-speech-reading">Text-to-speech (Kana reading)</option> - <option value="custom">Custom URL</option> - <option value="custom-json">Custom URL (JSON)</option> - </select> - <div class="audio-source-parameter-container" data-field="url" hidden> - <span class="audio-source-parameter-label">URL:</span> - <input type="text" class="audio-source-parameter"> - </div> - <div class="audio-source-parameter-container" data-field="voice" hidden> - <span class="audio-source-parameter-label">Voice:</span> - <select class="audio-source-parameter"></select> - </div> - </div> - <button type="button" class="icon-button audio-source-menu-button" data-menu="audio-source-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> -</div></template> - -<template id="audio-source-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> - <button type="button" class="popup-menu-item" data-menu-action="help">Help</button> - <button type="button" class="popup-menu-item" data-menu-action="remove">Remove</button> -</div></div></div></template> - - <!-- Scanning inputs modal --> <div id="scanning-inputs-modal" class="modal" tabindex="-1" role="dialog" hidden><div class="modal-content"> <div class="modal-header"> @@ -2969,114 +2819,6 @@ </div></div> -<!-- Scanning inputs templates --> -<template id="scan-input-template"><div class="scan-input" data-show-advanced="false"> - <div class="scan-input-grid"> - <div class="scan-input-index-cell generic-list-index-prefix"></div> - <div class="scan-input-menu-button-cell"> - <div class="input-height-icon-button-container"> - <button type="button" class="icon-button scanning-input-menu-button" data-menu="scanning-inputs-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> - </div> - </div> - - <div class="scan-input-prefix-cell" data-property="include"><span>Required inputs:</span></div> - <div class="scan-input-content-cell input-group" data-property="include"> - <input type="text" class="scan-input-field" autocomplete="off" spellcheck="false" placeholder="No inputs" data-property="include"> - <button type="button" class="input-suffix input-suffix-icon-button light-icon mouse-button" data-property="include"><span class="icon" data-icon="mouse"></span></button> - </div> - - <div class="scan-input-prefix-cell" data-property="exclude"><span>Excluded inputs:</span></div> - <div class="scan-input-content-cell input-group" data-property="exclude"> - <input type="text" class="scan-input-field" autocomplete="off" spellcheck="false" placeholder="No inputs" data-property="exclude"> - <button type="button" class="input-suffix input-suffix-icon-button light-icon mouse-button" data-property="exclude"><span class="icon" data-icon="mouse"></span></button> - </div> - - <div class="scan-input-prefix-cell scan-input-options-cell" data-property="types"><span>Input types:</span></div> - <div class="scan-input-content-cell scan-input-options-cell" data-property="types"> - <label class="scan-input-checkbox-item"> - <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="types.mouse"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Mouse</span> - </label> - <label class="scan-input-checkbox-item"> - <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="types.touch"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Touch</span> - </label> - <label class="scan-input-checkbox-item"> - <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="types.pen"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Pen</span> - </label> - </div> - - <div class="scan-input-prefix-cell scan-input-options-cell scan-input-advanced-only" data-property="search-options"><span>Search types:</span></div> - <div class="scan-input-content-cell scan-input-options-cell scan-input-advanced-only" data-property="search-options"> - <label class="scan-input-checkbox-item"> - <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.searchTerms"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Search for terms</span> - </label> - <label class="scan-input-checkbox-item"> - <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.searchKanji"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Search for kanji</span> - </label> - </div> - - <div class="scan-input-prefix-cell scan-input-options-cell scan-input-advanced-only" data-property="touch-options"><span>Touch options:</span></div> - <div class="scan-input-content-cell scan-input-options-cell scan-input-advanced-only" data-property="touch-options"> - <label class="scan-input-checkbox-item"> - <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnTouchPress"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Scan on touch press</span> - </label> - <label class="scan-input-checkbox-item"> - <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnTouchRelease"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Scan on touch release</span> - </label> - <label class="scan-input-checkbox-item"> - <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnTouchMove"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Scan on touch move</span> - </label> - <label class="scan-input-checkbox-item"> - <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.preventTouchScrolling"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Prevent touch scrolling</span> - </label> - </div> - - <div class="scan-input-prefix-cell scan-input-options-cell scan-input-advanced-only" data-property="pen-options"><span>Pen options:</span></div> - <div class="scan-input-content-cell scan-input-options-cell scan-input-advanced-only" data-property="pen-options"> - <label class="scan-input-checkbox-item"> - <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenPress"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Scan on pen press</span> - </label> - <label class="scan-input-checkbox-item"> - <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenRelease"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Scan on pen release</span> - </label> - <label class="scan-input-checkbox-item"> - <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenMove"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Scan on pen move (while touched)</span> - </label> - <label class="scan-input-checkbox-item"> - <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenHover"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Scan on pen hover (before touched)</span> - </label> - <label class="scan-input-checkbox-item"> - <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenReleaseHover"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Scan on pen hover (after touched)</span> - </label> - <label class="scan-input-checkbox-item"> - <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.preventPenScrolling"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Prevent pen scrolling</span> - </label> - </div> - </div> -</div></template> - -<template id="scanning-inputs-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> - <button type="button" class="popup-menu-item" data-menu-action="showAdvanced">Show advanced options</button> - <button type="button" class="popup-menu-item" data-menu-action="hideAdvanced">Hide advanced options</button> - <button type="button" class="popup-menu-item" data-menu-action="clearInputs">Clear inputs</button> - <button type="button" class="popup-menu-item" data-menu-action="remove">Remove</button> -</div></div></div></template> - - <!-- Input action prevention modal --> <div id="input-action-prevention-modal" class="modal" tabindex="-1" role="dialog" hidden><div class="modal-content modal-content-small"> <div class="modal-header"><div class="modal-title">Input Action Prevention</div></div> @@ -3407,20 +3149,6 @@ </div></div> -<!-- Anki card templates --> -<template id="anki-card-field-template"><div class="anki-card-field-name-container"><span class="anki-card-field-name"></span></div> -<div class="anki-card-field-value-container input-group"> - <input type="text" class="anki-card-field-value" autocomplete="off"> - <button type="button" class="anki-card-field-value-menu-button input-suffix input-suffix-icon-button light-icon" data-menu-position="v-center left"><span class="icon" data-icon="material-down-arrow"></span></button> -</div></template> - -<template id="anki-card-terms-field-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"></div></div></div></template> - -<template id="anki-card-kanji-field-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"></div></div></div></template> - -<template id="anki-card-all-field-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"></div></div></div></template> - - <!-- Anki field template modals --> <div id="anki-card-templates-modal" class="modal" tabindex="-1" role="dialog" hidden><div class="modal-content modal-content-full"> <div class="modal-header"><div class="modal-title">Anki Card Templates</div></div> @@ -3580,38 +3308,6 @@ </div></div> -<!-- Translation templates --> -<template id="translation-text-replacement-entry-template"><div class="translation-text-replacement-entry"> - <div class="translation-text-replacement-index generic-list-index-prefix"></div> - <div class="translation-text-replacement-pattern-label">Pattern:</div> - <div class="translation-text-replacement-replacement-label">Replacement:</div> - <div class="translation-text-replacement-pattern-container"> - <input type="text" class="translation-text-replacement-pattern code"> - <label class="translation-text-replacement-checkbox-container"> - <label class="checkbox"><input type="checkbox" class="translation-text-replacement-checkbox translation-text-replacement-pattern-ignore-case"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span class="translation-text-replacement-checkbox-label">Ignore case</span> - </label> - </div> - <div class="translation-text-replacement-replacement-container"> - <input type="text" class="translation-text-replacement-replacement code"> - </div> - <button type="button" class="icon-button translation-text-replacement-button" data-menu="translation-text-replacement-entry-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> - - <div class="translation-text-replacement-test-label translation-text-replacement-test-node">Test Input:</div> - <div class="translation-text-replacement-test-container translation-text-replacement-test-node"> - <input type="text" class="translation-text-replacement-test-input" lang="ja"> - <div class="translation-text-replacement-test-label-inner">Output:</div> - <input type="text" class="translation-text-replacement-test-output" lang="ja" readonly> - </div> -</div></template> - -<template id="translation-text-replacement-entry-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> - <button type="button" class="popup-menu-item" data-menu-action="showTest">Test</button> - <button type="button" class="popup-menu-item" data-menu-action="hideTest">Hide test</button> - <button type="button" class="popup-menu-item" data-menu-action="remove">Remove</button> -</div></div></div></template> - - <!-- Sentence parsing modal --> <div id="sentence-termination-characters-modal" class="modal" tabindex="-1" role="dialog" hidden><div class="modal-content"> <div class="modal-header"> @@ -3651,47 +3347,6 @@ </div></div> -<!-- Sentence parsing templates --> -<template id="sentence-termination-character-entry-template"><tr class="sentence-termination-character-entry"> - <td class="generic-list-index-prefix"></td> - <td> - <label class="toggle"><input type="checkbox" class="sentence-termination-character-enabled"><span class="toggle-body"><span class="toggle-track"></span><span class="toggle-knob"></span></span></label> - </td> - <td> - <select class="sentence-termination-character-type"> - <option value="terminator">Terminator</option> - <option value="quote">Quote</option> - </select> - </td> - <td> - <input type="text" class="sentence-termination-character-input1" maxlength="1" lang="ja"> - </td> - <td> - <input type="text" class="sentence-termination-character-input2" maxlength="1" lang="ja"> - <div class="sentence-termination-character-input2-alt">—</div> - </td> - <td> - <div class="sentence-termination-character-include-list"> - <label class="sentence-termination-character-include"> - <label class="checkbox"><input type="checkbox" class="sentence-termination-character-include-at-start"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>At start</span> - </label> - <label class="sentence-termination-character-include"> - <label class="checkbox"><input type="checkbox" class="sentence-termination-character-include-at-end"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>At end</span> - </label> - </div> - </td> - <td> - <button type="button" class="icon-button sentence-termination-character-entry-button" data-menu="sentence-termination-character-entry-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> - </td> -</tr></template> - -<template id="sentence-termination-character-entry-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> - <button type="button" class="popup-menu-item" data-menu-action="delete">Delete</button> -</div></div></div></template> - - <!-- Keyboard shortcuts modal --> <div id="keyboard-shortcuts-modal" class="modal" tabindex="-1" role="dialog" hidden><div class="modal-content modal-content-full"> <div class="modal-header"> @@ -3776,119 +3431,6 @@ </div> </div></div> -<!-- Keyboard shortcuts templates --> -<template id="hotkey-list-item-template"><div class="hotkey-list-item"><div class="hotkey-list-item-grid"> - <div class="hotkey-list-item-index-cell generic-list-index-prefix"></div> - <div class="hotkey-list-item-button-cell"> - <div class="input-height-icon-button-container"> - <button type="button" class="icon-button hotkey-list-item-button" data-menu="hotkey-list-item-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> - </div> - </div> - - <div class="hotkey-list-item-input-label-cell">Input:</div> - <div class="hotkey-list-item-input-cell"> - <input type="text" class="hotkey-list-item-input" autocomplete="off" spellcheck="false" placeholder="No input" data-property="include"> - <div class="hotkey-list-item-enabled-button-container input-group"> - <button type="button" class="hotkey-list-item-enabled-button input-button"> - <label class="hotkey-list-item-enabled-button-label button-inner-label"> - <span class="checkbox"><input type="checkbox" class="hotkey-list-item-enabled"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></span> - <span>Enabled</span> - </label> - </button> - <button type="button" class="hotkey-list-item-scopes-button input-suffix input-suffix-icon-button light-icon" data-menu="hotkey-list-item-scopes-menu" data-menu-position="below left"><span class="icon" data-icon="material-down-arrow"></span></button> - </div> - </div> - - <div class="hotkey-list-item-action-label-cell">Action:</div> - <div class="hotkey-list-item-action-cell"> - <select class="hotkey-list-item-action"> - <option value="">None</option> - <option value="close">Close</option> - <option value="focusSearchBox">Focus search box</option> - <option value="nextEntry">Go to next entry</option> - <option value="previousEntry">Go to previous entry</option> - <option value="lastEntry">Go to last entry</option> - <option value="firstEntry">Go to first entry</option> - <option value="nextEntryDifferentDictionary">Go to next dictionary</option> - <option value="previousEntryDifferentDictionary">Go to previous dictionary</option> - <option value="historyBackward">Navigate backward in history</option> - <option value="historyForward">Navigate forward in history</option> - <option value="addNoteKanji">Add kanji note</option> - <option value="addNoteTermKanji">Add term note</option> - <option value="addNoteTermKana">Add term note (reading)</option> - <option value="viewNotes">View notes</option> - <option value="playAudio">Play audio</option> - <option value="playAudioFromSource">Play audio from source</option> - <option value="copyHostSelection">Copy host window selection</option> - <option value="scanSelectedText">Scan selected text</option> - <option value="scanTextAtCaret">Scan text at caret</option> - <option value="toggleOption">Toggle option</option> - </select> - <div class="hotkey-list-item-action-argument-container"></div> - </div> -</div></div></template> - -<template id="extension-hotkey-list-item-template"><div class="settings-item"><div class="settings-item-inner settings-item-inner-wrappable"> - <div class="settings-item-left"> - <div class="settings-item-label"></div> - </div> - <div class="settings-item-right"> - <div class="flex-row-nowrap"> - <input type="text"> - <button type="button" class="icon-button extension-hotkey-list-item-button" data-menu="extension-hotkey-list-item-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> - </div> - </div> -</div></div></template> - -<template id="hotkey-list-item-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> - <button type="button" class="popup-menu-item" data-menu-action="clearInputs">Clear input</button> - <button type="button" class="popup-menu-item" data-menu-action="resetInput">Reset input</button> - <button type="button" class="popup-menu-item" data-menu-action="resetArgument">Reset argument</button> - <button type="button" class="popup-menu-item" data-menu-action="delete">Delete</button> -</div></div></div></template> - -<template id="hotkey-list-item-scopes-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> - <button type="button" class="popup-menu-item hotkey-scope-popup-menu-item" data-menu-action="toggleScope" data-scope="web"><label class="hotkey-scope-popup-menu-item-label button-inner-label"> - <label class="checkbox"><input type="checkbox" class="hotkey-scope-checkbox" data-scope="web"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Web</span> - </label></button> - <button type="button" class="popup-menu-item hotkey-scope-popup-menu-item" data-menu-action="toggleScope" data-scope="popup"><label class="hotkey-scope-popup-menu-item-label button-inner-label"> - <label class="checkbox"><input type="checkbox" class="hotkey-scope-checkbox" data-scope="popup"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Popup</span> - </label></button> - <button type="button" class="popup-menu-item hotkey-scope-popup-menu-item" data-menu-action="toggleScope" data-scope="search"><label class="hotkey-scope-popup-menu-item-label button-inner-label"> - <label class="checkbox"><input type="checkbox" class="hotkey-scope-checkbox" data-scope="search"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> - <span>Search</span> - </label></button> -</div></div></div></template> - -<template id="extension-hotkey-list-item-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> - <button type="button" class="popup-menu-item" data-menu-action="clearInput">Clear input</button> - <button type="button" class="popup-menu-item" data-menu-action="resetInput">Reset input</button> -</div></div></div></template> - -<template id="hotkey-argument-move-offset-template"><div class="flex-row-nowrap"> - <span class="hotkey-argument-label">Count:</span> - <input type="number" step="1" min="1" class="hotkey-argument-input"> -</div></template> - -<template id="hotkey-argument-setting-path-template"><div class="flex-row-nowrap"> - <span class="hotkey-argument-label">Path:</span> - <input type="text" class="hotkey-argument-input horizontal-flex-fill" spellcheck="false" autocomplete="off"> -</div></template> - -<template id="hotkey-argument-audio-source-template"><div class="flex-row-nowrap"> - <span class="hotkey-argument-label">Source:</span> - <select class="audio-source-select hotkey-argument-input horizontal-flex-fill"> - <option value="jpod101">JapanesePod101</option> - <option value="jpod101-alternate">JapanesePod101 (Alternate)</option> - <option value="jisho">Jisho.org</option> - <option value="text-to-speech">Text-to-speech</option> - <option value="text-to-speech-reading">Text-to-speech (Kana reading)</option> - <option value="custom">Custom</option> - </select> -</div></template> - <!-- Scripts --> <script src="/js/pages/settings/settings-main.js" type="module"></script> diff --git a/ext/display-templates.html b/ext/templates-display.html index caf5920c..944a10ab 100644 --- a/ext/display-templates.html +++ b/ext/templates-display.html @@ -1,6 +1,6 @@ -<!DOCTYPE html><html><head><title>Display Templates</title></head><body> +<!DOCTYPE html><html><head><title>Templates</title></head><body> -<!-- Term entry templates --> +<!-- Term entry --> <template id="term-entry-template" data-remove-whitespace-text="true"><div class="entry" data-type="term"> <div class="entry-current-indicator" title="Current entry"><span class="entry-current-indicator-inner"></span></div> <div class="entry-header"> @@ -80,7 +80,7 @@ <template id="inflection-rule-chain-template"><li class="inflection-rule-chain"></li></template> <template id="inflection-template"><span class="inflection"></span><span class="inflection-separator"> </span></template> -<!-- Frequency templates --> +<!-- Frequency --> <template id="frequency-group-item-template"><span class="frequency-group-item"><span class="tag tag-has-body frequency-group-tag" data-category="frequency"><span class="tag-label"><span class="tag-label-content"></span></span><span class="tag-body"><span class="tag-body-content frequency-list"></span></span></span></span></template> <template id="term-frequency-item-template" data-remove-whitespace-text="true"><span class="frequency-item"><span class="tag tag-has-body frequency-tag" data-category="frequency" data-frequency-type="term"> <span class="tag-label"><span class="tag-label-content"></span></span> @@ -101,12 +101,12 @@ </span></span> </span></span></template> -<!-- Pitch accent templates --> +<!-- Pitch accent --> <template id="pronunciation-group-template"><li class="pronunciation-group"><span class="pronunciation-group-tag-list tag-list"></span><ul class="pronunciation-list"></ul></li></template> <template id="pronunciation-disambiguation-template"><span class="pronunciation-disambiguation"></span></template> <template id="pronunciation-template"><li class="pronunciation"><span class="pronunciation-tag-list tag-list"></span><span class="pronunciation-disambiguation-list"></span><span class="pronunciation-representation-list"><span class="pronunciation-text-container"></span><span class="pronunciation-downstep-notation-container"></span><span class="pronunciation-graph-container"></span></span></li></template> -<!-- Kanji entry templates --> +<!-- Kanji entry --> <template id="kanji-entry-template" data-remove-whitespace-text="true"><div class="entry" data-type="kanji"> <div class="entry-current-indicator" title="Current entry"><span class="entry-current-indicator-inner"></span></div> <div class="entry-header"> @@ -162,7 +162,7 @@ <template id="kanji-reading-template"><dd class="kanji-reading"></dd></template> <!-- [html-validate-enable element-required-ancestor] --> -<!-- Tag templates --> +<!-- Tag --> <template id="tag-template"><span class="tag"><span class="tag-label"><span class="tag-label-content"></span></span></span></template> <template id="tag-with-body-template"><span class="tag tag-has-body"><span class="tag-label"><span class="tag-label-content"></span></span><span class="tag-body"><span class="tag-body-content"></span></span></span></template> diff --git a/ext/templates-settings.html b/ext/templates-settings.html new file mode 100644 index 00000000..a3a3febe --- /dev/null +++ b/ext/templates-settings.html @@ -0,0 +1,441 @@ +<!DOCTYPE html><html><head><title>Templates</title></head><body> + +<!-- Profile --> +<template id="profile-entry-template"><div class="profile-entry generic-list-entry"> + <div class="profile-entry-cell generic-list-index-prefix"></div> + <div class="profile-entry-cell"><label class="radio"><input type="radio" class="profile-entry-is-default-radio" name="profile-entry-default-radio"><span class="radio-body"><span class="radio-border"></span><span class="radio-dot"></span></span></label></div> + <div class="profile-entry-cell"><input class="profile-entry-name-input" type="text" autocomplete="off" placeholder="Profile name"></div> + <div class="profile-entry-cell"><a tabindex="0" class="profile-entry-condition-count-link"><span class="profile-entry-condition-count">0</span></a></div> + <div class="profile-entry-cell input-height-icon-button-container"><button type="button" class="icon-button profile-entry-menu-button" data-menu="profile-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button></div> +</div></template> +<template id="profile-condition-group-template"><div class="profile-condition-group"> + <div class="profile-condition-list"></div> + <div class="profile-condition-list-info"> + <div class="profile-condition-group-separator-label">or</div> + <div class="profile-condition-list-info-space"></div> + <button type="button" class="profile-condition-add-button low-emphasis">Add</button> + </div> +</div></template> +<template id="profile-condition-template"><div class="profile-condition"> + <div class="profile-condition-prefix"></div> + <div class="profile-condition-inner"> + <select class="profile-condition-type"><optgroup label="Type"></optgroup></select> + <select class="profile-condition-operator"><optgroup label="Operator"></optgroup></select> + <div class="profile-condition-input-container"> + <input type="text" class="profile-condition-input" autocomplete="off" spellcheck="false"> + <div class="input-height-icon-button-container mouse-button-container" hidden> + <button type="button" class="icon-button profile-condition-mouse-button mouse-button"><span class="icon-button-inner"><span class="icon" data-icon="mouse"></span></span></button> + </div> + </div> + </div> + <div class="profile-condition-menu-button-container input-height-icon-button-container"> + <button type="button" class="icon-button profile-condition-menu-button" data-menu="profile-condition-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> + </div> +</div></template> +<template id="profile-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> + <button type="button" class="popup-menu-item" data-menu-action="moveUp">Move up</button> + <button type="button" class="popup-menu-item" data-menu-action="moveDown">Move down</button> + <button type="button" class="popup-menu-item" data-menu-action="copyFrom">Copy from…</button> + <button type="button" class="popup-menu-item" data-menu-action="editConditions">Edit conditions…</button> + <button type="button" class="popup-menu-item" data-menu-action="duplicate">Duplicate</button> + <button type="button" class="popup-menu-item" data-menu-action="delete">Delete</button> +</div></div></div></template> +<template id="profile-condition-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> + <button type="button" class="popup-menu-item" data-menu-action="resetValue">Reset value</button> + <button type="button" class="popup-menu-item" data-menu-action="delete">Delete</button> + <button type="button" class="popup-menu-item" data-menu-action="deleteGroup">Delete group</button> +</div></div></div></template> + +<!-- Dictionary --> +<template id="dictionary-template"> + <div class="dictionary-list-index generic-list-index-prefix"></div> + <label class="toggle dictionary-item-enabled-toggle-container"><input type="checkbox" class="dictionary-enabled"><span class="toggle-body"><span class="toggle-track"></span><span class="toggle-knob"></span></span></label> + <div class="dictionary-item-title-container"> + <span> + <strong class="dictionary-title"></strong> <span class="light dictionary-version"></span> + </span> + <button type="button" class="dictionary-outdated-button" hidden> + <div class="badge warning-badge"><span class="icon" data-icon="exclamation-point-short"></span></div> + </button> + <button type="button" class="dictionary-integrity-button" hidden> + <div class="badge info-badge badge-small-icon"><span class="icon" data-icon="checkmark"></span></div> + </button> + </div> + <input type="number" step="1" class="short-height dictionary-priority"> + <button type="button" class="icon-button dictionary-menu-button" data-menu="dictionary-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> +</template> +<template id="dictionary-details-entry-template"><div class="dictionary-details-entry"> + <span class="dictionary-details-entry-label"></span> + <span class="dictionary-details-entry-info"></span> +</div></template> +<template id="dictionary-extra-template"> + <div class="dictionary-item-bottom"></div> + <div class="dictionary-item-bottom"></div> + <div class="dictionary-item-bottom dictionary-item-title-container"> + <span> + <strong class="dictionary-title">Unassociated Data</strong> <span class="light dictionary-total-count"></span> + </span> + <button type="button" class="dictionary-integrity-button"> + <div class="badge warning-badge"><span class="icon" data-icon="exclamation-point-short"></span></div> + </button> + </div> + <div class="dictionary-item-bottom"></div> + <div class="dictionary-item-bottom dictionary-item-button-height"></div> +</template> +<template id="dictionary-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> + <button type="button" class="popup-menu-item" data-menu-action="showDetails">Details…</button> + <button type="button" class="popup-menu-item" data-menu-action="moveUp">Move up</button> + <button type="button" class="popup-menu-item" data-menu-action="moveDown">Move down</button> + <button type="button" class="popup-menu-item" data-menu-action="moveTo">Move to…</button> + <button type="button" class="popup-menu-item" data-menu-action="delete">Delete</button> +</div></div></div></template> +<template id="secondary-search-dictionary-template"><div class="secondary-search-dictionary-item horizontal-flex"> + <label class="toggle"><input type="checkbox" class="dictionary-allow-secondary-searches"><span class="toggle-body"><span class="toggle-track"></span><span class="toggle-knob"></span></span></label> + <span class="horizontal-flex-fill"><strong class="dictionary-title"></strong> <span class="light dictionary-version"></span></span> +</div></template> +<template id="collapsible-dictionary-item-template"><div class="collapsible-dictionary-item"> + <div class="collapsible-dictionary-cell"> + <span class="dictionary-info-label"><strong class="dictionary-title"></strong> <span class="light dictionary-version"></span></span> + </div> + <div class="collapsible-dictionary-cell"> + <select class="definitions-collapsible medium-width"> + <option value="not-collapsible">Not collapsible</option> + <option value="collapsed">Collapsed</option> + <option value="expanded">Expanded</option> + <option value="force-collapsed">Force collapsed</option> + <option value="force-expanded">Force expanded</option> + </select> + </div> +</div></template> + +<!-- Audio --> +<template id="audio-source-template"><div class="audio-source"> + <div class="audio-source-index generic-list-index-prefix"></div> + <div class="audio-source-inner"> + <select class="audio-source-type-select"> + <option value="jpod101">JapanesePod101</option> + <option value="jpod101-alternate">JapanesePod101 (Alternate)</option> + <option value="jisho">Jisho.org</option> + <option value="text-to-speech">Text-to-speech</option> + <option value="text-to-speech-reading">Text-to-speech (Kana reading)</option> + <option value="custom">Custom URL</option> + <option value="custom-json">Custom URL (JSON)</option> + </select> + <div class="audio-source-parameter-container" data-field="url" hidden> + <span class="audio-source-parameter-label">URL:</span> + <input type="text" class="audio-source-parameter"> + </div> + <div class="audio-source-parameter-container" data-field="voice" hidden> + <span class="audio-source-parameter-label">Voice:</span> + <select class="audio-source-parameter"></select> + </div> + </div> + <button type="button" class="icon-button audio-source-menu-button" data-menu="audio-source-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> +</div></template> +<template id="audio-source-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> + <button type="button" class="popup-menu-item" data-menu-action="help">Help</button> + <button type="button" class="popup-menu-item" data-menu-action="remove">Remove</button> +</div></div></div></template> + +<!-- Scanning inputs --> +<template id="scan-input-template"><div class="scan-input" data-show-advanced="false"> + <div class="scan-input-grid"> + <div class="scan-input-index-cell generic-list-index-prefix"></div> + <div class="scan-input-menu-button-cell"> + <div class="input-height-icon-button-container"> + <button type="button" class="icon-button scanning-input-menu-button" data-menu="scanning-inputs-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> + </div> + </div> + + <div class="scan-input-prefix-cell" data-property="include"><span>Required inputs:</span></div> + <div class="scan-input-content-cell input-group" data-property="include"> + <input type="text" class="scan-input-field" autocomplete="off" spellcheck="false" placeholder="No inputs" data-property="include"> + <button type="button" class="input-suffix input-suffix-icon-button light-icon mouse-button" data-property="include"><span class="icon" data-icon="mouse"></span></button> + </div> + + <div class="scan-input-prefix-cell" data-property="exclude"><span>Excluded inputs:</span></div> + <div class="scan-input-content-cell input-group" data-property="exclude"> + <input type="text" class="scan-input-field" autocomplete="off" spellcheck="false" placeholder="No inputs" data-property="exclude"> + <button type="button" class="input-suffix input-suffix-icon-button light-icon mouse-button" data-property="exclude"><span class="icon" data-icon="mouse"></span></button> + </div> + + <div class="scan-input-prefix-cell scan-input-options-cell" data-property="types"><span>Input types:</span></div> + <div class="scan-input-content-cell scan-input-options-cell" data-property="types"> + <label class="scan-input-checkbox-item"> + <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="types.mouse"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Mouse</span> + </label> + <label class="scan-input-checkbox-item"> + <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="types.touch"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Touch</span> + </label> + <label class="scan-input-checkbox-item"> + <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="types.pen"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Pen</span> + </label> + </div> + + <div class="scan-input-prefix-cell scan-input-options-cell scan-input-advanced-only" data-property="search-options"><span>Search types:</span></div> + <div class="scan-input-content-cell scan-input-options-cell scan-input-advanced-only" data-property="search-options"> + <label class="scan-input-checkbox-item"> + <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.searchTerms"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Search for terms</span> + </label> + <label class="scan-input-checkbox-item"> + <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.searchKanji"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Search for kanji</span> + </label> + </div> + + <div class="scan-input-prefix-cell scan-input-options-cell scan-input-advanced-only" data-property="touch-options"><span>Touch options:</span></div> + <div class="scan-input-content-cell scan-input-options-cell scan-input-advanced-only" data-property="touch-options"> + <label class="scan-input-checkbox-item"> + <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnTouchPress"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Scan on touch press</span> + </label> + <label class="scan-input-checkbox-item"> + <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnTouchRelease"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Scan on touch release</span> + </label> + <label class="scan-input-checkbox-item"> + <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnTouchMove"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Scan on touch move</span> + </label> + <label class="scan-input-checkbox-item"> + <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.preventTouchScrolling"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Prevent touch scrolling</span> + </label> + </div> + + <div class="scan-input-prefix-cell scan-input-options-cell scan-input-advanced-only" data-property="pen-options"><span>Pen options:</span></div> + <div class="scan-input-content-cell scan-input-options-cell scan-input-advanced-only" data-property="pen-options"> + <label class="scan-input-checkbox-item"> + <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenPress"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Scan on pen press</span> + </label> + <label class="scan-input-checkbox-item"> + <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenRelease"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Scan on pen release</span> + </label> + <label class="scan-input-checkbox-item"> + <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenMove"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Scan on pen move (while touched)</span> + </label> + <label class="scan-input-checkbox-item"> + <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenHover"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Scan on pen hover (before touched)</span> + </label> + <label class="scan-input-checkbox-item"> + <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenReleaseHover"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Scan on pen hover (after touched)</span> + </label> + <label class="scan-input-checkbox-item"> + <label class="checkbox"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.preventPenScrolling"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Prevent pen scrolling</span> + </label> + </div> + </div> +</div></template> +<template id="scanning-inputs-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> + <button type="button" class="popup-menu-item" data-menu-action="showAdvanced">Show advanced options</button> + <button type="button" class="popup-menu-item" data-menu-action="hideAdvanced">Hide advanced options</button> + <button type="button" class="popup-menu-item" data-menu-action="clearInputs">Clear inputs</button> + <button type="button" class="popup-menu-item" data-menu-action="remove">Remove</button> +</div></div></div></template> + +<!-- Anki card --> +<template id="anki-card-field-template"><div class="anki-card-field-name-container"><span class="anki-card-field-name"></span></div> +<div class="anki-card-field-value-container input-group"> + <input type="text" class="anki-card-field-value" autocomplete="off"> + <button type="button" class="anki-card-field-value-menu-button input-suffix input-suffix-icon-button light-icon" data-menu-position="v-center left"><span class="icon" data-icon="material-down-arrow"></span></button> +</div></template> +<template id="anki-card-terms-field-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"></div></div></div></template> +<template id="anki-card-kanji-field-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"></div></div></div></template> +<template id="anki-card-all-field-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"></div></div></div></template> + +<!-- Translation --> +<template id="translation-text-replacement-entry-template"><div class="translation-text-replacement-entry"> + <div class="translation-text-replacement-index generic-list-index-prefix"></div> + <div class="translation-text-replacement-pattern-label">Pattern:</div> + <div class="translation-text-replacement-replacement-label">Replacement:</div> + <div class="translation-text-replacement-pattern-container"> + <input type="text" class="translation-text-replacement-pattern code"> + <label class="translation-text-replacement-checkbox-container"> + <label class="checkbox"><input type="checkbox" class="translation-text-replacement-checkbox translation-text-replacement-pattern-ignore-case"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span class="translation-text-replacement-checkbox-label">Ignore case</span> + </label> + </div> + <div class="translation-text-replacement-replacement-container"> + <input type="text" class="translation-text-replacement-replacement code"> + </div> + <button type="button" class="icon-button translation-text-replacement-button" data-menu="translation-text-replacement-entry-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> + + <div class="translation-text-replacement-test-label translation-text-replacement-test-node">Test Input:</div> + <div class="translation-text-replacement-test-container translation-text-replacement-test-node"> + <input type="text" class="translation-text-replacement-test-input" lang="ja"> + <div class="translation-text-replacement-test-label-inner">Output:</div> + <input type="text" class="translation-text-replacement-test-output" lang="ja" readonly> + </div> +</div></template> +<template id="translation-text-replacement-entry-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> + <button type="button" class="popup-menu-item" data-menu-action="showTest">Test</button> + <button type="button" class="popup-menu-item" data-menu-action="hideTest">Hide test</button> + <button type="button" class="popup-menu-item" data-menu-action="remove">Remove</button> +</div></div></div></template> + +<!-- Sentence parsing --> +<template id="sentence-termination-character-entry-template"><tr class="sentence-termination-character-entry"> + <td class="generic-list-index-prefix"></td> + <td> + <label class="toggle"><input type="checkbox" class="sentence-termination-character-enabled"><span class="toggle-body"><span class="toggle-track"></span><span class="toggle-knob"></span></span></label> + </td> + <td> + <select class="sentence-termination-character-type"> + <option value="terminator">Terminator</option> + <option value="quote">Quote</option> + </select> + </td> + <td> + <input type="text" class="sentence-termination-character-input1" maxlength="1" lang="ja"> + </td> + <td> + <input type="text" class="sentence-termination-character-input2" maxlength="1" lang="ja"> + <div class="sentence-termination-character-input2-alt">—</div> + </td> + <td> + <div class="sentence-termination-character-include-list"> + <label class="sentence-termination-character-include"> + <label class="checkbox"><input type="checkbox" class="sentence-termination-character-include-at-start"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>At start</span> + </label> + <label class="sentence-termination-character-include"> + <label class="checkbox"><input type="checkbox" class="sentence-termination-character-include-at-end"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>At end</span> + </label> + </div> + </td> + <td> + <button type="button" class="icon-button sentence-termination-character-entry-button" data-menu="sentence-termination-character-entry-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> + </td> +</tr></template> +<template id="sentence-termination-character-entry-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> + <button type="button" class="popup-menu-item" data-menu-action="delete">Delete</button> +</div></div></div></template> + +<!-- Keyboard shortcuts --> +<template id="hotkey-list-item-template"><div class="hotkey-list-item"><div class="hotkey-list-item-grid"> + <div class="hotkey-list-item-index-cell generic-list-index-prefix"></div> + <div class="hotkey-list-item-button-cell"> + <div class="input-height-icon-button-container"> + <button type="button" class="icon-button hotkey-list-item-button" data-menu="hotkey-list-item-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> + </div> + </div> + + <div class="hotkey-list-item-input-label-cell">Input:</div> + <div class="hotkey-list-item-input-cell"> + <input type="text" class="hotkey-list-item-input" autocomplete="off" spellcheck="false" placeholder="No input" data-property="include"> + <div class="hotkey-list-item-enabled-button-container input-group"> + <button type="button" class="hotkey-list-item-enabled-button input-button"> + <label class="hotkey-list-item-enabled-button-label button-inner-label"> + <span class="checkbox"><input type="checkbox" class="hotkey-list-item-enabled"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></span> + <span>Enabled</span> + </label> + </button> + <button type="button" class="hotkey-list-item-scopes-button input-suffix input-suffix-icon-button light-icon" data-menu="hotkey-list-item-scopes-menu" data-menu-position="below left"><span class="icon" data-icon="material-down-arrow"></span></button> + </div> + </div> + + <div class="hotkey-list-item-action-label-cell">Action:</div> + <div class="hotkey-list-item-action-cell"> + <select class="hotkey-list-item-action"> + <option value="">None</option> + <option value="close">Close</option> + <option value="focusSearchBox">Focus search box</option> + <option value="nextEntry">Go to next entry</option> + <option value="previousEntry">Go to previous entry</option> + <option value="lastEntry">Go to last entry</option> + <option value="firstEntry">Go to first entry</option> + <option value="nextEntryDifferentDictionary">Go to next dictionary</option> + <option value="previousEntryDifferentDictionary">Go to previous dictionary</option> + <option value="historyBackward">Navigate backward in history</option> + <option value="historyForward">Navigate forward in history</option> + <option value="addNoteKanji">Add kanji note</option> + <option value="addNoteTermKanji">Add term note</option> + <option value="addNoteTermKana">Add term note (reading)</option> + <option value="viewNotes">View notes</option> + <option value="playAudio">Play audio</option> + <option value="playAudioFromSource">Play audio from source</option> + <option value="copyHostSelection">Copy host window selection</option> + <option value="scanSelectedText">Scan selected text</option> + <option value="scanTextAtCaret">Scan text at caret</option> + <option value="toggleOption">Toggle option</option> + </select> + <div class="hotkey-list-item-action-argument-container"></div> + </div> +</div></div></template> +<template id="extension-hotkey-list-item-template"><div class="settings-item"><div class="settings-item-inner settings-item-inner-wrappable"> + <div class="settings-item-left"> + <div class="settings-item-label"></div> + </div> + <div class="settings-item-right"> + <div class="flex-row-nowrap"> + <input type="text"> + <button type="button" class="icon-button extension-hotkey-list-item-button" data-menu="extension-hotkey-list-item-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> + </div> + </div> +</div></div></template> +<template id="hotkey-list-item-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> + <button type="button" class="popup-menu-item" data-menu-action="clearInputs">Clear input</button> + <button type="button" class="popup-menu-item" data-menu-action="resetInput">Reset input</button> + <button type="button" class="popup-menu-item" data-menu-action="resetArgument">Reset argument</button> + <button type="button" class="popup-menu-item" data-menu-action="delete">Delete</button> +</div></div></div></template> +<template id="hotkey-list-item-scopes-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> + <button type="button" class="popup-menu-item hotkey-scope-popup-menu-item" data-menu-action="toggleScope" data-scope="web"><label class="hotkey-scope-popup-menu-item-label button-inner-label"> + <label class="checkbox"><input type="checkbox" class="hotkey-scope-checkbox" data-scope="web"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Web</span> + </label></button> + <button type="button" class="popup-menu-item hotkey-scope-popup-menu-item" data-menu-action="toggleScope" data-scope="popup"><label class="hotkey-scope-popup-menu-item-label button-inner-label"> + <label class="checkbox"><input type="checkbox" class="hotkey-scope-checkbox" data-scope="popup"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Popup</span> + </label></button> + <button type="button" class="popup-menu-item hotkey-scope-popup-menu-item" data-menu-action="toggleScope" data-scope="search"><label class="hotkey-scope-popup-menu-item-label button-inner-label"> + <label class="checkbox"><input type="checkbox" class="hotkey-scope-checkbox" data-scope="search"><span class="checkbox-body"><span class="checkbox-fill"></span><span class="checkbox-border"></span><span class="checkbox-check"></span></span></label> + <span>Search</span> + </label></button> +</div></div></div></template> +<template id="extension-hotkey-list-item-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> + <button type="button" class="popup-menu-item" data-menu-action="clearInput">Clear input</button> + <button type="button" class="popup-menu-item" data-menu-action="resetInput">Reset input</button> +</div></div></div></template> +<template id="hotkey-argument-move-offset-template"><div class="flex-row-nowrap"> + <span class="hotkey-argument-label">Count:</span> + <input type="number" step="1" min="1" class="hotkey-argument-input"> +</div></template> +<template id="hotkey-argument-setting-path-template"><div class="flex-row-nowrap"> + <span class="hotkey-argument-label">Path:</span> + <input type="text" class="hotkey-argument-input horizontal-flex-fill" spellcheck="false" autocomplete="off"> +</div></template> +<template id="hotkey-argument-audio-source-template"><div class="flex-row-nowrap"> + <span class="hotkey-argument-label">Source:</span> + <select class="audio-source-select hotkey-argument-input horizontal-flex-fill"> + <option value="jpod101">JapanesePod101</option> + <option value="jpod101-alternate">JapanesePod101 (Alternate)</option> + <option value="jisho">Jisho.org</option> + <option value="text-to-speech">Text-to-speech</option> + <option value="text-to-speech-reading">Text-to-speech (Kana reading)</option> + <option value="custom">Custom</option> + </select> +</div></template> + +<!-- Permissions --> +<template id="permissions-origin-template"> + <div class="permissions-origin-index generic-list-index-prefix"></div> + <input type="text" class="permissions-origin-input horizontal-flex-fill" autocomplete="off" spellcheck="false" readonly> + <button type="button" class="icon-button permissions-origin-menu-button permissions-origin-button" data-menu="permissions-origin-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> +</template> +<template id="permissions-origin-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> + <button type="button" class="popup-menu-item" data-menu-action="remove">Remove</button> +</div></div></div></template> + +</body></html> diff --git a/ext/welcome.html b/ext/welcome.html index b9bb3205..e6104079 100644 --- a/ext/welcome.html +++ b/ext/welcome.html @@ -425,40 +425,6 @@ </div> </div></div> - -<!-- Dictionary templates --> -<template id="dictionary-template"> - <div class="dictionary-list-index generic-list-index-prefix"></div> - <label class="toggle dictionary-item-enabled-toggle-container"><input type="checkbox" class="dictionary-enabled"><span class="toggle-body"><span class="toggle-track"></span><span class="toggle-knob"></span></span></label> - <div class="dictionary-item-title-container"> - <span> - <strong class="dictionary-title"></strong> <span class="light dictionary-version"></span> - </span> - <button type="button" class="dictionary-outdated-button" hidden> - <div class="badge warning-badge"><span class="icon" data-icon="exclamation-point-short"></span></div> - </button> - <button type="button" class="dictionary-integrity-button" hidden> - <div class="badge info-badge badge-small-icon"><span class="icon" data-icon="checkmark"></span></div> - </button> - </div> - <input type="number" step="1" class="short-height dictionary-priority"> - <button type="button" class="icon-button dictionary-menu-button" data-menu="dictionary-menu" data-menu-position="below left"><span class="icon-button-inner"><span class="icon" data-icon="kebab-menu"></span></span></button> -</template> - -<template id="dictionary-details-entry-template"><div class="dictionary-details-entry"> - <span class="dictionary-details-entry-label"></span> - <span class="dictionary-details-entry-info"></span> -</div></template> - -<template id="dictionary-menu-template"><div class="popup-menu-container" tabindex="-1" role="dialog"><div class="popup-menu"><div class="popup-menu-body"> - <button type="button" class="popup-menu-item" data-menu-action="showDetails">Details…</button> - <button type="button" class="popup-menu-item" data-menu-action="moveUp">Move up</button> - <button type="button" class="popup-menu-item" data-menu-action="moveDown">Move down</button> - <button type="button" class="popup-menu-item" data-menu-action="moveTo">Move to…</button> - <button type="button" class="popup-menu-item" data-menu-action="delete">Delete</button> -</div></div></div></template> - - <!-- Scripts --> <script src="/js/pages/welcome-main.js" type="module"></script> |