obsidian-dev-utils 85.1.0 → 86.1.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/@types/obsidian-integration-testing/package.json +4 -0
- package/CHANGELOG.md +20 -0
- package/README.md +14 -8
- package/dist/lib/cjs/@types/obsidian-integration-testing.d.cts +18 -0
- package/dist/lib/cjs/__merged.cjs +1291 -0
- package/dist/lib/cjs/__merged.d.cts +165 -0
- package/dist/lib/cjs/abort-controller.cjs +3 -4
- package/dist/lib/cjs/async.cjs +13 -7
- package/dist/lib/cjs/async.d.cts +6 -0
- package/dist/lib/cjs/disposable.cjs +224 -3
- package/dist/lib/cjs/disposable.d.cts +222 -2
- package/dist/lib/cjs/error.cjs +41 -3
- package/dist/lib/cjs/error.d.cts +50 -1
- package/dist/lib/cjs/generated-during-build.cjs +2 -2
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/attachment-path.cjs +3 -3
- package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +27 -11
- package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.d.cts +14 -9
- package/dist/lib/cjs/obsidian/command-handlers/index.cjs +4 -1
- package/dist/lib/cjs/obsidian/command-handlers/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/command-handlers/open-demo-vault-command-handler.cjs +195 -0
- package/dist/lib/cjs/obsidian/command-handlers/open-demo-vault-command-handler.d.cts +65 -0
- package/dist/lib/cjs/obsidian/community-plugins.cjs +156 -0
- package/dist/lib/cjs/obsidian/community-plugins.d.cts +22 -0
- package/dist/lib/cjs/obsidian/components/disposable-component.cjs +8 -8
- package/dist/lib/cjs/obsidian/components/disposable-component.d.cts +9 -3
- package/dist/lib/cjs/obsidian/components/monkey-around-component.cjs +17 -2
- package/dist/lib/cjs/obsidian/components/monkey-around-component.d.cts +17 -0
- package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +161 -22
- package/dist/lib/cjs/obsidian/components/plugin-notice-component.d.cts +81 -8
- package/dist/lib/cjs/obsidian/css-class.cjs +4 -1
- package/dist/lib/cjs/obsidian/css-class.d.cts +13 -0
- package/dist/lib/cjs/obsidian/desktop-demo-vault-opener.cjs +239 -0
- package/dist/lib/cjs/obsidian/desktop-demo-vault-opener.d.cts +45 -0
- package/dist/lib/cjs/obsidian/desktop-trusted-input.cjs +215 -0
- package/dist/lib/cjs/obsidian/desktop-trusted-input.d.cts +135 -0
- package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +3 -1
- package/dist/lib/cjs/obsidian/i18n/locales/en.d.cts +2 -0
- package/dist/lib/cjs/obsidian/i18n/locales/translations-map.d.cts +2 -0
- package/dist/lib/cjs/obsidian/index.cjs +10 -1
- package/dist/lib/cjs/obsidian/index.d.cts +3 -0
- package/dist/lib/cjs/obsidian/link.cjs +2 -2
- package/dist/lib/cjs/obsidian/modals/index.cjs +4 -1
- package/dist/lib/cjs/obsidian/modals/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/modals/minimizable-modal.cjs +15 -2
- package/dist/lib/cjs/obsidian/modals/minimizable-modal.d.cts +18 -3
- package/dist/lib/cjs/obsidian/modals/select-option.cjs +182 -0
- package/dist/lib/cjs/obsidian/modals/select-option.d.cts +65 -0
- package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +4 -1
- package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.d.cts +6 -0
- package/dist/lib/cjs/obsidian/plugin/plugin.cjs +50 -3
- package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +17 -0
- package/dist/lib/cjs/obsidian/workspace.cjs +8 -1
- package/dist/lib/cjs/obsidian/workspace.d.cts +10 -0
- package/dist/lib/cjs/path.cjs +4 -4
- package/dist/lib/cjs/path.d.cts +1 -1
- package/dist/lib/cjs/script-utils/demo-vault.cjs +177 -0
- package/dist/lib/cjs/script-utils/demo-vault.d.cts +23 -0
- package/dist/lib/cjs/script-utils/exec.cjs +75 -34
- package/dist/lib/cjs/script-utils/exec.d.cts +34 -0
- package/dist/lib/cjs/script-utils/index.cjs +9 -3
- package/dist/lib/cjs/script-utils/index.d.cts +2 -0
- package/dist/lib/cjs/script-utils/linters/eslint-no-restricted-syntax.cjs +1 -5
- package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +5 -1
- package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +8 -0
- package/dist/lib/cjs/script-utils/version.cjs +8 -1
- package/dist/lib/cjs/script-utils/version.d.cts +8 -0
- package/dist/lib/cjs/script-utils/warnings-as-errors.cjs +157 -0
- package/dist/lib/cjs/script-utils/warnings-as-errors.d.cts +27 -0
- package/dist/lib/cjs/setup.cjs +75 -4
- package/dist/lib/cjs/setup.d.cts +29 -7
- package/dist/lib/cjs/string.cjs +7 -4
- package/dist/lib/cjs/string.d.cts +11 -1
- package/dist/lib/esm/@types/obsidian-integration-testing.d.mts +18 -0
- package/dist/lib/esm/__merged.d.mts +165 -0
- package/dist/lib/esm/__merged.mjs +1134 -0
- package/dist/lib/esm/abort-controller.mjs +7 -5
- package/dist/lib/esm/async.d.mts +6 -0
- package/dist/lib/esm/async.mjs +13 -7
- package/dist/lib/esm/disposable.d.mts +222 -2
- package/dist/lib/esm/disposable.mjs +215 -2
- package/dist/lib/esm/error.d.mts +50 -1
- package/dist/lib/esm/error.mjs +41 -4
- package/dist/lib/esm/generated-during-build.mjs +2 -2
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/obsidian/attachment-path.mjs +4 -4
- package/dist/lib/esm/obsidian/command-handlers/command-handler-component.d.mts +14 -9
- package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +31 -11
- package/dist/lib/esm/obsidian/command-handlers/index.d.mts +1 -0
- package/dist/lib/esm/obsidian/command-handlers/index.mjs +3 -1
- package/dist/lib/esm/obsidian/command-handlers/open-demo-vault-command-handler.d.mts +65 -0
- package/dist/lib/esm/obsidian/command-handlers/open-demo-vault-command-handler.mjs +77 -0
- package/dist/lib/esm/obsidian/community-plugins.d.mts +22 -0
- package/dist/lib/esm/obsidian/community-plugins.mjs +48 -0
- package/dist/lib/esm/obsidian/components/disposable-component.d.mts +9 -3
- package/dist/lib/esm/obsidian/components/disposable-component.mjs +8 -8
- package/dist/lib/esm/obsidian/components/monkey-around-component.d.mts +17 -0
- package/dist/lib/esm/obsidian/components/monkey-around-component.mjs +17 -2
- package/dist/lib/esm/obsidian/components/plugin-notice-component.d.mts +81 -8
- package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +163 -23
- package/dist/lib/esm/obsidian/css-class.d.mts +13 -0
- package/dist/lib/esm/obsidian/css-class.mjs +4 -1
- package/dist/lib/esm/obsidian/desktop-demo-vault-opener.d.mts +45 -0
- package/dist/lib/esm/obsidian/desktop-demo-vault-opener.mjs +121 -0
- package/dist/lib/esm/obsidian/desktop-trusted-input.d.mts +135 -0
- package/dist/lib/esm/obsidian/desktop-trusted-input.mjs +103 -0
- package/dist/lib/esm/obsidian/i18n/locales/en.d.mts +2 -0
- package/dist/lib/esm/obsidian/i18n/locales/en.mjs +3 -1
- package/dist/lib/esm/obsidian/i18n/locales/translations-map.d.mts +2 -0
- package/dist/lib/esm/obsidian/index.d.mts +3 -0
- package/dist/lib/esm/obsidian/index.mjs +7 -1
- package/dist/lib/esm/obsidian/link.mjs +3 -3
- package/dist/lib/esm/obsidian/modals/index.d.mts +1 -0
- package/dist/lib/esm/obsidian/modals/index.mjs +3 -1
- package/dist/lib/esm/obsidian/modals/minimizable-modal.d.mts +18 -3
- package/dist/lib/esm/obsidian/modals/minimizable-modal.mjs +17 -3
- package/dist/lib/esm/obsidian/modals/select-option.d.mts +65 -0
- package/dist/lib/esm/obsidian/modals/select-option.mjs +77 -0
- package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.d.mts +6 -0
- package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +4 -1
- package/dist/lib/esm/obsidian/plugin/plugin.d.mts +17 -0
- package/dist/lib/esm/obsidian/plugin/plugin.mjs +50 -3
- package/dist/lib/esm/obsidian/workspace.d.mts +10 -0
- package/dist/lib/esm/obsidian/workspace.mjs +7 -1
- package/dist/lib/esm/path.d.mts +1 -1
- package/dist/lib/esm/path.mjs +3 -3
- package/dist/lib/esm/script-utils/demo-vault.d.mts +23 -0
- package/dist/lib/esm/script-utils/demo-vault.mjs +63 -0
- package/dist/lib/esm/script-utils/exec.d.mts +34 -0
- package/dist/lib/esm/script-utils/exec.mjs +73 -34
- package/dist/lib/esm/script-utils/index.d.mts +2 -0
- package/dist/lib/esm/script-utils/index.mjs +6 -2
- package/dist/lib/esm/script-utils/linters/eslint-no-restricted-syntax.mjs +1 -5
- package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +8 -0
- package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +5 -1
- package/dist/lib/esm/script-utils/version.d.mts +8 -0
- package/dist/lib/esm/script-utils/version.mjs +8 -1
- package/dist/lib/esm/script-utils/warnings-as-errors.d.mts +27 -0
- package/dist/lib/esm/script-utils/warnings-as-errors.mjs +38 -0
- package/dist/lib/esm/setup.d.mts +29 -7
- package/dist/lib/esm/setup.mjs +78 -4
- package/dist/lib/esm/string.d.mts +11 -1
- package/dist/lib/esm/string.mjs +5 -3
- package/dist/styles.css +33 -3
- package/obsidian/command-handlers/open-demo-vault-command-handler/package.json +6 -0
- package/obsidian/community-plugins/package.json +6 -0
- package/obsidian/desktop-demo-vault-opener/package.json +6 -0
- package/obsidian/desktop-trusted-input/package.json +6 -0
- package/obsidian/modals/select-option/package.json +6 -0
- package/package.json +22 -9
- package/script-utils/demo-vault/package.json +6 -0
- package/script-utils/warnings-as-errors/package.json +6 -0
- package/dist/dev/main.js +0 -32702
- package/dist/dev/manifest.json +0 -9
- /package/obsidian/@types/{Dataview → dataview}/api/data-array/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/api/extensions/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/api/inline-api/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/api/plugin-api/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/api/result/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-import/common/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-import/csv/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-import/inline-field/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-import/markdown-file/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-import/persister/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-entry/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-impl/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-manager/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-index/index/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-index/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-index/resolver/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-index/source/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-model/markdown/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-model/serialized/markdown/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-model/transferable/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/data-model/value/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/expression/binaryop/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/expression/context/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/expression/field/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/expression/functions/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/expression/parse/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/index/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/main/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/query/engine/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/query/parse/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/query/query/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/settings/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/typings/obsidian-ex/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/typings/workers/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/ui/export/markdown/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/ui/lp-render/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/ui/markdown/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/ui/refreshable-view/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/ui/render/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/ui/views/calendar-view/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/ui/views/inline-field-live-preview/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/ui/views/inline-view/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/ui/views/js-view/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/ui/views/list-view/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/ui/views/table-view/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/ui/views/task-view/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/util/hash/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/util/locale/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/util/media/package.json +0 -0
- /package/obsidian/@types/{Dataview → dataview}/util/normalize/package.json +0 -0
- /package/obsidian/{App → app}/package.json +0 -0
- /package/obsidian/{Backlink → backlink}/package.json +0 -0
- /package/obsidian/{Callout → callout}/package.json +0 -0
- /package/obsidian/{Components → components}/abort-signal-component/package.json +0 -0
- /package/obsidian/{Components → components}/all-windows-event-component/package.json +0 -0
- /package/obsidian/{Components → components}/async-error-handler-component/package.json +0 -0
- /package/obsidian/{Components → components}/async-events-component/package.json +0 -0
- /package/obsidian/{Components → components}/case-insensitive-file-index-component/package.json +0 -0
- /package/obsidian/{Components → components}/component-ex/package.json +0 -0
- /package/obsidian/{Components → components}/console-debug-component/package.json +0 -0
- /package/obsidian/{Components → components}/disposable-component/package.json +0 -0
- /package/obsidian/{Components → components}/embed-extensions-component/package.json +0 -0
- /package/obsidian/{Components → components}/generate-markdown-link-default-params-component/package.json +0 -0
- /package/obsidian/{Components → components}/index/package.json +0 -0
- /package/obsidian/{Components → components}/layout-ready-component/package.json +0 -0
- /package/obsidian/{Components → components}/menu-event-registrar-component/package.json +0 -0
- /package/obsidian/{Components → components}/monkey-around-component/package.json +0 -0
- /package/obsidian/{Components → components}/package.json +0 -0
- /package/obsidian/{Components → components}/plugin-context-component/package.json +0 -0
- /package/obsidian/{Components → components}/plugin-notice-component/package.json +0 -0
- /package/obsidian/{Components → components}/plugin-settings-component/package.json +0 -0
- /package/obsidian/{Components → components}/plugin-settings-tab-component/package.json +0 -0
- /package/obsidian/{Components → components}/registry-component/package.json +0 -0
- /package/obsidian/{Components → components}/rename-delete-handler-component/package.json +0 -0
- /package/obsidian/{Dataview → dataview}/package.json +0 -0
- /package/obsidian/{Editor → editor}/package.json +0 -0
- /package/obsidian/{Frontmatter → frontmatter}/package.json +0 -0
- /package/obsidian/{Link → link}/package.json +0 -0
- /package/obsidian/{Logger → logger}/package.json +0 -0
- /package/obsidian/{Loop → loop}/package.json +0 -0
- /package/obsidian/{Markdown → markdown}/package.json +0 -0
- /package/obsidian/{Modals/Alert → modals/alert}/package.json +0 -0
- /package/obsidian/{Modals/Confirm → modals/confirm}/package.json +0 -0
- /package/obsidian/{Modals → modals}/index/package.json +0 -0
- /package/obsidian/{Modals → modals}/minimizable-modal/package.json +0 -0
- /package/obsidian/{Modals → modals}/modal/package.json +0 -0
- /package/obsidian/{Modals → modals}/package.json +0 -0
- /package/obsidian/{Modals/Prompt → modals/prompt}/package.json +0 -0
- /package/obsidian/{Modals → modals}/select-item/package.json +0 -0
- /package/obsidian/{Modals → modals}/suggest-modal-command-builder/package.json +0 -0
- /package/obsidian/{Pdf → pdf}/package.json +0 -0
- /package/obsidian/{Plugin → plugin}/index/package.json +0 -0
- /package/obsidian/{Plugin → plugin}/obsidian-plugin-repo-paths/package.json +0 -0
- /package/obsidian/{Plugin → plugin}/package.json +0 -0
- /package/obsidian/{Plugin/Plugin → plugin/plugin}/package.json +0 -0
- /package/obsidian/{Plugin → plugin}/plugin-context/package.json +0 -0
- /package/obsidian/{Plugin → plugin}/plugin-event-source/package.json +0 -0
- /package/obsidian/{Plugin → plugin}/plugin-settings-tab/package.json +0 -0
- /package/obsidian/{Queue → queue}/package.json +0 -0
- /package/obsidian/{React → react}/app-context/package.json +0 -0
- /package/obsidian/{React → react}/index/package.json +0 -0
- /package/obsidian/{React → react}/package.json +0 -0
- /package/obsidian/{Reference → reference}/package.json +0 -0
- /package/obsidian/{Validation → validation}/package.json +0 -0
- /package/obsidian/{Vault → vault}/package.json +0 -0
- /package/obsidian/{Workspace → workspace}/package.json +0 -0
- /package/{Transformers → transformers}/date-transformer/package.json +0 -0
- /package/{Transformers → transformers}/duration-transformer/package.json +0 -0
- /package/{Transformers → transformers}/group-transformer/package.json +0 -0
- /package/{Transformers → transformers}/index/package.json +0 -0
- /package/{Transformers → transformers}/map-transformer/package.json +0 -0
- /package/{Transformers → transformers}/package.json +0 -0
- /package/{Transformers → transformers}/set-transformer/package.json +0 -0
- /package/{Transformers → transformers}/skip-private-property-transformer/package.json +0 -0
- /package/{Transformers/Transformer → transformers/transformer}/package.json +0 -0
- /package/{Transformers → transformers}/two-way-map-transformer/package.json +0 -0
- /package/{Transformers → transformers}/typed-transformer/package.json +0 -0
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Component that manages displaying notices to the user.
|
|
6
6
|
*/
|
|
7
|
+
import type { App } from 'obsidian' with { 'resolution-mode': 'import' };
|
|
8
|
+
import type { Promisable } from 'type-fest' with { 'resolution-mode': 'import' };
|
|
7
9
|
import { Notice } from 'obsidian';
|
|
8
10
|
import type { ValueProvider } from '../../value-provider.cjs';
|
|
9
11
|
import { ComponentEx } from './component-ex.cjs';
|
|
@@ -64,20 +66,64 @@ export interface PluginNoticeComponentShowNoticeOptions {
|
|
|
64
66
|
* @default `false`
|
|
65
67
|
*/
|
|
66
68
|
readonly isPermanent?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Whether the notice occupies the single per-plugin reusable slot.
|
|
71
|
+
*
|
|
72
|
+
* A reusable notice takes the shared slot: the next reusable notice hides it, and it is hidden on unload.
|
|
73
|
+
* A non-reusable (standalone) notice is not placed in the slot — it never hides, and is never hidden by, a
|
|
74
|
+
* reusable notice; multiple standalone notices coexist. Standalone notices are still hidden together on unload.
|
|
75
|
+
*
|
|
76
|
+
* A permanent notice must be reusable ({@link PluginNoticeComponentShowNoticeOptions.isPermanent} implies
|
|
77
|
+
* `isReusable`); passing `isReusable: false` together with `isPermanent: true` throws.
|
|
78
|
+
*
|
|
79
|
+
* @default `true`
|
|
80
|
+
*/
|
|
81
|
+
readonly isReusable?: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* A callback invoked when the notice is hidden — whether by the user closing it, by a later reusable
|
|
84
|
+
* notice replacing it, by its duration elapsing, or on component unload. It runs at most once per
|
|
85
|
+
* notice. An async callback is run fire-and-forget (its rejection surfaces through the async-error
|
|
86
|
+
* pipeline).
|
|
87
|
+
*/
|
|
88
|
+
onHide?(this: void): Promisable<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Whether the notice is hard to close: it does not dismiss on any stray click, and instead shows a
|
|
91
|
+
* close (X) button whose click opens a confirmation modal, dismissing the notice only if confirmed.
|
|
92
|
+
*
|
|
93
|
+
* A hard-to-close notice is shown with an infinite duration and is standalone (implies
|
|
94
|
+
* {@link PluginNoticeComponentShowNoticeOptions.isReusable} `= false`), so a later notice never
|
|
95
|
+
* silently replaces it; passing `isReusable: true` together with `requiresCloseConfirmation: true`
|
|
96
|
+
* throws.
|
|
97
|
+
*
|
|
98
|
+
* @default `false`
|
|
99
|
+
*/
|
|
100
|
+
readonly requiresCloseConfirmation?: boolean;
|
|
101
|
+
}
|
|
102
|
+
interface PluginNoticeComponentConstructorParams {
|
|
103
|
+
readonly app: App;
|
|
104
|
+
readonly pluginName: string;
|
|
67
105
|
}
|
|
68
106
|
/**
|
|
69
107
|
* Manages showing plugin notices. Automatically hides the previous notice when a new one is shown.
|
|
70
108
|
*/
|
|
71
109
|
export declare class PluginNoticeComponent extends ComponentEx {
|
|
110
|
+
/**
|
|
111
|
+
* The Obsidian app instance.
|
|
112
|
+
*/
|
|
113
|
+
protected readonly app: App;
|
|
114
|
+
/**
|
|
115
|
+
* The plugin name (shown as prefix in notices).
|
|
116
|
+
*/
|
|
72
117
|
protected readonly pluginName: string;
|
|
73
118
|
private notice;
|
|
74
119
|
private readonly pendingTimerCancellations;
|
|
120
|
+
private readonly standaloneNotices;
|
|
75
121
|
/**
|
|
76
122
|
* Creates a new plugin notice component.
|
|
77
123
|
*
|
|
78
|
-
* @param
|
|
124
|
+
* @param params - The constructor parameters.
|
|
79
125
|
*/
|
|
80
|
-
constructor(
|
|
126
|
+
constructor(params: PluginNoticeComponentConstructorParams);
|
|
81
127
|
/**
|
|
82
128
|
* Dismisses the permanent notice left over from a previous load (e.g. a previous plugin session) on load.
|
|
83
129
|
*/
|
|
@@ -116,6 +162,14 @@ export declare class PluginNoticeComponent extends ComponentEx {
|
|
|
116
162
|
* timer) when disposed and lets the content be updated while it is shown.
|
|
117
163
|
*/
|
|
118
164
|
showNoticeAfterDelay(params: PluginNoticeComponentShowNoticeAfterDelayParams): PluginNoticeComponentDelayedNotice;
|
|
165
|
+
/**
|
|
166
|
+
* Appends a close (X) button to the notice content. Clicking it opens a confirmation modal and, only
|
|
167
|
+
* if confirmed, hides the notice and drops it from the standalone-notice tracking set.
|
|
168
|
+
*
|
|
169
|
+
* @param contentEl - The notice content wrapper to append the button to.
|
|
170
|
+
* @param getNotice - Resolves the notice to hide when the close is confirmed.
|
|
171
|
+
*/
|
|
172
|
+
private appendCloseButton;
|
|
119
173
|
/**
|
|
120
174
|
* Builds the message for a delayed notice: the resolved content, optionally followed by a Cancel
|
|
121
175
|
* button that aborts the provided controller when clicked.
|
|
@@ -130,7 +184,7 @@ export declare class PluginNoticeComponent extends ComponentEx {
|
|
|
130
184
|
* element; the container intercepts clicks originating on an interactive element (a link, button,
|
|
131
185
|
* input, etc.) and stops them there, so the element's own handler still runs but the notice stays.
|
|
132
186
|
*
|
|
133
|
-
* @param
|
|
187
|
+
* @param params - The parameters.
|
|
134
188
|
* @returns A {@link DocumentFragment} holding the wrapped, prefixed notice content.
|
|
135
189
|
*/
|
|
136
190
|
private buildNoticeContent;
|
|
@@ -144,15 +198,34 @@ export declare class PluginNoticeComponent extends ComponentEx {
|
|
|
144
198
|
private buildPrefixedMessage;
|
|
145
199
|
private getPermanentNotice;
|
|
146
200
|
private getPermanentNotices;
|
|
201
|
+
/**
|
|
202
|
+
* Makes a notice hard to close: marks its outer element (so the CSS neutralizes its padding) and
|
|
203
|
+
* installs a capture-phase click guard that stops every click except on the close button from
|
|
204
|
+
* reaching Obsidian's own dismiss handler.
|
|
205
|
+
*
|
|
206
|
+
* @param notice - The notice to guard.
|
|
207
|
+
* @param requiresCloseConfirmation - Whether the notice requires close confirmation; when `false`,
|
|
208
|
+
* nothing is installed.
|
|
209
|
+
*/
|
|
210
|
+
private installCloseConfirmationGuards;
|
|
147
211
|
private setPermanentNotice;
|
|
148
212
|
/**
|
|
149
|
-
* Shows a notice with the given duration
|
|
150
|
-
* as this plugin's permanent notice
|
|
213
|
+
* Shows a notice with the given duration. A reusable notice replaces the current reusable notice (and
|
|
214
|
+
* is optionally registered as this plugin's permanent notice); a standalone notice is tracked
|
|
215
|
+
* separately, leaving the reusable slot untouched.
|
|
151
216
|
*
|
|
152
|
-
* @param
|
|
153
|
-
* @param durationInMilliseconds - The notice duration; `0` keeps it until it is hidden explicitly.
|
|
154
|
-
* @param shouldRegisterAsPermanent - Whether to track the notice as this plugin's permanent notice.
|
|
217
|
+
* @param params - The parameters.
|
|
155
218
|
* @returns The created notice.
|
|
156
219
|
*/
|
|
157
220
|
private showNoticeWithDuration;
|
|
221
|
+
/**
|
|
222
|
+
* Wraps a notice's `hide` so the given callback runs the first time the notice is hidden — by the
|
|
223
|
+
* user, by a replacing notice, by its duration elapsing, or on unload. Does nothing when no callback
|
|
224
|
+
* is given.
|
|
225
|
+
*
|
|
226
|
+
* @param notice - The notice whose `hide` to wrap.
|
|
227
|
+
* @param onHide - The callback to invoke on the first hide, or `undefined` to skip wrapping.
|
|
228
|
+
*/
|
|
229
|
+
private wireOnHide;
|
|
158
230
|
}
|
|
231
|
+
export {};
|
|
@@ -156,12 +156,15 @@ var CssClass = /* @__PURE__ */ ((CssClass2) => {
|
|
|
156
156
|
CssClass2["OkButton"] = "ok-button";
|
|
157
157
|
CssClass2["OverlayValidator"] = "overlay-validator";
|
|
158
158
|
CssClass2["PasswordComponent"] = "password-component";
|
|
159
|
+
CssClass2["PluginNoticeCloseButton"] = "plugin-notice-close-button";
|
|
159
160
|
CssClass2["PluginNoticeContent"] = "plugin-notice-content";
|
|
160
161
|
CssClass2["PluginNoticeName"] = "plugin-notice-name";
|
|
162
|
+
CssClass2["PluginNoticeRequiresConfirmation"] = "plugin-notice-requires-confirmation";
|
|
161
163
|
CssClass2["PluginSettingsTab"] = "plugin-settings-tab";
|
|
162
164
|
CssClass2["PromptModal"] = "prompt-modal";
|
|
163
165
|
CssClass2["RestoreButton"] = "restore-button";
|
|
164
166
|
CssClass2["SelectItemModal"] = "select-item-modal";
|
|
167
|
+
CssClass2["SelectOptionModal"] = "select-option-modal";
|
|
165
168
|
CssClass2["SettingComponentWrapper"] = "setting-component-wrapper";
|
|
166
169
|
CssClass2["TelephoneComponent"] = "telephone-component";
|
|
167
170
|
CssClass2["TextBox"] = "text-box";
|
|
@@ -180,4 +183,4 @@ var CssClass = /* @__PURE__ */ ((CssClass2) => {
|
|
|
180
183
|
0 && (module.exports = {
|
|
181
184
|
CssClass
|
|
182
185
|
});
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2Nzcy1jbGFzcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENTUyBjbGFzc2VzIHVzZWQgYnkgdGhlIGBvYnNpZGlhbi1kZXYtdXRpbHNgIGxpYnJhcnkuXG4gKi9cblxuLyoqXG4gKiBDU1MgY2xhc3NlcyB1c2VkIGJ5IHRoZSBgb2JzaWRpYW4tZGV2LXV0aWxzYCBsaWJyYXJ5LlxuICovXG5leHBvcnQgZW51bSBDc3NDbGFzcyB7XG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIGFsZXJ0IG1vZGFsLlxuICAgKi9cbiAgQWxlcnRNb2RhbCA9ICdhbGVydC1tb2RhbCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgY2FuY2VsIGJ1dHRvbi5cbiAgICovXG4gIENhbmNlbEJ1dHRvbiA9ICdjYW5jZWwtYnV0dG9uJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBjaGVja2JveCBjb21wb25lbnQuXG4gICAqL1xuICBDaGVja2JveENvbXBvbmVudCA9ICdjaGVja2JveC1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBPYnNpZGlhbidzIGNsYXNzIGZvciBhbiBpbmxpbmUgY29kZSBlbGVtZW50ICh1c2VkIGJ5IGBhcHBlbmRDb2RlQmxvY2tgKS5cbiAgICovXG4gIENvZGUgPSAnY29kZScsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgY29kZSBoaWdobGlnaHRlciBjb21wb25lbnQuXG4gICAqL1xuICBDb2RlSGlnaGxpZ2h0ZXJDb21wb25lbnQgPSAnY29kZS1oaWdobGlnaHRlci1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIGNvbmZpcm0gbW9kYWwuXG4gICAqL1xuICBDb25maXJtTW9kYWwgPSAnY29uZmlybS1tb2RhbCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgZGF0ZSBjb21wb25lbnQuXG4gICAqL1xuICBEYXRlQ29tcG9uZW50ID0gJ2RhdGUtY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBkYXRlIGFuZCB0aW1lIGNvbXBvbmVudC5cbiAgICovXG4gIERhdGVUaW1lQ29tcG9uZW50ID0gJ2RhdGV0aW1lLWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgZW1haWwgY29tcG9uZW50LlxuICAgKi9cbiAgRW1haWxDb21wb25lbnQgPSAnZW1haWwtY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBmaWxlIGNvbXBvbmVudC5cbiAgICovXG4gIEZpbGVDb21wb25lbnQgPSAnZmlsZS1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHBsYWNlaG9sZGVyLlxuICAgKi9cbiAgSXNQbGFjZWhvbGRlciA9ICdpcy1wbGFjZWhvbGRlcicsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgbGlicmFyeSBuYW1lLlxuICAgKi9cbiAgTGlicmFyeU5hbWUgPSAnb2JzaWRpYW4tZGV2LXV0aWxzJyxcblxuICAvKipcbiAgICogT2JzaWRpYW4ncyBjbGFzcyBtYXJraW5nIHJlbmRlcmVkLW1hcmtkb3duIGNvbnRlbnQgKHVzZWQgYnkgYGFwcGVuZENvZGVCbG9ja2ApLlxuICAgKi9cbiAgTWFya2Rvd25SZW5kZXJlZCA9ICdtYXJrZG93bi1yZW5kZXJlZCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgbWluaW1pemFibGUgbW9kYWwuXG4gICAqL1xuICBNaW5pbWl6YWJsZU1vZGFsID0gJ21pbmltaXphYmxlLW1vZGFsJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBtaW5pbWl6ZSBidXR0b24gb2YgdGhlIG1pbmltaXphYmxlIG1vZGFsLlxuICAgKi9cbiAgTWluaW1pemVCdXR0b24gPSAnbWluaW1pemUtYnV0dG9uJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBtaW5pbWl6ZWQgYmFyIG9mIHRoZSBtaW5pbWl6YWJsZSBtb2RhbC5cbiAgICovXG4gIE1pbmltaXplZE1vZGFsQmFyID0gJ21pbmltaXplZC1tb2RhbC1iYXInLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIG9uZS1zaG90IGF0dGVudGlvbiBmbGFzaCBvZiB0aGUgbWluaW1pemVkIGJhciwgcGxheWVkIHdoZW4gdGhlIHVzZXIgYXR0ZW1wdHMgYVxuICAgKiBibG9ja2VkIGFjdGlvbiAoYSBrZXlzdHJva2UsIHJpZ2h0LWNsaWNrLCBvciBvcGVuaW5nIGFub3RoZXIgbW9kYWwpIHdoaWxlIHRoZSBtb2RhbCBpcyBtaW5pbWl6ZWQuXG4gICAqL1xuICBNaW5pbWl6ZWRNb2RhbEJhckF0dGVudGlvbiA9ICdtaW5pbWl6ZWQtbW9kYWwtYmFyLWF0dGVudGlvbicsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgdGl0bGUgb2YgdGhlIG1pbmltaXplZCBiYXIgb2YgdGhlIG1pbmltaXphYmxlIG1vZGFsLlxuICAgKi9cbiAgTWluaW1pemVkTW9kYWxCYXJUaXRsZSA9ICdtaW5pbWl6ZWQtbW9kYWwtYmFyLXRpdGxlJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBtb250aCBjb21wb25lbnQuXG4gICAqL1xuICBNb250aENvbXBvbmVudCA9ICdtb250aC1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIG11bHRpcGxlIGRyb3Bkb3duIGNvbXBvbmVudC5cbiAgICovXG4gIE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgPSAnbXVsdGlwbGUtZHJvcGRvd24tY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBtdWx0aXBsZSBlbWFpbCBjb21wb25lbnQuXG4gICAqL1xuICBNdWx0aXBsZUVtYWlsQ29tcG9uZW50ID0gJ211bHRpcGxlLWVtYWlsLWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgbXVsdGlwbGUgZmlsZSBjb21wb25lbnQuXG4gICAqL1xuICBNdWx0aXBsZUZpbGVDb21wb25lbnQgPSAnbXVsdGlwbGUtZmlsZS1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIG11bHRpcGxlIHRleHQgY29tcG9uZW50LlxuICAgKi9cbiAgTXVsdGlwbGVUZXh0Q29tcG9uZW50ID0gJ211bHRpcGxlLXRleHQtY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBudW1iZXIgY29tcG9uZW50LlxuICAgKi9cbiAgTnVtYmVyQ29tcG9uZW50ID0gJ251bWJlci1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIG9rIGJ1dHRvbi5cbiAgICovXG4gIE9rQnV0dG9uID0gJ29rLWJ1dHRvbicsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgb3ZlcmxheSB2YWxpZGF0b3IuXG4gICAqL1xuICBPdmVybGF5VmFsaWRhdG9yID0gJ292ZXJsYXktdmFsaWRhdG9yJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBwYXNzd29yZCBjb21wb25lbnQuXG4gICAqL1xuICBQYXNzd29yZENvbXBvbmVudCA9ICdwYXNzd29yZC1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIGNsb3NlIGJ1dHRvbiBvZiBhIG5vdGljZSB0aGF0IHJlcXVpcmVzIGNsb3NlIGNvbmZpcm1hdGlvbi5cbiAgICovXG4gIFBsdWdpbk5vdGljZUNsb3NlQnV0dG9uID0gJ3BsdWdpbi1ub3RpY2UtY2xvc2UtYnV0dG9uJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBjb250YWluZXIgd3JhcHBpbmcgYSBub3RpY2UncyBjb250ZW50LCB1c2VkIHRvIGtlZXAgdGhlIG5vdGljZSBvcGVuIHdoZW4gYW5cbiAgICogaW50ZXJhY3RpdmUgZWxlbWVudCBpbnNpZGUgaXQgaXMgY2xpY2tlZC5cbiAgICovXG4gIFBsdWdpbk5vdGljZUNvbnRlbnQgPSAncGx1Z2luLW5vdGljZS1jb250ZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBwbHVnaW4gbmFtZSBzaG93biBhcyB0aGUgcHJlZml4IG9mIGEgbm90aWNlLlxuICAgKi9cbiAgUGx1Z2luTm90aWNlTmFtZSA9ICdwbHVnaW4tbm90aWNlLW5hbWUnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBhcHBsaWVkIHRvIHRoZSBub3RpY2UgZWxlbWVudCBvZiBhIG5vdGljZSB0aGF0IHJlcXVpcmVzIGNsb3NlIGNvbmZpcm1hdGlvbiwgdXNlZCB0b1xuICAgKiBtYWtlIGl0cyB3aG9sZSBhcmVhIG5vbi1kaXNtaXNzaWJsZS5cbiAgICovXG4gIFBsdWdpbk5vdGljZVJlcXVpcmVzQ29uZmlybWF0aW9uID0gJ3BsdWdpbi1ub3RpY2UtcmVxdWlyZXMtY29uZmlybWF0aW9uJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgUGx1Z2luU2V0dGluZ3NUYWIgPSAncGx1Z2luLXNldHRpbmdzLXRhYicsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgcHJvbXB0IG1vZGFsLlxuICAgKi9cbiAgUHJvbXB0TW9kYWwgPSAncHJvbXB0LW1vZGFsJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSByZXN0b3JlIGJ1dHRvbiBvZiB0aGUgbWluaW1pemVkIG1vZGFsIGJhci5cbiAgICovXG4gIFJlc3RvcmVCdXR0b24gPSAncmVzdG9yZS1idXR0b24nLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHNlbGVjdCBpdGVtIG1vZGFsLlxuICAgKi9cbiAgU2VsZWN0SXRlbU1vZGFsID0gJ3NlbGVjdC1pdGVtLW1vZGFsJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSBzZWxlY3Qgb3B0aW9uIG1vZGFsLlxuICAgKi9cbiAgU2VsZWN0T3B0aW9uTW9kYWwgPSAnc2VsZWN0LW9wdGlvbi1tb2RhbCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgc2V0dGluZyBjb21wb25lbnQgd3JhcHBlci5cbiAgICovXG4gIFNldHRpbmdDb21wb25lbnRXcmFwcGVyID0gJ3NldHRpbmctY29tcG9uZW50LXdyYXBwZXInLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHRlbGVwaG9uZSBjb21wb25lbnQuXG4gICAqL1xuICBUZWxlcGhvbmVDb21wb25lbnQgPSAndGVsZXBob25lLWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgdGV4dCBib3guXG4gICAqL1xuICBUZXh0Qm94ID0gJ3RleHQtYm94JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSB0aW1lIGNvbXBvbmVudC5cbiAgICovXG4gIFRpbWVDb21wb25lbnQgPSAndGltZS1jb21wb25lbnQnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHRvb2x0aXAuXG4gICAqL1xuICBUb29sdGlwID0gJ3Rvb2x0aXAnLFxuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBmb3IgdGhlIHRvb2x0aXAgYXJyb3cuXG4gICAqL1xuICBUb29sdGlwQXJyb3cgPSAndG9vbHRpcC1hcnJvdycsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgdG9vbHRpcCB2YWxpZGF0b3IuXG4gICAqL1xuICBUb29sdGlwVmFsaWRhdG9yID0gJ3Rvb2x0aXAtdmFsaWRhdG9yJyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSB0cmktc3RhdGUgY2hlY2tib3ggY29tcG9uZW50LlxuICAgKi9cbiAgVHJpU3RhdGVDaGVja2JveENvbXBvbmVudCA9ICd0cmktc3RhdGUtY2hlY2tib3gtY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSB0eXBlZCBkcm9wZG93biBjb21wb25lbnQuXG4gICAqL1xuICBUeXBlZERyb3Bkb3duQ29tcG9uZW50ID0gJ3R5cGVkLWRyb3Bkb3duLWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgdHlwZWQgbXVsdGlwbGUgZHJvcGRvd24gY29tcG9uZW50LlxuICAgKi9cbiAgVHlwZWRNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50ID0gJ3R5cGVkLW11bHRpcGxlLWRyb3Bkb3duLWNvbXBvbmVudCcsXG5cbiAgLyoqXG4gICAqIEEgQ1NTIGNsYXNzIGZvciB0aGUgdXJsIGNvbXBvbmVudC5cbiAgICovXG4gIFVybENvbXBvbmVudCA9ICd1cmwtY29tcG9uZW50JyxcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgZm9yIHRoZSB3ZWVrIGNvbXBvbmVudC5cbiAgICovXG4gIFdlZWtDb21wb25lbnQgPSAnd2Vlay1jb21wb25lbnQnXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTTyxJQUFLLFdBQUwsa0JBQUtBLGNBQUw7QUFJTCxFQUFBQSxVQUFBLGdCQUFhO0FBS2IsRUFBQUEsVUFBQSxrQkFBZTtBQUtmLEVBQUFBLFVBQUEsdUJBQW9CO0FBS3BCLEVBQUFBLFVBQUEsVUFBTztBQUtQLEVBQUFBLFVBQUEsOEJBQTJCO0FBSzNCLEVBQUFBLFVBQUEsa0JBQWU7QUFLZixFQUFBQSxVQUFBLG1CQUFnQjtBQUtoQixFQUFBQSxVQUFBLHVCQUFvQjtBQUtwQixFQUFBQSxVQUFBLG9CQUFpQjtBQUtqQixFQUFBQSxVQUFBLG1CQUFnQjtBQUtoQixFQUFBQSxVQUFBLG1CQUFnQjtBQUtoQixFQUFBQSxVQUFBLGlCQUFjO0FBS2QsRUFBQUEsVUFBQSxzQkFBbUI7QUFLbkIsRUFBQUEsVUFBQSxzQkFBbUI7QUFLbkIsRUFBQUEsVUFBQSxvQkFBaUI7QUFLakIsRUFBQUEsVUFBQSx1QkFBb0I7QUFNcEIsRUFBQUEsVUFBQSxnQ0FBNkI7QUFLN0IsRUFBQUEsVUFBQSw0QkFBeUI7QUFLekIsRUFBQUEsVUFBQSxvQkFBaUI7QUFLakIsRUFBQUEsVUFBQSwrQkFBNEI7QUFLNUIsRUFBQUEsVUFBQSw0QkFBeUI7QUFLekIsRUFBQUEsVUFBQSwyQkFBd0I7QUFLeEIsRUFBQUEsVUFBQSwyQkFBd0I7QUFLeEIsRUFBQUEsVUFBQSxxQkFBa0I7QUFLbEIsRUFBQUEsVUFBQSxjQUFXO0FBS1gsRUFBQUEsVUFBQSxzQkFBbUI7QUFLbkIsRUFBQUEsVUFBQSx1QkFBb0I7QUFLcEIsRUFBQUEsVUFBQSw2QkFBMEI7QUFNMUIsRUFBQUEsVUFBQSx5QkFBc0I7QUFLdEIsRUFBQUEsVUFBQSxzQkFBbUI7QUFNbkIsRUFBQUEsVUFBQSxzQ0FBbUM7QUFLbkMsRUFBQUEsVUFBQSx1QkFBb0I7QUFLcEIsRUFBQUEsVUFBQSxpQkFBYztBQUtkLEVBQUFBLFVBQUEsbUJBQWdCO0FBS2hCLEVBQUFBLFVBQUEscUJBQWtCO0FBS2xCLEVBQUFBLFVBQUEsdUJBQW9CO0FBS3BCLEVBQUFBLFVBQUEsNkJBQTBCO0FBSzFCLEVBQUFBLFVBQUEsd0JBQXFCO0FBS3JCLEVBQUFBLFVBQUEsYUFBVTtBQUtWLEVBQUFBLFVBQUEsbUJBQWdCO0FBS2hCLEVBQUFBLFVBQUEsYUFBVTtBQUtWLEVBQUFBLFVBQUEsa0JBQWU7QUFLZixFQUFBQSxVQUFBLHNCQUFtQjtBQUtuQixFQUFBQSxVQUFBLCtCQUE0QjtBQUs1QixFQUFBQSxVQUFBLDRCQUF5QjtBQUt6QixFQUFBQSxVQUFBLG9DQUFpQztBQUtqQyxFQUFBQSxVQUFBLGtCQUFlO0FBS2YsRUFBQUEsVUFBQSxtQkFBZ0I7QUFsUE4sU0FBQUE7QUFBQSxHQUFBOyIsCiAgIm5hbWVzIjogWyJDc3NDbGFzcyJdCn0K
|
|
@@ -117,6 +117,10 @@ export declare enum CssClass {
|
|
|
117
117
|
* A CSS class for the password component.
|
|
118
118
|
*/
|
|
119
119
|
PasswordComponent = "password-component",
|
|
120
|
+
/**
|
|
121
|
+
* A CSS class for the close button of a notice that requires close confirmation.
|
|
122
|
+
*/
|
|
123
|
+
PluginNoticeCloseButton = "plugin-notice-close-button",
|
|
120
124
|
/**
|
|
121
125
|
* A CSS class for the container wrapping a notice's content, used to keep the notice open when an
|
|
122
126
|
* interactive element inside it is clicked.
|
|
@@ -126,6 +130,11 @@ export declare enum CssClass {
|
|
|
126
130
|
* A CSS class for the plugin name shown as the prefix of a notice.
|
|
127
131
|
*/
|
|
128
132
|
PluginNoticeName = "plugin-notice-name",
|
|
133
|
+
/**
|
|
134
|
+
* A CSS class applied to the notice element of a notice that requires close confirmation, used to
|
|
135
|
+
* make its whole area non-dismissible.
|
|
136
|
+
*/
|
|
137
|
+
PluginNoticeRequiresConfirmation = "plugin-notice-requires-confirmation",
|
|
129
138
|
/**
|
|
130
139
|
* A CSS class for the plugin settings tab.
|
|
131
140
|
*/
|
|
@@ -142,6 +151,10 @@ export declare enum CssClass {
|
|
|
142
151
|
* A CSS class for the select item modal.
|
|
143
152
|
*/
|
|
144
153
|
SelectItemModal = "select-item-modal",
|
|
154
|
+
/**
|
|
155
|
+
* A CSS class for the select option modal.
|
|
156
|
+
*/
|
|
157
|
+
SelectOptionModal = "select-option-modal",
|
|
145
158
|
/**
|
|
146
159
|
* A CSS class for the setting component wrapper.
|
|
147
160
|
*/
|
|
@@ -0,0 +1,239 @@
|
|
|
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 initCjs() {
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
|
+
const globalThisRecord = globalThis;
|
|
9
|
+
globalThisRecord['__name'] ??= name;
|
|
10
|
+
const originalRequire = require;
|
|
11
|
+
if (originalRequire && !originalRequire.__isPatched) {
|
|
12
|
+
// eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
|
|
13
|
+
require = Object.assign(
|
|
14
|
+
(id) => requirePatched(id),
|
|
15
|
+
originalRequire,
|
|
16
|
+
{
|
|
17
|
+
__isPatched: true
|
|
18
|
+
}
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const newFuncs = {
|
|
23
|
+
__extractDefault() {
|
|
24
|
+
return extractDefault;
|
|
25
|
+
},
|
|
26
|
+
process() {
|
|
27
|
+
const browserProcess = {
|
|
28
|
+
browser: true,
|
|
29
|
+
cwd() {
|
|
30
|
+
return '/';
|
|
31
|
+
},
|
|
32
|
+
env: {},
|
|
33
|
+
platform: 'android'
|
|
34
|
+
};
|
|
35
|
+
return browserProcess;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
for (const key of Object.keys(newFuncs)) {
|
|
40
|
+
globalThisRecord[key] ??= newFuncs[key]?.();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function name(obj) {
|
|
44
|
+
return obj;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function extractDefault(module) {
|
|
48
|
+
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
|
|
52
|
+
'obsidian',
|
|
53
|
+
'@codemirror/autocomplete',
|
|
54
|
+
'@codemirror/collab',
|
|
55
|
+
'@codemirror/commands',
|
|
56
|
+
'@codemirror/language',
|
|
57
|
+
'@codemirror/lint',
|
|
58
|
+
'@codemirror/search',
|
|
59
|
+
'@codemirror/state',
|
|
60
|
+
'@codemirror/text',
|
|
61
|
+
'@codemirror/view',
|
|
62
|
+
'@lezer/common',
|
|
63
|
+
'@lezer/lr',
|
|
64
|
+
'@lezer/highlight'];
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
|
|
68
|
+
'@codemirror/closebrackets',
|
|
69
|
+
'@codemirror/comment',
|
|
70
|
+
'@codemirror/fold',
|
|
71
|
+
'@codemirror/gutter',
|
|
72
|
+
'@codemirror/highlight',
|
|
73
|
+
'@codemirror/history',
|
|
74
|
+
'@codemirror/matchbrackets',
|
|
75
|
+
'@codemirror/panel',
|
|
76
|
+
'@codemirror/rangeset',
|
|
77
|
+
'@codemirror/rectangular-selection',
|
|
78
|
+
'@codemirror/stream-parser',
|
|
79
|
+
'@codemirror/tooltip'];
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
function requirePatched(id) {
|
|
83
|
+
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
|
|
84
|
+
return originalRequire?.(id);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
|
+
if (globalThis.app.isMobile) {
|
|
89
|
+
if (id === 'process' || id === 'node:process') {
|
|
90
|
+
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
|
+
return globalThis.process;
|
|
94
|
+
}
|
|
95
|
+
} else {
|
|
96
|
+
const module = originalRequire?.(id);
|
|
97
|
+
if (module) {
|
|
98
|
+
return extractDefault(module);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// eslint-disable-next-line no-console -- Valid usage.
|
|
103
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
104
|
+
return {};
|
|
105
|
+
}
|
|
106
|
+
})();
|
|
107
|
+
|
|
108
|
+
"use strict";
|
|
109
|
+
var __create = Object.create;
|
|
110
|
+
var __defProp = Object.defineProperty;
|
|
111
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
112
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
113
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
114
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
115
|
+
var __export = (target, all) => {
|
|
116
|
+
for (var name in all)
|
|
117
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
118
|
+
};
|
|
119
|
+
var __copyProps = (to, from, except, desc) => {
|
|
120
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
121
|
+
for (let key of __getOwnPropNames(from))
|
|
122
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
123
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
124
|
+
}
|
|
125
|
+
return to;
|
|
126
|
+
};
|
|
127
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
128
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
129
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
130
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
131
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
132
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
133
|
+
mod
|
|
134
|
+
));
|
|
135
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
136
|
+
var desktop_demo_vault_opener_exports = {};
|
|
137
|
+
__export(desktop_demo_vault_opener_exports, {
|
|
138
|
+
openDemoVault: () => openDemoVault
|
|
139
|
+
});
|
|
140
|
+
module.exports = __toCommonJS(desktop_demo_vault_opener_exports);
|
|
141
|
+
var import_adm_zip = __toESM(__extractDefault(require('adm-zip')), 1);
|
|
142
|
+
var import_compare_versions = require('compare-versions');
|
|
143
|
+
var import_node_buffer = require('node:buffer');
|
|
144
|
+
var import_node_fs = require('node:fs');
|
|
145
|
+
var import_node_os = require('node:os');
|
|
146
|
+
var import_obsidian = require('obsidian');
|
|
147
|
+
var import_path = require('../path.cjs');
|
|
148
|
+
var import_community_plugins = require('./community-plugins.cjs');
|
|
149
|
+
var import_select_option = require('./modals/select-option.cjs');
|
|
150
|
+
const DEMO_VAULTS_CACHE_FOLDER = "obsidian-demo-vaults";
|
|
151
|
+
const HTTP_STATUS_OK = 200;
|
|
152
|
+
async function openDemoVault(params) {
|
|
153
|
+
const {
|
|
154
|
+
app,
|
|
155
|
+
manifest,
|
|
156
|
+
pluginNoticeComponent
|
|
157
|
+
} = params;
|
|
158
|
+
const repo = await (0, import_community_plugins.getCommunityPluginRepo)(manifest.id);
|
|
159
|
+
if (!repo) {
|
|
160
|
+
pluginNoticeComponent.showNotice(`Could not find plugin ${manifest.name} in the community plugins registry.`);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const currentVersion = manifest.version;
|
|
164
|
+
const latestVersion = await getLatestReleaseVersion(repo);
|
|
165
|
+
let versionToOpen;
|
|
166
|
+
if ((0, import_compare_versions.compareVersions)(currentVersion, latestVersion) >= 0) {
|
|
167
|
+
versionToOpen = currentVersion;
|
|
168
|
+
} else {
|
|
169
|
+
const chosenVersion = await (0, import_select_option.selectOption)({
|
|
170
|
+
app,
|
|
171
|
+
message: `Current version of plugin ${manifest.name} v${currentVersion} is not the latest (v${latestVersion})`,
|
|
172
|
+
options: [
|
|
173
|
+
{
|
|
174
|
+
isCta: true,
|
|
175
|
+
text: `Open demo vault for latest version (v${latestVersion})`,
|
|
176
|
+
value: latestVersion
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
text: `Open demo vault for current version (v${currentVersion})`,
|
|
180
|
+
value: currentVersion
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
text: "Cancel",
|
|
184
|
+
value: null
|
|
185
|
+
}
|
|
186
|
+
],
|
|
187
|
+
title: manifest.name
|
|
188
|
+
});
|
|
189
|
+
if (chosenVersion === null) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
versionToOpen = chosenVersion;
|
|
193
|
+
}
|
|
194
|
+
const cacheDir = (0, import_path.join)((0, import_node_os.tmpdir)(), DEMO_VAULTS_CACHE_FOLDER, manifest.id, versionToOpen);
|
|
195
|
+
if (!(0, import_node_fs.existsSync)(cacheDir)) {
|
|
196
|
+
const isExtracted = await downloadAndExtractDemoVault({
|
|
197
|
+
cacheDir,
|
|
198
|
+
manifest,
|
|
199
|
+
pluginNoticeComponent,
|
|
200
|
+
repo,
|
|
201
|
+
version: versionToOpen
|
|
202
|
+
});
|
|
203
|
+
if (!isExtracted) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
window.electron.ipcRenderer.sendSync("vault-open", cacheDir, false);
|
|
208
|
+
}
|
|
209
|
+
async function downloadAndExtractDemoVault(params) {
|
|
210
|
+
const {
|
|
211
|
+
cacheDir,
|
|
212
|
+
manifest,
|
|
213
|
+
pluginNoticeComponent,
|
|
214
|
+
repo,
|
|
215
|
+
version
|
|
216
|
+
} = params;
|
|
217
|
+
const assetUrl = `https://github.com/${repo}/releases/download/${version}/demo-vault-${version}.zip`;
|
|
218
|
+
const response = await (0, import_obsidian.requestUrl)({
|
|
219
|
+
throw: false,
|
|
220
|
+
url: assetUrl
|
|
221
|
+
});
|
|
222
|
+
if (response.status !== HTTP_STATUS_OK) {
|
|
223
|
+
pluginNoticeComponent.showNotice(`No demo vault is available for plugin ${manifest.name} v${version}.`);
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
const zip = new import_adm_zip.default(import_node_buffer.Buffer.from(response.arrayBuffer));
|
|
227
|
+
zip.extractAllTo(cacheDir, true);
|
|
228
|
+
return true;
|
|
229
|
+
}
|
|
230
|
+
async function getLatestReleaseVersion(repo) {
|
|
231
|
+
const response = await (0, import_obsidian.requestUrl)(`https://api.github.com/repos/${repo}/releases/latest`);
|
|
232
|
+
const release = response.json;
|
|
233
|
+
return release.tag_name;
|
|
234
|
+
}
|
|
235
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
236
|
+
0 && (module.exports = {
|
|
237
|
+
openDemoVault
|
|
238
|
+
});
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2Rlc2t0b3AtZGVtby12YXVsdC1vcGVuZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBEb3dubG9hZHMgYW5kIG9wZW5zIGEgcGx1Z2luJ3Mgc2hpcHBlZCBkZW1vIHZhdWx0IGluIGEgbmV3IE9ic2lkaWFuIHdpbmRvdyAoZGVza3RvcCBvbmx5KS5cbiAqXG4gKiBBIHBsdWdpbiBjYW4gYXR0YWNoIGEgYGRlbW8tdmF1bHQtPHZlcnNpb24+LnppcGAgYXJjaGl2ZSB0byBlYWNoIEdpdEh1YiByZWxlYXNlIChzZWVcbiAqIGBhcmNoaXZlUGx1Z2luRGVtb1ZhdWx0YCBpbiBgc2NyaXB0LXV0aWxzL2RlbW8tdmF1bHQudHNgKS4gVGhpcyByZXNvbHZlcyB0aGUgcGx1Z2luJ3MgcmVwb3NpdG9yeVxuICogZnJvbSBPYnNpZGlhbidzIGNvbW11bml0eSByZWdpc3RyeSwgZG93bmxvYWRzIHRoZSBhcmNoaXZlIGZvciB0aGUgY2hvc2VuIHZlcnNpb24sIGV4dHJhY3RzIGl0IHRvIGFcbiAqIHBlci12ZXJzaW9uIGNhY2hlIGZvbGRlciB1bmRlciB0aGUgT1MgdGVtcCBkaXJlY3RvcnksIGFuZCBvcGVucyB0aGF0IGZvbGRlciBhcyBhIHZhdWx0IGluIGEgbmV3XG4gKiB3aW5kb3cuIFdoZW4gdGhlIGluc3RhbGxlZCBwbHVnaW4gdmVyc2lvbiBpcyBiZWhpbmQgdGhlIGxhdGVzdCByZWxlYXNlLCB0aGUgdXNlciBpcyBvZmZlcmVkIGEgY2hvaWNlXG4gKiBiZXR3ZWVuIHRoZSB0d28gdmVyc2lvbnMuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIFBsdWdpbk1hbmlmZXN0XG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IEFkbVppcCBmcm9tICdhZG0temlwJztcbmltcG9ydCB7IGNvbXBhcmVWZXJzaW9ucyB9IGZyb20gJ2NvbXBhcmUtdmVyc2lvbnMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLW5vZGVqcy1tb2R1bGVzIC0tIERlc2t0b3Atb25seSBmZWF0dXJlIGdhdGVkIGJ5IGBQbGF0Zm9ybS5pc0Rlc2t0b3BBcHBgOyB0aGUgY29tbWFuZCBpcyBoaWRkZW4gb24gbW9iaWxlIHNvIHRoaXMgTm9kZSBBUEkgaXMgbmV2ZXIgcmVhY2hlZCB0aGVyZS5cbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ25vZGU6YnVmZmVyJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1ub2RlanMtbW9kdWxlcyAtLSBEZXNrdG9wLW9ubHkgZmVhdHVyZSBnYXRlZCBieSBgUGxhdGZvcm0uaXNEZXNrdG9wQXBwYDsgdGhlIGNvbW1hbmQgaXMgaGlkZGVuIG9uIG1vYmlsZSBzbyB0aGlzIE5vZGUgQVBJIGlzIG5ldmVyIHJlYWNoZWQgdGhlcmUuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMgLS0gRGVza3RvcC1vbmx5IGZlYXR1cmUgZ2F0ZWQgYnkgYFBsYXRmb3JtLmlzRGVza3RvcEFwcGA7IHRoZSBjb21tYW5kIGlzIGhpZGRlbiBvbiBtb2JpbGUgc28gdGhpcyBOb2RlIEFQSSBpcyBuZXZlciByZWFjaGVkIHRoZXJlLlxuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQgeyByZXF1ZXN0VXJsIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbk5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7IGpvaW4gfSBmcm9tICcuLi9wYXRoLnRzJztcbmltcG9ydCB7IGdldENvbW11bml0eVBsdWdpblJlcG8gfSBmcm9tICcuL2NvbW11bml0eS1wbHVnaW5zLnRzJztcbmltcG9ydCB7IHNlbGVjdE9wdGlvbiB9IGZyb20gJy4vbW9kYWxzL3NlbGVjdC1vcHRpb24udHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBvcGVuRGVtb1ZhdWx0fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcGVuRGVtb1ZhdWx0UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIG1hbmlmZXN0IG9mIHRoZSBwbHVnaW4gd2hvc2UgZGVtbyB2YXVsdCBpcyBvcGVuZWQuIEl0cyBgaWRgIGxvY2F0ZXMgdGhlIEdpdEh1YiByZXBvc2l0b3J5LCBpdHNcbiAgICogYHZlcnNpb25gIHNlbGVjdHMgdGhlIGFyY2hpdmUsIGFuZCBpdHMgYG5hbWVgIGxhYmVscyB0aGUgbm90aWNlcyBhbmQgdGhlIHZlcnNpb24tY2hvaWNlIGRpYWxvZy5cbiAgICovXG4gIHJlYWRvbmx5IG1hbmlmZXN0OiBQbHVnaW5NYW5pZmVzdDtcblxuICAvKipcbiAgICogVGhlIG5vdGljZSBjb21wb25lbnQgdXNlZCB0byByZXBvcnQgcHJvYmxlbXMgKHBsdWdpbiBub3QgaW4gdGhlIHJlZ2lzdHJ5LCBtaXNzaW5nIGFyY2hpdmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG59XG5cbmludGVyZmFjZSBEb3dubG9hZEFuZEV4dHJhY3REZW1vVmF1bHRQYXJhbXMge1xuICByZWFkb25seSBjYWNoZURpcjogc3RyaW5nO1xuICByZWFkb25seSBtYW5pZmVzdDogUGx1Z2luTWFuaWZlc3Q7XG4gIHJlYWRvbmx5IHBsdWdpbk5vdGljZUNvbXBvbmVudDogUGx1Z2luTm90aWNlQ29tcG9uZW50O1xuICByZWFkb25seSByZXBvOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEdpdEh1YlJlbGVhc2Uge1xuICAvKipcbiAgICogVGhlIHJlbGVhc2UgdGFnLCBhIGJhcmUgdmVyc2lvbiBzdWNoIGFzIGAxLjIuM2AuXG4gICAqL1xuICByZWFkb25seSB0YWdfbmFtZTogc3RyaW5nO1xufVxuXG5jb25zdCBERU1PX1ZBVUxUU19DQUNIRV9GT0xERVIgPSAnb2JzaWRpYW4tZGVtby12YXVsdHMnO1xuY29uc3QgSFRUUF9TVEFUVVNfT0sgPSAyMDA7XG5cbi8qKlxuICogRG93bmxvYWRzIGFuZCBvcGVucyB0aGUgcGx1Z2luJ3MgZGVtbyB2YXVsdCBpbiBhIG5ldyBPYnNpZGlhbiB3aW5kb3cuIERlc2t0b3Agb25seS5cbiAqXG4gKiBJZiB0aGUgaW5zdGFsbGVkIHBsdWdpbiB2ZXJzaW9uIGlzIHRoZSBsYXRlc3QgKG9yIG5ld2VyKSwgaXRzIGRlbW8gdmF1bHQgb3BlbnMgZGlyZWN0bHk7IG90aGVyd2lzZVxuICogdGhlIHVzZXIgY2hvb3NlcyBiZXR3ZWVuIHRoZSBsYXRlc3QgYW5kIHRoZSBjdXJyZW50bHktaW5zdGFsbGVkIHZlcnNpb24uIFRoZSBjaG9zZW4gdmVyc2lvbidzXG4gKiBhcmNoaXZlIGlzIGRvd25sb2FkZWQgYW5kIGV4dHJhY3RlZCBvbmNlLCB0aGVuIHJldXNlZCBmcm9tIGEgcGVyLXZlcnNpb24gY2FjaGUgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIE9wZW5EZW1vVmF1bHRQYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSB2YXVsdCBoYXMgYmVlbiBvcGVuZWQsIG9yIG9uY2UgdGhlIG9wZXJhdGlvbiBoYXNcbiAqIGJlZW4gcmVwb3J0ZWQgYXMgbm90IHBvc3NpYmxlIChub3RpY2Ugc2hvd24pIG9yIGNhbmNlbGxlZCBieSB0aGUgdXNlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5EZW1vVmF1bHQocGFyYW1zOiBPcGVuRGVtb1ZhdWx0UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbWFuaWZlc3QsXG4gICAgcGx1Z2luTm90aWNlQ29tcG9uZW50XG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgcmVwbyA9IGF3YWl0IGdldENvbW11bml0eVBsdWdpblJlcG8obWFuaWZlc3QuaWQpO1xuICBpZiAoIXJlcG8pIHtcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZShgQ291bGQgbm90IGZpbmQgcGx1Z2luICR7bWFuaWZlc3QubmFtZX0gaW4gdGhlIGNvbW11bml0eSBwbHVnaW5zIHJlZ2lzdHJ5LmApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRWZXJzaW9uID0gbWFuaWZlc3QudmVyc2lvbjtcbiAgY29uc3QgbGF0ZXN0VmVyc2lvbiA9IGF3YWl0IGdldExhdGVzdFJlbGVhc2VWZXJzaW9uKHJlcG8pO1xuXG4gIGxldCB2ZXJzaW9uVG9PcGVuOiBzdHJpbmc7XG4gIGlmIChjb21wYXJlVmVyc2lvbnMoY3VycmVudFZlcnNpb24sIGxhdGVzdFZlcnNpb24pID49IDApIHtcbiAgICB2ZXJzaW9uVG9PcGVuID0gY3VycmVudFZlcnNpb247XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY2hvc2VuVmVyc2lvbiA9IGF3YWl0IHNlbGVjdE9wdGlvbjxudWxsIHwgc3RyaW5nPih7XG4gICAgICBhcHAsXG4gICAgICBtZXNzYWdlOiBgQ3VycmVudCB2ZXJzaW9uIG9mIHBsdWdpbiAke21hbmlmZXN0Lm5hbWV9IHYke2N1cnJlbnRWZXJzaW9ufSBpcyBub3QgdGhlIGxhdGVzdCAodiR7bGF0ZXN0VmVyc2lvbn0pYCxcbiAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlzQ3RhOiB0cnVlLFxuICAgICAgICAgIHRleHQ6IGBPcGVuIGRlbW8gdmF1bHQgZm9yIGxhdGVzdCB2ZXJzaW9uICh2JHtsYXRlc3RWZXJzaW9ufSlgLFxuICAgICAgICAgIHZhbHVlOiBsYXRlc3RWZXJzaW9uXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiBgT3BlbiBkZW1vIHZhdWx0IGZvciBjdXJyZW50IHZlcnNpb24gKHYke2N1cnJlbnRWZXJzaW9ufSlgLFxuICAgICAgICAgIHZhbHVlOiBjdXJyZW50VmVyc2lvblxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogJ0NhbmNlbCcsXG4gICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIHRpdGxlOiBtYW5pZmVzdC5uYW1lXG4gICAgfSk7XG4gICAgaWYgKGNob3NlblZlcnNpb24gPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmVyc2lvblRvT3BlbiA9IGNob3NlblZlcnNpb247XG4gIH1cblxuICBjb25zdCBjYWNoZURpciA9IGpvaW4odG1wZGlyKCksIERFTU9fVkFVTFRTX0NBQ0hFX0ZPTERFUiwgbWFuaWZlc3QuaWQsIHZlcnNpb25Ub09wZW4pO1xuICBpZiAoIWV4aXN0c1N5bmMoY2FjaGVEaXIpKSB7XG4gICAgY29uc3QgaXNFeHRyYWN0ZWQgPSBhd2FpdCBkb3dubG9hZEFuZEV4dHJhY3REZW1vVmF1bHQoe1xuICAgICAgY2FjaGVEaXIsXG4gICAgICBtYW5pZmVzdCxcbiAgICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgICAgIHJlcG8sXG4gICAgICB2ZXJzaW9uOiB2ZXJzaW9uVG9PcGVuXG4gICAgfSk7XG4gICAgaWYgKCFpc0V4dHJhY3RlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHdpbmRvdy5lbGVjdHJvbi5pcGNSZW5kZXJlci5zZW5kU3luYygndmF1bHQtb3BlbicsIGNhY2hlRGlyLCBmYWxzZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkQW5kRXh0cmFjdERlbW9WYXVsdChwYXJhbXM6IERvd25sb2FkQW5kRXh0cmFjdERlbW9WYXVsdFBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7XG4gICAgY2FjaGVEaXIsXG4gICAgbWFuaWZlc3QsXG4gICAgcGx1Z2luTm90aWNlQ29tcG9uZW50LFxuICAgIHJlcG8sXG4gICAgdmVyc2lvblxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGFzc2V0VXJsID0gYGh0dHBzOi8vZ2l0aHViLmNvbS8ke3JlcG99L3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVyc2lvbn0vZGVtby12YXVsdC0ke3ZlcnNpb259LnppcGA7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdFVybCh7XG4gICAgdGhyb3c6IGZhbHNlLFxuICAgIHVybDogYXNzZXRVcmxcbiAgfSk7XG4gIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IEhUVFBfU1RBVFVTX09LKSB7XG4gICAgcGx1Z2luTm90aWNlQ29tcG9uZW50LnNob3dOb3RpY2UoYE5vIGRlbW8gdmF1bHQgaXMgYXZhaWxhYmxlIGZvciBwbHVnaW4gJHttYW5pZmVzdC5uYW1lfSB2JHt2ZXJzaW9ufS5gKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB6aXAgPSBuZXcgQWRtWmlwKEJ1ZmZlci5mcm9tKHJlc3BvbnNlLmFycmF5QnVmZmVyKSk7XG4gIHppcC5leHRyYWN0QWxsVG8oY2FjaGVEaXIsIHRydWUpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0UmVsZWFzZVZlcnNpb24ocmVwbzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0VXJsKGBodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zLyR7cmVwb30vcmVsZWFzZXMvbGF0ZXN0YCk7XG4gIGNvbnN0IHJlbGVhc2UgPSByZXNwb25zZS5qc29uIGFzIEdpdEh1YlJlbGVhc2U7XG4gIHJldHVybiByZWxlYXNlLnRhZ19uYW1lO1xufVxuIl0sCiAgIm1hcHBp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
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/// <reference path="../library.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Downloads and opens a plugin's shipped demo vault in a new Obsidian window (desktop only).
|
|
6
|
+
*
|
|
7
|
+
* A plugin can attach a `demo-vault-<version>.zip` archive to each GitHub release (see
|
|
8
|
+
* `archivePluginDemoVault` in `script-utils/demo-vault.ts`). This resolves the plugin's repository
|
|
9
|
+
* from Obsidian's community registry, downloads the archive for the chosen version, extracts it to a
|
|
10
|
+
* per-version cache folder under the OS temp directory, and opens that folder as a vault in a new
|
|
11
|
+
* window. When the installed plugin version is behind the latest release, the user is offered a choice
|
|
12
|
+
* between the two versions.
|
|
13
|
+
*/
|
|
14
|
+
import type { App, PluginManifest } from 'obsidian' with { 'resolution-mode': 'import' };
|
|
15
|
+
import type { PluginNoticeComponent } from './components/plugin-notice-component.cjs';
|
|
16
|
+
/**
|
|
17
|
+
* Parameters for {@link openDemoVault}.
|
|
18
|
+
*/
|
|
19
|
+
export interface OpenDemoVaultParams {
|
|
20
|
+
/**
|
|
21
|
+
* The Obsidian app instance.
|
|
22
|
+
*/
|
|
23
|
+
readonly app: App;
|
|
24
|
+
/**
|
|
25
|
+
* The manifest of the plugin whose demo vault is opened. Its `id` locates the GitHub repository, its
|
|
26
|
+
* `version` selects the archive, and its `name` labels the notices and the version-choice dialog.
|
|
27
|
+
*/
|
|
28
|
+
readonly manifest: PluginManifest;
|
|
29
|
+
/**
|
|
30
|
+
* The notice component used to report problems (plugin not in the registry, missing archive).
|
|
31
|
+
*/
|
|
32
|
+
readonly pluginNoticeComponent: PluginNoticeComponent;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Downloads and opens the plugin's demo vault in a new Obsidian window. Desktop only.
|
|
36
|
+
*
|
|
37
|
+
* If the installed plugin version is the latest (or newer), its demo vault opens directly; otherwise
|
|
38
|
+
* the user chooses between the latest and the currently-installed version. The chosen version's
|
|
39
|
+
* archive is downloaded and extracted once, then reused from a per-version cache folder.
|
|
40
|
+
*
|
|
41
|
+
* @param params - The {@link OpenDemoVaultParams}.
|
|
42
|
+
* @returns A {@link Promise} that resolves once the vault has been opened, or once the operation has
|
|
43
|
+
* been reported as not possible (notice shown) or cancelled by the user.
|
|
44
|
+
*/
|
|
45
|
+
export declare function openDemoVault(params: OpenDemoVaultParams): Promise<void>;
|