obsidian-dev-utils 42.1.1 → 42.3.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 (30) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/lib/cjs/Library.cjs +1 -1
  3. package/dist/lib/cjs/obsidian/Commands/AbstractFileCommandBase.cjs +128 -0
  4. package/dist/lib/cjs/obsidian/Commands/AbstractFileCommandBase.d.cts +60 -0
  5. package/dist/lib/cjs/obsidian/Commands/CommandBase.cjs +5 -3
  6. package/dist/lib/cjs/obsidian/Commands/CommandBase.d.cts +1 -1
  7. package/dist/lib/cjs/obsidian/Commands/FileCommandBase.cjs +23 -47
  8. package/dist/lib/cjs/obsidian/Commands/FileCommandBase.d.cts +19 -21
  9. package/dist/lib/cjs/obsidian/Commands/FolderCommandBase.cjs +100 -0
  10. package/dist/lib/cjs/obsidian/Commands/FolderCommandBase.d.cts +64 -0
  11. package/dist/lib/cjs/obsidian/Commands/index.cjs +7 -1
  12. package/dist/lib/cjs/obsidian/Commands/index.d.cts +2 -0
  13. package/dist/lib/cjs/obsidian/Link.cjs +16 -2
  14. package/dist/lib/cjs/obsidian/Link.d.cts +8 -1
  15. package/dist/lib/esm/Library.mjs +1 -1
  16. package/dist/lib/esm/obsidian/Commands/AbstractFileCommandBase.d.mts +60 -0
  17. package/dist/lib/esm/obsidian/Commands/AbstractFileCommandBase.mjs +103 -0
  18. package/dist/lib/esm/obsidian/Commands/CommandBase.d.mts +1 -1
  19. package/dist/lib/esm/obsidian/Commands/CommandBase.mjs +5 -3
  20. package/dist/lib/esm/obsidian/Commands/FileCommandBase.d.mts +19 -21
  21. package/dist/lib/esm/obsidian/Commands/FileCommandBase.mjs +26 -47
  22. package/dist/lib/esm/obsidian/Commands/FolderCommandBase.d.mts +64 -0
  23. package/dist/lib/esm/obsidian/Commands/FolderCommandBase.mjs +78 -0
  24. package/dist/lib/esm/obsidian/Commands/index.d.mts +2 -0
  25. package/dist/lib/esm/obsidian/Commands/index.mjs +5 -1
  26. package/dist/lib/esm/obsidian/Link.d.mts +8 -1
  27. package/dist/lib/esm/obsidian/Link.mjs +15 -2
  28. package/obsidian/Commands/AbstractFileCommandBase/package.json +6 -0
  29. package/obsidian/Commands/FolderCommandBase/package.json +6 -0
  30. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 42.3.0
4
+
5
+ - feat: add AbstractFileCommandBase, support multiple files menu
6
+ - feat: add FolderCommandBase
7
+ - feat: switch to async commands
8
+
9
+ ## 42.2.0
10
+
11
+ - feat: add multiple default options
12
+
3
13
  ## 42.1.1
4
14
 
5
15
  - docs: add missing tsdocs
@@ -30,7 +30,7 @@ __export(Library_exports, {
30
30
  LIBRARY_VERSION: () => LIBRARY_VERSION
31
31
  });
32
32
  module.exports = __toCommonJS(Library_exports);
33
- const LIBRARY_VERSION = "42.1.1";
33
+ const LIBRARY_VERSION = "42.3.0";
34
34
  const LIBRARY_NAME = "obsidian-dev-utils";
35
35
  const LIBRARY_STYLES = ".obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component pre, .obsidian-dev-utils.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-dev-utils.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-dev-utils.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-dev-utils.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-dev-utils.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-dev-utils.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-dev-utils input[type=url] {\n height: var(--input-height);\n}\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=tel],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=url],\n.obsidian-dev-utils input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-dev-utils input[type=month]:hover,\n .obsidian-dev-utils input[type=tel]:hover,\n .obsidian-dev-utils input[type=time]:hover,\n .obsidian-dev-utils input[type=url]:hover,\n .obsidian-dev-utils input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus, .obsidian-dev-utils input[type=month]:focus-visible,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=tel]:focus-visible,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=time]:focus-visible,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=url]:focus-visible,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus,\n.obsidian-dev-utils input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-dev-utils input[type=month]::placeholder,\n.obsidian-dev-utils input[type=tel]::placeholder,\n.obsidian-dev-utils input[type=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\n.obsidian-dev-utilsprogress.loop {\n min-width: 200px;\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils .multiple-dropdown-component select,\n.obsidian-dev-utils .multiple-dropdown-component select:focus,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils .multiple-dropdown-component select option:checked,\n.obsidian-dev-utils .multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown option:checked {\n background-color: #1967d2;\n color: #fff;\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid, .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid, .obsidian-dev-utils input.metadata-input-text:focus:invalid,\n.obsidian-dev-utils input[type=date]:active:invalid,\n.obsidian-dev-utils input[type=date]:focus-visible:invalid,\n.obsidian-dev-utils input[type=date]:focus:invalid,\n.obsidian-dev-utils input[type=datetime-local]:active:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid,\n.obsidian-dev-utils input[type=email]:active:invalid,\n.obsidian-dev-utils input[type=email]:focus-visible:invalid,\n.obsidian-dev-utils input[type=email]:focus:invalid,\n.obsidian-dev-utils input[type=number]:active:invalid,\n.obsidian-dev-utils input[type=number]:focus-visible:invalid,\n.obsidian-dev-utils input[type=number]:focus:invalid,\n.obsidian-dev-utils input[type=password]:active:invalid,\n.obsidian-dev-utils input[type=password]:focus-visible:invalid,\n.obsidian-dev-utils input[type=password]:focus:invalid,\n.obsidian-dev-utils input[type=search]:active:invalid,\n.obsidian-dev-utils input[type=search]:focus-visible:invalid,\n.obsidian-dev-utils input[type=search]:focus:invalid,\n.obsidian-dev-utils input[type=text]:active:invalid,\n.obsidian-dev-utils input[type=text]:focus-visible:invalid,\n.obsidian-dev-utils input[type=text]:focus:invalid,\n.obsidian-dev-utils textarea:active:invalid,\n.obsidian-dev-utils textarea:focus-visible:invalid,\n.obsidian-dev-utils textarea:focus:invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-dev-utils.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-dev-utils.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACzCJ;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;ACjDJ;EACE;;;ACAA;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACRJ;EACE;;;ACDF;EACE;;;ACEJ;EAJA;;AAoBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EApBJ;;AA0BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-dev-utils%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&progress.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20%231967d2;%5Cn%20%20%20%20%20%20%20%20color:%20%23fff;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cr%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cr%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cr%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cr%5Cn%20%20%20%20%7D%5Cr%5Cn%20%20%7D%5Cr%5Cn%7D%5Cr%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
36
36
  // Annotate the CommonJS export names for ESM import in node:
@@ -0,0 +1,128 @@
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(){const globalThisRecord=globalThis;globalThisRecord["__name"]??=name;const originalRequire=require;if(originalRequire&&!originalRequire.__isPatched){require=Object.assign(id=>requirePatched(id),originalRequire,{__isPatched:true})}const newFuncs={__extractDefault(){return extractDefault},process(){const browserProcess={browser:true,cwd(){return"/"},env:{},platform:"android"};return browserProcess}};for(const key of Object.keys(newFuncs)){globalThisRecord[key]??=newFuncs[key]?.()}function name(obj){return obj}__name(name,"name");function extractDefault(module){return module&&module.__esModule&&"default"in module?module.default:module}__name(extractDefault,"extractDefault");function requirePatched(id){const module=originalRequire?.(id);if(module){return extractDefault(module)}if(id==="process"||id==="node:process"){console.error(`Module not found: ${id}. Fake process object is returned instead.`);return globalThis.process}console.error(`Module not found: ${id}. Empty object is returned instead.`);return{}}__name(requirePatched,"requirePatched")})();
7
+
8
+ "use strict";
9
+ var __defProp = Object.defineProperty;
10
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
+ var __getOwnPropNames = Object.getOwnPropertyNames;
12
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
13
+ var __export = (target, all) => {
14
+ for (var name in all)
15
+ __defProp(target, name, { get: all[name], enumerable: true });
16
+ };
17
+ var __copyProps = (to, from, except, desc) => {
18
+ if (from && typeof from === "object" || typeof from === "function") {
19
+ for (let key of __getOwnPropNames(from))
20
+ if (!__hasOwnProp.call(to, key) && key !== except)
21
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
22
+ }
23
+ return to;
24
+ };
25
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
+ var AbstractFileCommandBase_exports = {};
27
+ __export(AbstractFileCommandBase_exports, {
28
+ AbstractFileCommandBase: () => AbstractFileCommandBase,
29
+ AbstractFileCommandInvocationBase: () => AbstractFileCommandInvocationBase
30
+ });
31
+ module.exports = __toCommonJS(AbstractFileCommandBase_exports);
32
+ var import_CommandBase = require('./CommandBase.cjs');
33
+ var import_NonEditorCommandBase = require('./NonEditorCommandBase.cjs');
34
+ class AbstractFileCommandBase extends import_NonEditorCommandBase.NonEditorCommandBase {
35
+ menuItemName;
36
+ menuSection;
37
+ /**
38
+ * Registers the command.
39
+ */
40
+ register() {
41
+ super.register();
42
+ this.plugin.registerEvent(this.app.workspace.on("file-menu", this.handleAbstractFileMenu.bind(this)));
43
+ this.plugin.registerEvent(this.app.workspace.on("files-menu", this.handleAbstractFilesMenu.bind(this)));
44
+ }
45
+ /**
46
+ * Checks if the command should be added to the abstract file menu.
47
+ *
48
+ * @param _abstractFile - The abstract file to check.
49
+ * @param _source - The source of the abstract file.
50
+ * @param _leaf - The leaf to check.
51
+ * @returns Whether the command should be added to the abstract file menu.
52
+ */
53
+ shouldAddToAbstractFileMenu(_abstractFile, _source, _leaf) {
54
+ return false;
55
+ }
56
+ handleAbstractFileMenu(menu, abstractFile, source, leaf) {
57
+ if (!this.shouldAddToAbstractFileMenu(abstractFile, source, leaf)) {
58
+ return;
59
+ }
60
+ if (!this.createCommandInvocation().invoke(true, abstractFile)) {
61
+ return;
62
+ }
63
+ menu.addItem((item) => {
64
+ item.setTitle(this.menuItemName ?? this.name).setIcon(this.icon).onClick(() => this.createCommandInvocation().invoke(false, abstractFile));
65
+ if (this.menuSection) {
66
+ item.setSection(this.menuSection);
67
+ }
68
+ });
69
+ }
70
+ handleAbstractFilesMenu(menu, abstractFiles, source, leaf) {
71
+ for (const abstractFile of abstractFiles) {
72
+ if (!this.shouldAddToAbstractFileMenu(abstractFile, source, leaf)) {
73
+ return;
74
+ }
75
+ if (!this.createCommandInvocation().invoke(true, abstractFile)) {
76
+ return;
77
+ }
78
+ }
79
+ menu.addItem((item) => {
80
+ item.setTitle(this.menuItemName ?? this.name).setIcon(this.icon).onClick(() => {
81
+ for (const abstractFile of abstractFiles) {
82
+ this.createCommandInvocation().invoke(false, abstractFile);
83
+ }
84
+ });
85
+ if (this.menuSection) {
86
+ item.setSection(this.menuSection);
87
+ }
88
+ });
89
+ }
90
+ }
91
+ class AbstractFileCommandInvocationBase extends import_CommandBase.CommandInvocationBase {
92
+ abstractFile;
93
+ /**
94
+ * Invokes the command.
95
+ *
96
+ * @param checking - Is checking mode only. If `true`, only the check if the command can execute is performed. If `false`, the command is executed.
97
+ * @param abstractFile - The abstract file to invoke the command for.
98
+ * @returns Whether the command was executed.
99
+ */
100
+ invoke(checking, abstractFile) {
101
+ if (abstractFile) {
102
+ this.abstractFile = abstractFile;
103
+ }
104
+ return super.invoke(checking);
105
+ }
106
+ /**
107
+ * Checks if the command can execute.
108
+ *
109
+ * @returns Whether the command can execute.
110
+ */
111
+ canExecute() {
112
+ if (!super.canExecute()) {
113
+ return false;
114
+ }
115
+ const abstractFile = this.abstractFile ?? this.app.workspace.getActiveFile();
116
+ if (!abstractFile) {
117
+ return false;
118
+ }
119
+ this.abstractFile = abstractFile;
120
+ return true;
121
+ }
122
+ }
123
+ // Annotate the CommonJS export names for ESM import in node:
124
+ 0 && (module.exports = {
125
+ AbstractFileCommandBase,
126
+ AbstractFileCommandInvocationBase
127
+ });
128
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL0Fic3RyYWN0RmlsZUNvbW1hbmRCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEJhc2UgY2xhc3NlcyBmb3IgYWJzdHJhY3QgZmlsZSBjb21tYW5kcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIE1lbnUsXG4gIFBsdWdpbixcbiAgVEFic3RyYWN0RmlsZSxcbiAgV29ya3NwYWNlTGVhZlxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IENvbW1hbmRJbnZvY2F0aW9uQmFzZSB9IGZyb20gJy4vQ29tbWFuZEJhc2UudHMnO1xuaW1wb3J0IHsgTm9uRWRpdG9yQ29tbWFuZEJhc2UgfSBmcm9tICcuL05vbkVkaXRvckNvbW1hbmRCYXNlLnRzJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBhYnN0cmFjdCBmaWxlIGNvbW1hbmRzLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGaWxlQ29tbWFuZEJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbiA9IFBsdWdpbj4gZXh0ZW5kcyBOb25FZGl0b3JDb21tYW5kQmFzZTxUUGx1Z2luPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51SXRlbU5hbWU/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51U2VjdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlZ2lzdGVyKCk6IHZvaWQge1xuICAgIHN1cGVyLnJlZ2lzdGVyKCk7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2ZpbGUtbWVudScsIHRoaXMuaGFuZGxlQWJzdHJhY3RGaWxlTWVudS5iaW5kKHRoaXMpKSk7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2ZpbGVzLW1lbnUnLCB0aGlzLmhhbmRsZUFic3RyYWN0RmlsZXNNZW51LmJpbmQodGhpcykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGZpbGUgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IG92ZXJyaWRlIGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uKCk6IEFic3RyYWN0RmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPjtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYWJzdHJhY3QgZmlsZSBtZW51LlxuICAgKlxuICAgKiBAcGFyYW0gX2Fic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gX3NvdXJjZSAtIFRoZSBzb3VyY2Ugb2YgdGhlIGFic3RyYWN0IGZpbGUuXG4gICAqIEBwYXJhbSBfbGVhZiAtIFRoZSBsZWFmIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYWJzdHJhY3QgZmlsZSBtZW51LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3VsZEFkZFRvQWJzdHJhY3RGaWxlTWVudShfYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlLCBfc291cmNlOiBzdHJpbmcsIF9sZWFmPzogV29ya3NwYWNlTGVhZik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQWJzdHJhY3RGaWxlTWVudShtZW51OiBNZW51LCBhYnN0cmFjdEZpbGU6IFRBYnN0cmFjdEZpbGUsIHNvdXJjZTogc3RyaW5nLCBsZWFmPzogV29ya3NwYWNlTGVhZik6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnUoYWJzdHJhY3RGaWxlLCBzb3VyY2UsIGxlYWYpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uKCkuaW52b2tlKHRydWUsIGFic3RyYWN0RmlsZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBtZW51LmFkZEl0ZW0oKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW0uc2V0VGl0bGUodGhpcy5tZW51SXRlbU5hbWUgPz8gdGhpcy5uYW1lKVxuICAgICAgICAuc2V0SWNvbih0aGlzLmljb24pXG4gICAgICAgIC5vbkNsaWNrKCgpID0+IHRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb24oKS5pbnZva2UoZmFsc2UsIGFic3RyYWN0RmlsZSkpO1xuXG4gICAgICBpZiAodGhpcy5tZW51U2VjdGlvbikge1xuICAgICAgICBpdGVtLnNldFNlY3Rpb24odGhpcy5tZW51U2VjdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFic3RyYWN0RmlsZXNNZW51KG1lbnU6IE1lbnUsIGFic3RyYWN0RmlsZXM6IFRBYnN0cmFjdEZpbGVbXSwgc291cmNlOiBzdHJpbmcsIGxlYWY/OiBXb3Jrc3BhY2VMZWFmKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBhYnN0cmFjdEZpbGUgb2YgYWJzdHJhY3RGaWxlcykge1xuICAgICAgaWYgKCF0aGlzLnNob3VsZEFkZFRvQWJzdHJhY3RGaWxlTWVudShhYnN0cmFjdEZpbGUsIHNvdXJjZSwgbGVhZikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb24oKS5pbnZva2UodHJ1ZSwgYWJzdHJhY3RGaWxlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWVudS5hZGRJdGVtKChpdGVtKSA9PiB7XG4gICAgICBpdGVtLnNldFRpdGxlKHRoaXMubWVudUl0ZW1OYW1lID8/IHRoaXMubmFtZSlcbiAgICAgICAgLnNldEljb24odGhpcy5pY29uKVxuICAgICAgICAub25DbGljaygoKSA9PiB7XG4gICAgICAgICAgZm9yIChjb25zdCBhYnN0cmFjdEZpbGUgb2YgYWJzdHJhY3RGaWxlcykge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbigpLmludm9rZShmYWxzZSwgYWJzdHJhY3RGaWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5tZW51U2VjdGlvbikge1xuICAgICAgICBpdGVtLnNldFNlY3Rpb24odGhpcy5tZW51U2VjdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBhYnN0cmFjdCBmaWxlIGNvbW1hbmQgaW52b2NhdGlvbnMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEZpbGVDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbj4gZXh0ZW5kcyBDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4ge1xuICBwcm90ZWN0ZWQgYWJzdHJhY3RGaWxlITogVEFic3RyYWN0RmlsZTtcblxuICAvKipcbiAgICogSW52b2tlcyB0aGUgY29tbWFuZC5cbiAgICpcbiAgICogQHBhcmFtIGNoZWNraW5nIC0gSXMgY2hlY2tpbmcgbW9kZSBvbmx5LiBJZiBgdHJ1ZWAsIG9ubHkgdGhlIGNoZWNrIGlmIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlIGlzIHBlcmZvcm1lZC4gSWYgYGZhbHNlYCwgdGhlIGNvbW1hbmQgaXMgZXhlY3V0ZWQuXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBpbnZva2UgdGhlIGNvbW1hbmQgZm9yLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIHdhcyBleGVjdXRlZC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBpbnZva2UoY2hlY2tpbmc6IGJvb2xlYW4sIGFic3RyYWN0RmlsZT86IFRBYnN0cmFjdEZpbGUpOiBib29sZWFuIHtcbiAgICBpZiAoYWJzdHJhY3RGaWxlKSB7XG4gICAgICB0aGlzLmFic3RyYWN0RmlsZSA9IGFic3RyYWN0RmlsZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLmludm9rZShjaGVja2luZyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNhbkV4ZWN1dGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCFzdXBlci5jYW5FeGVjdXRlKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgYWJzdHJhY3RGaWxlID0gKHRoaXMuYWJzdHJhY3RGaWxlIGFzIFRBYnN0cmFjdEZpbGUgfCB1bmRlZmluZWQpID8/IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCk7XG4gICAgaWYgKCFhYnN0cmFjdEZpbGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5hYnN0cmFjdEZpbGUgPSBhYnN0cmFjdEZpbGU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhQSx5QkFBc0M7QUFDdEMsa0NBQXFDO0FBTzlCLE1BQWUsZ0NBQWlFLGlEQUE4QjtBQUFBLEVBQ2hHO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0gsV0FBaUI7QUFDL0IsVUFBTSxTQUFTO0FBQ2YsU0FBSyxPQUFPLGNBQWMsS0FBSyxJQUFJLFVBQVUsR0FBRyxhQUFhLEtBQUssdUJBQXVCLEtBQUssSUFBSSxDQUFDLENBQUM7QUFDcEcsU0FBSyxPQUFPLGNBQWMsS0FBSyxJQUFJLFVBQVUsR0FBRyxjQUFjLEtBQUssd0JBQXdCLEtBQUssSUFBSSxDQUFDLENBQUM7QUFBQSxFQUN4RztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWlCVSw0QkFBNEIsZUFBOEIsU0FBaUIsT0FBZ0M7QUFDbkgsV0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUVRLHVCQUF1QixNQUFZLGNBQTZCLFFBQWdCLE1BQTRCO0FBQ2xILFFBQUksQ0FBQyxLQUFLLDRCQUE0QixjQUFjLFFBQVEsSUFBSSxHQUFHO0FBQ2pFO0FBQUEsSUFDRjtBQUVBLFFBQUksQ0FBQyxLQUFLLHdCQUF3QixFQUFFLE9BQU8sTUFBTSxZQUFZLEdBQUc7QUFDOUQ7QUFBQSxJQUNGO0FBRUEsU0FBSyxRQUFRLENBQUMsU0FBUztBQUNyQixXQUFLLFNBQVMsS0FBSyxnQkFBZ0IsS0FBSyxJQUFJLEVBQ3pDLFFBQVEsS0FBSyxJQUFJLEVBQ2pCLFFBQVEsTUFBTSxLQUFLLHdCQUF3QixFQUFFLE9BQU8sT0FBTyxZQUFZLENBQUM7QUFFM0UsVUFBSSxLQUFLLGFBQWE7QUFDcEIsYUFBSyxXQUFXLEtBQUssV0FBVztBQUFBLE1BQ2xDO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUFBLEVBRVEsd0JBQXdCLE1BQVksZUFBZ0MsUUFBZ0IsTUFBNEI7QUFDdEgsZUFBVyxnQkFBZ0IsZUFBZTtBQUN4QyxVQUFJLENBQUMsS0FBSyw0QkFBNEIsY0FBYyxRQUFRLElBQUksR0FBRztBQUNqRTtBQUFBLE1BQ0Y7QUFFQSxVQUFJLENBQUMsS0FBSyx3QkFBd0IsRUFBRSxPQUFPLE1BQU0sWUFBWSxHQUFHO0FBQzlEO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFFQSxTQUFLLFFBQVEsQ0FBQyxTQUFTO0FBQ3JCLFdBQUssU0FBUyxLQUFLLGdCQUFnQixLQUFLLElBQUksRUFDekMsUUFBUSxLQUFLLElBQUksRUFDakIsUUFBUSxNQUFNO0FBQ2IsbUJBQVcsZ0JBQWdCLGVBQWU7QUFDeEMsZUFBSyx3QkFBd0IsRUFBRSxPQUFPLE9BQU8sWUFBWTtBQUFBLFFBQzNEO0FBQUEsTUFDRixDQUFDO0FBRUgsVUFBSSxLQUFLLGFBQWE7QUFDcEIsYUFBSyxXQUFXLEtBQUssV0FBVztBQUFBLE1BQ2xDO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUNGO0FBT08sTUFBZSwwQ0FBa0UseUNBQStCO0FBQUEsRUFDM0c7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU00sT0FBTyxVQUFtQixjQUF1QztBQUMvRSxRQUFJLGNBQWM7QUFDaEIsV0FBSyxlQUFlO0FBQUEsSUFDdEI7QUFDQSxXQUFPLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFDOUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPbUIsYUFBc0I7QUFDdkMsUUFBSSxDQUFDLE1BQU0sV0FBVyxHQUFHO0FBQ3ZCLGFBQU87QUFBQSxJQUNUO0FBQ0EsVUFBTSxlQUFnQixLQUFLLGdCQUE4QyxLQUFLLElBQUksVUFBVSxjQUFjO0FBQzFHLFFBQUksQ0FBQyxjQUFjO0FBQ2pCLGFBQU87QUFBQSxJQUNUO0FBQ0EsU0FBSyxlQUFlO0FBQ3BCLFdBQU87QUFBQSxFQUNUO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @packageDocumentation
3
+ *
4
+ * Base classes for abstract file commands.
5
+ */
6
+ import type { Plugin, TAbstractFile, WorkspaceLeaf } from 'obsidian';
7
+ import { CommandInvocationBase } from './CommandBase.cjs';
8
+ import { NonEditorCommandBase } from './NonEditorCommandBase.cjs';
9
+ /**
10
+ * Base class for abstract file commands.
11
+ *
12
+ * @typeParam TPlugin - The type of the plugin that the command belongs to.
13
+ */
14
+ export declare abstract class AbstractFileCommandBase<TPlugin extends Plugin = Plugin> extends NonEditorCommandBase<TPlugin> {
15
+ protected readonly menuItemName?: string;
16
+ protected readonly menuSection?: string;
17
+ /**
18
+ * Registers the command.
19
+ */
20
+ register(): void;
21
+ /**
22
+ * Creates a new file command invocation.
23
+ *
24
+ * @returns The command invocation.
25
+ */
26
+ protected abstract createCommandInvocation(): AbstractFileCommandInvocationBase<TPlugin>;
27
+ /**
28
+ * Checks if the command should be added to the abstract file menu.
29
+ *
30
+ * @param _abstractFile - The abstract file to check.
31
+ * @param _source - The source of the abstract file.
32
+ * @param _leaf - The leaf to check.
33
+ * @returns Whether the command should be added to the abstract file menu.
34
+ */
35
+ protected shouldAddToAbstractFileMenu(_abstractFile: TAbstractFile, _source: string, _leaf?: WorkspaceLeaf): boolean;
36
+ private handleAbstractFileMenu;
37
+ private handleAbstractFilesMenu;
38
+ }
39
+ /**
40
+ * Base class for abstract file command invocations.
41
+ *
42
+ * @typeParam TPlugin - The type of the plugin that the command belongs to.
43
+ */
44
+ export declare abstract class AbstractFileCommandInvocationBase<TPlugin extends Plugin> extends CommandInvocationBase<TPlugin> {
45
+ protected abstractFile: TAbstractFile;
46
+ /**
47
+ * Invokes the command.
48
+ *
49
+ * @param checking - Is checking mode only. If `true`, only the check if the command can execute is performed. If `false`, the command is executed.
50
+ * @param abstractFile - The abstract file to invoke the command for.
51
+ * @returns Whether the command was executed.
52
+ */
53
+ invoke(checking: boolean, abstractFile?: TAbstractFile): boolean;
54
+ /**
55
+ * Checks if the command can execute.
56
+ *
57
+ * @returns Whether the command can execute.
58
+ */
59
+ protected canExecute(): boolean;
60
+ }
@@ -29,6 +29,7 @@ __export(CommandBase_exports, {
29
29
  CommandInvocationBase: () => CommandInvocationBase
30
30
  });
31
31
  module.exports = __toCommonJS(CommandBase_exports);
32
+ var import_Async = require('../../Async.cjs');
32
33
  class CommandBase {
33
34
  icon;
34
35
  id;
@@ -75,7 +76,7 @@ class CommandInvocationBase {
75
76
  invoke(checking) {
76
77
  this.lastCanExecuteResult = this.canExecute();
77
78
  if (!checking && this.lastCanExecuteResult) {
78
- this.execute();
79
+ (0, import_Async.invokeAsyncSafely)(() => this.execute());
79
80
  }
80
81
  return this.lastCanExecuteResult;
81
82
  }
@@ -90,13 +91,14 @@ class CommandInvocationBase {
90
91
  /**
91
92
  * Executes the command.
92
93
  */
93
- execute() {
94
+ async execute() {
94
95
  if (this.lastCanExecuteResult === void 0) {
95
96
  throw new Error("canExecute() must be called before execute()");
96
97
  }
97
98
  if (!this.lastCanExecuteResult) {
98
99
  throw new Error("canExecute() must return true before execute()");
99
100
  }
101
+ await Promise.resolve();
100
102
  }
101
103
  }
102
104
  // Annotate the CommonJS export names for ESM import in node:
@@ -104,4 +106,4 @@ class CommandInvocationBase {
104
106
  CommandBase,
105
107
  CommandInvocationBase
106
108
  });
107
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL0NvbW1hbmRCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEJhc2UgY2xhc3NlcyBmb3IgY29tbWFuZHMuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIENvbW1hbmQsXG4gIEljb25OYW1lLFxuICBQbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgY29tbWFuZC5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tYW5kQmFzZU9wdGlvbnM8VFBsdWdpbiBleHRlbmRzIFBsdWdpbj4ge1xuICAvKipcbiAgICogVGhlIGljb24gdG8gdXNlIGZvciB0aGUgY29tbWFuZC5cbiAgICovXG4gIGljb246IEljb25OYW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gICAqL1xuICBwbHVnaW46IFRQbHVnaW47XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY29tbWFuZHMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21tYW5kQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luPiBpbXBsZW1lbnRzIENvbW1hbmQge1xuICBwdWJsaWMgaWNvbjogSWNvbk5hbWU7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHByb3RlY3RlZCByZWFkb25seSBwbHVnaW46IFRQbHVnaW47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY29tbWFuZC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGNvbW1hbmQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogQ29tbWFuZEJhc2VPcHRpb25zPFRQbHVnaW4+KSB7XG4gICAgdGhpcy5pZCA9IG9wdGlvbnMuaWQ7XG4gICAgdGhpcy5uYW1lID0gb3B0aW9ucy5uYW1lO1xuICAgIHRoaXMuaWNvbiA9IG9wdGlvbnMuaWNvbjtcbiAgICB0aGlzLnBsdWdpbiA9IG9wdGlvbnMucGx1Z2luO1xuICAgIHRoaXMuYXBwID0gdGhpcy5wbHVnaW4uYXBwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGUgY29tbWFuZC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlcigpOiB2b2lkIHtcbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHRoaXMpO1xuICB9XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY29tbWFuZCBpbnZvY2F0aW9ucy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luID0gUGx1Z2luPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBhcHA6IEFwcDtcbiAgcHJpdmF0ZSBsYXN0Q2FuRXhlY3V0ZVJlc3VsdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGludm9jYXRpb24gYmVsb25ncyB0by5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luOiBUUGx1Z2luKSB7XG4gICAgdGhpcy5hcHAgPSBwbHVnaW4uYXBwO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZXMgdGhlIGNvbW1hbmQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGVja2luZyAtIElzIGNoZWNraW5nIG1vZGUgb25seS4gSWYgYHRydWVgLCBvbmx5IHRoZSBjaGVjayBpZiB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZSBpcyBwZXJmb3JtZWQuIElmIGBmYWxzZWAsIHRoZSBjb21tYW5kIGlzIGV4ZWN1dGVkLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIHdhcyBleGVjdXRlZC5cbiAgICovXG4gIHB1YmxpYyBpbnZva2UoY2hlY2tpbmc6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICB0aGlzLmxhc3RDYW5FeGVjdXRlUmVzdWx0ID0gdGhpcy5jYW5FeGVjdXRlKCk7XG4gICAgaWYgKCFjaGVja2luZyAmJiB0aGlzLmxhc3RDYW5FeGVjdXRlUmVzdWx0KSB7XG4gICAgICB0aGlzLmV4ZWN1dGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sYXN0Q2FuRXhlY3V0ZVJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgY2FuRXhlY3V0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgY29tbWFuZC5cbiAgICovXG4gIHByb3RlY3RlZCBleGVjdXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxhc3RDYW5FeGVjdXRlUmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2FuRXhlY3V0ZSgpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBleGVjdXRlKCknKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmxhc3RDYW5FeGVjdXRlUmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NhbkV4ZWN1dGUoKSBtdXN0IHJldHVybiB0cnVlIGJlZm9yZSBleGVjdXRlKCknKTtcbiAgICB9XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2Q08sTUFBZSxZQUF1RDtBQUFBLEVBQ3BFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNZO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9aLFlBQVksU0FBc0M7QUFDdkQsU0FBSyxLQUFLLFFBQVE7QUFDbEIsU0FBSyxPQUFPLFFBQVE7QUFDcEIsU0FBSyxPQUFPLFFBQVE7QUFDcEIsU0FBSyxTQUFTLFFBQVE7QUFDdEIsU0FBSyxNQUFNLEtBQUssT0FBTztBQUFBLEVBQ3pCO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxXQUFpQjtBQUN0QixTQUFLLE9BQU8sV0FBVyxJQUFJO0FBQUEsRUFDN0I7QUFDRjtBQU9PLE1BQWUsc0JBQXVEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU3BFLFlBQStCLFFBQWlCO0FBQWpCO0FBQ3BDLFNBQUssTUFBTSxPQUFPO0FBQUEsRUFDcEI7QUFBQSxFQVZtQjtBQUFBLEVBQ1g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWlCRCxPQUFPLFVBQTRCO0FBQ3hDLFNBQUssdUJBQXVCLEtBQUssV0FBVztBQUM1QyxRQUFJLENBQUMsWUFBWSxLQUFLLHNCQUFzQjtBQUMxQyxXQUFLLFFBQVE7QUFBQSxJQUNmO0FBRUEsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9VLGFBQXNCO0FBQzlCLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLVSxVQUFnQjtBQUN4QixRQUFJLEtBQUsseUJBQXlCLFFBQVc7QUFDM0MsWUFBTSxJQUFJLE1BQU0sOENBQThDO0FBQUEsSUFDaEU7QUFDQSxRQUFJLENBQUMsS0FBSyxzQkFBc0I7QUFDOUIsWUFBTSxJQUFJLE1BQU0sZ0RBQWdEO0FBQUEsSUFDbEU7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
109
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL0NvbW1hbmRCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEJhc2UgY2xhc3NlcyBmb3IgY29tbWFuZHMuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIENvbW1hbmQsXG4gIEljb25OYW1lLFxuICBQbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBpbnZva2VBc3luY1NhZmVseSB9IGZyb20gJy4uLy4uL0FzeW5jLnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhIGNvbW1hbmQuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZEJhc2VPcHRpb25zPFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4+IHtcbiAgLyoqXG4gICAqIFRoZSBpY29uIHRvIHVzZSBmb3IgdGhlIGNvbW1hbmQuXG4gICAqL1xuICBpY29uOiBJY29uTmFtZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICAgKi9cbiAgcGx1Z2luOiBUUGx1Z2luO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNvbW1hbmRzLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29tbWFuZEJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbj4gaW1wbGVtZW50cyBDb21tYW5kIHtcbiAgcHVibGljIGljb246IEljb25OYW1lO1xuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwcDogQXBwO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luOiBUUGx1Z2luO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGNvbW1hbmQuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENvbW1hbmRCYXNlT3B0aW9uczxUUGx1Z2luPikge1xuICAgIHRoaXMuaWQgPSBvcHRpb25zLmlkO1xuICAgIHRoaXMubmFtZSA9IG9wdGlvbnMubmFtZTtcbiAgICB0aGlzLmljb24gPSBvcHRpb25zLmljb247XG4gICAgdGhpcy5wbHVnaW4gPSBvcHRpb25zLnBsdWdpbjtcbiAgICB0aGlzLmFwcCA9IHRoaXMucGx1Z2luLmFwcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgdGhlIGNvbW1hbmQuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5wbHVnaW4uYWRkQ29tbWFuZCh0aGlzKTtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNvbW1hbmQgaW52b2NhdGlvbnMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbiA9IFBsdWdpbj4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHByaXZhdGUgbGFzdENhbkV4ZWN1dGVSZXN1bHQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBpbnZvY2F0aW9uIGJlbG9uZ3MgdG8uXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpbjogVFBsdWdpbikge1xuICAgIHRoaXMuYXBwID0gcGx1Z2luLmFwcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZva2VzIHRoZSBjb21tYW5kLlxuICAgKlxuICAgKiBAcGFyYW0gY2hlY2tpbmcgLSBJcyBjaGVja2luZyBtb2RlIG9ubHkuIElmIGB0cnVlYCwgb25seSB0aGUgY2hlY2sgaWYgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUgaXMgcGVyZm9ybWVkLiBJZiBgZmFsc2VgLCB0aGUgY29tbWFuZCBpcyBleGVjdXRlZC5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCB3YXMgZXhlY3V0ZWQuXG4gICAqL1xuICBwdWJsaWMgaW52b2tlKGNoZWNraW5nOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgdGhpcy5sYXN0Q2FuRXhlY3V0ZVJlc3VsdCA9IHRoaXMuY2FuRXhlY3V0ZSgpO1xuICAgIGlmICghY2hlY2tpbmcgJiYgdGhpcy5sYXN0Q2FuRXhlY3V0ZVJlc3VsdCkge1xuICAgICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gdGhpcy5leGVjdXRlKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxhc3RDYW5FeGVjdXRlUmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZS5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZS5cbiAgICovXG4gIHByb3RlY3RlZCBjYW5FeGVjdXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGV4ZWN1dGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubGFzdENhbkV4ZWN1dGVSZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW5FeGVjdXRlKCkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGV4ZWN1dGUoKScpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMubGFzdENhbkV4ZWN1dGVSZXN1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2FuRXhlY3V0ZSgpIG11c3QgcmV0dXJuIHRydWUgYmVmb3JlIGV4ZWN1dGUoKScpO1xuICAgIH1cbiAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBLG1CQUFrQztBQWtDM0IsTUFBZSxZQUF1RDtBQUFBLEVBQ3BFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNZO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9aLFlBQVksU0FBc0M7QUFDdkQsU0FBSyxLQUFLLFFBQVE7QUFDbEIsU0FBSyxPQUFPLFFBQVE7QUFDcEIsU0FBSyxPQUFPLFFBQVE7QUFDcEIsU0FBSyxTQUFTLFFBQVE7QUFDdEIsU0FBSyxNQUFNLEtBQUssT0FBTztBQUFBLEVBQ3pCO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxXQUFpQjtBQUN0QixTQUFLLE9BQU8sV0FBVyxJQUFJO0FBQUEsRUFDN0I7QUFDRjtBQU9PLE1BQWUsc0JBQXVEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU3BFLFlBQStCLFFBQWlCO0FBQWpCO0FBQ3BDLFNBQUssTUFBTSxPQUFPO0FBQUEsRUFDcEI7QUFBQSxFQVZtQjtBQUFBLEVBQ1g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWlCRCxPQUFPLFVBQTRCO0FBQ3hDLFNBQUssdUJBQXVCLEtBQUssV0FBVztBQUM1QyxRQUFJLENBQUMsWUFBWSxLQUFLLHNCQUFzQjtBQUMxQywwQ0FBa0IsTUFBTSxLQUFLLFFBQVEsQ0FBQztBQUFBLElBQ3hDO0FBRUEsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9VLGFBQXNCO0FBQzlCLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxNQUFnQixVQUF5QjtBQUN2QyxRQUFJLEtBQUsseUJBQXlCLFFBQVc7QUFDM0MsWUFBTSxJQUFJLE1BQU0sOENBQThDO0FBQUEsSUFDaEU7QUFDQSxRQUFJLENBQUMsS0FBSyxzQkFBc0I7QUFDOUIsWUFBTSxJQUFJLE1BQU0sZ0RBQWdEO0FBQUEsSUFDbEU7QUFDQSxVQUFNLFFBQVEsUUFBUTtBQUFBLEVBQ3hCO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -80,5 +80,5 @@ export declare abstract class CommandInvocationBase<TPlugin extends Plugin = Plu
80
80
  /**
81
81
  * Executes the command.
82
82
  */
83
- protected execute(): void;
83
+ protected execute(): Promise<void>;
84
84
  }
@@ -30,17 +30,21 @@ __export(FileCommandBase_exports, {
30
30
  });
31
31
  module.exports = __toCommonJS(FileCommandBase_exports);
32
32
  var import_obsidian = require('obsidian');
33
- var import_CommandBase = require('./CommandBase.cjs');
34
- var import_NonEditorCommandBase = require('./NonEditorCommandBase.cjs');
35
- class FileCommandBase extends import_NonEditorCommandBase.NonEditorCommandBase {
36
- menuItemName;
37
- menuSection;
33
+ var import_AbstractFileCommandBase = require('./AbstractFileCommandBase.cjs');
34
+ class FileCommandBase extends import_AbstractFileCommandBase.AbstractFileCommandBase {
38
35
  /**
39
- * Registers the command.
36
+ * Checks if the command should be added to the abstract file menu.
37
+ *
38
+ * @param abstractFile - The abstract file to check.
39
+ * @param _source - The source of the abstract file.
40
+ * @param _leaf - The leaf to check.
41
+ * @returns Whether the command should be added to the abstract file menu.
40
42
  */
41
- register() {
42
- super.register();
43
- this.plugin.registerEvent(this.app.workspace.on("file-menu", this.handleFileMenu.bind(this)));
43
+ shouldAddToAbstractFileMenu(abstractFile, _source, _leaf) {
44
+ if (!(abstractFile instanceof import_obsidian.TFile)) {
45
+ return false;
46
+ }
47
+ return this.shouldAddToFileMenu(abstractFile, _source, _leaf);
44
48
  }
45
49
  /**
46
50
  * Checks if the command should be added to the file menu.
@@ -53,51 +57,23 @@ class FileCommandBase extends import_NonEditorCommandBase.NonEditorCommandBase {
53
57
  shouldAddToFileMenu(_file, _source, _leaf) {
54
58
  return false;
55
59
  }
56
- handleFileMenu(menu, file, source, leaf) {
57
- if (!(file instanceof import_obsidian.TFile)) {
58
- return;
59
- }
60
- if (!this.createCommandInvocation().invoke(true)) {
61
- return;
62
- }
63
- if (!this.shouldAddToFileMenu(file, source, leaf)) {
64
- return;
65
- }
66
- menu.addItem((item) => {
67
- item.setTitle(this.menuItemName ?? this.name).setIcon(this.icon).onClick(() => this.createCommandInvocation().invoke(false, file));
68
- if (this.menuSection) {
69
- item.setSection(this.menuSection);
70
- }
71
- });
72
- }
73
60
  }
74
- class FileCommandInvocationBase extends import_CommandBase.CommandInvocationBase {
75
- file;
61
+ class FileCommandInvocationBase extends import_AbstractFileCommandBase.AbstractFileCommandInvocationBase {
76
62
  /**
77
- * Invokes the command.
63
+ * Gets the file that the command invocation belongs to.
78
64
  *
79
- * @param checking - Is checking mode only. If `true`, only the check if the command can execute is performed. If `false`, the command is executed.
80
- * @param file - The file to invoke the command for.
81
- * @returns Whether the command was executed.
65
+ * @returns The file that the command invocation belongs to.
82
66
  */
83
- invoke(checking, file) {
84
- if (file) {
85
- this.file = file;
86
- }
87
- return super.invoke(checking);
67
+ get file() {
68
+ return this.abstractFile;
88
69
  }
89
70
  /**
90
- * Checks if the command can execute.
71
+ * Sets the file that the command invocation belongs to.
91
72
  *
92
- * @returns Whether the command can execute.
73
+ * @param file - The file that the command invocation belongs to.
93
74
  */
94
- canExecute() {
95
- const file = this.file ?? this.app.workspace.getActiveFile();
96
- if (!file) {
97
- return false;
98
- }
99
- this.file = file;
100
- return true;
75
+ set file(file) {
76
+ this.abstractFile = file;
101
77
  }
102
78
  }
103
79
  // Annotate the CommonJS export names for ESM import in node:
@@ -105,4 +81,4 @@ class FileCommandInvocationBase extends import_CommandBase.CommandInvocationBase
105
81
  FileCommandBase,
106
82
  FileCommandInvocationBase
107
83
  });
108
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL0ZpbGVDb21tYW5kQmFzZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBCYXNlIGNsYXNzZXMgZm9yIGZpbGUgY29tbWFuZHMuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBNZW51LFxuICBQbHVnaW4sXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFdvcmtzcGFjZUxlYWZcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgQ29tbWFuZEludm9jYXRpb25CYXNlIH0gZnJvbSAnLi9Db21tYW5kQmFzZS50cyc7XG5pbXBvcnQgeyBOb25FZGl0b3JDb21tYW5kQmFzZSB9IGZyb20gJy4vTm9uRWRpdG9yQ29tbWFuZEJhc2UudHMnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGZpbGUgY29tbWFuZHMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaWxlQ29tbWFuZEJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbiA9IFBsdWdpbj4gZXh0ZW5kcyBOb25FZGl0b3JDb21tYW5kQmFzZTxUUGx1Z2luPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51SXRlbU5hbWU/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51U2VjdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlZ2lzdGVyKCk6IHZvaWQge1xuICAgIHN1cGVyLnJlZ2lzdGVyKCk7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2ZpbGUtbWVudScsIHRoaXMuaGFuZGxlRmlsZU1lbnUuYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZmlsZSBjb21tYW5kIGludm9jYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBjb21tYW5kIGludm9jYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3ZlcnJpZGUgY3JlYXRlQ29tbWFuZEludm9jYXRpb24oKTogRmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPjtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZmlsZSBtZW51LlxuICAgKlxuICAgKiBAcGFyYW0gX2ZpbGUgLSBUaGUgZmlsZSB0byBjaGVjay5cbiAgICogQHBhcmFtIF9zb3VyY2UgLSBUaGUgc291cmNlIG9mIHRoZSBmaWxlLlxuICAgKiBAcGFyYW0gX2xlYWYgLSBUaGUgbGVhZiB0byBjaGVjay5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGZpbGUgbWVudS5cbiAgICovXG4gIHByb3RlY3RlZCBzaG91bGRBZGRUb0ZpbGVNZW51KF9maWxlOiBURmlsZSwgX3NvdXJjZTogc3RyaW5nLCBfbGVhZj86IFdvcmtzcGFjZUxlYWYpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZpbGVNZW51KG1lbnU6IE1lbnUsIGZpbGU6IFRBYnN0cmFjdEZpbGUsIHNvdXJjZTogc3RyaW5nLCBsZWFmPzogV29ya3NwYWNlTGVhZik6IHZvaWQge1xuICAgIGlmICghKGZpbGUgaW5zdGFuY2VvZiBURmlsZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb24oKS5pbnZva2UodHJ1ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkQWRkVG9GaWxlTWVudShmaWxlLCBzb3VyY2UsIGxlYWYpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbWVudS5hZGRJdGVtKChpdGVtKSA9PiB7XG4gICAgICBpdGVtLnNldFRpdGxlKHRoaXMubWVudUl0ZW1OYW1lID8/IHRoaXMubmFtZSlcbiAgICAgICAgLnNldEljb24odGhpcy5pY29uKVxuICAgICAgICAub25DbGljaygoKSA9PiB0aGlzLmNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uKCkuaW52b2tlKGZhbHNlLCBmaWxlKSk7XG5cbiAgICAgIGlmICh0aGlzLm1lbnVTZWN0aW9uKSB7XG4gICAgICAgIGl0ZW0uc2V0U2VjdGlvbih0aGlzLm1lbnVTZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGZpbGUgY29tbWFuZCBpbnZvY2F0aW9ucy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpbGVDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbj4gZXh0ZW5kcyBDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4ge1xuICBwcm90ZWN0ZWQgZmlsZSE6IFRGaWxlO1xuXG4gIC8qKlxuICAgKiBJbnZva2VzIHRoZSBjb21tYW5kLlxuICAgKlxuICAgKiBAcGFyYW0gY2hlY2tpbmcgLSBJcyBjaGVja2luZyBtb2RlIG9ubHkuIElmIGB0cnVlYCwgb25seSB0aGUgY2hlY2sgaWYgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUgaXMgcGVyZm9ybWVkLiBJZiBgZmFsc2VgLCB0aGUgY29tbWFuZCBpcyBleGVjdXRlZC5cbiAgICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byBpbnZva2UgdGhlIGNvbW1hbmQgZm9yLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIHdhcyBleGVjdXRlZC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBpbnZva2UoY2hlY2tpbmc6IGJvb2xlYW4sIGZpbGU/OiBURmlsZSk6IGJvb2xlYW4ge1xuICAgIGlmIChmaWxlKSB7XG4gICAgICB0aGlzLmZpbGUgPSBmaWxlO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuaW52b2tlKGNoZWNraW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY2FuRXhlY3V0ZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBmaWxlID0gKHRoaXMuZmlsZSBhcyBURmlsZSB8IHVuZGVmaW5lZCkgPz8gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKTtcbiAgICBpZiAoIWZpbGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5maWxlID0gZmlsZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBLHNCQUFzQjtBQUV0Qix5QkFBc0M7QUFDdEMsa0NBQXFDO0FBTzlCLE1BQWUsd0JBQXlELGlEQUE4QjtBQUFBLEVBQ3hGO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0gsV0FBaUI7QUFDL0IsVUFBTSxTQUFTO0FBQ2YsU0FBSyxPQUFPLGNBQWMsS0FBSyxJQUFJLFVBQVUsR0FBRyxhQUFhLEtBQUssZUFBZSxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQUEsRUFDOUY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFpQlUsb0JBQW9CLE9BQWMsU0FBaUIsT0FBZ0M7QUFDM0YsV0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUVRLGVBQWUsTUFBWSxNQUFxQixRQUFnQixNQUE0QjtBQUNsRyxRQUFJLEVBQUUsZ0JBQWdCLHdCQUFRO0FBQzVCO0FBQUEsSUFDRjtBQUVBLFFBQUksQ0FBQyxLQUFLLHdCQUF3QixFQUFFLE9BQU8sSUFBSSxHQUFHO0FBQ2hEO0FBQUEsSUFDRjtBQUVBLFFBQUksQ0FBQyxLQUFLLG9CQUFvQixNQUFNLFFBQVEsSUFBSSxHQUFHO0FBQ2pEO0FBQUEsSUFDRjtBQUVBLFNBQUssUUFBUSxDQUFDLFNBQVM7QUFDckIsV0FBSyxTQUFTLEtBQUssZ0JBQWdCLEtBQUssSUFBSSxFQUN6QyxRQUFRLEtBQUssSUFBSSxFQUNqQixRQUFRLE1BQU0sS0FBSyx3QkFBd0IsRUFBRSxPQUFPLE9BQU8sSUFBSSxDQUFDO0FBRW5FLFVBQUksS0FBSyxhQUFhO0FBQ3BCLGFBQUssV0FBVyxLQUFLLFdBQVc7QUFBQSxNQUNsQztBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFDRjtBQU9PLE1BQWUsa0NBQTBELHlDQUErQjtBQUFBLEVBQ25HO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNNLE9BQU8sVUFBbUIsTUFBdUI7QUFDL0QsUUFBSSxNQUFNO0FBQ1IsV0FBSyxPQUFPO0FBQUEsSUFDZDtBQUNBLFdBQU8sTUFBTSxPQUFPLFFBQVE7QUFBQSxFQUM5QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9tQixhQUFzQjtBQUN2QyxVQUFNLE9BQVEsS0FBSyxRQUE4QixLQUFLLElBQUksVUFBVSxjQUFjO0FBQ2xGLFFBQUksQ0FBQyxNQUFNO0FBQ1QsYUFBTztBQUFBLElBQ1Q7QUFDQSxTQUFLLE9BQU87QUFDWixXQUFPO0FBQUEsRUFDVDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
84
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL0ZpbGVDb21tYW5kQmFzZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBCYXNlIGNsYXNzZXMgZm9yIGZpbGUgY29tbWFuZHMuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBQbHVnaW4sXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFdvcmtzcGFjZUxlYWZcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgQWJzdHJhY3RGaWxlQ29tbWFuZEJhc2UsXG4gIEFic3RyYWN0RmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZVxufSBmcm9tICcuL0Fic3RyYWN0RmlsZUNvbW1hbmRCYXNlLnRzJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBmaWxlIGNvbW1hbmRzLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlsZUNvbW1hbmRCYXNlPFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4gPSBQbHVnaW4+IGV4dGVuZHMgQWJzdHJhY3RGaWxlQ29tbWFuZEJhc2U8VFBsdWdpbj4ge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBmaWxlIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvdmVycmlkZSBjcmVhdGVDb21tYW5kSW52b2NhdGlvbigpOiBGaWxlQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBhYnN0cmFjdCBmaWxlIG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBjaGVjay5cbiAgICogQHBhcmFtIF9zb3VyY2UgLSBUaGUgc291cmNlIG9mIHRoZSBhYnN0cmFjdCBmaWxlLlxuICAgKiBAcGFyYW0gX2xlYWYgLSBUaGUgbGVhZiB0byBjaGVjay5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGFic3RyYWN0IGZpbGUgbWVudS5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBzaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnUoYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlLCBfc291cmNlOiBzdHJpbmcsIF9sZWFmPzogV29ya3NwYWNlTGVhZik6IGJvb2xlYW4ge1xuICAgIGlmICghKGFic3RyYWN0RmlsZSBpbnN0YW5jZW9mIFRGaWxlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zaG91bGRBZGRUb0ZpbGVNZW51KGFic3RyYWN0RmlsZSwgX3NvdXJjZSwgX2xlYWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGZpbGUgbWVudS5cbiAgICpcbiAgICogQHBhcmFtIF9maWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBfc291cmNlIC0gVGhlIHNvdXJjZSBvZiB0aGUgZmlsZS5cbiAgICogQHBhcmFtIF9sZWFmIC0gVGhlIGxlYWYgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBmaWxlIG1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkQWRkVG9GaWxlTWVudShfZmlsZTogVEZpbGUsIF9zb3VyY2U6IHN0cmluZywgX2xlYWY/OiBXb3Jrc3BhY2VMZWFmKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgZmlsZSBjb21tYW5kIGludm9jYXRpb25zLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luPiBleHRlbmRzIEFic3RyYWN0RmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBmaWxlIHRoYXQgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBiZWxvbmdzIHRvLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZmlsZSB0aGF0IHRoZSBjb21tYW5kIGludm9jYXRpb24gYmVsb25ncyB0by5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZmlsZSgpOiBURmlsZSB7XG4gICAgcmV0dXJuIHRoaXMuYWJzdHJhY3RGaWxlIGFzIFRGaWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGZpbGUgdGhhdCB0aGUgY29tbWFuZCBpbnZvY2F0aW9uIGJlbG9uZ3MgdG8uXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdGhhdCB0aGUgY29tbWFuZCBpbnZvY2F0aW9uIGJlbG9uZ3MgdG8uXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0IGZpbGUoZmlsZTogVEZpbGUpIHtcbiAgICB0aGlzLmFic3RyYWN0RmlsZSA9IGZpbGU7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFZQSxzQkFBc0I7QUFFdEIscUNBR087QUFPQSxNQUFlLHdCQUF5RCx1REFBaUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFnQjNGLDRCQUE0QixjQUE2QixTQUFpQixPQUFnQztBQUMzSCxRQUFJLEVBQUUsd0JBQXdCLHdCQUFRO0FBQ3BDLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxLQUFLLG9CQUFvQixjQUFjLFNBQVMsS0FBSztBQUFBLEVBQzlEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVVUsb0JBQW9CLE9BQWMsU0FBaUIsT0FBZ0M7QUFDM0YsV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQU9PLE1BQWUsa0NBQTBELGlFQUEyQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU16SCxJQUFjLE9BQWM7QUFDMUIsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQWMsS0FBSyxNQUFhO0FBQzlCLFNBQUssZUFBZTtBQUFBLEVBQ3RCO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -3,28 +3,30 @@
3
3
  *
4
4
  * Base classes for file commands.
5
5
  */
6
- import type { Plugin, WorkspaceLeaf } from 'obsidian';
6
+ import type { Plugin, TAbstractFile, WorkspaceLeaf } from 'obsidian';
7
7
  import { TFile } from 'obsidian';
8
- import { CommandInvocationBase } from './CommandBase.cjs';
9
- import { NonEditorCommandBase } from './NonEditorCommandBase.cjs';
8
+ import { AbstractFileCommandBase, AbstractFileCommandInvocationBase } from './AbstractFileCommandBase.cjs';
10
9
  /**
11
10
  * Base class for file commands.
12
11
  *
13
12
  * @typeParam TPlugin - The type of the plugin that the command belongs to.
14
13
  */
15
- export declare abstract class FileCommandBase<TPlugin extends Plugin = Plugin> extends NonEditorCommandBase<TPlugin> {
16
- protected readonly menuItemName?: string;
17
- protected readonly menuSection?: string;
18
- /**
19
- * Registers the command.
20
- */
21
- register(): void;
14
+ export declare abstract class FileCommandBase<TPlugin extends Plugin = Plugin> extends AbstractFileCommandBase<TPlugin> {
22
15
  /**
23
16
  * Creates a new file command invocation.
24
17
  *
25
18
  * @returns The command invocation.
26
19
  */
27
20
  protected abstract createCommandInvocation(): FileCommandInvocationBase<TPlugin>;
21
+ /**
22
+ * Checks if the command should be added to the abstract file menu.
23
+ *
24
+ * @param abstractFile - The abstract file to check.
25
+ * @param _source - The source of the abstract file.
26
+ * @param _leaf - The leaf to check.
27
+ * @returns Whether the command should be added to the abstract file menu.
28
+ */
29
+ protected shouldAddToAbstractFileMenu(abstractFile: TAbstractFile, _source: string, _leaf?: WorkspaceLeaf): boolean;
28
30
  /**
29
31
  * Checks if the command should be added to the file menu.
30
32
  *
@@ -34,27 +36,23 @@ export declare abstract class FileCommandBase<TPlugin extends Plugin = Plugin> e
34
36
  * @returns Whether the command should be added to the file menu.
35
37
  */
36
38
  protected shouldAddToFileMenu(_file: TFile, _source: string, _leaf?: WorkspaceLeaf): boolean;
37
- private handleFileMenu;
38
39
  }
39
40
  /**
40
41
  * Base class for file command invocations.
41
42
  *
42
43
  * @typeParam TPlugin - The type of the plugin that the command belongs to.
43
44
  */
44
- export declare abstract class FileCommandInvocationBase<TPlugin extends Plugin> extends CommandInvocationBase<TPlugin> {
45
- protected file: TFile;
45
+ export declare abstract class FileCommandInvocationBase<TPlugin extends Plugin> extends AbstractFileCommandInvocationBase<TPlugin> {
46
46
  /**
47
- * Invokes the command.
47
+ * Gets the file that the command invocation belongs to.
48
48
  *
49
- * @param checking - Is checking mode only. If `true`, only the check if the command can execute is performed. If `false`, the command is executed.
50
- * @param file - The file to invoke the command for.
51
- * @returns Whether the command was executed.
49
+ * @returns The file that the command invocation belongs to.
52
50
  */
53
- invoke(checking: boolean, file?: TFile): boolean;
51
+ protected get file(): TFile;
54
52
  /**
55
- * Checks if the command can execute.
53
+ * Sets the file that the command invocation belongs to.
56
54
  *
57
- * @returns Whether the command can execute.
55
+ * @param file - The file that the command invocation belongs to.
58
56
  */
59
- protected canExecute(): boolean;
57
+ protected set file(file: TFile);
60
58
  }