···3## Helpers
45Yomitan supports several custom Handlebars helpers for rendering templates.
6-The source code for these templates can be found [here](../ext/js/templates/sandbox/anki-template-renderer.js).
78### `dumpObject`
9
···3## Helpers
45Yomitan supports several custom Handlebars helpers for rendering templates.
6+The source code for these templates can be found [here](../ext/js/templates/anki-template-renderer.js).
78### `dumpObject`
9
+1-1
ext/js/background/backend.js
···29import {isObjectNotArray} from '../core/object-utilities.js';
30import {clone, deferPromise, promiseTimeout} from '../core/utilities.js';
31import {isNoteDataValid} from '../data/anki-util.js';
032import {OptionsUtil} from '../data/options-util.js';
33import {getAllPermissions, hasPermissions, hasRequiredPermissionsForOptions} from '../data/permissions-util.js';
34-import {arrayBufferToBase64} from '../data/sandbox/array-buffer-util.js';
35import {DictionaryDatabase} from '../dictionary/dictionary-database.js';
36import {Environment} from '../extension/environment.js';
37import {ObjectPropertyAccessor} from '../general/object-property-accessor.js';
···29import {isObjectNotArray} from '../core/object-utilities.js';
30import {clone, deferPromise, promiseTimeout} from '../core/utilities.js';
31import {isNoteDataValid} from '../data/anki-util.js';
32+import {arrayBufferToBase64} from '../data/array-buffer-util.js';
33import {OptionsUtil} from '../data/options-util.js';
34import {getAllPermissions, hasPermissions, hasRequiredPermissionsForOptions} from '../data/permissions-util.js';
035import {DictionaryDatabase} from '../dictionary/dictionary-database.js';
36import {Environment} from '../extension/environment.js';
37import {ObjectPropertyAccessor} from '../general/object-property-accessor.js';
+1-1
ext/js/background/offscreen-proxy.js
···1819import {ExtensionError} from '../core/extension-error.js';
20import {isObjectNotArray} from '../core/object-utilities.js';
21-import {base64ToArrayBuffer} from '../data/sandbox/array-buffer-util.js';
2223/**
24 * This class is responsible for creating and communicating with an offscreen document.
···1819import {ExtensionError} from '../core/extension-error.js';
20import {isObjectNotArray} from '../core/object-utilities.js';
21+import {base64ToArrayBuffer} from '../data/array-buffer-util.js';
2223/**
24 * This class is responsible for creating and communicating with an offscreen document.
+1-1
ext/js/background/offscreen.js
···1819import {ClipboardReader} from '../comm/clipboard-reader.js';
20import {createApiMap, invokeApiMapHandler} from '../core/api-map.js';
21-import {arrayBufferToBase64} from '../data/sandbox/array-buffer-util.js';
22import {DictionaryDatabase} from '../dictionary/dictionary-database.js';
23import {Translator} from '../language/translator.js';
24
···1819import {ClipboardReader} from '../comm/clipboard-reader.js';
20import {createApiMap, invokeApiMapHandler} from '../core/api-map.js';
21+import {arrayBufferToBase64} from '../data/array-buffer-util.js';
22import {DictionaryDatabase} from '../dictionary/dictionary-database.js';
23import {Translator} from '../language/translator.js';
24
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819-import {getDisambiguations, getGroupedPronunciations, getPronunciationsOfType, getTermFrequency, groupTermTags} from '../../dictionary/dictionary-data-util.js';
20-import {distributeFurigana, distributeFuriganaInflected} from '../../language/ja/japanese.js';
2122/**
23 * Creates a compatibility representation of the specified data.
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819+import {getDisambiguations, getGroupedPronunciations, getPronunciationsOfType, getTermFrequency, groupTermTags} from '../dictionary/dictionary-data-util.js';
20+import {distributeFurigana, distributeFuriganaInflected} from '../language/ja/japanese.js';
2122/**
23 * Creates a compatibility representation of the specified data.
···17 */
1819import {EventListenerCollection} from '../core/event-listener-collection.js';
20-import {base64ToArrayBuffer} from '../data/sandbox/array-buffer-util.js';
2122/**
23 * The content manager which is used when generating HTML display content.
···17 */
1819import {EventListenerCollection} from '../core/event-listener-collection.js';
20+import {base64ToArrayBuffer} from '../data/array-buffer-util.js';
2122/**
23 * The content manager which is used when generating HTML display content.
+2-2
ext/js/display/display-generator.js
···21import {HtmlTemplateCollection} from '../dom/html-template-collection.js';
22import {distributeFurigana, getKanaMorae, getPitchCategory, isCodePointKanji} from '../language/ja/japanese.js';
23import {getLanguageFromText} from '../language/text-utilities.js';
24-import {createPronunciationDownstepPosition, createPronunciationGraph, createPronunciationText} from './sandbox/pronunciation-generator.js';
25-import {StructuredContentGenerator} from './sandbox/structured-content-generator.js';
2627export class DisplayGenerator {
28 /**
···21import {HtmlTemplateCollection} from '../dom/html-template-collection.js';
22import {distributeFurigana, getKanaMorae, getPitchCategory, isCodePointKanji} from '../language/ja/japanese.js';
23import {getLanguageFromText} from '../language/text-utilities.js';
24+import {createPronunciationDownstepPosition, createPronunciationGraph, createPronunciationText} from './pronunciation-generator.js';
25+import {StructuredContentGenerator} from './structured-content-generator.js';
2627export class DisplayGenerator {
28 /**
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819-import {getKanaDiacriticInfo, isMoraPitchHigh} from '../../language/ja/japanese.js';
2021/**
22 * @param {string[]} morae
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819+import {getKanaDiacriticInfo, isMoraPitchHigh} from '../language/ja/japanese.js';
2021/**
22 * @param {string[]} morae
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819-import {getLanguageFromText} from '../../language/text-utilities.js';
2021export class StructuredContentGenerator {
22 /**
23- * @param {import('../../display/display-content-manager.js').DisplayContentManager|import('../../templates/sandbox/anki-template-renderer-content-manager.js').AnkiTemplateRendererContentManager} contentManager
24 * @param {Document} document
25 */
26 constructor(contentManager, document) {
27- /** @type {import('../../display/display-content-manager.js').DisplayContentManager|import('../../templates/sandbox/anki-template-renderer-content-manager.js').AnkiTemplateRendererContentManager} */
28 this._contentManager = contentManager;
29 /** @type {Document} */
30 this._document = document;
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819+import {getLanguageFromText} from '../language/text-utilities.js';
2021export class StructuredContentGenerator {
22 /**
23+ * @param {import('./display-content-manager.js').DisplayContentManager|import('../templates/anki-template-renderer-content-manager.js').AnkiTemplateRendererContentManager} contentManager
24 * @param {Document} document
25 */
26 constructor(contentManager, document) {
27+ /** @type {import('./display-content-manager.js').DisplayContentManager|import('../templates/anki-template-renderer-content-manager.js').AnkiTemplateRendererContentManager} */
28 this._contentManager = contentManager;
29 /** @type {Document} */
30 this._document = document;
+1-1
ext/js/dom/dom-text-scanner.js
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819-import {readCodePointsBackward, readCodePointsForward} from '../data/sandbox/string-util.js';
2021/**
22 * A class used to scan text in a document.
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819+import {readCodePointsBackward, readCodePointsForward} from '../data/string-util.js';
2021/**
22 * A class used to scan text in a document.
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819-import {readResponseJson} from '../../core/json.js';
2021/**
22 * This class is used to apply CSS styles to elements using a consistent method
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819+import {readResponseJson} from '../core/json.js';
2021/**
22 * This class is used to apply CSS styles to elements using a consistent method
+1-1
ext/js/dom/text-source-element.js
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819-import {readCodePointsBackward, readCodePointsForward} from '../data/sandbox/string-util.js';
20import {convertMultipleRectZoomCoordinates} from './document-util.js';
2122/**
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819+import {readCodePointsBackward, readCodePointsForward} from '../data/string-util.js';
20import {convertMultipleRectZoomCoordinates} from './document-util.js';
2122/**
+1-1
ext/js/media/audio-downloader.js
···19import {RequestBuilder} from '../background/request-builder.js';
20import {ExtensionError} from '../core/extension-error.js';
21import {readResponseJson} from '../core/json.js';
022import {JsonSchema} from '../data/json-schema.js';
23-import {arrayBufferToBase64} from '../data/sandbox/array-buffer-util.js';
24import {NativeSimpleDOMParser} from '../dom/native-simple-dom-parser.js';
25import {SimpleDOMParser} from '../dom/simple-dom-parser.js';
26import {isStringEntirelyKana} from '../language/ja/japanese.js';
···19import {RequestBuilder} from '../background/request-builder.js';
20import {ExtensionError} from '../core/extension-error.js';
21import {readResponseJson} from '../core/json.js';
22+import {arrayBufferToBase64} from '../data/array-buffer-util.js';
23import {JsonSchema} from '../data/json-schema.js';
024import {NativeSimpleDOMParser} from '../dom/native-simple-dom-parser.js';
25import {SimpleDOMParser} from '../dom/simple-dom-parser.js';
26import {isStringEntirelyKana} from '../language/ja/japanese.js';
+1-1
ext/js/pages/settings/backup-controller.js
···21import {log} from '../../core/log.js';
22import {isObjectNotArray} from '../../core/object-utilities.js';
23import {toError} from '../../core/to-error.js';
024import {OptionsUtil} from '../../data/options-util.js';
25import {getAllPermissions} from '../../data/permissions-util.js';
26-import {arrayBufferUtf8Decode} from '../../data/sandbox/array-buffer-util.js';
27import {querySelectorNotNull} from '../../dom/query-selector.js';
28import {DictionaryController} from './dictionary-controller.js';
29
···21import {log} from '../../core/log.js';
22import {isObjectNotArray} from '../../core/object-utilities.js';
23import {toError} from '../../core/to-error.js';
24+import {arrayBufferUtf8Decode} from '../../data/array-buffer-util.js';
25import {OptionsUtil} from '../../data/options-util.js';
26import {getAllPermissions} from '../../data/permissions-util.js';
027import {querySelectorNotNull} from '../../dom/query-selector.js';
28import {DictionaryController} from './dictionary-controller.js';
29
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819-import {Handlebars} from '../../../lib/handlebars.js';
20-import {createAnkiNoteData} from '../../data/sandbox/anki-note-data-creator.js';
21-import {getPronunciationsOfType, isNonNounVerbOrAdjective} from '../../dictionary/dictionary-data-util.js';
22-import {createPronunciationDownstepPosition, createPronunciationGraph, createPronunciationText} from '../../display/sandbox/pronunciation-generator.js';
23-import {StructuredContentGenerator} from '../../display/sandbox/structured-content-generator.js';
24-import {CssStyleApplier} from '../../dom/sandbox/css-style-applier.js';
25-import {convertHiraganaToKatakana, convertKatakanaToHiragana, distributeFurigana, getKanaMorae, getPitchCategory, isMoraPitchHigh} from '../../language/ja/japanese.js';
26import {AnkiTemplateRendererContentManager} from './anki-template-renderer-content-manager.js';
27import {TemplateRendererMediaProvider} from './template-renderer-media-provider.js';
28import {TemplateRenderer} from './template-renderer.js';
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819+import {Handlebars} from '../../lib/handlebars.js';
20+import {createAnkiNoteData} from '../data/anki-note-data-creator.js';
21+import {getPronunciationsOfType, isNonNounVerbOrAdjective} from '../dictionary/dictionary-data-util.js';
22+import {createPronunciationDownstepPosition, createPronunciationGraph, createPronunciationText} from '../display/pronunciation-generator.js';
23+import {StructuredContentGenerator} from '../display/structured-content-generator.js';
24+import {CssStyleApplier} from '../dom/css-style-applier.js';
25+import {convertHiraganaToKatakana, convertKatakanaToHiragana, distributeFurigana, getKanaMorae, getPitchCategory, isMoraPitchHigh} from '../language/ja/japanese.js';
26import {AnkiTemplateRendererContentManager} from './anki-template-renderer-content-manager.js';
27import {TemplateRendererMediaProvider} from './template-renderer-media-provider.js';
28import {TemplateRenderer} from './template-renderer.js';
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819-import {createApiMap, invokeApiMapHandler} from '../../core/api-map.js';
20-import {parseJson} from '../../core/json.js';
2122export class TemplateRendererFrameApi {
23 /**
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819+import {createApiMap, invokeApiMapHandler} from '../core/api-map.js';
20+import {parseJson} from '../core/json.js';
2122export class TemplateRendererFrameApi {
23 /**
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819-import {Handlebars} from '../../../lib/handlebars.js';
2021export class TemplateRendererMediaProvider {
22 constructor() {
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819+import {Handlebars} from '../../lib/handlebars.js';
2021export class TemplateRendererMediaProvider {
22 constructor() {
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819-import {Handlebars} from '../../../lib/handlebars.js';
20-import {ExtensionError} from '../../core/extension-error.js';
2122export class TemplateRenderer {
23 constructor() {
···16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
1819+import {Handlebars} from '../../lib/handlebars.js';
20+import {ExtensionError} from '../core/extension-error.js';
2122export class TemplateRenderer {
23 constructor() {
···16 */
1718import {vi} from 'vitest';
19-import {AnkiTemplateRenderer} from '../../ext/js/templates/sandbox/anki-template-renderer.js';
20import {fetch} from '../mocks/common.js';
21import {createDomTest} from './dom-test.js';
22
···16 */
1718import {vi} from 'vitest';
19+import {AnkiTemplateRenderer} from '../../ext/js/templates/anki-template-renderer.js';
20import {fetch} from '../mocks/common.js';
21import {createDomTest} from './dom-test.js';
22
+2-2
test/utilities/anki.js
···16 */
1718import {AnkiNoteBuilder} from '../../ext/js/data/anki-note-builder.js';
019import {getStandardFieldMarkers} from '../../ext/js/data/anki-template-util.js';
20-import {createAnkiNoteData} from '../../ext/js/data/sandbox/anki-note-data-creator.js';
21-import {AnkiTemplateRenderer} from '../../ext/js/templates/sandbox/anki-template-renderer.js';
2223/**
24 * @param {import('dictionary').DictionaryEntryType} type
···16 */
1718import {AnkiNoteBuilder} from '../../ext/js/data/anki-note-builder.js';
19+import {createAnkiNoteData} from '../../ext/js/data/anki-note-data-creator.js';
20import {getStandardFieldMarkers} from '../../ext/js/data/anki-template-util.js';
21+import {AnkiTemplateRenderer} from '../../ext/js/templates/anki-template-renderer.js';
02223/**
24 * @param {import('dictionary').DictionaryEntryType} type