@mnaoumov/obsidian-lib 10.5.1 → 10.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/codemirror/inline-token-widgets/package.json +6 -0
- package/codemirror/settings-facet/package.json +6 -0
- package/command-handlers/open-discussion-command-handler/package.json +6 -0
- package/command-handlers/open-feature-request-command-handler/package.json +6 -0
- package/command-handlers/open-git-hub-command-handler/package.json +6 -0
- package/components/settings-facet-component/package.json +6 -0
- package/components/style-sheet-component/package.json +6 -0
- package/dist/lib/cjs/__merged.cjs +137 -1
- package/dist/lib/cjs/__merged.d.cts +26 -0
- package/dist/lib/cjs/anchored-suggest.cjs +232 -0
- package/dist/lib/cjs/anchored-suggest.d.cts +116 -0
- package/dist/lib/cjs/broken-link-candidates.cjs +366 -0
- package/dist/lib/cjs/broken-link-candidates.d.cts +181 -0
- package/dist/lib/cjs/bug-report.cjs +4 -2
- package/dist/lib/cjs/bug-report.d.cts +1 -1
- package/dist/lib/cjs/code-block-render-handoff.cjs +272 -0
- package/dist/lib/cjs/code-block-render-handoff.d.cts +131 -0
- package/dist/lib/cjs/codemirror/index.cjs +7 -1
- package/dist/lib/cjs/codemirror/index.d.cts +2 -0
- package/dist/lib/cjs/codemirror/inline-token-widgets.cjs +250 -0
- package/dist/lib/cjs/codemirror/inline-token-widgets.d.cts +109 -0
- package/dist/lib/cjs/codemirror/settings-facet.cjs +132 -0
- package/dist/lib/cjs/codemirror/settings-facet.d.cts +19 -0
- package/dist/lib/cjs/command-handlers/index.cjs +10 -1
- package/dist/lib/cjs/command-handlers/index.d.cts +3 -0
- package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.cjs +9 -12
- package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.d.cts +6 -8
- package/dist/lib/cjs/command-handlers/open-discussion-command-handler.cjs +127 -0
- package/dist/lib/cjs/command-handlers/open-discussion-command-handler.d.cts +45 -0
- package/dist/lib/cjs/command-handlers/open-feature-request-command-handler.cjs +119 -0
- package/dist/lib/cjs/command-handlers/open-feature-request-command-handler.d.cts +33 -0
- package/dist/lib/cjs/command-handlers/open-git-hub-command-handler.cjs +121 -0
- package/dist/lib/cjs/command-handlers/open-git-hub-command-handler.d.cts +43 -0
- package/dist/lib/cjs/components/index.cjs +7 -1
- package/dist/lib/cjs/components/index.d.cts +2 -0
- package/dist/lib/cjs/components/settings-facet-component.cjs +136 -0
- package/dist/lib/cjs/components/settings-facet-component.d.cts +68 -0
- package/dist/lib/cjs/components/style-sheet-component.cjs +198 -0
- package/dist/lib/cjs/components/style-sheet-component.d.cts +79 -0
- package/dist/lib/cjs/css-class.cjs +8 -1
- package/dist/lib/cjs/css-class.d.cts +28 -0
- package/dist/lib/cjs/data-stores/data-store-transport.cjs +7 -4
- package/dist/lib/cjs/data-stores/data-store-transport.d.cts +1 -1
- package/dist/lib/cjs/data-stores/shared-data-store.cjs +1 -1
- package/dist/lib/cjs/data-stores/shared-data-store.d.cts +1 -1
- package/dist/lib/cjs/desktop-git-runner.cjs +117 -0
- package/dist/lib/cjs/desktop-git-runner.d.cts +17 -0
- package/dist/lib/cjs/desktop-request-url-stream.cjs +258 -0
- package/dist/lib/cjs/desktop-request-url-stream.d.cts +22 -0
- package/dist/lib/cjs/editor-suggest-registrar.cjs +8 -2
- package/dist/lib/cjs/editor-suggest-registrar.d.cts +14 -2
- package/dist/lib/cjs/editor-suggest.cjs +197 -0
- package/dist/lib/cjs/editor-suggest.d.cts +103 -0
- package/dist/lib/cjs/feature-request.cjs +115 -0
- package/dist/lib/cjs/feature-request.d.cts +54 -0
- package/dist/lib/cjs/generated-during-build.cjs +2 -2
- package/dist/lib/cjs/git-hub-discussion.cjs +101 -0
- package/dist/lib/cjs/git-hub-discussion.d.cts +28 -0
- package/dist/lib/cjs/git-rename-history.cjs +148 -0
- package/dist/lib/cjs/git-rename-history.d.cts +43 -0
- package/dist/lib/cjs/hotkey.cjs +185 -0
- package/dist/lib/cjs/hotkey.d.cts +59 -0
- package/dist/lib/cjs/i18n/locales/en.cjs +13 -1
- package/dist/lib/cjs/i18n/locales/en.d.cts +12 -0
- package/dist/lib/cjs/i18n/locales/translations-map.d.cts +12 -0
- package/dist/lib/cjs/index.cjs +46 -1
- package/dist/lib/cjs/index.d.cts +15 -0
- package/dist/lib/cjs/inline-token-renderer.cjs +145 -0
- package/dist/lib/cjs/inline-token-renderer.d.cts +88 -0
- package/dist/lib/cjs/link-and-tag-input-suggest.cjs +325 -0
- package/dist/lib/cjs/link-and-tag-input-suggest.d.cts +229 -0
- package/dist/lib/cjs/markdown-code-block-processor.cjs +13 -1
- package/dist/lib/cjs/markdown-code-block-processor.d.cts +18 -0
- package/dist/lib/cjs/markdown.cjs +6 -1
- package/dist/lib/cjs/markdown.d.cts +10 -1
- package/dist/lib/cjs/rendered-markdown.cjs +306 -0
- package/dist/lib/cjs/rendered-markdown.d.cts +77 -0
- package/dist/lib/cjs/request-url.cjs +523 -0
- package/dist/lib/cjs/request-url.d.cts +233 -0
- package/dist/lib/cjs/setting-components/folder-list-component.cjs +216 -0
- package/dist/lib/cjs/setting-components/folder-list-component.d.cts +73 -0
- package/dist/lib/cjs/setting-components/hotkey-component.cjs +260 -0
- package/dist/lib/cjs/setting-components/hotkey-component.d.cts +85 -0
- package/dist/lib/cjs/setting-components/index.cjs +13 -1
- package/dist/lib/cjs/setting-components/index.d.cts +4 -0
- package/dist/lib/cjs/setting-components/list-component.cjs +291 -0
- package/dist/lib/cjs/setting-components/list-component.d.cts +106 -0
- package/dist/lib/cjs/setting-components/tag-list-component.cjs +220 -0
- package/dist/lib/cjs/setting-components/tag-list-component.d.cts +82 -0
- package/dist/lib/cjs/setting-ex.cjs +51 -1
- package/dist/lib/cjs/setting-ex.d.cts +35 -1
- package/dist/lib/cjs/settings-tabs.cjs +258 -0
- package/dist/lib/cjs/settings-tabs.d.cts +101 -0
- package/dist/lib/cjs/vault.cjs +2 -2
- package/dist/lib/cjs/vault.d.cts +3 -1
- package/dist/lib/esm/__merged.d.mts +26 -0
- package/dist/lib/esm/__merged.mjs +139 -1
- package/dist/lib/esm/anchored-suggest.d.mts +116 -0
- package/dist/lib/esm/anchored-suggest.mjs +144 -0
- package/dist/lib/esm/broken-link-candidates.d.mts +181 -0
- package/dist/lib/esm/broken-link-candidates.mjs +275 -0
- package/dist/lib/esm/bug-report.d.mts +1 -1
- package/dist/lib/esm/bug-report.mjs +4 -2
- package/dist/lib/esm/code-block-render-handoff.d.mts +131 -0
- package/dist/lib/esm/code-block-render-handoff.mjs +183 -0
- package/dist/lib/esm/codemirror/index.d.mts +2 -0
- package/dist/lib/esm/codemirror/index.mjs +5 -1
- package/dist/lib/esm/codemirror/inline-token-widgets.d.mts +109 -0
- package/dist/lib/esm/codemirror/inline-token-widgets.mjs +167 -0
- package/dist/lib/esm/codemirror/settings-facet.d.mts +19 -0
- package/dist/lib/esm/codemirror/settings-facet.mjs +44 -0
- package/dist/lib/esm/command-handlers/index.d.mts +3 -0
- package/dist/lib/esm/command-handlers/index.mjs +7 -1
- package/dist/lib/esm/command-handlers/open-bug-report-command-handler.d.mts +6 -8
- package/dist/lib/esm/command-handlers/open-bug-report-command-handler.mjs +9 -12
- package/dist/lib/esm/command-handlers/open-discussion-command-handler.d.mts +45 -0
- package/dist/lib/esm/command-handlers/open-discussion-command-handler.mjs +39 -0
- package/dist/lib/esm/command-handlers/open-feature-request-command-handler.d.mts +33 -0
- package/dist/lib/esm/command-handlers/open-feature-request-command-handler.mjs +31 -0
- package/dist/lib/esm/command-handlers/open-git-hub-command-handler.d.mts +43 -0
- package/dist/lib/esm/command-handlers/open-git-hub-command-handler.mjs +33 -0
- package/dist/lib/esm/components/index.d.mts +2 -0
- package/dist/lib/esm/components/index.mjs +5 -1
- package/dist/lib/esm/components/settings-facet-component.d.mts +68 -0
- package/dist/lib/esm/components/settings-facet-component.mjs +48 -0
- package/dist/lib/esm/components/style-sheet-component.d.mts +79 -0
- package/dist/lib/esm/components/style-sheet-component.mjs +109 -0
- package/dist/lib/esm/css-class.d.mts +28 -0
- package/dist/lib/esm/css-class.mjs +8 -1
- package/dist/lib/esm/data-stores/data-store-transport.d.mts +1 -1
- package/dist/lib/esm/data-stores/data-store-transport.mjs +7 -4
- package/dist/lib/esm/data-stores/shared-data-store.d.mts +1 -1
- package/dist/lib/esm/data-stores/shared-data-store.mjs +1 -1
- package/dist/lib/esm/desktop-git-runner.d.mts +17 -0
- package/dist/lib/esm/desktop-git-runner.mjs +19 -0
- package/dist/lib/esm/desktop-request-url-stream.d.mts +22 -0
- package/dist/lib/esm/desktop-request-url-stream.mjs +170 -0
- package/dist/lib/esm/editor-suggest-registrar.d.mts +14 -2
- package/dist/lib/esm/editor-suggest-registrar.mjs +8 -2
- package/dist/lib/esm/editor-suggest.d.mts +103 -0
- package/dist/lib/esm/editor-suggest.mjs +108 -0
- package/dist/lib/esm/feature-request.d.mts +54 -0
- package/dist/lib/esm/feature-request.mjs +25 -0
- package/dist/lib/esm/generated-during-build.mjs +2 -2
- package/dist/lib/esm/git-hub-discussion.d.mts +28 -0
- package/dist/lib/esm/git-hub-discussion.mjs +13 -0
- package/dist/lib/esm/git-rename-history.d.mts +43 -0
- package/dist/lib/esm/git-rename-history.mjs +59 -0
- package/dist/lib/esm/hotkey.d.mts +59 -0
- package/dist/lib/esm/hotkey.mjs +95 -0
- package/dist/lib/esm/i18n/locales/en.d.mts +12 -0
- package/dist/lib/esm/i18n/locales/en.mjs +13 -1
- package/dist/lib/esm/i18n/locales/translations-map.d.mts +12 -0
- package/dist/lib/esm/index.d.mts +15 -0
- package/dist/lib/esm/index.mjs +31 -1
- package/dist/lib/esm/inline-token-renderer.d.mts +88 -0
- package/dist/lib/esm/inline-token-renderer.mjs +59 -0
- package/dist/lib/esm/link-and-tag-input-suggest.d.mts +229 -0
- package/dist/lib/esm/link-and-tag-input-suggest.mjs +239 -0
- package/dist/lib/esm/markdown-code-block-processor.d.mts +18 -0
- package/dist/lib/esm/markdown-code-block-processor.mjs +16 -1
- package/dist/lib/esm/markdown.d.mts +10 -1
- package/dist/lib/esm/markdown.mjs +9 -1
- package/dist/lib/esm/rendered-markdown.d.mts +77 -0
- package/dist/lib/esm/rendered-markdown.mjs +219 -0
- package/dist/lib/esm/request-url.d.mts +233 -0
- package/dist/lib/esm/request-url.mjs +428 -0
- package/dist/lib/esm/setting-components/folder-list-component.d.mts +73 -0
- package/dist/lib/esm/setting-components/folder-list-component.mjs +131 -0
- package/dist/lib/esm/setting-components/hotkey-component.d.mts +85 -0
- package/dist/lib/esm/setting-components/hotkey-component.mjs +178 -0
- package/dist/lib/esm/setting-components/index.d.mts +4 -0
- package/dist/lib/esm/setting-components/index.mjs +9 -1
- package/dist/lib/esm/setting-components/list-component.d.mts +106 -0
- package/dist/lib/esm/setting-components/list-component.mjs +206 -0
- package/dist/lib/esm/setting-components/tag-list-component.d.mts +82 -0
- package/dist/lib/esm/setting-components/tag-list-component.mjs +131 -0
- package/dist/lib/esm/setting-ex.d.mts +35 -1
- package/dist/lib/esm/setting-ex.mjs +51 -1
- package/dist/lib/esm/settings-tabs.d.mts +101 -0
- package/dist/lib/esm/settings-tabs.mjs +170 -0
- package/dist/lib/esm/vault.d.mts +3 -1
- package/dist/lib/esm/vault.mjs +2 -2
- package/dist/styles.css +83 -1
- package/package.json +2 -2
- package/setting-components/folder-list-component/package.json +6 -0
- package/setting-components/hotkey-component/package.json +6 -0
- package/setting-components/list-component/package.json +6 -0
- package/setting-components/tag-list-component/package.json +6 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return "/";
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: "android"
|
|
14
|
+
};
|
|
15
|
+
const existingProcess = globalThis.process;
|
|
16
|
+
if (!existingProcess) {
|
|
17
|
+
globalThis.process = browserProcess;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (existingProcess.versions?.node) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const existingProcessRecord = existingProcess;
|
|
24
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
25
|
+
existingProcessRecord[key] ??= value;
|
|
26
|
+
}
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ensureBrowserProcess();
|
|
31
|
+
})();
|
|
32
|
+
|
|
33
|
+
import {
|
|
34
|
+
AbstractInputSuggest,
|
|
35
|
+
normalizePath,
|
|
36
|
+
prepareFuzzySearch
|
|
37
|
+
} from "obsidian";
|
|
38
|
+
import { CssClass } from "../css-class.mjs";
|
|
39
|
+
import { ListComponent } from "./list-component.mjs";
|
|
40
|
+
class FolderInputSuggest extends AbstractInputSuggest {
|
|
41
|
+
/**
|
|
42
|
+
* The input the suggest completes.
|
|
43
|
+
*/
|
|
44
|
+
inputEl;
|
|
45
|
+
/**
|
|
46
|
+
* Creates a new folder suggest.
|
|
47
|
+
*
|
|
48
|
+
* @param app - The Obsidian app.
|
|
49
|
+
* @param inputEl - The input.
|
|
50
|
+
*/
|
|
51
|
+
constructor(app, inputEl) {
|
|
52
|
+
super(app, inputEl);
|
|
53
|
+
this.inputEl = inputEl;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Renders a folder.
|
|
57
|
+
*
|
|
58
|
+
* @param folder - The folder.
|
|
59
|
+
* @param el - The element to render into.
|
|
60
|
+
*/
|
|
61
|
+
renderSuggestion(folder, el) {
|
|
62
|
+
el.setText(getFolderDisplayPath(folder));
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Puts the folder path into the input, dispatches an `input` event, then calls the `onSelect` callback.
|
|
66
|
+
*
|
|
67
|
+
* @param folder - The folder.
|
|
68
|
+
* @param $event - The event that picked it.
|
|
69
|
+
*/
|
|
70
|
+
selectSuggestion(folder, $event) {
|
|
71
|
+
this.setValue(getFolderDisplayPath(folder));
|
|
72
|
+
this.inputEl.dispatchEvent(new Event("input", { bubbles: true }));
|
|
73
|
+
super.selectSuggestion(folder, $event);
|
|
74
|
+
this.close();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Gets the folders matching the typed text.
|
|
78
|
+
*
|
|
79
|
+
* @param query - The typed text.
|
|
80
|
+
* @returns The folders, best match first.
|
|
81
|
+
*/
|
|
82
|
+
getSuggestions(query) {
|
|
83
|
+
const fuzzySearch = prepareFuzzySearch(query.trim());
|
|
84
|
+
const results = [];
|
|
85
|
+
for (const folder of this.app.vault.getAllFolders(true)) {
|
|
86
|
+
const match = fuzzySearch(getFolderDisplayPath(folder));
|
|
87
|
+
if (match) {
|
|
88
|
+
results.push({ folder, score: match.score });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
results.sort((result1, result2) => result2.score - result1.score);
|
|
92
|
+
return results.map((result) => result.folder);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
class FolderListComponent extends ListComponent {
|
|
96
|
+
/**
|
|
97
|
+
* The folder suggest attached to {@link ListComponent.newItemInputEl}.
|
|
98
|
+
*/
|
|
99
|
+
suggest;
|
|
100
|
+
/**
|
|
101
|
+
* Creates a new folder list component.
|
|
102
|
+
*
|
|
103
|
+
* @param containerEl - The container element.
|
|
104
|
+
* @param app - The Obsidian app.
|
|
105
|
+
*/
|
|
106
|
+
constructor(containerEl, app) {
|
|
107
|
+
super(containerEl, CssClass.FolderListComponent);
|
|
108
|
+
this.suggest = new FolderInputSuggest(app, this.newItemInputEl);
|
|
109
|
+
this.suggest.onSelect(() => {
|
|
110
|
+
this.addTypedItem();
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Normalizes a typed folder path.
|
|
115
|
+
*
|
|
116
|
+
* @param text - The typed text.
|
|
117
|
+
* @returns The normalized path, or `null` for empty text.
|
|
118
|
+
*/
|
|
119
|
+
normalizeItem(text) {
|
|
120
|
+
const path = text.trim();
|
|
121
|
+
return path ? normalizePath(path) : null;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function getFolderDisplayPath(folder) {
|
|
125
|
+
return folder.isRoot() ? "/" : folder.path;
|
|
126
|
+
}
|
|
127
|
+
export {
|
|
128
|
+
FolderInputSuggest,
|
|
129
|
+
FolderListComponent
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXR0aW5nLWNvbXBvbmVudHMvZm9sZGVyLWxpc3QtY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyBhIGNvbXBvbmVudCB0aGF0IGVkaXRzIGEgcmVvcmRlcmFibGUgbGlzdCBvZiBmb2xkZXJzLCB3aXRoIGEgZm9sZGVyIHN1Z2dlc3QuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIFRGb2xkZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBBYnN0cmFjdElucHV0U3VnZ2VzdCxcbiAgbm9ybWFsaXplUGF0aCxcbiAgcHJlcGFyZUZ1enp5U2VhcmNoXG59IGZyb20gJ29ic2lkaWFuJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBXZSBuZWVkIHRvIGltcG9ydCBgU2V0dGluZ0V4YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgU2V0dGluZ0V4IH0gZnJvbSAnLi4vc2V0dGluZy1leC50cyc7XG5cbmltcG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi4vY3NzLWNsYXNzLnRzJztcbmltcG9ydCB7IExpc3RDb21wb25lbnQgfSBmcm9tICcuL2xpc3QtY29tcG9uZW50LnRzJztcblxuaW50ZXJmYWNlIEZvbGRlck1hdGNoIHtcbiAgcmVhZG9ubHkgZm9sZGVyOiBURm9sZGVyO1xuICByZWFkb25seSBzY29yZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIFN1Z2dlc3RzIHRoZSB2YXVsdCdzIGZvbGRlcnMsIHRoZSByb290IGluY2x1ZGVkLCBpbiBhbiBgPGlucHV0PmAsIG1hdGNoaW5nIHRoZSB0eXBlZCB0ZXh0IGFnYWluc3QgdGhlIGZvbGRlciBwYXRoLlxuICovXG5leHBvcnQgY2xhc3MgRm9sZGVySW5wdXRTdWdnZXN0IGV4dGVuZHMgQWJzdHJhY3RJbnB1dFN1Z2dlc3Q8VEZvbGRlcj4ge1xuICAvKipcbiAgICogVGhlIGlucHV0IHRoZSBzdWdnZXN0IGNvbXBsZXRlcy5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBpbnB1dEVsOiBIVE1MSW5wdXRFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGZvbGRlciBzdWdnZXN0LlxuICAgKlxuICAgKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcC5cbiAgICogQHBhcmFtIGlucHV0RWwgLSBUaGUgaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoYXBwOiBBcHAsIGlucHV0RWw6IEhUTUxJbnB1dEVsZW1lbnQpIHtcbiAgICBzdXBlcihhcHAsIGlucHV0RWwpO1xuICAgIHRoaXMuaW5wdXRFbCA9IGlucHV0RWw7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyBhIGZvbGRlci5cbiAgICpcbiAgICogQHBhcmFtIGZvbGRlciAtIFRoZSBmb2xkZXIuXG4gICAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIHJlbmRlciBpbnRvLlxuICAgKi9cbiAgcHVibGljIHJlbmRlclN1Z2dlc3Rpb24oZm9sZGVyOiBURm9sZGVyLCBlbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBlbC5zZXRUZXh0KGdldEZvbGRlckRpc3BsYXlQYXRoKGZvbGRlcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1dHMgdGhlIGZvbGRlciBwYXRoIGludG8gdGhlIGlucHV0LCBkaXNwYXRjaGVzIGFuIGBpbnB1dGAgZXZlbnQsIHRoZW4gY2FsbHMgdGhlIGBvblNlbGVjdGAgY2FsbGJhY2suXG4gICAqXG4gICAqIEBwYXJhbSBmb2xkZXIgLSBUaGUgZm9sZGVyLlxuICAgKiBAcGFyYW0gJGV2ZW50IC0gVGhlIGV2ZW50IHRoYXQgcGlja2VkIGl0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHNlbGVjdFN1Z2dlc3Rpb24oZm9sZGVyOiBURm9sZGVyLCAkZXZlbnQ6IEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZXRWYWx1ZShnZXRGb2xkZXJEaXNwbGF5UGF0aChmb2xkZXIpKTtcbiAgICB0aGlzLmlucHV0RWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICBzdXBlci5zZWxlY3RTdWdnZXN0aW9uKGZvbGRlciwgJGV2ZW50KTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZm9sZGVycyBtYXRjaGluZyB0aGUgdHlwZWQgdGV4dC5cbiAgICpcbiAgICogQHBhcmFtIHF1ZXJ5IC0gVGhlIHR5cGVkIHRleHQuXG4gICAqIEByZXR1cm5zIFRoZSBmb2xkZXJzLCBiZXN0IG1hdGNoIGZpcnN0LlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldFN1Z2dlc3Rpb25zKHF1ZXJ5OiBzdHJpbmcpOiBURm9sZGVyW10ge1xuICAgIGNvbnN0IGZ1enp5U2VhcmNoID0gcHJlcGFyZUZ1enp5U2VhcmNoKHF1ZXJ5LnRyaW0oKSk7XG4gICAgY29uc3QgcmVzdWx0czogRm9sZGVyTWF0Y2hbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZm9sZGVyIG9mIHRoaXMuYXBwLnZhdWx0LmdldEFsbEZvbGRlcnModHJ1ZSkpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gZnV6enlTZWFyY2goZ2V0Rm9sZGVyRGlzcGxheVBhdGgoZm9sZGVyKSk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgcmVzdWx0cy5wdXNoKHsgZm9sZGVyLCBzY29yZTogbWF0Y2guc2NvcmUgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdHMuc29ydCgocmVzdWx0MSwgcmVzdWx0MikgPT4gcmVzdWx0Mi5zY29yZSAtIHJlc3VsdDEuc2NvcmUpO1xuICAgIHJldHVybiByZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuZm9sZGVyKTtcbiAgfVxufVxuXG4vKipcbiAqIEEge0BsaW5rIExpc3RDb21wb25lbnR9IG9mIHZhdWx0IGZvbGRlciBwYXRoczogdGhlIGFkZCByb3cgc3VnZ2VzdHMgdGhlIHZhdWx0J3MgZm9sZGVycywgYW5kIGEgdHlwZWQgcGF0aCBpc1xuICogbm9ybWFsaXplZCB3aXRoIE9ic2lkaWFuJ3MgYG5vcm1hbGl6ZVBhdGhgLCBzbyB0aGUgcm9vdCByZWFkcyBhcyBgL2AuIEEgcGF0aCBuZWVkIG5vdCBleGlzdCB5ZXQuXG4gKlxuICogWW91IGNhbiBhZGQgdGhpcyBjb21wb25lbnQgdXNpbmcge0BsaW5rIFNldHRpbmdFeC5hZGRGb2xkZXJMaXN0fS5cbiAqL1xuZXhwb3J0IGNsYXNzIEZvbGRlckxpc3RDb21wb25lbnQgZXh0ZW5kcyBMaXN0Q29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgc3VnZ2VzdCBhdHRhY2hlZCB0byB7QGxpbmsgTGlzdENvbXBvbmVudC5uZXdJdGVtSW5wdXRFbH0uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3VnZ2VzdDogRm9sZGVySW5wdXRTdWdnZXN0O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGZvbGRlciBsaXN0IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRhaW5lckVsIC0gVGhlIGNvbnRhaW5lciBlbGVtZW50LlxuICAgKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb250YWluZXJFbDogSFRNTEVsZW1lbnQsIGFwcDogQXBwKSB7XG4gICAgc3VwZXIoY29udGFpbmVyRWwsIENzc0NsYXNzLkZvbGRlckxpc3RDb21wb25lbnQpO1xuICAgIHRoaXMuc3VnZ2VzdCA9IG5ldyBGb2xkZXJJbnB1dFN1Z2dlc3QoYXBwLCB0aGlzLm5ld0l0ZW1JbnB1dEVsKTtcbiAgICB0aGlzLnN1Z2dlc3Qub25TZWxlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5hZGRUeXBlZEl0ZW0oKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemVzIGEgdHlwZWQgZm9sZGVyIHBhdGguXG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGhlIHR5cGVkIHRleHQuXG4gICAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHBhdGgsIG9yIGBudWxsYCBmb3IgZW1wdHkgdGV4dC5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBub3JtYWxpemVJdGVtKHRleHQ6IHN0cmluZyk6IG51bGwgfCBzdHJpbmcge1xuICAgIGNvbnN0IHBhdGggPSB0ZXh0LnRyaW0oKTtcbiAgICByZXR1cm4gcGF0aCA/IG5vcm1hbGl6ZVBhdGgocGF0aCkgOiBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEZvbGRlckRpc3BsYXlQYXRoKGZvbGRlcjogVEZvbGRlcik6IHN0cmluZyB7XG4gIHJldHVybiBmb2xkZXIuaXNSb290KCkgPyAnLycgOiBmb2xkZXIucGF0aDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFLUCxTQUFTLGdCQUFnQjtBQUN6QixTQUFTLHFCQUFxQjtBQVV2QixNQUFNLDJCQUEyQixxQkFBOEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUlqRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUVosWUFBWSxLQUFVLFNBQTJCO0FBQ3RELFVBQU0sS0FBSyxPQUFPO0FBQ2xCLFNBQUssVUFBVTtBQUFBLEVBQ2pCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxpQkFBaUIsUUFBaUIsSUFBdUI7QUFDOUQsT0FBRyxRQUFRLHFCQUFxQixNQUFNLENBQUM7QUFBQSxFQUN6QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLGlCQUFpQixRQUFpQixRQUEwQztBQUMxRixTQUFLLFNBQVMscUJBQXFCLE1BQU0sQ0FBQztBQUMxQyxTQUFLLFFBQVEsY0FBYyxJQUFJLE1BQU0sU0FBUyxFQUFFLFNBQVMsS0FBSyxDQUFDLENBQUM7QUFDaEUsVUFBTSxpQkFBaUIsUUFBUSxNQUFNO0FBQ3JDLFNBQUssTUFBTTtBQUFBLEVBQ2I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFtQixlQUFlLE9BQTBCO0FBQzFELFVBQU0sY0FBYyxtQkFBbUIsTUFBTSxLQUFLLENBQUM7QUFDbkQsVUFBTSxVQUF5QixDQUFDO0FBQ2hDLGVBQVcsVUFBVSxLQUFLLElBQUksTUFBTSxjQUFjLElBQUksR0FBRztBQUN2RCxZQUFNLFFBQVEsWUFBWSxxQkFBcUIsTUFBTSxDQUFDO0FBQ3RELFVBQUksT0FBTztBQUNULGdCQUFRLEtBQUssRUFBRSxRQUFRLE9BQU8sTUFBTSxNQUFNLENBQUM7QUFBQSxNQUM3QztBQUFBLElBQ0Y7QUFDQSxZQUFRLEtBQUssQ0FBQyxTQUFTLFlBQVksUUFBUSxRQUFRLFFBQVEsS0FBSztBQUNoRSxXQUFPLFFBQVEsSUFBSSxDQUFDLFdBQVcsT0FBTyxNQUFNO0FBQUEsRUFDOUM7QUFDRjtBQVFPLE1BQU0sNEJBQTRCLGNBQWM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUlyQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUVQsWUFBWSxhQUEwQixLQUFVO0FBQ3JELFVBQU0sYUFBYSxTQUFTLG1CQUFtQjtBQUMvQyxTQUFLLFVBQVUsSUFBSSxtQkFBbUIsS0FBSyxLQUFLLGNBQWM7QUFDOUQsU0FBSyxRQUFRLFNBQVMsTUFBTTtBQUMxQixXQUFLLGFBQWE7QUFBQSxJQUNwQixDQUFDO0FBQUEsRUFDSDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUW1CLGNBQWMsTUFBNkI7QUFDNUQsVUFBTSxPQUFPLEtBQUssS0FBSztBQUN2QixXQUFPLE9BQU8sY0FBYyxJQUFJLElBQUk7QUFBQSxFQUN0QztBQUNGO0FBRUEsU0FBUyxxQkFBcUIsUUFBeUI7QUFDckQsU0FBTyxPQUFPLE9BQU8sSUFBSSxNQUFNLE9BQU87QUFDeEM7IiwibmFtZXMiOltdfQ==
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.mts" />
|
|
2
|
+
/// <reference lib="dom" />
|
|
3
|
+
/**
|
|
4
|
+
* @file
|
|
5
|
+
*
|
|
6
|
+
* Contains a component that records a hotkey.
|
|
7
|
+
*/
|
|
8
|
+
import type { Hotkey } from 'obsidian';
|
|
9
|
+
import { ExtraButtonComponent, ValueComponent } from 'obsidian';
|
|
10
|
+
import type { ValueComponentWithChangeTracking } from './value-component-with-change-tracking.mjs';
|
|
11
|
+
/**
|
|
12
|
+
* A component that records a hotkey: click the button, then press the key combination. Escape cancels the recording,
|
|
13
|
+
* and the clear button sets the value to `null`.
|
|
14
|
+
*
|
|
15
|
+
* The value is a {@link Hotkey}, the shape Obsidian stores in `hotkeys.json`, so it can be handed to `Scope.register`.
|
|
16
|
+
*
|
|
17
|
+
* You can add this component using {@link SettingEx.addHotkey}.
|
|
18
|
+
*
|
|
19
|
+
* In order to add the styles for the component, use {@link initPluginContext} in your plugin's `onload()` function.
|
|
20
|
+
*
|
|
21
|
+
* Alternatively, you can copy styles from {@link https://unpkg.com/@mnaoumov/obsidian-lib/dist/styles.css}.
|
|
22
|
+
*/
|
|
23
|
+
export declare class HotkeyComponent extends ValueComponent<Hotkey | null> implements ValueComponentWithChangeTracking<Hotkey | null> {
|
|
24
|
+
/**
|
|
25
|
+
* The button that shows the hotkey and starts the recording.
|
|
26
|
+
*/
|
|
27
|
+
readonly buttonEl: HTMLButtonElement;
|
|
28
|
+
/**
|
|
29
|
+
* The button that clears the hotkey.
|
|
30
|
+
*/
|
|
31
|
+
readonly clearButton: ExtraButtonComponent;
|
|
32
|
+
/**
|
|
33
|
+
* Whether the component is waiting for a key press.
|
|
34
|
+
*
|
|
35
|
+
* @returns Whether it is recording.
|
|
36
|
+
*/
|
|
37
|
+
get isRecording(): boolean;
|
|
38
|
+
private _isRecording;
|
|
39
|
+
private changeCallback?;
|
|
40
|
+
private value;
|
|
41
|
+
/**
|
|
42
|
+
* Creates a new hotkey component.
|
|
43
|
+
*
|
|
44
|
+
* @param containerEl - The container element.
|
|
45
|
+
*/
|
|
46
|
+
constructor(containerEl: HTMLElement);
|
|
47
|
+
/**
|
|
48
|
+
* Gets the hotkey.
|
|
49
|
+
*
|
|
50
|
+
* @returns The hotkey, or `null` when none is set.
|
|
51
|
+
*/
|
|
52
|
+
getValue(): Hotkey | null;
|
|
53
|
+
/**
|
|
54
|
+
* Sets the callback to be called when the user records or clears a hotkey.
|
|
55
|
+
*
|
|
56
|
+
* @param callback - The callback.
|
|
57
|
+
* @returns The component.
|
|
58
|
+
*/
|
|
59
|
+
onChange(callback: (newValue: Hotkey | null) => void): this;
|
|
60
|
+
/**
|
|
61
|
+
* Sets the disabled state of the component.
|
|
62
|
+
*
|
|
63
|
+
* @param isDisabled - The disabled state.
|
|
64
|
+
* @returns The component.
|
|
65
|
+
*/
|
|
66
|
+
setDisabled(isDisabled: boolean): this;
|
|
67
|
+
/**
|
|
68
|
+
* Sets the hotkey.
|
|
69
|
+
*
|
|
70
|
+
* @param value - The hotkey, or `null` to clear it.
|
|
71
|
+
* @returns The component.
|
|
72
|
+
*/
|
|
73
|
+
setValue(value: Hotkey | null): this;
|
|
74
|
+
/**
|
|
75
|
+
* Starts waiting for a key press.
|
|
76
|
+
*/
|
|
77
|
+
startRecording(): void;
|
|
78
|
+
/**
|
|
79
|
+
* Stops waiting for a key press, keeping the current hotkey.
|
|
80
|
+
*/
|
|
81
|
+
stopRecording(): void;
|
|
82
|
+
private onKeyDown;
|
|
83
|
+
private render;
|
|
84
|
+
private setValueAndNotify;
|
|
85
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return "/";
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: "android"
|
|
14
|
+
};
|
|
15
|
+
const existingProcess = globalThis.process;
|
|
16
|
+
if (!existingProcess) {
|
|
17
|
+
globalThis.process = browserProcess;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (existingProcess.versions?.node) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const existingProcessRecord = existingProcess;
|
|
24
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
25
|
+
existingProcessRecord[key] ??= value;
|
|
26
|
+
}
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ensureBrowserProcess();
|
|
31
|
+
})();
|
|
32
|
+
|
|
33
|
+
import {
|
|
34
|
+
ExtraButtonComponent,
|
|
35
|
+
ValueComponent
|
|
36
|
+
} from "obsidian";
|
|
37
|
+
import { CssClass } from "../css-class.mjs";
|
|
38
|
+
import {
|
|
39
|
+
formatHotkey,
|
|
40
|
+
getHotkeyFromKeyboardEvent
|
|
41
|
+
} from "../hotkey.mjs";
|
|
42
|
+
import { t } from "../i18n/i18n.mjs";
|
|
43
|
+
import { addPluginCssClasses } from "../plugin/plugin-context.mjs";
|
|
44
|
+
class HotkeyComponent extends ValueComponent {
|
|
45
|
+
/**
|
|
46
|
+
* The button that shows the hotkey and starts the recording.
|
|
47
|
+
*/
|
|
48
|
+
buttonEl;
|
|
49
|
+
/**
|
|
50
|
+
* The button that clears the hotkey.
|
|
51
|
+
*/
|
|
52
|
+
clearButton;
|
|
53
|
+
/**
|
|
54
|
+
* Whether the component is waiting for a key press.
|
|
55
|
+
*
|
|
56
|
+
* @returns Whether it is recording.
|
|
57
|
+
*/
|
|
58
|
+
get isRecording() {
|
|
59
|
+
return this._isRecording;
|
|
60
|
+
}
|
|
61
|
+
_isRecording = false;
|
|
62
|
+
changeCallback;
|
|
63
|
+
value = null;
|
|
64
|
+
/**
|
|
65
|
+
* Creates a new hotkey component.
|
|
66
|
+
*
|
|
67
|
+
* @param containerEl - The container element.
|
|
68
|
+
*/
|
|
69
|
+
constructor(containerEl) {
|
|
70
|
+
super();
|
|
71
|
+
addPluginCssClasses(containerEl, CssClass.HotkeyComponent);
|
|
72
|
+
this.buttonEl = containerEl.createEl("button");
|
|
73
|
+
this.buttonEl.addEventListener("click", this.startRecording.bind(this));
|
|
74
|
+
this.buttonEl.addEventListener("keydown", this.onKeyDown.bind(this));
|
|
75
|
+
this.buttonEl.addEventListener("blur", this.stopRecording.bind(this));
|
|
76
|
+
this.clearButton = new ExtraButtonComponent(containerEl).setIcon("x").setTooltip(t(($) => $.obsidianLib.hotkey.clear)).onClick(() => {
|
|
77
|
+
this.setValueAndNotify(null);
|
|
78
|
+
});
|
|
79
|
+
this.render();
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Gets the hotkey.
|
|
83
|
+
*
|
|
84
|
+
* @returns The hotkey, or `null` when none is set.
|
|
85
|
+
*/
|
|
86
|
+
getValue() {
|
|
87
|
+
return this.value;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Sets the callback to be called when the user records or clears a hotkey.
|
|
91
|
+
*
|
|
92
|
+
* @param callback - The callback.
|
|
93
|
+
* @returns The component.
|
|
94
|
+
*/
|
|
95
|
+
onChange(callback) {
|
|
96
|
+
this.changeCallback = callback;
|
|
97
|
+
return this;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Sets the disabled state of the component.
|
|
101
|
+
*
|
|
102
|
+
* @param isDisabled - The disabled state.
|
|
103
|
+
* @returns The component.
|
|
104
|
+
*/
|
|
105
|
+
setDisabled(isDisabled) {
|
|
106
|
+
super.setDisabled(isDisabled);
|
|
107
|
+
this.buttonEl.disabled = isDisabled;
|
|
108
|
+
this.clearButton.setDisabled(isDisabled);
|
|
109
|
+
if (isDisabled) {
|
|
110
|
+
this.stopRecording();
|
|
111
|
+
}
|
|
112
|
+
return this;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Sets the hotkey.
|
|
116
|
+
*
|
|
117
|
+
* @param value - The hotkey, or `null` to clear it.
|
|
118
|
+
* @returns The component.
|
|
119
|
+
*/
|
|
120
|
+
setValue(value) {
|
|
121
|
+
this.value = value;
|
|
122
|
+
this.render();
|
|
123
|
+
return this;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Starts waiting for a key press.
|
|
127
|
+
*/
|
|
128
|
+
startRecording() {
|
|
129
|
+
if (this.disabled) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
this._isRecording = true;
|
|
133
|
+
this.render();
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Stops waiting for a key press, keeping the current hotkey.
|
|
137
|
+
*/
|
|
138
|
+
stopRecording() {
|
|
139
|
+
this._isRecording = false;
|
|
140
|
+
this.render();
|
|
141
|
+
}
|
|
142
|
+
onKeyDown($event) {
|
|
143
|
+
if (!this._isRecording) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
$event.preventDefault();
|
|
147
|
+
$event.stopPropagation();
|
|
148
|
+
if ($event.key === "Escape") {
|
|
149
|
+
this.stopRecording();
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const hotkey = getHotkeyFromKeyboardEvent({ event: $event });
|
|
153
|
+
if (!hotkey) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
this._isRecording = false;
|
|
157
|
+
this.setValueAndNotify(hotkey);
|
|
158
|
+
}
|
|
159
|
+
render() {
|
|
160
|
+
if (this._isRecording) {
|
|
161
|
+
this.buttonEl.setText(t(($) => $.obsidianLib.hotkey.pressHotkey));
|
|
162
|
+
} else if (this.value) {
|
|
163
|
+
this.buttonEl.setText(formatHotkey({ hotkey: this.value }));
|
|
164
|
+
} else {
|
|
165
|
+
this.buttonEl.setText(t(($) => $.obsidianLib.hotkey.notSet));
|
|
166
|
+
}
|
|
167
|
+
this.buttonEl.toggleClass(CssClass.IsActive, this._isRecording);
|
|
168
|
+
this.buttonEl.toggleClass(CssClass.IsPlaceholder, !this._isRecording && !this.value);
|
|
169
|
+
}
|
|
170
|
+
setValueAndNotify(value) {
|
|
171
|
+
this.setValue(value);
|
|
172
|
+
this.changeCallback?.(value);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
export {
|
|
176
|
+
HotkeyComponent
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXR0aW5nLWNvbXBvbmVudHMvaG90a2V5LWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgYSBjb21wb25lbnQgdGhhdCByZWNvcmRzIGEgaG90a2V5LlxuICovXG5cbmltcG9ydCB0eXBlIHsgSG90a2V5IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBFeHRyYUJ1dHRvbkNvbXBvbmVudCxcbiAgVmFsdWVDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzIC0tIFdlIG5lZWQgdG8gaW1wb3J0IGBpbml0UGx1Z2luQ29udGV4dGAgdG8gdXNlIGl0IGluIHRoZSB0c2RvY3MuXG5pbXBvcnQgdHlwZSB7IGluaXRQbHVnaW5Db250ZXh0IH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgLS0gV2UgbmVlZCB0byBpbXBvcnQgYFNldHRpbmdFeGAgdG8gdXNlIGl0IGluIHRoZSB0c2RvY3MuXG5pbXBvcnQgdHlwZSB7IFNldHRpbmdFeCB9IGZyb20gJy4uL3NldHRpbmctZXgudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZyB9IGZyb20gJy4vdmFsdWUtY29tcG9uZW50LXdpdGgtY2hhbmdlLXRyYWNraW5nLnRzJztcblxuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi9jc3MtY2xhc3MudHMnO1xuaW1wb3J0IHtcbiAgZm9ybWF0SG90a2V5LFxuICBnZXRIb3RrZXlGcm9tS2V5Ym9hcmRFdmVudFxufSBmcm9tICcuLi9ob3RrZXkudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IHJlY29yZHMgYSBob3RrZXk6IGNsaWNrIHRoZSBidXR0b24sIHRoZW4gcHJlc3MgdGhlIGtleSBjb21iaW5hdGlvbi4gRXNjYXBlIGNhbmNlbHMgdGhlIHJlY29yZGluZyxcbiAqIGFuZCB0aGUgY2xlYXIgYnV0dG9uIHNldHMgdGhlIHZhbHVlIHRvIGBudWxsYC5cbiAqXG4gKiBUaGUgdmFsdWUgaXMgYSB7QGxpbmsgSG90a2V5fSwgdGhlIHNoYXBlIE9ic2lkaWFuIHN0b3JlcyBpbiBgaG90a2V5cy5qc29uYCwgc28gaXQgY2FuIGJlIGhhbmRlZCB0byBgU2NvcGUucmVnaXN0ZXJgLlxuICpcbiAqIFlvdSBjYW4gYWRkIHRoaXMgY29tcG9uZW50IHVzaW5nIHtAbGluayBTZXR0aW5nRXguYWRkSG90a2V5fS5cbiAqXG4gKiBJbiBvcmRlciB0byBhZGQgdGhlIHN0eWxlcyBmb3IgdGhlIGNvbXBvbmVudCwgdXNlIHtAbGluayBpbml0UGx1Z2luQ29udGV4dH0gaW4geW91ciBwbHVnaW4ncyBgb25sb2FkKClgIGZ1bmN0aW9uLlxuICpcbiAqIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gY29weSBzdHlsZXMgZnJvbSB7QGxpbmsgaHR0cHM6Ly91bnBrZy5jb20vQG1uYW91bW92L29ic2lkaWFuLWxpYi9kaXN0L3N0eWxlcy5jc3N9LlxuICovXG5leHBvcnQgY2xhc3MgSG90a2V5Q29tcG9uZW50IGV4dGVuZHMgVmFsdWVDb21wb25lbnQ8SG90a2V5IHwgbnVsbD4gaW1wbGVtZW50cyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxIb3RrZXkgfCBudWxsPiB7XG4gIC8qKlxuICAgKiBUaGUgYnV0dG9uIHRoYXQgc2hvd3MgdGhlIGhvdGtleSBhbmQgc3RhcnRzIHRoZSByZWNvcmRpbmcuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYnV0dG9uRWw6IEhUTUxCdXR0b25FbGVtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgYnV0dG9uIHRoYXQgY2xlYXJzIHRoZSBob3RrZXkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2xlYXJCdXR0b246IEV4dHJhQnV0dG9uQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgd2FpdGluZyBmb3IgYSBrZXkgcHJlc3MuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgaXQgaXMgcmVjb3JkaW5nLlxuICAgKi9cbiAgcHVibGljIGdldCBpc1JlY29yZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNSZWNvcmRpbmc7XG4gIH1cblxuICBwcml2YXRlIF9pc1JlY29yZGluZyA9IGZhbHNlO1xuICBwcml2YXRlIGNoYW5nZUNhbGxiYWNrPzogKG5ld1ZhbHVlOiBIb3RrZXkgfCBudWxsKSA9PiB2b2lkO1xuICBwcml2YXRlIHZhbHVlOiBIb3RrZXkgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBob3RrZXkgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gY29udGFpbmVyRWwgLSBUaGUgY29udGFpbmVyIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KSB7XG4gICAgc3VwZXIoKTtcbiAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKGNvbnRhaW5lckVsLCBDc3NDbGFzcy5Ib3RrZXlDb21wb25lbnQpO1xuICAgIHRoaXMuYnV0dG9uRWwgPSBjb250YWluZXJFbC5jcmVhdGVFbCgnYnV0dG9uJyk7XG4gICAgdGhpcy5idXR0b25FbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuc3RhcnRSZWNvcmRpbmcuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5idXR0b25FbC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5vbktleURvd24uYmluZCh0aGlzKSk7XG4gICAgdGhpcy5idXR0b25FbC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgdGhpcy5zdG9wUmVjb3JkaW5nLmJpbmQodGhpcykpO1xuICAgIHRoaXMuY2xlYXJCdXR0b24gPSBuZXcgRXh0cmFCdXR0b25Db21wb25lbnQoY29udGFpbmVyRWwpXG4gICAgICAuc2V0SWNvbigneCcpXG4gICAgICAuc2V0VG9vbHRpcCh0KCgkKSA9PiAkLm9ic2lkaWFuTGliLmhvdGtleS5jbGVhcikpXG4gICAgICAub25DbGljaygoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWVBbmROb3RpZnkobnVsbCk7XG4gICAgICB9KTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhvdGtleS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGhvdGtleSwgb3IgYG51bGxgIHdoZW4gbm9uZSBpcyBzZXQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0VmFsdWUoKTogSG90a2V5IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHVzZXIgcmVjb3JkcyBvciBjbGVhcnMgYSBob3RrZXkuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjay5cbiAgICogQHJldHVybnMgVGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBvbkNoYW5nZShjYWxsYmFjazogKG5ld1ZhbHVlOiBIb3RrZXkgfCBudWxsKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgdGhpcy5jaGFuZ2VDYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBpc0Rpc2FibGVkIC0gVGhlIGRpc2FibGVkIHN0YXRlLlxuICAgKiBAcmV0dXJucyBUaGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHNldERpc2FibGVkKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICBzdXBlci5zZXREaXNhYmxlZChpc0Rpc2FibGVkKTtcbiAgICB0aGlzLmJ1dHRvbkVsLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNsZWFyQnV0dG9uLnNldERpc2FibGVkKGlzRGlzYWJsZWQpO1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLnN0b3BSZWNvcmRpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgaG90a2V5LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgaG90a2V5LCBvciBgbnVsbGAgdG8gY2xlYXIgaXQuXG4gICAqIEByZXR1cm5zIFRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgc2V0VmFsdWUodmFsdWU6IEhvdGtleSB8IG51bGwpOiB0aGlzIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgd2FpdGluZyBmb3IgYSBrZXkgcHJlc3MuXG4gICAqL1xuICBwdWJsaWMgc3RhcnRSZWNvcmRpbmcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5faXNSZWNvcmRpbmcgPSB0cnVlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcHMgd2FpdGluZyBmb3IgYSBrZXkgcHJlc3MsIGtlZXBpbmcgdGhlIGN1cnJlbnQgaG90a2V5LlxuICAgKi9cbiAgcHVibGljIHN0b3BSZWNvcmRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5faXNSZWNvcmRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbktleURvd24oJGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pc1JlY29yZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKCRldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLnN0b3BSZWNvcmRpbmcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaG90a2V5ID0gZ2V0SG90a2V5RnJvbUtleWJvYXJkRXZlbnQoeyBldmVudDogJGV2ZW50IH0pO1xuICAgIGlmICghaG90a2V5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2lzUmVjb3JkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5zZXRWYWx1ZUFuZE5vdGlmeShob3RrZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzUmVjb3JkaW5nKSB7XG4gICAgICB0aGlzLmJ1dHRvbkVsLnNldFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkxpYi5ob3RrZXkucHJlc3NIb3RrZXkpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMuYnV0dG9uRWwuc2V0VGV4dChmb3JtYXRIb3RrZXkoeyBob3RrZXk6IHRoaXMudmFsdWUgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJ1dHRvbkVsLnNldFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkxpYi5ob3RrZXkubm90U2V0KSk7XG4gICAgfVxuICAgIHRoaXMuYnV0dG9uRWwudG9nZ2xlQ2xhc3MoQ3NzQ2xhc3MuSXNBY3RpdmUsIHRoaXMuX2lzUmVjb3JkaW5nKTtcbiAgICB0aGlzLmJ1dHRvbkVsLnRvZ2dsZUNsYXNzKENzc0NsYXNzLklzUGxhY2Vob2xkZXIsICF0aGlzLl9pc1JlY29yZGluZyAmJiAhdGhpcy52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHNldFZhbHVlQW5kTm90aWZ5KHZhbHVlOiBIb3RrZXkgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5jaGFuZ2VDYWxsYmFjaz8uKHZhbHVlKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBUVAsU0FBUyxnQkFBZ0I7QUFDekI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLFNBQVM7QUFDbEIsU0FBUywyQkFBMkI7QUFjN0IsTUFBTSx3QkFBd0IsZUFBeUY7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUk1RztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPaEIsSUFBVyxjQUF1QjtBQUNoQyxXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUEsRUFFUSxlQUFlO0FBQUEsRUFDZjtBQUFBLEVBQ0EsUUFBdUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPeEIsWUFBWSxhQUEwQjtBQUMzQyxVQUFNO0FBQ04sd0JBQW9CLGFBQWEsU0FBUyxlQUFlO0FBQ3pELFNBQUssV0FBVyxZQUFZLFNBQVMsUUFBUTtBQUM3QyxTQUFLLFNBQVMsaUJBQWlCLFNBQVMsS0FBSyxlQUFlLEtBQUssSUFBSSxDQUFDO0FBQ3RFLFNBQUssU0FBUyxpQkFBaUIsV0FBVyxLQUFLLFVBQVUsS0FBSyxJQUFJLENBQUM7QUFDbkUsU0FBSyxTQUFTLGlCQUFpQixRQUFRLEtBQUssY0FBYyxLQUFLLElBQUksQ0FBQztBQUNwRSxTQUFLLGNBQWMsSUFBSSxxQkFBcUIsV0FBVyxFQUNwRCxRQUFRLEdBQUcsRUFDWCxXQUFXLEVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxPQUFPLEtBQUssQ0FBQyxFQUMvQyxRQUFRLE1BQU07QUFDYixXQUFLLGtCQUFrQixJQUFJO0FBQUEsSUFDN0IsQ0FBQztBQUNILFNBQUssT0FBTztBQUFBLEVBQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPZ0IsV0FBMEI7QUFDeEMsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sU0FBUyxVQUFtRDtBQUNqRSxTQUFLLGlCQUFpQjtBQUN0QixXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLFlBQVksWUFBMkI7QUFDckQsVUFBTSxZQUFZLFVBQVU7QUFDNUIsU0FBSyxTQUFTLFdBQVc7QUFDekIsU0FBSyxZQUFZLFlBQVksVUFBVTtBQUN2QyxRQUFJLFlBQVk7QUFDZCxXQUFLLGNBQWM7QUFBQSxJQUNyQjtBQUNBLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsU0FBUyxPQUE0QjtBQUNuRCxTQUFLLFFBQVE7QUFDYixTQUFLLE9BQU87QUFDWixXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS08saUJBQXVCO0FBQzVCLFFBQUksS0FBSyxVQUFVO0FBQ2pCO0FBQUEsSUFDRjtBQUNBLFNBQUssZUFBZTtBQUNwQixTQUFLLE9BQU87QUFBQSxFQUNkO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxnQkFBc0I7QUFDM0IsU0FBSyxlQUFlO0FBQ3BCLFNBQUssT0FBTztBQUFBLEVBQ2Q7QUFBQSxFQUVRLFVBQVUsUUFBNkI7QUFDN0MsUUFBSSxDQUFDLEtBQUssY0FBYztBQUN0QjtBQUFBLElBQ0Y7QUFDQSxXQUFPLGVBQWU7QUFDdEIsV0FBTyxnQkFBZ0I7QUFDdkIsUUFBSSxPQUFPLFFBQVEsVUFBVTtBQUMzQixXQUFLLGNBQWM7QUFDbkI7QUFBQSxJQUNGO0FBQ0EsVUFBTSxTQUFTLDJCQUEyQixFQUFFLE9BQU8sT0FBTyxDQUFDO0FBQzNELFFBQUksQ0FBQyxRQUFRO0FBQ1g7QUFBQSxJQUNGO0FBQ0EsU0FBSyxlQUFlO0FBQ3BCLFNBQUssa0JBQWtCLE1BQU07QUFBQSxFQUMvQjtBQUFBLEVBRVEsU0FBZTtBQUNyQixRQUFJLEtBQUssY0FBYztBQUNyQixXQUFLLFNBQVMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLFlBQVksT0FBTyxXQUFXLENBQUM7QUFBQSxJQUNsRSxXQUFXLEtBQUssT0FBTztBQUNyQixXQUFLLFNBQVMsUUFBUSxhQUFhLEVBQUUsUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDO0FBQUEsSUFDNUQsT0FBTztBQUNMLFdBQUssU0FBUyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxPQUFPLE1BQU0sQ0FBQztBQUFBLElBQzdEO0FBQ0EsU0FBSyxTQUFTLFlBQVksU0FBUyxVQUFVLEtBQUssWUFBWTtBQUM5RCxTQUFLLFNBQVMsWUFBWSxTQUFTLGVBQWUsQ0FBQyxLQUFLLGdCQUFnQixDQUFDLEtBQUssS0FBSztBQUFBLEVBQ3JGO0FBQUEsRUFFUSxrQkFBa0IsT0FBNEI7QUFDcEQsU0FBSyxTQUFTLEtBQUs7QUFDbkIsU0FBSyxpQkFBaUIsS0FBSztBQUFBLEVBQzdCO0FBQ0Y7IiwibmFtZXMiOltdfQ==
|
|
@@ -5,6 +5,9 @@ export * as 'date-component' from './date-component.mjs';
|
|
|
5
5
|
export * as 'date-time-component' from './date-time-component.mjs';
|
|
6
6
|
export * as 'email-component' from './email-component.mjs';
|
|
7
7
|
export * as 'file-component' from './file-component.mjs';
|
|
8
|
+
export * as 'folder-list-component' from './folder-list-component.mjs';
|
|
9
|
+
export * as 'hotkey-component' from './hotkey-component.mjs';
|
|
10
|
+
export * as 'list-component' from './list-component.mjs';
|
|
8
11
|
export * as 'month-component' from './month-component.mjs';
|
|
9
12
|
export * as 'multiple-dropdown-component' from './multiple-dropdown-component.mjs';
|
|
10
13
|
export * as 'multiple-email-component' from './multiple-email-component.mjs';
|
|
@@ -13,6 +16,7 @@ export * as 'multiple-text-component' from './multiple-text-component.mjs';
|
|
|
13
16
|
export * as 'number-component' from './number-component.mjs';
|
|
14
17
|
export * as 'password-component' from './password-component.mjs';
|
|
15
18
|
export * as 'setting-component-wrapper' from './setting-component-wrapper.mjs';
|
|
19
|
+
export * as 'tag-list-component' from './tag-list-component.mjs';
|
|
16
20
|
export * as 'telephone-component' from './telephone-component.mjs';
|
|
17
21
|
export * as 'text-based-component' from './text-based-component.mjs';
|
|
18
22
|
export * as 'time-component' from './time-component.mjs';
|
|
@@ -9,6 +9,9 @@ import * as date_component from "./date-component.mjs";
|
|
|
9
9
|
import * as date_time_component from "./date-time-component.mjs";
|
|
10
10
|
import * as email_component from "./email-component.mjs";
|
|
11
11
|
import * as file_component from "./file-component.mjs";
|
|
12
|
+
import * as folder_list_component from "./folder-list-component.mjs";
|
|
13
|
+
import * as hotkey_component from "./hotkey-component.mjs";
|
|
14
|
+
import * as list_component from "./list-component.mjs";
|
|
12
15
|
import * as month_component from "./month-component.mjs";
|
|
13
16
|
import * as multiple_dropdown_component from "./multiple-dropdown-component.mjs";
|
|
14
17
|
import * as multiple_email_component from "./multiple-email-component.mjs";
|
|
@@ -17,6 +20,7 @@ import * as multiple_text_component from "./multiple-text-component.mjs";
|
|
|
17
20
|
import * as number_component from "./number-component.mjs";
|
|
18
21
|
import * as password_component from "./password-component.mjs";
|
|
19
22
|
import * as setting_component_wrapper from "./setting-component-wrapper.mjs";
|
|
23
|
+
import * as tag_list_component from "./tag-list-component.mjs";
|
|
20
24
|
import * as telephone_component from "./telephone-component.mjs";
|
|
21
25
|
import * as text_based_component from "./text-based-component.mjs";
|
|
22
26
|
import * as time_component from "./time-component.mjs";
|
|
@@ -36,6 +40,9 @@ export {
|
|
|
36
40
|
date_time_component as "date-time-component",
|
|
37
41
|
email_component as "email-component",
|
|
38
42
|
file_component as "file-component",
|
|
43
|
+
folder_list_component as "folder-list-component",
|
|
44
|
+
hotkey_component as "hotkey-component",
|
|
45
|
+
list_component as "list-component",
|
|
39
46
|
month_component as "month-component",
|
|
40
47
|
multiple_dropdown_component as "multiple-dropdown-component",
|
|
41
48
|
multiple_email_component as "multiple-email-component",
|
|
@@ -44,6 +51,7 @@ export {
|
|
|
44
51
|
number_component as "number-component",
|
|
45
52
|
password_component as "password-component",
|
|
46
53
|
setting_component_wrapper as "setting-component-wrapper",
|
|
54
|
+
tag_list_component as "tag-list-component",
|
|
47
55
|
telephone_component as "telephone-component",
|
|
48
56
|
text_based_component as "text-based-component",
|
|
49
57
|
time_component as "time-component",
|
|
@@ -57,4 +65,4 @@ export {
|
|
|
57
65
|
value_component_with_change_tracking as "value-component-with-change-tracking",
|
|
58
66
|
week_component as "week-component"
|
|
59
67
|
};
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NldHRpbmctY29tcG9uZW50cy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdjaGVja2JveC1jb21wb25lbnQnIGZyb20gJy4vY2hlY2tib3gtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdjb2RlLWhpZ2hsaWdodGVyLWNvbXBvbmVudCcgZnJvbSAnLi9jb2RlLWhpZ2hsaWdodGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnZGF0ZS1jb21wb25lbnQnIGZyb20gJy4vZGF0ZS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2RhdGUtdGltZS1jb21wb25lbnQnIGZyb20gJy4vZGF0ZS10aW1lLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnZW1haWwtY29tcG9uZW50JyBmcm9tICcuL2VtYWlsLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnZmlsZS1jb21wb25lbnQnIGZyb20gJy4vZmlsZS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2ZvbGRlci1saXN0LWNvbXBvbmVudCcgZnJvbSAnLi9mb2xkZXItbGlzdC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2hvdGtleS1jb21wb25lbnQnIGZyb20gJy4vaG90a2V5LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnbGlzdC1jb21wb25lbnQnIGZyb20gJy4vbGlzdC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ21vbnRoLWNvbXBvbmVudCcgZnJvbSAnLi9tb250aC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ211bHRpcGxlLWRyb3Bkb3duLWNvbXBvbmVudCcgZnJvbSAnLi9tdWx0aXBsZS1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ211bHRpcGxlLWVtYWlsLWNvbXBvbmVudCcgZnJvbSAnLi9tdWx0aXBsZS1lbWFpbC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ211bHRpcGxlLWZpbGUtY29tcG9uZW50JyBmcm9tICcuL211bHRpcGxlLWZpbGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdtdWx0aXBsZS10ZXh0LWNvbXBvbmVudCcgZnJvbSAnLi9tdWx0aXBsZS10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnbnVtYmVyLWNvbXBvbmVudCcgZnJvbSAnLi9udW1iZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwYXNzd29yZC1jb21wb25lbnQnIGZyb20gJy4vcGFzc3dvcmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdzZXR0aW5nLWNvbXBvbmVudC13cmFwcGVyJyBmcm9tICcuL3NldHRpbmctY29tcG9uZW50LXdyYXBwZXIudHMnO1xuZXhwb3J0ICogYXMgJ3RhZy1saXN0LWNvbXBvbmVudCcgZnJvbSAnLi90YWctbGlzdC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3RlbGVwaG9uZS1jb21wb25lbnQnIGZyb20gJy4vdGVsZXBob25lLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAndGV4dC1iYXNlZC1jb21wb25lbnQnIGZyb20gJy4vdGV4dC1iYXNlZC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3RpbWUtY29tcG9uZW50JyBmcm9tICcuL3RpbWUtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICd0cmktc3RhdGUtY2hlY2tib3gtY29tcG9uZW50JyBmcm9tICcuL3RyaS1zdGF0ZS1jaGVja2JveC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3R5cGVkLWRyb3Bkb3duLWNvbXBvbmVudCcgZnJvbSAnLi90eXBlZC1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3R5cGVkLW11bHRpcGxlLWRyb3Bkb3duLWNvbXBvbmVudCcgZnJvbSAnLi90eXBlZC1tdWx0aXBsZS1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3R5cGVkLXJhbmdlLXRleHQtY29tcG9uZW50JyBmcm9tICcuL3R5cGVkLXJhbmdlLXRleHQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICd0eXBlZC10ZXh0LWNvbXBvbmVudCcgZnJvbSAnLi90eXBlZC10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAndXJsLWNvbXBvbmVudCcgZnJvbSAnLi91cmwtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICd2YWxpZGF0b3ItY29tcG9uZW50JyBmcm9tICcuL3ZhbGlkYXRvci1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbHVlLWNvbXBvbmVudC13aXRoLWNoYW5nZS10cmFja2luZycgZnJvbSAnLi92YWx1ZS1jb21wb25lbnQtd2l0aC1jaGFuZ2UtdHJhY2tpbmcudHMnO1xuZXhwb3J0ICogYXMgJ3dlZWstY29tcG9uZW50JyBmcm9tICcuL3dlZWstY29tcG9uZW50LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBRUEsWUFBWUEsd0JBQTBCO0FBQ3RDLFlBQVlDLGdDQUFrQztBQUM5QyxZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWUMseUJBQTJCO0FBQ3ZDLFlBQVlDLHFCQUF1QjtBQUNuQyxZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVlDLHNCQUF3QjtBQUNwQyxZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWUMscUJBQXVCO0FBQ25DLFlBQVlDLGlDQUFtQztBQUMvQyxZQUFZQyw4QkFBZ0M7QUFDNUMsWUFBWUMsNkJBQStCO0FBQzNDLFlBQVlDLDZCQUErQjtBQUMzQyxZQUFZQyxzQkFBd0I7QUFDcEMsWUFBWUMsd0JBQTBCO0FBQ3RDLFlBQVlDLCtCQUFpQztBQUM3QyxZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWUMseUJBQTJCO0FBQ3ZDLFlBQVlDLDBCQUE0QjtBQUN4QyxZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWUMsa0NBQW9DO0FBQ2hELFlBQVlDLDhCQUFnQztBQUM1QyxZQUFZQyx1Q0FBeUM7QUFDckQsWUFBWUMsZ0NBQWtDO0FBQzlDLFlBQVlDLDBCQUE0QjtBQUN4QyxZQUFZQyxtQkFBcUI7QUFDakMsWUFBWUMseUJBQTJCO0FBQ3ZDLFlBQVlDLDBDQUE0QztBQUN4RCxZQUFZQyxvQkFBc0I7IiwKICAibmFtZXMiOiBbImNoZWNrYm94LWNvbXBvbmVudCIsICJjb2RlLWhpZ2hsaWdodGVyLWNvbXBvbmVudCIsICJkYXRlLWNvbXBvbmVudCIsICJkYXRlLXRpbWUtY29tcG9uZW50IiwgImVtYWlsLWNvbXBvbmVudCIsICJmaWxlLWNvbXBvbmVudCIsICJmb2xkZXItbGlzdC1jb21wb25lbnQiLCAiaG90a2V5LWNvbXBvbmVudCIsICJsaXN0LWNvbXBvbmVudCIsICJtb250aC1jb21wb25lbnQiLCAibXVsdGlwbGUtZHJvcGRvd24tY29tcG9uZW50IiwgIm11bHRpcGxlLWVtYWlsLWNvbXBvbmVudCIsICJtdWx0aXBsZS1maWxlLWNvbXBvbmVudCIsICJtdWx0aXBsZS10ZXh0LWNvbXBvbmVudCIsICJudW1iZXItY29tcG9uZW50IiwgInBhc3N3b3JkLWNvbXBvbmVudCIsICJzZXR0aW5nLWNvbXBvbmVudC13cmFwcGVyIiwgInRhZy1saXN0LWNvbXBvbmVudCIsICJ0ZWxlcGhvbmUtY29tcG9uZW50IiwgInRleHQtYmFzZWQtY29tcG9uZW50IiwgInRpbWUtY29tcG9uZW50IiwgInRyaS1zdGF0ZS1jaGVja2JveC1jb21wb25lbnQiLCAidHlwZWQtZHJvcGRvd24tY29tcG9uZW50IiwgInR5cGVkLW11bHRpcGxlLWRyb3Bkb3duLWNvbXBvbmVudCIsICJ0eXBlZC1yYW5nZS10ZXh0LWNvbXBvbmVudCIsICJ0eXBlZC10ZXh0LWNvbXBvbmVudCIsICJ1cmwtY29tcG9uZW50IiwgInZhbGlkYXRvci1jb21wb25lbnQiLCAidmFsdWUtY29tcG9uZW50LXdpdGgtY2hhbmdlLXRyYWNraW5nIiwgIndlZWstY29tcG9uZW50Il0KfQo=
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.mts" />
|
|
2
|
+
/// <reference lib="dom" />
|
|
3
|
+
/**
|
|
4
|
+
* @file
|
|
5
|
+
*
|
|
6
|
+
* Contains a component that edits a reorderable list of strings.
|
|
7
|
+
*/
|
|
8
|
+
import { ExtraButtonComponent, ValueComponent } from 'obsidian';
|
|
9
|
+
import type { ValueComponentWithChangeTracking } from './value-component-with-change-tracking.mjs';
|
|
10
|
+
/**
|
|
11
|
+
* A component that edits a reorderable list of strings: each item has move-up, move-down and remove buttons, and a row
|
|
12
|
+
* below the list adds an item, on its button or on Enter.
|
|
13
|
+
*
|
|
14
|
+
* {@link ListComponent.newItemInputEl} is a plain `<input>`, so a suggest can be attached to it; {@link FolderListComponent}
|
|
15
|
+
* and {@link TagListComponent} do exactly that. A subclass shapes what is added by overriding
|
|
16
|
+
* {@link ListComponent.normalizeItem} and how an item reads by overriding {@link ListComponent.formatItem}. An item
|
|
17
|
+
* already in the list is not added twice.
|
|
18
|
+
*
|
|
19
|
+
* You can add this component using {@link SettingEx.addList}.
|
|
20
|
+
*
|
|
21
|
+
* In order to add the styles for the component, use {@link initPluginContext} in your plugin's `onload()` function.
|
|
22
|
+
*
|
|
23
|
+
* Alternatively, you can copy styles from {@link https://unpkg.com/@mnaoumov/obsidian-lib/dist/styles.css}.
|
|
24
|
+
*/
|
|
25
|
+
export declare class ListComponent extends ValueComponent<readonly string[]> implements ValueComponentWithChangeTracking<readonly string[]> {
|
|
26
|
+
/**
|
|
27
|
+
* The element holding one row per item.
|
|
28
|
+
*/
|
|
29
|
+
readonly listEl: HTMLElement;
|
|
30
|
+
/**
|
|
31
|
+
* The button that adds the typed item.
|
|
32
|
+
*/
|
|
33
|
+
readonly newItemButton: ExtraButtonComponent;
|
|
34
|
+
/**
|
|
35
|
+
* The input the next item is typed into.
|
|
36
|
+
*/
|
|
37
|
+
readonly newItemInputEl: HTMLInputElement;
|
|
38
|
+
private changeCallback?;
|
|
39
|
+
private value;
|
|
40
|
+
/**
|
|
41
|
+
* Creates a new list component.
|
|
42
|
+
*
|
|
43
|
+
* @param containerEl - The container element.
|
|
44
|
+
* @param cssClass - An extra CSS class for the container, for a subclass.
|
|
45
|
+
*/
|
|
46
|
+
constructor(containerEl: HTMLElement, cssClass?: string);
|
|
47
|
+
/**
|
|
48
|
+
* Adds the text typed into {@link ListComponent.newItemInputEl}, when it normalizes to an item not yet in the list, and
|
|
49
|
+
* clears the input.
|
|
50
|
+
*
|
|
51
|
+
* @returns Whether an item was added.
|
|
52
|
+
*/
|
|
53
|
+
addTypedItem(): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Gets the items.
|
|
56
|
+
*
|
|
57
|
+
* @returns The items, in order.
|
|
58
|
+
*/
|
|
59
|
+
getValue(): readonly string[];
|
|
60
|
+
/**
|
|
61
|
+
* Sets the callback to be called when the user adds, moves or removes an item.
|
|
62
|
+
*
|
|
63
|
+
* @param callback - The callback.
|
|
64
|
+
* @returns The component.
|
|
65
|
+
*/
|
|
66
|
+
onChange(callback: (newValue: readonly string[]) => void): this;
|
|
67
|
+
/**
|
|
68
|
+
* Sets the disabled state of the component.
|
|
69
|
+
*
|
|
70
|
+
* @param isDisabled - The disabled state.
|
|
71
|
+
* @returns The component.
|
|
72
|
+
*/
|
|
73
|
+
setDisabled(isDisabled: boolean): this;
|
|
74
|
+
/**
|
|
75
|
+
* Sets the placeholder of {@link ListComponent.newItemInputEl}.
|
|
76
|
+
*
|
|
77
|
+
* @param placeholder - The placeholder.
|
|
78
|
+
* @returns The component.
|
|
79
|
+
*/
|
|
80
|
+
setPlaceholder(placeholder: string): this;
|
|
81
|
+
/**
|
|
82
|
+
* Sets the items.
|
|
83
|
+
*
|
|
84
|
+
* @param value - The items, in order.
|
|
85
|
+
* @returns The component.
|
|
86
|
+
*/
|
|
87
|
+
setValue(value: readonly string[]): this;
|
|
88
|
+
/**
|
|
89
|
+
* Formats an item for display.
|
|
90
|
+
*
|
|
91
|
+
* @param item - The item.
|
|
92
|
+
* @returns The text shown for it.
|
|
93
|
+
*/
|
|
94
|
+
protected formatItem(item: string): string;
|
|
95
|
+
/**
|
|
96
|
+
* Turns the typed text into an item. By default, trims it and refuses an empty one.
|
|
97
|
+
*
|
|
98
|
+
* @param text - The typed text.
|
|
99
|
+
* @returns The item, or `null` to add nothing.
|
|
100
|
+
*/
|
|
101
|
+
protected normalizeItem(text: string): null | string;
|
|
102
|
+
private moveItem;
|
|
103
|
+
private removeItem;
|
|
104
|
+
private render;
|
|
105
|
+
private setValueAndNotify;
|
|
106
|
+
}
|