obsidian-dev-utils 72.0.0 → 74.0.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/CHANGELOG.md +11 -0
- package/dist/dev/main.js +107 -74
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +3 -7
- package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +1 -3
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +15 -4
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +9 -3
- package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +3 -8
- package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +1 -3
- package/dist/lib/cjs/obsidian/components/generate-markdown-link-default-params-component.cjs +162 -0
- package/dist/lib/cjs/obsidian/components/generate-markdown-link-default-params-component.d.cts +45 -0
- package/dist/lib/cjs/obsidian/components/index.cjs +4 -4
- package/dist/lib/cjs/obsidian/components/index.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +50 -7
- package/dist/lib/cjs/obsidian/components/plugin-notice-component.d.cts +26 -3
- package/dist/lib/cjs/obsidian/i18n/i18n.cjs +2 -7
- package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +4 -0
- package/dist/lib/cjs/obsidian/link.cjs +9 -16
- package/dist/lib/cjs/obsidian/link.d.cts +20 -16
- package/dist/lib/cjs/obsidian/plugin/plugin.cjs +15 -20
- package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +10 -14
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +1 -3
- package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +3 -7
- package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +9 -3
- package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +16 -5
- package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +1 -3
- package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +3 -8
- package/dist/lib/esm/obsidian/components/generate-markdown-link-default-params-component.d.mts +45 -0
- package/dist/lib/esm/obsidian/components/generate-markdown-link-default-params-component.mjs +54 -0
- package/dist/lib/esm/obsidian/components/index.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/index.mjs +3 -3
- package/dist/lib/esm/obsidian/components/plugin-notice-component.d.mts +26 -3
- package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +50 -7
- package/dist/lib/esm/obsidian/i18n/i18n.d.mts +4 -0
- package/dist/lib/esm/obsidian/i18n/i18n.mjs +2 -7
- package/dist/lib/esm/obsidian/link.d.mts +20 -16
- package/dist/lib/esm/obsidian/link.mjs +8 -15
- package/dist/lib/esm/obsidian/plugin/plugin.d.mts +10 -14
- package/dist/lib/esm/obsidian/plugin/plugin.mjs +15 -20
- package/obsidian/Components/generate-markdown-link-default-params-component/package.json +6 -0
- package/package.json +1 -1
- package/dist/lib/cjs/obsidian/components/i18n-component.cjs +0 -156
- package/dist/lib/cjs/obsidian/components/i18n-component.d.cts +0 -24
- package/dist/lib/esm/obsidian/components/i18n-component.d.mts +0 -24
- package/dist/lib/esm/obsidian/components/i18n-component.mjs +0 -48
- package/obsidian/Components/i18n-component/package.json +0 -6
package/dist/lib/esm/obsidian/components/generate-markdown-link-default-params-component.d.mts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/// <reference path="../../library.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Component that registers a function providing default params for generated markdown links while it is loaded.
|
|
6
|
+
*/
|
|
7
|
+
import type { App } from 'obsidian';
|
|
8
|
+
import type { GenerateMarkdownLinkParams } from '../link.mjs';
|
|
9
|
+
import { ComponentEx } from './component-ex.mjs';
|
|
10
|
+
/**
|
|
11
|
+
* Constructor params for {@link GenerateMarkdownLinkDefaultParamsComponent}.
|
|
12
|
+
*/
|
|
13
|
+
export interface GenerateMarkdownLinkDefaultParamsComponentConstructorParams {
|
|
14
|
+
/**
|
|
15
|
+
* The Obsidian app instance whose shared state holds the registered default-params functions.
|
|
16
|
+
*/
|
|
17
|
+
readonly app: App;
|
|
18
|
+
/**
|
|
19
|
+
* Returns the default {@link GenerateMarkdownLinkParams} to merge into every generated markdown link while this
|
|
20
|
+
* component is loaded.
|
|
21
|
+
*
|
|
22
|
+
* @returns The default params.
|
|
23
|
+
*/
|
|
24
|
+
getDefaultParams(this: void): Partial<GenerateMarkdownLinkParams>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Registers a function that provides default {@link GenerateMarkdownLinkParams} for the duration of its load.
|
|
28
|
+
*
|
|
29
|
+
* On load the function is appended to the shared list consulted when generating a markdown link; on unload it is
|
|
30
|
+
* removed. Later registrations take precedence over the built-in defaults but never over explicitly passed params.
|
|
31
|
+
*/
|
|
32
|
+
export declare class GenerateMarkdownLinkDefaultParamsComponent extends ComponentEx {
|
|
33
|
+
private readonly app;
|
|
34
|
+
private readonly getDefaultParams;
|
|
35
|
+
/**
|
|
36
|
+
* Creates a new component.
|
|
37
|
+
*
|
|
38
|
+
* @param params - The constructor params.
|
|
39
|
+
*/
|
|
40
|
+
constructor(params: GenerateMarkdownLinkDefaultParamsComponentConstructorParams);
|
|
41
|
+
/**
|
|
42
|
+
* Registers the default-params function and schedules its removal on unload.
|
|
43
|
+
*/
|
|
44
|
+
onload(): void;
|
|
45
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
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
|
+
|
|
6
|
+
(function initEsm() {
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
|
+
if (globalThis.process) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const browserProcess = {
|
|
13
|
+
browser: true,
|
|
14
|
+
cwd() {
|
|
15
|
+
return '/';
|
|
16
|
+
},
|
|
17
|
+
env: {},
|
|
18
|
+
platform: 'android'
|
|
19
|
+
};
|
|
20
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
21
|
+
globalThis.process = browserProcess;
|
|
22
|
+
})();
|
|
23
|
+
|
|
24
|
+
import { getGenerateMarkdownLinkDefaultParamsFns } from "../link.mjs";
|
|
25
|
+
import { ComponentEx } from "./component-ex.mjs";
|
|
26
|
+
class GenerateMarkdownLinkDefaultParamsComponent extends ComponentEx {
|
|
27
|
+
app;
|
|
28
|
+
getDefaultParams;
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new component.
|
|
31
|
+
*
|
|
32
|
+
* @param params - The constructor params.
|
|
33
|
+
*/
|
|
34
|
+
constructor(params) {
|
|
35
|
+
super();
|
|
36
|
+
this.app = params.app;
|
|
37
|
+
this.getDefaultParams = params.getDefaultParams;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Registers the default-params function and schedules its removal on unload.
|
|
41
|
+
*/
|
|
42
|
+
onload() {
|
|
43
|
+
super.onload();
|
|
44
|
+
const fns = getGenerateMarkdownLinkDefaultParamsFns(this.app);
|
|
45
|
+
fns.push(this.getDefaultParams);
|
|
46
|
+
this.register(() => {
|
|
47
|
+
fns.remove(this.getDefaultParams);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export {
|
|
52
|
+
GenerateMarkdownLinkDefaultParamsComponent
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbXBvbmVudHMvZ2VuZXJhdGUtbWFya2Rvd24tbGluay1kZWZhdWx0LXBhcmFtcy1jb21wb25lbnQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21wb25lbnQgdGhhdCByZWdpc3RlcnMgYSBmdW5jdGlvbiBwcm92aWRpbmcgZGVmYXVsdCBwYXJhbXMgZm9yIGdlbmVyYXRlZCBtYXJrZG93biBsaW5rcyB3aGlsZSBpdCBpcyBsb2FkZWQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgR2VuZXJhdGVNYXJrZG93bkxpbmtQYXJhbXMgfSBmcm9tICcuLi9saW5rLnRzJztcblxuaW1wb3J0IHsgZ2V0R2VuZXJhdGVNYXJrZG93bkxpbmtEZWZhdWx0UGFyYW1zRm5zIH0gZnJvbSAnLi4vbGluay50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcblxuLyoqXG4gKiBDb25zdHJ1Y3RvciBwYXJhbXMgZm9yIHtAbGluayBHZW5lcmF0ZU1hcmtkb3duTGlua0RlZmF1bHRQYXJhbXNDb21wb25lbnR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlTWFya2Rvd25MaW5rRGVmYXVsdFBhcmFtc0NvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2Ugd2hvc2Ugc2hhcmVkIHN0YXRlIGhvbGRzIHRoZSByZWdpc3RlcmVkIGRlZmF1bHQtcGFyYW1zIGZ1bmN0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBkZWZhdWx0IHtAbGluayBHZW5lcmF0ZU1hcmtkb3duTGlua1BhcmFtc30gdG8gbWVyZ2UgaW50byBldmVyeSBnZW5lcmF0ZWQgbWFya2Rvd24gbGluayB3aGlsZSB0aGlzXG4gICAqIGNvbXBvbmVudCBpcyBsb2FkZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBkZWZhdWx0IHBhcmFtcy5cbiAgICovXG4gIGdldERlZmF1bHRQYXJhbXModGhpczogdm9pZCk6IFBhcnRpYWw8R2VuZXJhdGVNYXJrZG93bkxpbmtQYXJhbXM+O1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgZGVmYXVsdCB7QGxpbmsgR2VuZXJhdGVNYXJrZG93bkxpbmtQYXJhbXN9IGZvciB0aGUgZHVyYXRpb24gb2YgaXRzIGxvYWQuXG4gKlxuICogT24gbG9hZCB0aGUgZnVuY3Rpb24gaXMgYXBwZW5kZWQgdG8gdGhlIHNoYXJlZCBsaXN0IGNvbnN1bHRlZCB3aGVuIGdlbmVyYXRpbmcgYSBtYXJrZG93biBsaW5rOyBvbiB1bmxvYWQgaXQgaXNcbiAqIHJlbW92ZWQuIExhdGVyIHJlZ2lzdHJhdGlvbnMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIGJ1aWx0LWluIGRlZmF1bHRzIGJ1dCBuZXZlciBvdmVyIGV4cGxpY2l0bHkgcGFzc2VkIHBhcmFtcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdlbmVyYXRlTWFya2Rvd25MaW5rRGVmYXVsdFBhcmFtc0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEV4IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcHA6IEFwcDtcbiAgcHJpdmF0ZSByZWFkb25seSBnZXREZWZhdWx0UGFyYW1zOiAodGhpczogdm9pZCkgPT4gUGFydGlhbDxHZW5lcmF0ZU1hcmtkb3duTGlua1BhcmFtcz47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGNvbnN0cnVjdG9yIHBhcmFtcy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IEdlbmVyYXRlTWFya2Rvd25MaW5rRGVmYXVsdFBhcmFtc0NvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLmdldERlZmF1bHRQYXJhbXMgPSBwYXJhbXMuZ2V0RGVmYXVsdFBhcmFtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgdGhlIGRlZmF1bHQtcGFyYW1zIGZ1bmN0aW9uIGFuZCBzY2hlZHVsZXMgaXRzIHJlbW92YWwgb24gdW5sb2FkLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICBzdXBlci5vbmxvYWQoKTtcblxuICAgIGNvbnN0IGZucyA9IGdldEdlbmVyYXRlTWFya2Rvd25MaW5rRGVmYXVsdFBhcmFtc0Zucyh0aGlzLmFwcCk7XG4gICAgZm5zLnB1c2godGhpcy5nZXREZWZhdWx0UGFyYW1zKTtcbiAgICB0aGlzLnJlZ2lzdGVyKCgpID0+IHtcbiAgICAgIGZucy5yZW1vdmUodGhpcy5nZXREZWZhdWx0UGFyYW1zKTtcbiAgICB9KTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQSxTQUFTLCtDQUErQztBQUN4RCxTQUFTLG1CQUFtQjtBQTBCckIsTUFBTSxtREFBbUQsWUFBWTtBQUFBLEVBQ3pEO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9WLFlBQVksUUFBcUU7QUFDdEYsVUFBTTtBQUVOLFNBQUssTUFBTSxPQUFPO0FBQ2xCLFNBQUssbUJBQW1CLE9BQU87QUFBQSxFQUNqQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS2dCLFNBQWU7QUFDN0IsVUFBTSxPQUFPO0FBRWIsVUFBTSxNQUFNLHdDQUF3QyxLQUFLLEdBQUc7QUFDNUQsUUFBSSxLQUFLLEtBQUssZ0JBQWdCO0FBQzlCLFNBQUssU0FBUyxNQUFNO0FBQ2xCLFVBQUksT0FBTyxLQUFLLGdCQUFnQjtBQUFBLElBQ2xDLENBQUM7QUFBQSxFQUNIO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -6,7 +6,7 @@ export * as 'async-events-component' from './async-events-component.mjs';
|
|
|
6
6
|
export * as 'component-ex' from './component-ex.mjs';
|
|
7
7
|
export * as 'console-debug-component' from './console-debug-component.mjs';
|
|
8
8
|
export * as 'disposable-component' from './disposable-component.mjs';
|
|
9
|
-
export * as '
|
|
9
|
+
export * as 'generate-markdown-link-default-params-component' from './generate-markdown-link-default-params-component.mjs';
|
|
10
10
|
export * as 'layout-ready-component' from './layout-ready-component.mjs';
|
|
11
11
|
export * as 'menu-event-registrar-component' from './menu-event-registrar-component.mjs';
|
|
12
12
|
export * as 'monkey-around-component' from './monkey-around-component.mjs';
|
|
@@ -28,7 +28,7 @@ import * as async_events_component from "./async-events-component.mjs";
|
|
|
28
28
|
import * as component_ex from "./component-ex.mjs";
|
|
29
29
|
import * as console_debug_component from "./console-debug-component.mjs";
|
|
30
30
|
import * as disposable_component from "./disposable-component.mjs";
|
|
31
|
-
import * as
|
|
31
|
+
import * as generate_markdown_link_default_params_component from "./generate-markdown-link-default-params-component.mjs";
|
|
32
32
|
import * as layout_ready_component from "./layout-ready-component.mjs";
|
|
33
33
|
import * as menu_event_registrar_component from "./menu-event-registrar-component.mjs";
|
|
34
34
|
import * as monkey_around_component from "./monkey-around-component.mjs";
|
|
@@ -46,7 +46,7 @@ export {
|
|
|
46
46
|
component_ex as "component-ex",
|
|
47
47
|
console_debug_component as "console-debug-component",
|
|
48
48
|
disposable_component as "disposable-component",
|
|
49
|
-
|
|
49
|
+
generate_markdown_link_default_params_component as "generate-markdown-link-default-params-component",
|
|
50
50
|
layout_ready_component as "layout-ready-component",
|
|
51
51
|
menu_event_registrar_component as "menu-event-registrar-component",
|
|
52
52
|
monkey_around_component as "monkey-around-component",
|
|
@@ -57,4 +57,4 @@ export {
|
|
|
57
57
|
registry_component as "registry-component",
|
|
58
58
|
rename_delete_handler_component as "rename-delete-handler-component"
|
|
59
59
|
};
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnYWJvcnQtc2lnbmFsLWNvbXBvbmVudCcgZnJvbSAnLi9hYm9ydC1zaWduYWwtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQnIGZyb20gJy4vYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudCcgZnJvbSAnLi9hc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnYXN5bmMtZXZlbnRzLWNvbXBvbmVudCcgZnJvbSAnLi9hc3luYy1ldmVudHMtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdjb21wb25lbnQtZXgnIGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcbmV4cG9ydCAqIGFzICdjb25zb2xlLWRlYnVnLWNvbXBvbmVudCcgZnJvbSAnLi9jb25zb2xlLWRlYnVnLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnZGlzcG9zYWJsZS1jb21wb25lbnQnIGZyb20gJy4vZGlzcG9zYWJsZS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2dlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50JyBmcm9tICcuL2dlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdsYXlvdXQtcmVhZHktY29tcG9uZW50JyBmcm9tICcuL2xheW91dC1yZWFkeS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ21lbnUtZXZlbnQtcmVnaXN0cmFyLWNvbXBvbmVudCcgZnJvbSAnLi9tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ21vbmtleS1hcm91bmQtY29tcG9uZW50JyBmcm9tICcuL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tY29udGV4dC1jb21wb25lbnQnIGZyb20gJy4vcGx1Z2luLWNvbnRleHQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tbm90aWNlLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tc2V0dGluZ3MtdGFiLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tc2V0dGluZ3MtdGFiLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncmVnaXN0cnktY29tcG9uZW50JyBmcm9tICcuL3JlZ2lzdHJ5LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncmVuYW1lLWRlbGV0ZS1oYW5kbGVyLWNvbXBvbmVudCcgZnJvbSAnLi9yZW5hbWUtZGVsZXRlLWhhbmRsZXItY29tcG9uZW50LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsWUFBWUEsNEJBQThCO0FBQzFDLFlBQVlDLGlDQUFtQztBQUMvQyxZQUFZQyxtQ0FBcUM7QUFDakQsWUFBWUMsNEJBQThCO0FBQzFDLFlBQVlDLGtCQUFvQjtBQUNoQyxZQUFZQyw2QkFBK0I7QUFDM0MsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVlDLHFEQUF1RDtBQUNuRSxZQUFZQyw0QkFBOEI7QUFDMUMsWUFBWUMsb0NBQXNDO0FBQ2xELFlBQVlDLDZCQUErQjtBQUMzQyxZQUFZQyw4QkFBZ0M7QUFDNUMsWUFBWUMsNkJBQStCO0FBQzNDLFlBQVlDLCtCQUFpQztBQUM3QyxZQUFZQyxtQ0FBcUM7QUFDakQsWUFBWUMsd0JBQTBCO0FBQ3RDLFlBQVlDLHFDQUF1QzsiLAogICJuYW1lcyI6IFsiYWJvcnQtc2lnbmFsLWNvbXBvbmVudCIsICJhbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQiLCAiYXN5bmMtZXJyb3ItaGFuZGxlci1jb21wb25lbnQiLCAiYXN5bmMtZXZlbnRzLWNvbXBvbmVudCIsICJjb21wb25lbnQtZXgiLCAiY29uc29sZS1kZWJ1Zy1jb21wb25lbnQiLCAiZGlzcG9zYWJsZS1jb21wb25lbnQiLCAiZ2VuZXJhdGUtbWFya2Rvd24tbGluay1kZWZhdWx0LXBhcmFtcy1jb21wb25lbnQiLCAibGF5b3V0LXJlYWR5LWNvbXBvbmVudCIsICJtZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQiLCAibW9ua2V5LWFyb3VuZC1jb21wb25lbnQiLCAicGx1Z2luLWNvbnRleHQtY29tcG9uZW50IiwgInBsdWdpbi1ub3RpY2UtY29tcG9uZW50IiwgInBsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQiLCAicGx1Z2luLXNldHRpbmdzLXRhYi1jb21wb25lbnQiLCAicmVnaXN0cnktY29tcG9uZW50IiwgInJlbmFtZS1kZWxldGUtaGFuZGxlci1jb21wb25lbnQiXQp9Cg==
|
|
@@ -5,12 +5,27 @@
|
|
|
5
5
|
* Component that manages displaying notices to the user.
|
|
6
6
|
*/
|
|
7
7
|
import { ComponentEx } from './component-ex.mjs';
|
|
8
|
+
/**
|
|
9
|
+
* Options for {@link PluginNoticeComponent.showNotice}.
|
|
10
|
+
*/
|
|
11
|
+
export interface PluginNoticeComponentShowNoticeOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Whether the notice should stay until it is replaced, the plugin is reloaded, or the user dismisses it. Defaults to
|
|
14
|
+
* `false`.
|
|
15
|
+
*
|
|
16
|
+
* A permanent notice is shown with an infinite duration and is not hidden when the component unloads, so it can
|
|
17
|
+
* communicate state that outlives the plugin (e.g. a cleanup that requires a reload). There is at most one permanent
|
|
18
|
+
* notice per plugin: it is hidden by the next {@link PluginNoticeComponent.showNotice} call and dismissed
|
|
19
|
+
* automatically the next time the component loads (i.e. when the plugin is re-enabled).
|
|
20
|
+
*/
|
|
21
|
+
readonly isPermanent?: boolean;
|
|
22
|
+
}
|
|
8
23
|
/**
|
|
9
24
|
* Manages showing plugin notices. Automatically hides the previous notice when a new one is shown.
|
|
10
25
|
*/
|
|
11
26
|
export declare class PluginNoticeComponent extends ComponentEx {
|
|
12
27
|
private readonly pluginName;
|
|
13
|
-
private notice
|
|
28
|
+
private notice;
|
|
14
29
|
/**
|
|
15
30
|
* Creates a new plugin notice component.
|
|
16
31
|
*
|
|
@@ -18,13 +33,21 @@ export declare class PluginNoticeComponent extends ComponentEx {
|
|
|
18
33
|
*/
|
|
19
34
|
constructor(pluginName: string);
|
|
20
35
|
/**
|
|
21
|
-
*
|
|
36
|
+
* Dismisses the permanent notice left over from a previous load (e.g. a previous plugin session) on load.
|
|
37
|
+
*/
|
|
38
|
+
onload(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Hides the current notice on unload, unless it is the permanent notice (which is meant to outlive the plugin).
|
|
22
41
|
*/
|
|
23
42
|
onunload(): void;
|
|
24
43
|
/**
|
|
25
44
|
* Displays a notice message to the user.
|
|
26
45
|
*
|
|
27
46
|
* @param message - The message to display.
|
|
47
|
+
* @param options - The options for displaying the notice.
|
|
28
48
|
*/
|
|
29
|
-
showNotice(message: string): void;
|
|
49
|
+
showNotice(message: DocumentFragment | string, options?: PluginNoticeComponentShowNoticeOptions): void;
|
|
50
|
+
private getPermanentNotice;
|
|
51
|
+
private getPermanentNotices;
|
|
52
|
+
private setPermanentNotice;
|
|
30
53
|
}
|
|
@@ -22,7 +22,10 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
22
22
|
})();
|
|
23
23
|
|
|
24
24
|
import { Notice } from "obsidian";
|
|
25
|
+
import { getObsidianDevUtilsState } from "../app.mjs";
|
|
25
26
|
import { ComponentEx } from "./component-ex.mjs";
|
|
27
|
+
const PERMANENT_NOTICES_STATE_KEY = "plugin-notice-component:permanent-notices";
|
|
28
|
+
const PERMANENT_NOTICE_DURATION_IN_MILLISECONDS = 0;
|
|
26
29
|
class PluginNoticeComponent extends ComponentEx {
|
|
27
30
|
/**
|
|
28
31
|
* Creates a new plugin notice component.
|
|
@@ -34,25 +37,65 @@ class PluginNoticeComponent extends ComponentEx {
|
|
|
34
37
|
this.pluginName = pluginName;
|
|
35
38
|
}
|
|
36
39
|
pluginName;
|
|
37
|
-
notice;
|
|
40
|
+
notice = null;
|
|
38
41
|
/**
|
|
39
|
-
*
|
|
42
|
+
* Dismisses the permanent notice left over from a previous load (e.g. a previous plugin session) on load.
|
|
43
|
+
*/
|
|
44
|
+
onload() {
|
|
45
|
+
super.onload();
|
|
46
|
+
const permanentNotice = this.getPermanentNotice();
|
|
47
|
+
permanentNotice?.hide();
|
|
48
|
+
this.setPermanentNotice(null);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Hides the current notice on unload, unless it is the permanent notice (which is meant to outlive the plugin).
|
|
40
52
|
*/
|
|
41
53
|
onunload() {
|
|
42
|
-
this.
|
|
54
|
+
if (this.getPermanentNotice() !== this.notice) {
|
|
55
|
+
this.notice?.hide();
|
|
56
|
+
}
|
|
43
57
|
}
|
|
44
58
|
/**
|
|
45
59
|
* Displays a notice message to the user.
|
|
46
60
|
*
|
|
47
61
|
* @param message - The message to display.
|
|
62
|
+
* @param options - The options for displaying the notice.
|
|
48
63
|
*/
|
|
49
|
-
showNotice(message) {
|
|
64
|
+
showNotice(message, options) {
|
|
50
65
|
this.notice?.hide();
|
|
51
|
-
|
|
52
|
-
|
|
66
|
+
const prefix = `${this.pluginName}${this._loaded ? "" : " (unloaded)"}
|
|
67
|
+
`;
|
|
68
|
+
const prefixedMessage = prependPrefix(prefix, message);
|
|
69
|
+
this.notice = new Notice(prefixedMessage, options?.isPermanent ? PERMANENT_NOTICE_DURATION_IN_MILLISECONDS : void 0);
|
|
70
|
+
if (options?.isPermanent) {
|
|
71
|
+
this.setPermanentNotice(this.notice);
|
|
72
|
+
} else {
|
|
73
|
+
this.setPermanentNotice(null);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
getPermanentNotice() {
|
|
77
|
+
return this.getPermanentNotices().get(this.pluginName) ?? null;
|
|
78
|
+
}
|
|
79
|
+
getPermanentNotices() {
|
|
80
|
+
return getObsidianDevUtilsState(null, PERMANENT_NOTICES_STATE_KEY, /* @__PURE__ */ new Map()).value;
|
|
81
|
+
}
|
|
82
|
+
setPermanentNotice(notice) {
|
|
83
|
+
const map = this.getPermanentNotices();
|
|
84
|
+
if (notice) {
|
|
85
|
+
map.set(this.pluginName, notice);
|
|
86
|
+
} else {
|
|
87
|
+
map.delete(this.pluginName);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function prependPrefix(prefix, message) {
|
|
92
|
+
if (typeof message === "string") {
|
|
93
|
+
return `${prefix}${message}`;
|
|
53
94
|
}
|
|
95
|
+
message.prepend(prefix);
|
|
96
|
+
return message;
|
|
54
97
|
}
|
|
55
98
|
export {
|
|
56
99
|
PluginNoticeComponent
|
|
57
100
|
};
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbXBvbmVudHMvcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21wb25lbnQgdGhhdCBtYW5hZ2VzIGRpc3BsYXlpbmcgbm90aWNlcyB0byB0aGUgdXNlci5cbiAqL1xuXG5pbXBvcnQgeyBOb3RpY2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSB9IGZyb20gJy4uL2FwcC50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcblxuY29uc3QgUEVSTUFORU5UX05PVElDRVNfU1RBVEVfS0VZID0gJ3BsdWdpbi1ub3RpY2UtY29tcG9uZW50OnBlcm1hbmVudC1ub3RpY2VzJztcbmNvbnN0IFBFUk1BTkVOVF9OT1RJQ0VfRFVSQVRJT05fSU5fTUlMTElTRUNPTkRTID0gMDtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgUGx1Z2luTm90aWNlQ29tcG9uZW50LnNob3dOb3RpY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbk5vdGljZUNvbXBvbmVudFNob3dOb3RpY2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG5vdGljZSBzaG91bGQgc3RheSB1bnRpbCBpdCBpcyByZXBsYWNlZCwgdGhlIHBsdWdpbiBpcyByZWxvYWRlZCwgb3IgdGhlIHVzZXIgZGlzbWlzc2VzIGl0LiBEZWZhdWx0cyB0b1xuICAgKiBgZmFsc2VgLlxuICAgKlxuICAgKiBBIHBlcm1hbmVudCBub3RpY2UgaXMgc2hvd24gd2l0aCBhbiBpbmZpbml0ZSBkdXJhdGlvbiBhbmQgaXMgbm90IGhpZGRlbiB3aGVuIHRoZSBjb21wb25lbnQgdW5sb2Fkcywgc28gaXQgY2FuXG4gICAqIGNvbW11bmljYXRlIHN0YXRlIHRoYXQgb3V0bGl2ZXMgdGhlIHBsdWdpbiAoZS5nLiBhIGNsZWFudXAgdGhhdCByZXF1aXJlcyBhIHJlbG9hZCkuIFRoZXJlIGlzIGF0IG1vc3Qgb25lIHBlcm1hbmVudFxuICAgKiBub3RpY2UgcGVyIHBsdWdpbjogaXQgaXMgaGlkZGVuIGJ5IHRoZSBuZXh0IHtAbGluayBQbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZX0gY2FsbCBhbmQgZGlzbWlzc2VkXG4gICAqIGF1dG9tYXRpY2FsbHkgdGhlIG5leHQgdGltZSB0aGUgY29tcG9uZW50IGxvYWRzIChpLmUuIHdoZW4gdGhlIHBsdWdpbiBpcyByZS1lbmFibGVkKS5cbiAgICovXG4gIHJlYWRvbmx5IGlzUGVybWFuZW50PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBNYW5hZ2VzIHNob3dpbmcgcGx1Z2luIG5vdGljZXMuIEF1dG9tYXRpY2FsbHkgaGlkZXMgdGhlIHByZXZpb3VzIG5vdGljZSB3aGVuIGEgbmV3IG9uZSBpcyBzaG93bi5cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpbk5vdGljZUNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEV4IHtcbiAgcHJpdmF0ZSBub3RpY2U6IE5vdGljZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHBsdWdpbiBub3RpY2UgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luTmFtZSAtIFRoZSBwbHVnaW4gbmFtZSAoc2hvd24gYXMgcHJlZml4IGluIG5vdGljZXMpLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNtaXNzZXMgdGhlIHBlcm1hbmVudCBub3RpY2UgbGVmdCBvdmVyIGZyb20gYSBwcmV2aW91cyBsb2FkIChlLmcuIGEgcHJldmlvdXMgcGx1Z2luIHNlc3Npb24pIG9uIGxvYWQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgb25sb2FkKCk6IHZvaWQge1xuICAgIHN1cGVyLm9ubG9hZCgpO1xuICAgIGNvbnN0IHBlcm1hbmVudE5vdGljZSA9IHRoaXMuZ2V0UGVybWFuZW50Tm90aWNlKCk7XG4gICAgcGVybWFuZW50Tm90aWNlPy5oaWRlKCk7XG4gICAgdGhpcy5zZXRQZXJtYW5lbnROb3RpY2UobnVsbCk7XG4gIH1cblxuICAvKipcbiAgICogSGlkZXMgdGhlIGN1cnJlbnQgbm90aWNlIG9uIHVubG9hZCwgdW5sZXNzIGl0IGlzIHRoZSBwZXJtYW5lbnQgbm90aWNlICh3aGljaCBpcyBtZWFudCB0byBvdXRsaXZlIHRoZSBwbHVnaW4pLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9udW5sb2FkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdldFBlcm1hbmVudE5vdGljZSgpICE9PSB0aGlzLm5vdGljZSkge1xuICAgICAgdGhpcy5ub3RpY2U/LmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgYSBub3RpY2UgbWVzc2FnZSB0byB0aGUgdXNlci5cbiAgICpcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBkaXNwbGF5LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBkaXNwbGF5aW5nIHRoZSBub3RpY2UuXG4gICAqL1xuICBwdWJsaWMgc2hvd05vdGljZShtZXNzYWdlOiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nLCBvcHRpb25zPzogUGx1Z2luTm90aWNlQ29tcG9uZW50U2hvd05vdGljZU9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGljZT8uaGlkZSgpO1xuXG4gICAgY29uc3QgcHJlZml4ID0gYCR7dGhpcy5wbHVnaW5OYW1lfSR7dGhpcy5fbG9hZGVkID8gJycgOiAnICh1bmxvYWRlZCknfVxcbmA7XG4gICAgY29uc3QgcHJlZml4ZWRNZXNzYWdlID0gcHJlcGVuZFByZWZpeChwcmVmaXgsIG1lc3NhZ2UpO1xuICAgIHRoaXMubm90aWNlID0gbmV3IE5vdGljZShwcmVmaXhlZE1lc3NhZ2UsIG9wdGlvbnM/LmlzUGVybWFuZW50ID8gUEVSTUFORU5UX05PVElDRV9EVVJBVElPTl9JTl9NSUxMSVNFQ09ORFMgOiB1bmRlZmluZWQpO1xuXG4gICAgaWYgKG9wdGlvbnM/LmlzUGVybWFuZW50KSB7XG4gICAgICB0aGlzLnNldFBlcm1hbmVudE5vdGljZSh0aGlzLm5vdGljZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0UGVybWFuZW50Tm90aWNlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGVybWFuZW50Tm90aWNlKCk6IE5vdGljZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldFBlcm1hbmVudE5vdGljZXMoKS5nZXQodGhpcy5wbHVnaW5OYW1lKSA/PyBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQZXJtYW5lbnROb3RpY2VzKCk6IE1hcDxzdHJpbmcsIE5vdGljZT4ge1xuICAgIHJldHVybiBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGU8TWFwPHN0cmluZywgTm90aWNlPj4obnVsbCwgUEVSTUFORU5UX05PVElDRVNfU1RBVEVfS0VZLCBuZXcgTWFwPHN0cmluZywgTm90aWNlPigpKS52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UGVybWFuZW50Tm90aWNlKG5vdGljZTogTm90aWNlIHwgbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IG1hcCA9IHRoaXMuZ2V0UGVybWFuZW50Tm90aWNlcygpO1xuICAgIGlmIChub3RpY2UpIHtcbiAgICAgIG1hcC5zZXQodGhpcy5wbHVnaW5OYW1lLCBub3RpY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXAuZGVsZXRlKHRoaXMucGx1Z2luTmFtZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByZXBlbmRQcmVmaXgocHJlZml4OiBzdHJpbmcsIG1lc3NhZ2U6IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmcpOiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBgJHtwcmVmaXh9JHttZXNzYWdlfWA7XG4gIH1cblxuICBtZXNzYWdlLnByZXBlbmQocHJlZml4KTtcbiAgcmV0dXJuIG1lc3NhZ2U7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1BLFNBQVMsY0FBYztBQUV2QixTQUFTLGdDQUFnQztBQUN6QyxTQUFTLG1CQUFtQjtBQUU1QixNQUFNLDhCQUE4QjtBQUNwQyxNQUFNLDRDQUE0QztBQXFCM0MsTUFBTSw4QkFBOEIsWUFBWTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVE5QyxZQUE2QixZQUFvQjtBQUN0RCxVQUFNO0FBRDRCO0FBQUEsRUFFcEM7QUFBQSxFQUZvQztBQUFBLEVBUDVCLFNBQXdCO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFjaEIsU0FBZTtBQUM3QixVQUFNLE9BQU87QUFDYixVQUFNLGtCQUFrQixLQUFLLG1CQUFtQjtBQUNoRCxxQkFBaUIsS0FBSztBQUN0QixTQUFLLG1CQUFtQixJQUFJO0FBQUEsRUFDOUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtnQixXQUFpQjtBQUMvQixRQUFJLEtBQUssbUJBQW1CLE1BQU0sS0FBSyxRQUFRO0FBQzdDLFdBQUssUUFBUSxLQUFLO0FBQUEsSUFDcEI7QUFBQSxFQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxXQUFXLFNBQW9DLFNBQXdEO0FBQzVHLFNBQUssUUFBUSxLQUFLO0FBRWxCLFVBQU0sU0FBUyxHQUFHLEtBQUssVUFBVSxHQUFHLEtBQUssVUFBVSxLQUFLLGFBQWE7QUFBQTtBQUNyRSxVQUFNLGtCQUFrQixjQUFjLFFBQVEsT0FBTztBQUNyRCxTQUFLLFNBQVMsSUFBSSxPQUFPLGlCQUFpQixTQUFTLGNBQWMsNENBQTRDLE1BQVM7QUFFdEgsUUFBSSxTQUFTLGFBQWE7QUFDeEIsV0FBSyxtQkFBbUIsS0FBSyxNQUFNO0FBQUEsSUFDckMsT0FBTztBQUNMLFdBQUssbUJBQW1CLElBQUk7QUFBQSxJQUM5QjtBQUFBLEVBQ0Y7QUFBQSxFQUVRLHFCQUFvQztBQUMxQyxXQUFPLEtBQUssb0JBQW9CLEVBQUUsSUFBSSxLQUFLLFVBQVUsS0FBSztBQUFBLEVBQzVEO0FBQUEsRUFFUSxzQkFBMkM7QUFDakQsV0FBTyx5QkFBOEMsTUFBTSw2QkFBNkIsb0JBQUksSUFBb0IsQ0FBQyxFQUFFO0FBQUEsRUFDckg7QUFBQSxFQUVRLG1CQUFtQixRQUE2QjtBQUN0RCxVQUFNLE1BQU0sS0FBSyxvQkFBb0I7QUFDckMsUUFBSSxRQUFRO0FBQ1YsVUFBSSxJQUFJLEtBQUssWUFBWSxNQUFNO0FBQUEsSUFDakMsT0FBTztBQUNMLFVBQUksT0FBTyxLQUFLLFVBQVU7QUFBQSxJQUM1QjtBQUFBLEVBQ0Y7QUFDRjtBQUVBLFNBQVMsY0FBYyxRQUFnQixTQUErRDtBQUNwRyxNQUFJLE9BQU8sWUFBWSxVQUFVO0FBQy9CLFdBQU8sR0FBRyxNQUFNLEdBQUcsT0FBTztBQUFBLEVBQzVCO0FBRUEsVUFBUSxRQUFRLE1BQU07QUFDdEIsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -16,6 +16,10 @@ export type TranslationsMap = Record<string, Record<string, unknown>>;
|
|
|
16
16
|
/**
|
|
17
17
|
* Initializes the `i18n` module.
|
|
18
18
|
*
|
|
19
|
+
* Calling this again re-runs `i18next.init()`, which fully replaces the resource store and language, so a reload picks
|
|
20
|
+
* up a changed language or translations map. The lazy fallback in {@link t} and external callers rely on
|
|
21
|
+
* `i18next.isInitialized` (set by `i18next.init()`) as the single source of truth, so no separate guard is kept here.
|
|
22
|
+
*
|
|
19
23
|
* @param translationsMap - The translations map.
|
|
20
24
|
* @param isAsync - Whether the initialization is asynchronous.
|
|
21
25
|
* @returns A {@link Promise} that resolves when the `i18n` module is initialized.
|
|
@@ -33,12 +33,7 @@ import {
|
|
|
33
33
|
defaultTranslationsMap
|
|
34
34
|
} from "./locales/translations-map.mjs";
|
|
35
35
|
const DEFAULT_NS = "translation";
|
|
36
|
-
let isInitialized = false;
|
|
37
36
|
async function initI18N(translationsMap, isAsync = true) {
|
|
38
|
-
if (isInitialized) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
isInitialized = true;
|
|
42
37
|
await init({
|
|
43
38
|
fallbackLng: DEFAULT_LANGUAGE,
|
|
44
39
|
initAsync: isAsync,
|
|
@@ -60,7 +55,7 @@ async function initI18N(translationsMap, isAsync = true) {
|
|
|
60
55
|
i18next.addResourceBundle(DEFAULT_LANGUAGE, DEFAULT_NS, en, true, false);
|
|
61
56
|
}
|
|
62
57
|
function tImpl(selector, options) {
|
|
63
|
-
if (!isInitialized) {
|
|
58
|
+
if (!i18next.isInitialized) {
|
|
64
59
|
console.warn("I18N was not initialized, initializing default obsidian-dev-utils translations");
|
|
65
60
|
invokeAsyncSafely(() => initI18N(defaultTranslationsMap, false));
|
|
66
61
|
}
|
|
@@ -75,4 +70,4 @@ export {
|
|
|
75
70
|
initI18N,
|
|
76
71
|
t
|
|
77
72
|
};
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2kxOG4vaTE4bi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBgaTE4bmAgbW9kdWxlIGZvciBgaTE4bmV4dGAuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBTZWxlY3RvckZuLFxuICBTZWxlY3Rvck9wdGlvbnMsXG4gIFRGdW5jdGlvblxufSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB0eXBlIHsgUmVhZG9ubHlEZWVwIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IGkxOG5leHQsIHtcbiAgaW5pdCxcbiAgdCBhcyB0TGliXG59IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IHsgZ2V0TGFuZ3VhZ2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRGVmYXVsdFRyYW5zbGF0aW9uc0Jhc2UgfSBmcm9tICcuL2RlZmF1bHQtdHJhbnNsYXRpb25zLnRzJztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHkgfSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5pbXBvcnQgeyBlbiB9IGZyb20gJy4vbG9jYWxlcy9lbi50cyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0xBTkdVQUdFLFxuICBkZWZhdWx0VHJhbnNsYXRpb25zTWFwXG59IGZyb20gJy4vbG9jYWxlcy90cmFuc2xhdGlvbnMtbWFwLnRzJztcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBuYW1lc3BhY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX05TID0gJ3RyYW5zbGF0aW9uJztcblxuLyoqXG4gKiBUaGUgdHJhbnNsYXRpb25zIG1hcC5cbiAqL1xuZXhwb3J0IHR5cGUgVHJhbnNsYXRpb25zTWFwID0gUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2kxOG4vaTE4bi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBgaTE4bmAgbW9kdWxlIGZvciBgaTE4bmV4dGAuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBTZWxlY3RvckZuLFxuICBTZWxlY3Rvck9wdGlvbnMsXG4gIFRGdW5jdGlvblxufSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB0eXBlIHsgUmVhZG9ubHlEZWVwIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IGkxOG5leHQsIHtcbiAgaW5pdCxcbiAgdCBhcyB0TGliXG59IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IHsgZ2V0TGFuZ3VhZ2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRGVmYXVsdFRyYW5zbGF0aW9uc0Jhc2UgfSBmcm9tICcuL2RlZmF1bHQtdHJhbnNsYXRpb25zLnRzJztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHkgfSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5pbXBvcnQgeyBlbiB9IGZyb20gJy4vbG9jYWxlcy9lbi50cyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0xBTkdVQUdFLFxuICBkZWZhdWx0VHJhbnNsYXRpb25zTWFwXG59IGZyb20gJy4vbG9jYWxlcy90cmFuc2xhdGlvbnMtbWFwLnRzJztcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBuYW1lc3BhY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX05TID0gJ3RyYW5zbGF0aW9uJztcblxuLyoqXG4gKiBUaGUgdHJhbnNsYXRpb25zIG1hcC5cbiAqL1xuZXhwb3J0IHR5cGUgVHJhbnNsYXRpb25zTWFwID0gUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuXG5pbnRlcmZhY2UgVE9wdGlvbnMgZXh0ZW5kcyBTZWxlY3Rvck9wdGlvbnM8W3R5cGVvZiBERUZBVUxUX05TXT4ge1xuICByZWFkb25seSBuczogW3R5cGVvZiBERUZBVUxUX05TXTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgYGkxOG5gIG1vZHVsZS5cbiAqXG4gKiBDYWxsaW5nIHRoaXMgYWdhaW4gcmUtcnVucyBgaTE4bmV4dC5pbml0KClgLCB3aGljaCBmdWxseSByZXBsYWNlcyB0aGUgcmVzb3VyY2Ugc3RvcmUgYW5kIGxhbmd1YWdlLCBzbyBhIHJlbG9hZCBwaWNrc1xuICogdXAgYSBjaGFuZ2VkIGxhbmd1YWdlIG9yIHRyYW5zbGF0aW9ucyBtYXAuIFRoZSBsYXp5IGZhbGxiYWNrIGluIHtAbGluayB0fSBhbmQgZXh0ZXJuYWwgY2FsbGVycyByZWx5IG9uXG4gKiBgaTE4bmV4dC5pc0luaXRpYWxpemVkYCAoc2V0IGJ5IGBpMThuZXh0LmluaXQoKWApIGFzIHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoLCBzbyBubyBzZXBhcmF0ZSBndWFyZCBpcyBrZXB0IGhlcmUuXG4gKlxuICogQHBhcmFtIHRyYW5zbGF0aW9uc01hcCAtIFRoZSB0cmFuc2xhdGlvbnMgbWFwLlxuICogQHBhcmFtIGlzQXN5bmMgLSBXaGV0aGVyIHRoZSBpbml0aWFsaXphdGlvbiBpcyBhc3luY2hyb25vdXMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGBpMThuYCBtb2R1bGUgaXMgaW5pdGlhbGl6ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0STE4Tih0cmFuc2xhdGlvbnNNYXA6IFRyYW5zbGF0aW9uc01hcCwgaXNBc3luYyA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IERFRkFVTFRfTEFOR1VBR0UsXG4gICAgaW5pdEFzeW5jOiBpc0FzeW5jLFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZVxuICAgIH0sXG4gICAgbG5nOiBnZXRMYW5ndWFnZSgpLFxuICAgIHJlc291cmNlczogT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXModHJhbnNsYXRpb25zTWFwKS5tYXAoKFtsYW5ndWFnZSwgdHJhbnNsYXRpb25zXSkgPT4gW1xuICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAge1xuICAgICAgICAgIFtERUZBVUxUX05TXTogdHJhbnNsYXRpb25zXG4gICAgICAgIH1cbiAgICAgIF0pXG4gICAgKSxcbiAgICByZXR1cm5FbXB0eVN0cmluZzogZmFsc2UsXG4gICAgcmV0dXJuTnVsbDogZmFsc2VcbiAgfSk7XG5cbiAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShERUZBVUxUX0xBTkdVQUdFLCBERUZBVUxUX05TLCBlbiwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5mdW5jdGlvbiB0SW1wbChcbiAgc2VsZWN0b3I6IFNlbGVjdG9yRm48UmVhZG9ubHlEZWVwPERlZmF1bHRUcmFuc2xhdGlvbnNCYXNlPiwgc3RyaW5nLCBTZWxlY3Rvck9wdGlvbnM8W3R5cGVvZiBERUZBVUxUX05TXT4+LFxuICBvcHRpb25zPzogVE9wdGlvbnNcbik6IHN0cmluZyB7XG4gIGlmICghaTE4bmV4dC5pc0luaXRpYWxpemVkKSB7XG4gICAgY29uc29sZS53YXJuKCdJMThOIHdhcyBub3QgaW5pdGlhbGl6ZWQsIGluaXRpYWxpemluZyBkZWZhdWx0IG9ic2lkaWFuLWRldi11dGlscyB0cmFuc2xhdGlvbnMnKTtcbiAgICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiBpbml0STE4TihkZWZhdWx0VHJhbnNsYXRpb25zTWFwLCBmYWxzZSkpO1xuICB9XG5cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgcmV0dXJuIHRMaWIoc2VsZWN0b3IpO1xuICB9XG5cbiAgcmV0dXJuIHRMaWIoc2VsZWN0b3IsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFRoZSBgdGAgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCB0ID0gdEltcGwgYXMgVEZ1bmN0aW9uO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhQSxPQUFPO0FBQUEsRUFDTDtBQUFBLEVBQ0EsS0FBSztBQUFBLE9BQ0E7QUFDUCxTQUFTLG1CQUFtQjtBQUk1QixTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLFVBQVU7QUFDbkI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFLQSxNQUFNLGFBQWE7QUFzQjFCLGVBQXNCLFNBQVMsaUJBQWtDLFVBQVUsTUFBcUI7QUFDOUYsUUFBTSxLQUFLO0FBQUEsSUFDVCxhQUFhO0FBQUEsSUFDYixXQUFXO0FBQUEsSUFDWCxlQUFlO0FBQUEsTUFDYixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsS0FBSyxZQUFZO0FBQUEsSUFDakIsV0FBVyxPQUFPO0FBQUEsTUFDaEIsT0FBTyxRQUFRLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxVQUFVLFlBQVksTUFBTTtBQUFBLFFBQ2hFO0FBQUEsUUFDQTtBQUFBLFVBQ0UsQ0FBQyxVQUFVLEdBQUc7QUFBQSxRQUNoQjtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxJQUNBLG1CQUFtQjtBQUFBLElBQ25CLFlBQVk7QUFBQSxFQUNkLENBQUM7QUFFRCxVQUFRLGtCQUFrQixrQkFBa0IsWUFBWSxJQUFJLE1BQU0sS0FBSztBQUN6RTtBQUVBLFNBQVMsTUFDUCxVQUNBLFNBQ1E7QUFDUixNQUFJLENBQUMsUUFBUSxlQUFlO0FBQzFCLFlBQVEsS0FBSyxnRkFBZ0Y7QUFDN0Ysc0JBQWtCLE1BQU0sU0FBUyx3QkFBd0IsS0FBSyxDQUFDO0FBQUEsRUFDakU7QUFFQSxNQUFJLENBQUMsU0FBUztBQUNaLFdBQU8sS0FBSyxRQUFRO0FBQUEsRUFDdEI7QUFFQSxTQUFPLEtBQUssVUFBVSxPQUFPO0FBQy9CO0FBS08sTUFBTSxJQUFJOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* This module provides utilities for handling and updating links within Obsidian vaults. It includes
|
|
6
6
|
* functions to split paths, update links in files, and generate markdown links with various options.
|
|
7
7
|
*/
|
|
8
|
-
import type { App, CachedMetadata,
|
|
8
|
+
import type { App, CachedMetadata, Reference, TFile } from 'obsidian';
|
|
9
9
|
import type { Promisable } from 'type-fest';
|
|
10
10
|
import type { MaybeReturn } from '../type.mjs';
|
|
11
11
|
import type { PathOrFile } from './file-system.mjs';
|
|
@@ -64,7 +64,7 @@ export declare enum LinkStyle {
|
|
|
64
64
|
Wikilink = "Wikilink"
|
|
65
65
|
}
|
|
66
66
|
/**
|
|
67
|
-
*
|
|
67
|
+
* Params for {@link convertLink}.
|
|
68
68
|
*/
|
|
69
69
|
export interface ConvertLinkParams {
|
|
70
70
|
/**
|
|
@@ -93,7 +93,7 @@ export interface ConvertLinkParams {
|
|
|
93
93
|
readonly shouldUpdateFileNameAlias?: boolean;
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
96
|
-
*
|
|
96
|
+
* Params for {@link generateMarkdownLink}.
|
|
97
97
|
*/
|
|
98
98
|
export interface GenerateMarkdownLinkParams {
|
|
99
99
|
/**
|
|
@@ -233,7 +233,7 @@ export interface GenerateMarkdownLinkParams {
|
|
|
233
233
|
readonly targetPathOrFile: PathOrFile;
|
|
234
234
|
}
|
|
235
235
|
/**
|
|
236
|
-
*
|
|
236
|
+
* Params for {@link generateRawMarkdownLink}.
|
|
237
237
|
*/
|
|
238
238
|
export interface GenerateRawMarkdownLinkParams {
|
|
239
239
|
/**
|
|
@@ -373,7 +373,7 @@ export interface ParseLinkResult {
|
|
|
373
373
|
readonly url: string;
|
|
374
374
|
}
|
|
375
375
|
/**
|
|
376
|
-
*
|
|
376
|
+
* Params for {@link shouldResetAlias}.
|
|
377
377
|
*/
|
|
378
378
|
export interface ShouldResetAliasParams {
|
|
379
379
|
/**
|
|
@@ -419,7 +419,7 @@ export interface SplitSubpathResult {
|
|
|
419
419
|
readonly subpath: string;
|
|
420
420
|
}
|
|
421
421
|
/**
|
|
422
|
-
*
|
|
422
|
+
* Params for {@link updateLink}.
|
|
423
423
|
*/
|
|
424
424
|
export interface UpdateLinkParams {
|
|
425
425
|
/**
|
|
@@ -456,7 +456,7 @@ export interface UpdateLinkParams {
|
|
|
456
456
|
readonly shouldUpdateFileNameAlias?: boolean;
|
|
457
457
|
}
|
|
458
458
|
/**
|
|
459
|
-
*
|
|
459
|
+
* Params for {@link updateLinksInFile}.
|
|
460
460
|
*/
|
|
461
461
|
export interface UpdateLinksInFileParams extends ProcessOptions {
|
|
462
462
|
/**
|
|
@@ -485,7 +485,7 @@ export interface UpdateLinksInFileParams extends ProcessOptions {
|
|
|
485
485
|
readonly shouldUpdateFileNameAlias?: boolean;
|
|
486
486
|
}
|
|
487
487
|
/**
|
|
488
|
-
*
|
|
488
|
+
* Params for {@link updateLinksInContent}.
|
|
489
489
|
*/
|
|
490
490
|
interface UpdateLinksInContentParams {
|
|
491
491
|
/**
|
|
@@ -598,12 +598,23 @@ export declare function fixFrontmatterMarkdownLinks(cache: CachedMetadata): bool
|
|
|
598
598
|
*/
|
|
599
599
|
export declare function generateMarkdownLink(params: GenerateMarkdownLinkParams): string;
|
|
600
600
|
/**
|
|
601
|
-
* Generates a raw markdown link based on the provided
|
|
601
|
+
* Generates a raw markdown link based on the provided params.
|
|
602
602
|
*
|
|
603
603
|
* @param params - The parameters for generating a raw markdown link.
|
|
604
604
|
* @returns A raw markdown link.
|
|
605
605
|
*/
|
|
606
606
|
export declare function generateRawMarkdownLink(params: GenerateRawMarkdownLinkParams): string;
|
|
607
|
+
/**
|
|
608
|
+
* Returns the shared, mutable list of functions that provide default params for {@link generateMarkdownLink}.
|
|
609
|
+
*
|
|
610
|
+
* Each function is invoked on every {@link generateMarkdownLink} call and its result is merged into the params (later
|
|
611
|
+
* registrations take precedence over the built-in defaults, but never over explicitly passed params). Register entries
|
|
612
|
+
* by adding a `GenerateMarkdownLinkDefaultParamsComponent` to a component tree rather than mutating this list directly.
|
|
613
|
+
*
|
|
614
|
+
* @param app - The Obsidian app instance whose shared state holds the list.
|
|
615
|
+
* @returns The mutable list of default-params functions.
|
|
616
|
+
*/
|
|
617
|
+
export declare function getGenerateMarkdownLinkDefaultParamsFns(app: App): (() => Partial<GenerateMarkdownLinkParams>)[];
|
|
607
618
|
/**
|
|
608
619
|
* Parses a link into its components.
|
|
609
620
|
*
|
|
@@ -618,13 +629,6 @@ export declare function parseLink(str: string): null | ParseLinkResult;
|
|
|
618
629
|
* @returns The parsed links.
|
|
619
630
|
*/
|
|
620
631
|
export declare function parseLinks(str: string): ParseLinkResult[];
|
|
621
|
-
/**
|
|
622
|
-
* Registers a function that returns default options for generating a markdown link.
|
|
623
|
-
*
|
|
624
|
-
* @param plugin - The plugin instance.
|
|
625
|
-
* @param fn - The function that returns the default options.
|
|
626
|
-
*/
|
|
627
|
-
export declare function registerGenerateMarkdownLinkDefaultOptionsFn(plugin: Plugin, fn: () => Partial<GenerateMarkdownLinkParams>): void;
|
|
628
632
|
/**
|
|
629
633
|
* Determines if the alias of a link should be reset.
|
|
630
634
|
*
|