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.
Files changed (47) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/dev/main.js +107 -74
  3. package/dist/lib/cjs/library.cjs +1 -1
  4. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +3 -7
  5. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +1 -3
  6. package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +15 -4
  7. package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +9 -3
  8. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +3 -8
  9. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +1 -3
  10. package/dist/lib/cjs/obsidian/components/generate-markdown-link-default-params-component.cjs +162 -0
  11. package/dist/lib/cjs/obsidian/components/generate-markdown-link-default-params-component.d.cts +45 -0
  12. package/dist/lib/cjs/obsidian/components/index.cjs +4 -4
  13. package/dist/lib/cjs/obsidian/components/index.d.cts +1 -1
  14. package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +50 -7
  15. package/dist/lib/cjs/obsidian/components/plugin-notice-component.d.cts +26 -3
  16. package/dist/lib/cjs/obsidian/i18n/i18n.cjs +2 -7
  17. package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +4 -0
  18. package/dist/lib/cjs/obsidian/link.cjs +9 -16
  19. package/dist/lib/cjs/obsidian/link.d.cts +20 -16
  20. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +15 -20
  21. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +10 -14
  22. package/dist/lib/esm/library.mjs +1 -1
  23. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +1 -3
  24. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +3 -7
  25. package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +9 -3
  26. package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +16 -5
  27. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +1 -3
  28. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +3 -8
  29. package/dist/lib/esm/obsidian/components/generate-markdown-link-default-params-component.d.mts +45 -0
  30. package/dist/lib/esm/obsidian/components/generate-markdown-link-default-params-component.mjs +54 -0
  31. package/dist/lib/esm/obsidian/components/index.d.mts +1 -1
  32. package/dist/lib/esm/obsidian/components/index.mjs +3 -3
  33. package/dist/lib/esm/obsidian/components/plugin-notice-component.d.mts +26 -3
  34. package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +50 -7
  35. package/dist/lib/esm/obsidian/i18n/i18n.d.mts +4 -0
  36. package/dist/lib/esm/obsidian/i18n/i18n.mjs +2 -7
  37. package/dist/lib/esm/obsidian/link.d.mts +20 -16
  38. package/dist/lib/esm/obsidian/link.mjs +8 -15
  39. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +10 -14
  40. package/dist/lib/esm/obsidian/plugin/plugin.mjs +15 -20
  41. package/obsidian/Components/generate-markdown-link-default-params-component/package.json +6 -0
  42. package/package.json +1 -1
  43. package/dist/lib/cjs/obsidian/components/i18n-component.cjs +0 -156
  44. package/dist/lib/cjs/obsidian/components/i18n-component.d.cts +0 -24
  45. package/dist/lib/esm/obsidian/components/i18n-component.d.mts +0 -24
  46. package/dist/lib/esm/obsidian/components/i18n-component.mjs +0 -48
  47. package/obsidian/Components/i18n-component/package.json +0 -6
@@ -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 'i18n-component' from './i18n-component.mjs';
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 i18n_component from "./i18n-component.mjs";
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
- i18n_component as "i18n-component",
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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnYWJvcnQtc2lnbmFsLWNvbXBvbmVudCcgZnJvbSAnLi9hYm9ydC1zaWduYWwtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQnIGZyb20gJy4vYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudCcgZnJvbSAnLi9hc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnYXN5bmMtZXZlbnRzLWNvbXBvbmVudCcgZnJvbSAnLi9hc3luYy1ldmVudHMtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdjb21wb25lbnQtZXgnIGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcbmV4cG9ydCAqIGFzICdjb25zb2xlLWRlYnVnLWNvbXBvbmVudCcgZnJvbSAnLi9jb25zb2xlLWRlYnVnLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnZGlzcG9zYWJsZS1jb21wb25lbnQnIGZyb20gJy4vZGlzcG9zYWJsZS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2kxOG4tY29tcG9uZW50JyBmcm9tICcuL2kxOG4tY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdsYXlvdXQtcmVhZHktY29tcG9uZW50JyBmcm9tICcuL2xheW91dC1yZWFkeS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ21lbnUtZXZlbnQtcmVnaXN0cmFyLWNvbXBvbmVudCcgZnJvbSAnLi9tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ21vbmtleS1hcm91bmQtY29tcG9uZW50JyBmcm9tICcuL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tY29udGV4dC1jb21wb25lbnQnIGZyb20gJy4vcGx1Z2luLWNvbnRleHQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tbm90aWNlLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tc2V0dGluZ3MtdGFiLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tc2V0dGluZ3MtdGFiLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncmVnaXN0cnktY29tcG9uZW50JyBmcm9tICcuL3JlZ2lzdHJ5LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncmVuYW1lLWRlbGV0ZS1oYW5kbGVyLWNvbXBvbmVudCcgZnJvbSAnLi9yZW5hbWUtZGVsZXRlLWhhbmRsZXItY29tcG9uZW50LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsWUFBWUEsNEJBQThCO0FBQzFDLFlBQVlDLGlDQUFtQztBQUMvQyxZQUFZQyxtQ0FBcUM7QUFDakQsWUFBWUMsNEJBQThCO0FBQzFDLFlBQVlDLGtCQUFvQjtBQUNoQyxZQUFZQyw2QkFBK0I7QUFDM0MsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVlDLG9CQUFzQjtBQUNsQyxZQUFZQyw0QkFBOEI7QUFDMUMsWUFBWUMsb0NBQXNDO0FBQ2xELFlBQVlDLDZCQUErQjtBQUMzQyxZQUFZQyw4QkFBZ0M7QUFDNUMsWUFBWUMsNkJBQStCO0FBQzNDLFlBQVlDLCtCQUFpQztBQUM3QyxZQUFZQyxtQ0FBcUM7QUFDakQsWUFBWUMsd0JBQTBCO0FBQ3RDLFlBQVlDLHFDQUF1QzsiLAogICJuYW1lcyI6IFsiYWJvcnQtc2lnbmFsLWNvbXBvbmVudCIsICJhbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQiLCAiYXN5bmMtZXJyb3ItaGFuZGxlci1jb21wb25lbnQiLCAiYXN5bmMtZXZlbnRzLWNvbXBvbmVudCIsICJjb21wb25lbnQtZXgiLCAiY29uc29sZS1kZWJ1Zy1jb21wb25lbnQiLCAiZGlzcG9zYWJsZS1jb21wb25lbnQiLCAiaTE4bi1jb21wb25lbnQiLCAibGF5b3V0LXJlYWR5LWNvbXBvbmVudCIsICJtZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQiLCAibW9ua2V5LWFyb3VuZC1jb21wb25lbnQiLCAicGx1Z2luLWNvbnRleHQtY29tcG9uZW50IiwgInBsdWdpbi1ub3RpY2UtY29tcG9uZW50IiwgInBsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQiLCAicGx1Z2luLXNldHRpbmdzLXRhYi1jb21wb25lbnQiLCAicmVnaXN0cnktY29tcG9uZW50IiwgInJlbmFtZS1kZWxldGUtaGFuZGxlci1jb21wb25lbnQiXQp9Cg==
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
- * Hides the current notice on unload.
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
- * Hides the current notice on unload.
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.notice?.hide();
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
- this.notice = new Notice(`${this.pluginName}${this._loaded ? "" : " (unloaded)"}
52
- ${message}`);
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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbXBvbmVudHMvcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21wb25lbnQgdGhhdCBtYW5hZ2VzIGRpc3BsYXlpbmcgbm90aWNlcyB0byB0aGUgdXNlci5cbiAqL1xuXG5pbXBvcnQgeyBOb3RpY2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IENvbXBvbmVudEV4IH0gZnJvbSAnLi9jb21wb25lbnQtZXgudHMnO1xuXG4vKipcbiAqIE1hbmFnZXMgc2hvd2luZyBwbHVnaW4gbm90aWNlcy4gQXV0b21hdGljYWxseSBoaWRlcyB0aGUgcHJldmlvdXMgbm90aWNlIHdoZW4gYSBuZXcgb25lIGlzIHNob3duLlxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luTm90aWNlQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50RXgge1xuICBwcml2YXRlIG5vdGljZT86IE5vdGljZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBwbHVnaW4gbm90aWNlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbk5hbWUgLSBUaGUgcGx1Z2luIG5hbWUgKHNob3duIGFzIHByZWZpeCBpbiBub3RpY2VzKS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogSGlkZXMgdGhlIGN1cnJlbnQgbm90aWNlIG9uIHVubG9hZC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBvbnVubG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGljZT8uaGlkZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIGEgbm90aWNlIG1lc3NhZ2UgdG8gdGhlIHVzZXIuXG4gICAqXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2UgdG8gZGlzcGxheS5cbiAgICovXG4gIHB1YmxpYyBzaG93Tm90aWNlKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubm90aWNlPy5oaWRlKCk7XG4gICAgdGhpcy5ub3RpY2UgPSBuZXcgTm90aWNlKGAke3RoaXMucGx1Z2luTmFtZX0ke3RoaXMuX2xvYWRlZCA/ICcnIDogJyAodW5sb2FkZWQpJ31cXG4ke21lc3NhZ2V9YCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUEsU0FBUyxjQUFjO0FBRXZCLFNBQVMsbUJBQW1CO0FBS3JCLE1BQU0sOEJBQThCLFlBQVk7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFROUMsWUFBNkIsWUFBb0I7QUFDdEQsVUFBTTtBQUQ0QjtBQUFBLEVBRXBDO0FBQUEsRUFGb0M7QUFBQSxFQVA1QjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBY1EsV0FBaUI7QUFDL0IsU0FBSyxRQUFRLEtBQUs7QUFBQSxFQUNwQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLFdBQVcsU0FBdUI7QUFDdkMsU0FBSyxRQUFRLEtBQUs7QUFDbEIsU0FBSyxTQUFTLElBQUksT0FBTyxHQUFHLEtBQUssVUFBVSxHQUFHLEtBQUssVUFBVSxLQUFLLGFBQWE7QUFBQSxFQUFLLE9BQU8sRUFBRTtBQUFBLEVBQy9GO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
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+O1xuXG5sZXQgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG5pbnRlcmZhY2UgVE9wdGlvbnMgZXh0ZW5kcyBTZWxlY3Rvck9wdGlvbnM8W3R5cGVvZiBERUZBVUxUX05TXT4ge1xuICByZWFkb25seSBuczogW3R5cGVvZiBERUZBVUxUX05TXTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgYGkxOG5gIG1vZHVsZS5cbiAqXG4gKiBAcGFyYW0gdHJhbnNsYXRpb25zTWFwIC0gVGhlIHRyYW5zbGF0aW9ucyBtYXAuXG4gKiBAcGFyYW0gaXNBc3luYyAtIFdoZXRoZXIgdGhlIGluaXRpYWxpemF0aW9uIGlzIGFzeW5jaHJvbm91cy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYGkxOG5gIG1vZHVsZSBpcyBpbml0aWFsaXplZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRJMThOKHRyYW5zbGF0aW9uc01hcDogVHJhbnNsYXRpb25zTWFwLCBpc0FzeW5jID0gdHJ1ZSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoaXNJbml0aWFsaXplZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gIGF3YWl0IGluaXQoe1xuICAgIGZhbGxiYWNrTG5nOiBERUZBVUxUX0xBTkdVQUdFLFxuICAgIGluaXRBc3luYzogaXNBc3luYyxcbiAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICBlc2NhcGVWYWx1ZTogZmFsc2VcbiAgICB9LFxuICAgIGxuZzogZ2V0TGFuZ3VhZ2UoKSxcbiAgICByZXNvdXJjZXM6IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKHRyYW5zbGF0aW9uc01hcCkubWFwKChbbGFuZ3VhZ2UsIHRyYW5zbGF0aW9uc10pID0+IFtcbiAgICAgICAgbGFuZ3VhZ2UsXG4gICAgICAgIHtcbiAgICAgICAgICBbREVGQVVMVF9OU106IHRyYW5zbGF0aW9uc1xuICAgICAgICB9XG4gICAgICBdKVxuICAgICksXG4gICAgcmV0dXJuRW1wdHlTdHJpbmc6IGZhbHNlLFxuICAgIHJldHVybk51bGw6IGZhbHNlXG4gIH0pO1xuXG4gIGkxOG5leHQuYWRkUmVzb3VyY2VCdW5kbGUoREVGQVVMVF9MQU5HVUFHRSwgREVGQVVMVF9OUywgZW4sIHRydWUsIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gdEltcGwoXG4gIHNlbGVjdG9yOiBTZWxlY3RvckZuPFJlYWRvbmx5RGVlcDxEZWZhdWx0VHJhbnNsYXRpb25zQmFzZT4sIHN0cmluZywgU2VsZWN0b3JPcHRpb25zPFt0eXBlb2YgREVGQVVMVF9OU10+PixcbiAgb3B0aW9ucz86IFRPcHRpb25zXG4pOiBzdHJpbmcge1xuICBpZiAoIWlzSW5pdGlhbGl6ZWQpIHtcbiAgICBjb25zb2xlLndhcm4oJ0kxOE4gd2FzIG5vdCBpbml0aWFsaXplZCwgaW5pdGlhbGl6aW5nIGRlZmF1bHQgb2JzaWRpYW4tZGV2LXV0aWxzIHRyYW5zbGF0aW9ucycpO1xuICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IGluaXRJMThOKGRlZmF1bHRUcmFuc2xhdGlvbnNNYXAsIGZhbHNlKSk7XG4gIH1cblxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICByZXR1cm4gdExpYihzZWxlY3Rvcik7XG4gIH1cblxuICByZXR1cm4gdExpYihzZWxlY3Rvciwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogVGhlIGB0YCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHQgPSB0SW1wbCBhcyBURnVuY3Rpb247XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWFBLE9BQU87QUFBQSxFQUNMO0FBQUEsRUFDQSxLQUFLO0FBQUEsT0FDQTtBQUNQLFNBQVMsbUJBQW1CO0FBSTVCLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsVUFBVTtBQUNuQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUtBLE1BQU0sYUFBYTtBQU8xQixJQUFJLGdCQUFnQjtBQWFwQixlQUFzQixTQUFTLGlCQUFrQyxVQUFVLE1BQXFCO0FBQzlGLE1BQUksZUFBZTtBQUNqQjtBQUFBLEVBQ0Y7QUFFQSxrQkFBZ0I7QUFFaEIsUUFBTSxLQUFLO0FBQUEsSUFDVCxhQUFhO0FBQUEsSUFDYixXQUFXO0FBQUEsSUFDWCxlQUFlO0FBQUEsTUFDYixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsS0FBSyxZQUFZO0FBQUEsSUFDakIsV0FBVyxPQUFPO0FBQUEsTUFDaEIsT0FBTyxRQUFRLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxVQUFVLFlBQVksTUFBTTtBQUFBLFFBQ2hFO0FBQUEsUUFDQTtBQUFBLFVBQ0UsQ0FBQyxVQUFVLEdBQUc7QUFBQSxRQUNoQjtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxJQUNBLG1CQUFtQjtBQUFBLElBQ25CLFlBQVk7QUFBQSxFQUNkLENBQUM7QUFFRCxVQUFRLGtCQUFrQixrQkFBa0IsWUFBWSxJQUFJLE1BQU0sS0FBSztBQUN6RTtBQUVBLFNBQVMsTUFDUCxVQUNBLFNBQ1E7QUFDUixNQUFJLENBQUMsZUFBZTtBQUNsQixZQUFRLEtBQUssZ0ZBQWdGO0FBQzdGLHNCQUFrQixNQUFNLFNBQVMsd0JBQXdCLEtBQUssQ0FBQztBQUFBLEVBQ2pFO0FBRUEsTUFBSSxDQUFDLFNBQVM7QUFDWixXQUFPLEtBQUssUUFBUTtBQUFBLEVBQ3RCO0FBRUEsU0FBTyxLQUFLLFVBQVUsT0FBTztBQUMvQjtBQUtPLE1BQU0sSUFBSTsiLAogICJuYW1lcyI6IFtdCn0K
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, Plugin, Reference, TFile } from 'obsidian';
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
- * Options for {@link convertLink}.
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
- * Options for {@link generateMarkdownLink}.
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
- * Options for {@link generateRawMarkdownLink}.
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
- * Options for {@link shouldResetAlias}.
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
- * Options for {@link updateLink}.
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
- * Options for {@link updateLinksInFile}.
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
- * Options for {@link updateLinksInContent}.
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 options.
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
  *