obsidian-dev-utils 42.1.0 → 42.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/lib/cjs/Library.cjs +1 -1
- package/dist/lib/cjs/obsidian/Commands/CommandBase.cjs +107 -0
- package/dist/lib/cjs/obsidian/Commands/CommandBase.d.cts +84 -0
- package/dist/lib/cjs/obsidian/Commands/EditorCommandBase.cjs +111 -0
- package/dist/lib/cjs/obsidian/Commands/EditorCommandBase.d.cts +70 -0
- package/dist/lib/cjs/obsidian/Commands/FileCommandBase.cjs +108 -0
- package/dist/lib/cjs/obsidian/Commands/FileCommandBase.d.cts +60 -0
- package/dist/lib/cjs/obsidian/Commands/NonEditorCommandBase.cjs +47 -0
- package/dist/lib/cjs/obsidian/Commands/NonEditorCommandBase.d.cts +28 -0
- package/dist/lib/cjs/obsidian/Commands/index.cjs +55 -0
- package/dist/lib/cjs/obsidian/Commands/index.d.cts +4 -0
- package/dist/lib/cjs/obsidian/Link.cjs +16 -2
- package/dist/lib/cjs/obsidian/Link.d.cts +8 -1
- package/dist/lib/cjs/obsidian/index.cjs +4 -1
- package/dist/lib/cjs/obsidian/index.d.cts +1 -0
- package/dist/lib/esm/Library.mjs +1 -1
- package/dist/lib/esm/obsidian/Commands/CommandBase.d.mts +84 -0
- package/dist/lib/esm/obsidian/Commands/CommandBase.mjs +82 -0
- package/dist/lib/esm/obsidian/Commands/EditorCommandBase.d.mts +70 -0
- package/dist/lib/esm/obsidian/Commands/EditorCommandBase.mjs +89 -0
- package/dist/lib/esm/obsidian/Commands/FileCommandBase.d.mts +60 -0
- package/dist/lib/esm/obsidian/Commands/FileCommandBase.mjs +83 -0
- package/dist/lib/esm/obsidian/Commands/NonEditorCommandBase.d.mts +28 -0
- package/dist/lib/esm/obsidian/Commands/NonEditorCommandBase.mjs +23 -0
- package/dist/lib/esm/obsidian/Commands/index.d.mts +4 -0
- package/dist/lib/esm/obsidian/Commands/index.mjs +18 -0
- package/dist/lib/esm/obsidian/Link.d.mts +8 -1
- package/dist/lib/esm/obsidian/Link.mjs +15 -2
- package/dist/lib/esm/obsidian/index.d.mts +1 -0
- package/dist/lib/esm/obsidian/index.mjs +3 -1
- package/obsidian/Commands/CommandBase/package.json +6 -0
- package/obsidian/Commands/EditorCommandBase/package.json +6 -0
- package/obsidian/Commands/FileCommandBase/package.json +6 -0
- package/obsidian/Commands/NonEditorCommandBase/package.json +6 -0
- package/obsidian/Commands/index/package.json +6 -0
- package/obsidian/Commands/package.json +6 -0
- package/package.json +21 -1
|
@@ -40,6 +40,7 @@ __export(obsidian_exports, {
|
|
|
40
40
|
Backlink: () => Backlink,
|
|
41
41
|
Callout: () => Callout,
|
|
42
42
|
CodeBlockMarkdownInformation: () => CodeBlockMarkdownInformation,
|
|
43
|
+
Commands: () => Commands,
|
|
43
44
|
Components: () => Components,
|
|
44
45
|
Dataview: () => Dataview,
|
|
45
46
|
DataviewLink: () => DataviewLink,
|
|
@@ -78,6 +79,7 @@ var AttachmentPath = __toESM(__extractDefault(require('./AttachmentPath.cjs')),
|
|
|
78
79
|
var Backlink = __toESM(__extractDefault(require('./Backlink.cjs')), 1);
|
|
79
80
|
var Callout = __toESM(__extractDefault(require('./Callout.cjs')), 1);
|
|
80
81
|
var CodeBlockMarkdownInformation = __toESM(__extractDefault(require('./CodeBlockMarkdownInformation.cjs')), 1);
|
|
82
|
+
var Commands = __toESM(__extractDefault(require('./Commands/index.cjs')), 1);
|
|
81
83
|
var Components = __toESM(__extractDefault(require('./Components/index.cjs')), 1);
|
|
82
84
|
var Dataview = __toESM(__extractDefault(require('./Dataview.cjs')), 1);
|
|
83
85
|
var DataviewLink = __toESM(__extractDefault(require('./DataviewLink.cjs')), 1);
|
|
@@ -116,6 +118,7 @@ var Workspace = __toESM(__extractDefault(require('./Workspace.cjs')), 1);
|
|
|
116
118
|
Backlink,
|
|
117
119
|
Callout,
|
|
118
120
|
CodeBlockMarkdownInformation,
|
|
121
|
+
Commands,
|
|
119
122
|
Components,
|
|
120
123
|
Dataview,
|
|
121
124
|
DataviewLink,
|
|
@@ -148,4 +151,4 @@ var Workspace = __toESM(__extractDefault(require('./Workspace.cjs')), 1);
|
|
|
148
151
|
Workspace,
|
|
149
152
|
i18n
|
|
150
153
|
});
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgQXBwIGZyb20gJy4vQXBwLnRzJztcbmV4cG9ydCAqIGFzIEF0dGFjaG1lbnRQYXRoIGZyb20gJy4vQXR0YWNobWVudFBhdGgudHMnO1xuZXhwb3J0ICogYXMgQmFja2xpbmsgZnJvbSAnLi9CYWNrbGluay50cyc7XG5leHBvcnQgKiBhcyBDYWxsb3V0IGZyb20gJy4vQ2FsbG91dC50cyc7XG5leHBvcnQgKiBhcyBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIGZyb20gJy4vQ29kZUJsb2NrTWFya2Rvd25JbmZvcm1hdGlvbi50cyc7XG5leHBvcnQgKiBhcyBDb21tYW5kcyBmcm9tICcuL0NvbW1hbmRzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzIENvbXBvbmVudHMgZnJvbSAnLi9Db21wb25lbnRzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzIERhdGF2aWV3IGZyb20gJy4vRGF0YXZpZXcudHMnO1xuZXhwb3J0ICogYXMgRGF0YXZpZXdMaW5rIGZyb20gJy4vRGF0YXZpZXdMaW5rLnRzJztcbmV4cG9ydCAqIGFzIEZpbGVDaGFuZ2UgZnJvbSAnLi9GaWxlQ2hhbmdlLnRzJztcbmV4cG9ydCAqIGFzIEZpbGVNYW5hZ2VyIGZyb20gJy4vRmlsZU1hbmFnZXIudHMnO1xuZXhwb3J0ICogYXMgRmlsZVN5c3RlbSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuZXhwb3J0ICogYXMgRnJvbnRtYXR0ZXIgZnJvbSAnLi9Gcm9udG1hdHRlci50cyc7XG5leHBvcnQgKiBhcyBGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzIGZyb20gJy4vRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cy50cyc7XG5leHBvcnQgKiBhcyBpMThuIGZyb20gJy4vaTE4bi9pbmRleC50cyc7XG5leHBvcnQgKiBhcyBMaW5rIGZyb20gJy4vTGluay50cyc7XG5leHBvcnQgKiBhcyBMb2dnZXIgZnJvbSAnLi9Mb2dnZXIudHMnO1xuZXhwb3J0ICogYXMgTG9vcCBmcm9tICcuL0xvb3AudHMnO1xuZXhwb3J0ICogYXMgTWFya2Rvd24gZnJvbSAnLi9NYXJrZG93bi50cyc7XG5leHBvcnQgKiBhcyBNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvciBmcm9tICcuL01hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yLnRzJztcbmV4cG9ydCAqIGFzIE1hcmtkb3duVmlldyBmcm9tICcuL01hcmtkb3duVmlldy50cyc7XG5leHBvcnQgKiBhcyBNZXRhZGF0YUNhY2hlIGZyb20gJy4vTWV0YWRhdGFDYWNoZS50cyc7XG5leHBvcnQgKiBhcyBNb2RhbHMgZnJvbSAnLi9Nb2RhbHMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgTW9ua2V5QXJvdW5kIGZyb20gJy4vTW9ua2V5QXJvdW5kLnRzJztcbmV4cG9ydCAqIGFzIE9ic2lkaWFuU2V0dGluZ3MgZnJvbSAnLi9PYnNpZGlhblNldHRpbmdzLnRzJztcbmV4cG9ydCAqIGFzIFBkZiBmcm9tICcuL1BkZi50cyc7XG5leHBvcnQgKiBhcyBQbHVnaW4gZnJvbSAnLi9QbHVnaW4vaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgUXVldWUgZnJvbSAnLi9RdWV1ZS50cyc7XG5leHBvcnQgKiBhcyBSZWFjdCBmcm9tICcuL1JlYWN0L2luZGV4LnRzJztcbmV4cG9ydCAqIGFzIFJlZmVyZW5jZSBmcm9tICcuL1JlZmVyZW5jZS50cyc7XG5leHBvcnQgKiBhcyBSZW5hbWVEZWxldGVIYW5kbGVyIGZyb20gJy4vUmVuYW1lRGVsZXRlSGFuZGxlci50cyc7XG5leHBvcnQgKiBhcyBSZXNvdXJjZVVybCBmcm9tICcuL1Jlc291cmNlVXJsLnRzJztcbmV4cG9ydCAqIGFzIFNldHRpbmdFeCBmcm9tICcuL1NldHRpbmdFeC50cyc7XG5leHBvcnQgKiBhcyBWYWxpZGF0aW9uIGZyb20gJy4vVmFsaWRhdGlvbi50cyc7XG5leHBvcnQgKiBhcyBWYXVsdCBmcm9tICcuL1ZhdWx0LnRzJztcbmV4cG9ydCAqIGFzIFZhdWx0RXggZnJvbSAnLi9WYXVsdEV4LnRzJztcbmV4cG9ydCAqIGFzIFdvcmtzcGFjZSBmcm9tICcuL1dvcmtzcGFjZS50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQSxVQUFxQjtBQUNyQixxQkFBZ0M7QUFDaEMsZUFBMEI7QUFDMUIsY0FBeUI7QUFDekIsbUNBQThDO0FBQzlDLGVBQTBCO0FBQzFCLGlCQUE0QjtBQUM1QixlQUEwQjtBQUMxQixtQkFBOEI7QUFDOUIsaUJBQTRCO0FBQzVCLGtCQUE2QjtBQUM3QixpQkFBNEI7QUFDNUIsa0JBQTZCO0FBQzdCLHNDQUFpRDtBQUNqRCxXQUFzQjtBQUN0QixXQUFzQjtBQUN0QixhQUF3QjtBQUN4QixXQUFzQjtBQUN0QixlQUEwQjtBQUMxQixpQ0FBNEM7QUFDNUMsbUJBQThCO0FBQzlCLG9CQUErQjtBQUMvQixhQUF3QjtBQUN4QixtQkFBOEI7QUFDOUIsdUJBQWtDO0FBQ2xDLFVBQXFCO0FBQ3JCLGFBQXdCO0FBQ3hCLFlBQXVCO0FBQ3ZCLFlBQXVCO0FBQ3ZCLGdCQUEyQjtBQUMzQiwwQkFBcUM7QUFDckMsa0JBQTZCO0FBQzdCLGdCQUEyQjtBQUMzQixpQkFBNEI7QUFDNUIsWUFBdUI7QUFDdkIsY0FBeUI7QUFDekIsZ0JBQTJCOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -3,6 +3,7 @@ export * as AttachmentPath from './AttachmentPath.cjs';
|
|
|
3
3
|
export * as Backlink from './Backlink.cjs';
|
|
4
4
|
export * as Callout from './Callout.cjs';
|
|
5
5
|
export * as CodeBlockMarkdownInformation from './CodeBlockMarkdownInformation.cjs';
|
|
6
|
+
export * as Commands from './Commands/index.cjs';
|
|
6
7
|
export * as Components from './Components/index.cjs';
|
|
7
8
|
export * as Dataview from './Dataview.cjs';
|
|
8
9
|
export * as DataviewLink from './DataviewLink.cjs';
|
package/dist/lib/esm/Library.mjs
CHANGED
|
@@ -5,7 +5,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
5
5
|
|
|
6
6
|
(function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd(){return"/"},env:{},platform:"android"};globalThis.process=browserProcess})();
|
|
7
7
|
|
|
8
|
-
const LIBRARY_VERSION = "42.
|
|
8
|
+
const LIBRARY_VERSION = "42.2.0";
|
|
9
9
|
const LIBRARY_NAME = "obsidian-dev-utils";
|
|
10
10
|
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";
|
|
11
11
|
export {
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
*
|
|
4
|
+
* Base classes for commands.
|
|
5
|
+
*/
|
|
6
|
+
import type { App, Command, IconName, Plugin } from 'obsidian';
|
|
7
|
+
/**
|
|
8
|
+
* Options for creating a command.
|
|
9
|
+
*
|
|
10
|
+
* @typeParam TPlugin - The type of the plugin that the command belongs to.
|
|
11
|
+
*/
|
|
12
|
+
export interface CommandBaseOptions<TPlugin extends Plugin> {
|
|
13
|
+
/**
|
|
14
|
+
* The icon to use for the command.
|
|
15
|
+
*/
|
|
16
|
+
icon: IconName;
|
|
17
|
+
/**
|
|
18
|
+
* The ID of the command.
|
|
19
|
+
*/
|
|
20
|
+
id: string;
|
|
21
|
+
/**
|
|
22
|
+
* The name of the command.
|
|
23
|
+
*/
|
|
24
|
+
name: string;
|
|
25
|
+
/**
|
|
26
|
+
* The plugin that the command belongs to.
|
|
27
|
+
*/
|
|
28
|
+
plugin: TPlugin;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Base class for commands.
|
|
32
|
+
*
|
|
33
|
+
* @typeParam TPlugin - The type of the plugin that the command belongs to.
|
|
34
|
+
*/
|
|
35
|
+
export declare abstract class CommandBase<TPlugin extends Plugin> implements Command {
|
|
36
|
+
icon: IconName;
|
|
37
|
+
id: string;
|
|
38
|
+
name: string;
|
|
39
|
+
protected readonly app: App;
|
|
40
|
+
protected readonly plugin: TPlugin;
|
|
41
|
+
/**
|
|
42
|
+
* Creates a new command.
|
|
43
|
+
*
|
|
44
|
+
* @param options - The options for the command.
|
|
45
|
+
*/
|
|
46
|
+
constructor(options: CommandBaseOptions<TPlugin>);
|
|
47
|
+
/**
|
|
48
|
+
* Registers the command.
|
|
49
|
+
*/
|
|
50
|
+
register(): void;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Base class for command invocations.
|
|
54
|
+
*
|
|
55
|
+
* @typeParam TPlugin - The type of the plugin that the command belongs to.
|
|
56
|
+
*/
|
|
57
|
+
export declare abstract class CommandInvocationBase<TPlugin extends Plugin = Plugin> {
|
|
58
|
+
protected readonly plugin: TPlugin;
|
|
59
|
+
protected readonly app: App;
|
|
60
|
+
private lastCanExecuteResult?;
|
|
61
|
+
/**
|
|
62
|
+
* Creates a new command invocation.
|
|
63
|
+
*
|
|
64
|
+
* @param plugin - The plugin that the command invocation belongs to.
|
|
65
|
+
*/
|
|
66
|
+
constructor(plugin: TPlugin);
|
|
67
|
+
/**
|
|
68
|
+
* Invokes the command.
|
|
69
|
+
*
|
|
70
|
+
* @param checking - Is checking mode only. If `true`, only the check if the command can execute is performed. If `false`, the command is executed.
|
|
71
|
+
* @returns Whether the command was executed.
|
|
72
|
+
*/
|
|
73
|
+
invoke(checking: boolean): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Checks if the command can execute.
|
|
76
|
+
*
|
|
77
|
+
* @returns Whether the command can execute.
|
|
78
|
+
*/
|
|
79
|
+
protected canExecute(): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Executes the command.
|
|
82
|
+
*/
|
|
83
|
+
protected execute(): void;
|
|
84
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd(){return"/"},env:{},platform:"android"};globalThis.process=browserProcess})();
|
|
7
|
+
|
|
8
|
+
class CommandBase {
|
|
9
|
+
icon;
|
|
10
|
+
id;
|
|
11
|
+
name;
|
|
12
|
+
app;
|
|
13
|
+
plugin;
|
|
14
|
+
/**
|
|
15
|
+
* Creates a new command.
|
|
16
|
+
*
|
|
17
|
+
* @param options - The options for the command.
|
|
18
|
+
*/
|
|
19
|
+
constructor(options) {
|
|
20
|
+
this.id = options.id;
|
|
21
|
+
this.name = options.name;
|
|
22
|
+
this.icon = options.icon;
|
|
23
|
+
this.plugin = options.plugin;
|
|
24
|
+
this.app = this.plugin.app;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Registers the command.
|
|
28
|
+
*/
|
|
29
|
+
register() {
|
|
30
|
+
this.plugin.addCommand(this);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
class CommandInvocationBase {
|
|
34
|
+
/**
|
|
35
|
+
* Creates a new command invocation.
|
|
36
|
+
*
|
|
37
|
+
* @param plugin - The plugin that the command invocation belongs to.
|
|
38
|
+
*/
|
|
39
|
+
constructor(plugin) {
|
|
40
|
+
this.plugin = plugin;
|
|
41
|
+
this.app = plugin.app;
|
|
42
|
+
}
|
|
43
|
+
app;
|
|
44
|
+
lastCanExecuteResult;
|
|
45
|
+
/**
|
|
46
|
+
* Invokes the command.
|
|
47
|
+
*
|
|
48
|
+
* @param checking - Is checking mode only. If `true`, only the check if the command can execute is performed. If `false`, the command is executed.
|
|
49
|
+
* @returns Whether the command was executed.
|
|
50
|
+
*/
|
|
51
|
+
invoke(checking) {
|
|
52
|
+
this.lastCanExecuteResult = this.canExecute();
|
|
53
|
+
if (!checking && this.lastCanExecuteResult) {
|
|
54
|
+
this.execute();
|
|
55
|
+
}
|
|
56
|
+
return this.lastCanExecuteResult;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Checks if the command can execute.
|
|
60
|
+
*
|
|
61
|
+
* @returns Whether the command can execute.
|
|
62
|
+
*/
|
|
63
|
+
canExecute() {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Executes the command.
|
|
68
|
+
*/
|
|
69
|
+
execute() {
|
|
70
|
+
if (this.lastCanExecuteResult === void 0) {
|
|
71
|
+
throw new Error("canExecute() must be called before execute()");
|
|
72
|
+
}
|
|
73
|
+
if (!this.lastCanExecuteResult) {
|
|
74
|
+
throw new Error("canExecute() must return true before execute()");
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
export {
|
|
79
|
+
CommandBase,
|
|
80
|
+
CommandInvocationBase
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL0NvbW1hbmRCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEJhc2UgY2xhc3NlcyBmb3IgY29tbWFuZHMuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIENvbW1hbmQsXG4gIEljb25OYW1lLFxuICBQbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgY29tbWFuZC5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tYW5kQmFzZU9wdGlvbnM8VFBsdWdpbiBleHRlbmRzIFBsdWdpbj4ge1xuICAvKipcbiAgICogVGhlIGljb24gdG8gdXNlIGZvciB0aGUgY29tbWFuZC5cbiAgICovXG4gIGljb246IEljb25OYW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gICAqL1xuICBwbHVnaW46IFRQbHVnaW47XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY29tbWFuZHMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21tYW5kQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luPiBpbXBsZW1lbnRzIENvbW1hbmQge1xuICBwdWJsaWMgaWNvbjogSWNvbk5hbWU7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHByb3RlY3RlZCByZWFkb25seSBwbHVnaW46IFRQbHVnaW47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY29tbWFuZC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGNvbW1hbmQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogQ29tbWFuZEJhc2VPcHRpb25zPFRQbHVnaW4+KSB7XG4gICAgdGhpcy5pZCA9IG9wdGlvbnMuaWQ7XG4gICAgdGhpcy5uYW1lID0gb3B0aW9ucy5uYW1lO1xuICAgIHRoaXMuaWNvbiA9IG9wdGlvbnMuaWNvbjtcbiAgICB0aGlzLnBsdWdpbiA9IG9wdGlvbnMucGx1Z2luO1xuICAgIHRoaXMuYXBwID0gdGhpcy5wbHVnaW4uYXBwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGUgY29tbWFuZC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlcigpOiB2b2lkIHtcbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHRoaXMpO1xuICB9XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY29tbWFuZCBpbnZvY2F0aW9ucy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luID0gUGx1Z2luPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBhcHA6IEFwcDtcbiAgcHJpdmF0ZSBsYXN0Q2FuRXhlY3V0ZVJlc3VsdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGludm9jYXRpb24gYmVsb25ncyB0by5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luOiBUUGx1Z2luKSB7XG4gICAgdGhpcy5hcHAgPSBwbHVnaW4uYXBwO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZXMgdGhlIGNvbW1hbmQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGVja2luZyAtIElzIGNoZWNraW5nIG1vZGUgb25seS4gSWYgYHRydWVgLCBvbmx5IHRoZSBjaGVjayBpZiB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZSBpcyBwZXJmb3JtZWQuIElmIGBmYWxzZWAsIHRoZSBjb21tYW5kIGlzIGV4ZWN1dGVkLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIHdhcyBleGVjdXRlZC5cbiAgICovXG4gIHB1YmxpYyBpbnZva2UoY2hlY2tpbmc6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICB0aGlzLmxhc3RDYW5FeGVjdXRlUmVzdWx0ID0gdGhpcy5jYW5FeGVjdXRlKCk7XG4gICAgaWYgKCFjaGVja2luZyAmJiB0aGlzLmxhc3RDYW5FeGVjdXRlUmVzdWx0KSB7XG4gICAgICB0aGlzLmV4ZWN1dGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sYXN0Q2FuRXhlY3V0ZVJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgY2FuRXhlY3V0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgY29tbWFuZC5cbiAgICovXG4gIHByb3RlY3RlZCBleGVjdXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxhc3RDYW5FeGVjdXRlUmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2FuRXhlY3V0ZSgpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBleGVjdXRlKCknKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmxhc3RDYW5FeGVjdXRlUmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NhbkV4ZWN1dGUoKSBtdXN0IHJldHVybiB0cnVlIGJlZm9yZSBleGVjdXRlKCknKTtcbiAgICB9XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUE2Q08sTUFBZSxZQUF1RDtBQUFBLEVBQ3BFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNZO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9aLFlBQVksU0FBc0M7QUFDdkQsU0FBSyxLQUFLLFFBQVE7QUFDbEIsU0FBSyxPQUFPLFFBQVE7QUFDcEIsU0FBSyxPQUFPLFFBQVE7QUFDcEIsU0FBSyxTQUFTLFFBQVE7QUFDdEIsU0FBSyxNQUFNLEtBQUssT0FBTztBQUFBLEVBQ3pCO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxXQUFpQjtBQUN0QixTQUFLLE9BQU8sV0FBVyxJQUFJO0FBQUEsRUFDN0I7QUFDRjtBQU9PLE1BQWUsc0JBQXVEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU3BFLFlBQStCLFFBQWlCO0FBQWpCO0FBQ3BDLFNBQUssTUFBTSxPQUFPO0FBQUEsRUFDcEI7QUFBQSxFQVZtQjtBQUFBLEVBQ1g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWlCRCxPQUFPLFVBQTRCO0FBQ3hDLFNBQUssdUJBQXVCLEtBQUssV0FBVztBQUM1QyxRQUFJLENBQUMsWUFBWSxLQUFLLHNCQUFzQjtBQUMxQyxXQUFLLFFBQVE7QUFBQSxJQUNmO0FBRUEsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9VLGFBQXNCO0FBQzlCLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLVSxVQUFnQjtBQUN4QixRQUFJLEtBQUsseUJBQXlCLFFBQVc7QUFDM0MsWUFBTSxJQUFJLE1BQU0sOENBQThDO0FBQUEsSUFDaEU7QUFDQSxRQUFJLENBQUMsS0FBSyxzQkFBc0I7QUFDOUIsWUFBTSxJQUFJLE1BQU0sZ0RBQWdEO0FBQUEsSUFDbEU7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
*
|
|
4
|
+
* Base classes for editor commands.
|
|
5
|
+
*/
|
|
6
|
+
import type { Editor, MarkdownFileInfo, MarkdownView, Plugin, TFile } from 'obsidian';
|
|
7
|
+
import { CommandBase, CommandInvocationBase } from './CommandBase.mjs';
|
|
8
|
+
/**
|
|
9
|
+
* Base class for editor commands.
|
|
10
|
+
*
|
|
11
|
+
* @typeParam TPlugin - The type of the plugin that the command belongs to.
|
|
12
|
+
*/
|
|
13
|
+
export declare abstract class EditorCommandBase<TPlugin extends Plugin> extends CommandBase<TPlugin> {
|
|
14
|
+
protected readonly menuItemName?: string;
|
|
15
|
+
protected readonly menuSection?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Checks if the command can execute.
|
|
18
|
+
*
|
|
19
|
+
* @param checking - Is checking mode only. If `true`, only the check if the command can execute is performed. If `false`, the command is executed.
|
|
20
|
+
* @param editor - The editor to check.
|
|
21
|
+
* @param ctx - The context of the command.
|
|
22
|
+
* @returns Whether the command can execute.
|
|
23
|
+
*/
|
|
24
|
+
editorCheckCallback(checking: boolean, editor: Editor, ctx: MarkdownFileInfo | MarkdownView): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Registers the command.
|
|
27
|
+
*/
|
|
28
|
+
register(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new editor command invocation.
|
|
31
|
+
*
|
|
32
|
+
* @param editor - The editor to create the command invocation for.
|
|
33
|
+
* @param ctx - The context of the command.
|
|
34
|
+
* @returns The command invocation.
|
|
35
|
+
*/
|
|
36
|
+
protected abstract createEditorCommandInvocation(editor: Editor, ctx: MarkdownFileInfo | MarkdownView): CommandInvocationBase;
|
|
37
|
+
/**
|
|
38
|
+
* Checks if the command should be added to the editor menu.
|
|
39
|
+
*
|
|
40
|
+
* @param _editor - The editor to check.
|
|
41
|
+
* @param _ctx - The context of the command.
|
|
42
|
+
* @returns Whether the command should be added to the editor menu.
|
|
43
|
+
*/
|
|
44
|
+
protected shouldAddToEditorMenu(_editor: Editor, _ctx: MarkdownFileInfo | MarkdownView): boolean;
|
|
45
|
+
private handleEditorMenu;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Base class for editor command invocations.
|
|
49
|
+
*
|
|
50
|
+
* @typeParam TPlugin - The type of the plugin that the command belongs to.
|
|
51
|
+
*/
|
|
52
|
+
export declare class EditorCommandInvocationBase<TPlugin extends Plugin> extends CommandInvocationBase<TPlugin> {
|
|
53
|
+
protected readonly editor: Editor;
|
|
54
|
+
protected readonly ctx: MarkdownFileInfo | MarkdownView;
|
|
55
|
+
protected activeFile: TFile;
|
|
56
|
+
/**
|
|
57
|
+
* Creates a new editor command invocation.
|
|
58
|
+
*
|
|
59
|
+
* @param plugin - The plugin that the command invocation belongs to.
|
|
60
|
+
* @param editor - The editor to create the command invocation for.
|
|
61
|
+
* @param ctx - The context of the command.
|
|
62
|
+
*/
|
|
63
|
+
constructor(plugin: TPlugin, editor: Editor, ctx: MarkdownFileInfo | MarkdownView);
|
|
64
|
+
/**
|
|
65
|
+
* Checks if the command can execute.
|
|
66
|
+
*
|
|
67
|
+
* @returns Whether the command can execute.
|
|
68
|
+
*/
|
|
69
|
+
canExecute(): boolean;
|
|
70
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd(){return"/"},env:{},platform:"android"};globalThis.process=browserProcess})();
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
CommandBase,
|
|
10
|
+
CommandInvocationBase
|
|
11
|
+
} from "./CommandBase.mjs";
|
|
12
|
+
class EditorCommandBase extends CommandBase {
|
|
13
|
+
menuItemName;
|
|
14
|
+
menuSection;
|
|
15
|
+
/**
|
|
16
|
+
* Checks if the command can execute.
|
|
17
|
+
*
|
|
18
|
+
* @param checking - Is checking mode only. If `true`, only the check if the command can execute is performed. If `false`, the command is executed.
|
|
19
|
+
* @param editor - The editor to check.
|
|
20
|
+
* @param ctx - The context of the command.
|
|
21
|
+
* @returns Whether the command can execute.
|
|
22
|
+
*/
|
|
23
|
+
editorCheckCallback(checking, editor, ctx) {
|
|
24
|
+
return this.createEditorCommandInvocation(editor, ctx).invoke(checking);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Registers the command.
|
|
28
|
+
*/
|
|
29
|
+
register() {
|
|
30
|
+
super.register();
|
|
31
|
+
this.plugin.registerEvent(this.app.workspace.on("editor-menu", this.handleEditorMenu.bind(this)));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Checks if the command should be added to the editor menu.
|
|
35
|
+
*
|
|
36
|
+
* @param _editor - The editor to check.
|
|
37
|
+
* @param _ctx - The context of the command.
|
|
38
|
+
* @returns Whether the command should be added to the editor menu.
|
|
39
|
+
*/
|
|
40
|
+
shouldAddToEditorMenu(_editor, _ctx) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
handleEditorMenu(menu, editor, ctx) {
|
|
44
|
+
if (!this.createEditorCommandInvocation(editor, ctx).invoke(true)) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (!this.shouldAddToEditorMenu(editor, ctx)) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
menu.addItem((item) => {
|
|
51
|
+
item.setTitle(this.menuItemName ?? this.name).setIcon(this.icon).setSection(this.menuSection ?? "").onClick(() => this.createEditorCommandInvocation(editor, ctx).invoke(false));
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
class EditorCommandInvocationBase extends CommandInvocationBase {
|
|
56
|
+
/**
|
|
57
|
+
* Creates a new editor command invocation.
|
|
58
|
+
*
|
|
59
|
+
* @param plugin - The plugin that the command invocation belongs to.
|
|
60
|
+
* @param editor - The editor to create the command invocation for.
|
|
61
|
+
* @param ctx - The context of the command.
|
|
62
|
+
*/
|
|
63
|
+
constructor(plugin, editor, ctx) {
|
|
64
|
+
super(plugin);
|
|
65
|
+
this.editor = editor;
|
|
66
|
+
this.ctx = ctx;
|
|
67
|
+
}
|
|
68
|
+
activeFile;
|
|
69
|
+
/**
|
|
70
|
+
* Checks if the command can execute.
|
|
71
|
+
*
|
|
72
|
+
* @returns Whether the command can execute.
|
|
73
|
+
*/
|
|
74
|
+
canExecute() {
|
|
75
|
+
if (!super.canExecute()) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
if (!this.ctx.file) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
this.activeFile = this.ctx.file;
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export {
|
|
86
|
+
EditorCommandBase,
|
|
87
|
+
EditorCommandInvocationBase
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL0VkaXRvckNvbW1hbmRCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEJhc2UgY2xhc3NlcyBmb3IgZWRpdG9yIGNvbW1hbmRzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgRWRpdG9yLFxuICBNYXJrZG93bkZpbGVJbmZvLFxuICBNYXJrZG93blZpZXcsXG4gIE1lbnUsXG4gIFBsdWdpbixcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBDb21tYW5kQmFzZSxcbiAgQ29tbWFuZEludm9jYXRpb25CYXNlXG59IGZyb20gJy4vQ29tbWFuZEJhc2UudHMnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGVkaXRvciBjb21tYW5kcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVkaXRvckNvbW1hbmRCYXNlPFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4+IGV4dGVuZHMgQ29tbWFuZEJhc2U8VFBsdWdpbj4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWVudUl0ZW1OYW1lPzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWVudVNlY3Rpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGNoZWNraW5nIC0gSXMgY2hlY2tpbmcgbW9kZSBvbmx5LiBJZiBgdHJ1ZWAsIG9ubHkgdGhlIGNoZWNrIGlmIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlIGlzIHBlcmZvcm1lZC4gSWYgYGZhbHNlYCwgdGhlIGNvbW1hbmQgaXMgZXhlY3V0ZWQuXG4gICAqIEBwYXJhbSBlZGl0b3IgLSBUaGUgZWRpdG9yIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gY3R4IC0gVGhlIGNvbnRleHQgb2YgdGhlIGNvbW1hbmQuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqL1xuICBwdWJsaWMgZWRpdG9yQ2hlY2tDYWxsYmFjayhjaGVja2luZzogYm9vbGVhbiwgZWRpdG9yOiBFZGl0b3IsIGN0eDogTWFya2Rvd25GaWxlSW5mbyB8IE1hcmtkb3duVmlldyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZUVkaXRvckNvbW1hbmRJbnZvY2F0aW9uKGVkaXRvciwgY3R4KS5pbnZva2UoY2hlY2tpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGUgY29tbWFuZC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSByZWdpc3RlcigpOiB2b2lkIHtcbiAgICBzdXBlci5yZWdpc3RlcigpO1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRXZlbnQodGhpcy5hcHAud29ya3NwYWNlLm9uKCdlZGl0b3ItbWVudScsIHRoaXMuaGFuZGxlRWRpdG9yTWVudS5iaW5kKHRoaXMpKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBlZGl0b3IgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZWRpdG9yIC0gVGhlIGVkaXRvciB0byBjcmVhdGUgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IuXG4gICAqIEBwYXJhbSBjdHggLSBUaGUgY29udGV4dCBvZiB0aGUgY29tbWFuZC5cbiAgICogQHJldHVybnMgVGhlIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGVFZGl0b3JDb21tYW5kSW52b2NhdGlvbihlZGl0b3I6IEVkaXRvciwgY3R4OiBNYXJrZG93bkZpbGVJbmZvIHwgTWFya2Rvd25WaWV3KTogQ29tbWFuZEludm9jYXRpb25CYXNlO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBlZGl0b3IgbWVudS5cbiAgICpcbiAgICogQHBhcmFtIF9lZGl0b3IgLSBUaGUgZWRpdG9yIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gX2N0eCAtIFRoZSBjb250ZXh0IG9mIHRoZSBjb21tYW5kLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZWRpdG9yIG1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkQWRkVG9FZGl0b3JNZW51KF9lZGl0b3I6IEVkaXRvciwgX2N0eDogTWFya2Rvd25GaWxlSW5mbyB8IE1hcmtkb3duVmlldyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRWRpdG9yTWVudShtZW51OiBNZW51LCBlZGl0b3I6IEVkaXRvciwgY3R4OiBNYXJrZG93bkZpbGVJbmZvIHwgTWFya2Rvd25WaWV3KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNyZWF0ZUVkaXRvckNvbW1hbmRJbnZvY2F0aW9uKGVkaXRvciwgY3R4KS5pbnZva2UodHJ1ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkQWRkVG9FZGl0b3JNZW51KGVkaXRvciwgY3R4KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG1lbnUuYWRkSXRlbSgoaXRlbSkgPT4ge1xuICAgICAgaXRlbVxuICAgICAgICAuc2V0VGl0bGUodGhpcy5tZW51SXRlbU5hbWUgPz8gdGhpcy5uYW1lKVxuICAgICAgICAuc2V0SWNvbih0aGlzLmljb24pXG4gICAgICAgIC5zZXRTZWN0aW9uKHRoaXMubWVudVNlY3Rpb24gPz8gJycpXG4gICAgICAgIC5vbkNsaWNrKCgpID0+IHRoaXMuY3JlYXRlRWRpdG9yQ29tbWFuZEludm9jYXRpb24oZWRpdG9yLCBjdHgpLmludm9rZShmYWxzZSkpO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgZWRpdG9yIGNvbW1hbmQgaW52b2NhdGlvbnMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBjbGFzcyBFZGl0b3JDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbj4gZXh0ZW5kcyBDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4ge1xuICBwcm90ZWN0ZWQgYWN0aXZlRmlsZSE6IFRGaWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGVkaXRvciBjb21tYW5kIGludm9jYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBiZWxvbmdzIHRvLlxuICAgKiBAcGFyYW0gZWRpdG9yIC0gVGhlIGVkaXRvciB0byBjcmVhdGUgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IuXG4gICAqIEBwYXJhbSBjdHggLSBUaGUgY29udGV4dCBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwbHVnaW46IFRQbHVnaW4sIHByb3RlY3RlZCByZWFkb25seSBlZGl0b3I6IEVkaXRvciwgcHJvdGVjdGVkIHJlYWRvbmx5IGN0eDogTWFya2Rvd25GaWxlSW5mbyB8IE1hcmtkb3duVmlldykge1xuICAgIHN1cGVyKHBsdWdpbik7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGNhbkV4ZWN1dGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCFzdXBlci5jYW5FeGVjdXRlKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3R4LmZpbGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmFjdGl2ZUZpbGUgPSB0aGlzLmN0eC5maWxlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBZUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFPQSxNQUFlLDBCQUFrRCxZQUFxQjtBQUFBLEVBQ3hFO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVVaLG9CQUFvQixVQUFtQixRQUFnQixLQUErQztBQUMzRyxXQUFPLEtBQUssOEJBQThCLFFBQVEsR0FBRyxFQUFFLE9BQU8sUUFBUTtBQUFBLEVBQ3hFO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLZ0IsV0FBaUI7QUFDL0IsVUFBTSxTQUFTO0FBQ2YsU0FBSyxPQUFPLGNBQWMsS0FBSyxJQUFJLFVBQVUsR0FBRyxlQUFlLEtBQUssaUJBQWlCLEtBQUssSUFBSSxDQUFDLENBQUM7QUFBQSxFQUNsRztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFrQlUsc0JBQXNCLFNBQWlCLE1BQWdEO0FBQy9GLFdBQU87QUFBQSxFQUNUO0FBQUEsRUFFUSxpQkFBaUIsTUFBWSxRQUFnQixLQUE0QztBQUMvRixRQUFJLENBQUMsS0FBSyw4QkFBOEIsUUFBUSxHQUFHLEVBQUUsT0FBTyxJQUFJLEdBQUc7QUFDakU7QUFBQSxJQUNGO0FBRUEsUUFBSSxDQUFDLEtBQUssc0JBQXNCLFFBQVEsR0FBRyxHQUFHO0FBQzVDO0FBQUEsSUFDRjtBQUVBLFNBQUssUUFBUSxDQUFDLFNBQVM7QUFDckIsV0FDRyxTQUFTLEtBQUssZ0JBQWdCLEtBQUssSUFBSSxFQUN2QyxRQUFRLEtBQUssSUFBSSxFQUNqQixXQUFXLEtBQUssZUFBZSxFQUFFLEVBQ2pDLFFBQVEsTUFBTSxLQUFLLDhCQUE4QixRQUFRLEdBQUcsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUFBLElBQ2hGLENBQUM7QUFBQSxFQUNIO0FBQ0Y7QUFPTyxNQUFNLG9DQUE0RCxzQkFBK0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVS9GLFlBQVksUUFBb0MsUUFBbUMsS0FBc0M7QUFDOUgsVUFBTSxNQUFNO0FBRHlDO0FBQW1DO0FBQUEsRUFFMUY7QUFBQSxFQVhVO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBa0JNLGFBQXNCO0FBQ3BDLFFBQUksQ0FBQyxNQUFNLFdBQVcsR0FBRztBQUN2QixhQUFPO0FBQUEsSUFDVDtBQUVBLFFBQUksQ0FBQyxLQUFLLElBQUksTUFBTTtBQUNsQixhQUFPO0FBQUEsSUFDVDtBQUVBLFNBQUssYUFBYSxLQUFLLElBQUk7QUFDM0IsV0FBTztBQUFBLEVBQ1Q7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
*
|
|
4
|
+
* Base classes for file commands.
|
|
5
|
+
*/
|
|
6
|
+
import type { Plugin, WorkspaceLeaf } from 'obsidian';
|
|
7
|
+
import { TFile } from 'obsidian';
|
|
8
|
+
import { CommandInvocationBase } from './CommandBase.mjs';
|
|
9
|
+
import { NonEditorCommandBase } from './NonEditorCommandBase.mjs';
|
|
10
|
+
/**
|
|
11
|
+
* Base class for file commands.
|
|
12
|
+
*
|
|
13
|
+
* @typeParam TPlugin - The type of the plugin that the command belongs to.
|
|
14
|
+
*/
|
|
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;
|
|
22
|
+
/**
|
|
23
|
+
* Creates a new file command invocation.
|
|
24
|
+
*
|
|
25
|
+
* @returns The command invocation.
|
|
26
|
+
*/
|
|
27
|
+
protected abstract createCommandInvocation(): FileCommandInvocationBase<TPlugin>;
|
|
28
|
+
/**
|
|
29
|
+
* Checks if the command should be added to the file menu.
|
|
30
|
+
*
|
|
31
|
+
* @param _file - The file to check.
|
|
32
|
+
* @param _source - The source of the file.
|
|
33
|
+
* @param _leaf - The leaf to check.
|
|
34
|
+
* @returns Whether the command should be added to the file menu.
|
|
35
|
+
*/
|
|
36
|
+
protected shouldAddToFileMenu(_file: TFile, _source: string, _leaf?: WorkspaceLeaf): boolean;
|
|
37
|
+
private handleFileMenu;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Base class for file command invocations.
|
|
41
|
+
*
|
|
42
|
+
* @typeParam TPlugin - The type of the plugin that the command belongs to.
|
|
43
|
+
*/
|
|
44
|
+
export declare abstract class FileCommandInvocationBase<TPlugin extends Plugin> extends CommandInvocationBase<TPlugin> {
|
|
45
|
+
protected file: TFile;
|
|
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 file - The file to invoke the command for.
|
|
51
|
+
* @returns Whether the command was executed.
|
|
52
|
+
*/
|
|
53
|
+
invoke(checking: boolean, file?: TFile): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Checks if the command can execute.
|
|
56
|
+
*
|
|
57
|
+
* @returns Whether the command can execute.
|
|
58
|
+
*/
|
|
59
|
+
protected canExecute(): boolean;
|
|
60
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd(){return"/"},env:{},platform:"android"};globalThis.process=browserProcess})();
|
|
7
|
+
|
|
8
|
+
import { TFile } from "obsidian";
|
|
9
|
+
import { CommandInvocationBase } from "./CommandBase.mjs";
|
|
10
|
+
import { NonEditorCommandBase } from "./NonEditorCommandBase.mjs";
|
|
11
|
+
class FileCommandBase extends NonEditorCommandBase {
|
|
12
|
+
menuItemName;
|
|
13
|
+
menuSection;
|
|
14
|
+
/**
|
|
15
|
+
* Registers the command.
|
|
16
|
+
*/
|
|
17
|
+
register() {
|
|
18
|
+
super.register();
|
|
19
|
+
this.plugin.registerEvent(this.app.workspace.on("file-menu", this.handleFileMenu.bind(this)));
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Checks if the command should be added to the file menu.
|
|
23
|
+
*
|
|
24
|
+
* @param _file - The file to check.
|
|
25
|
+
* @param _source - The source of the file.
|
|
26
|
+
* @param _leaf - The leaf to check.
|
|
27
|
+
* @returns Whether the command should be added to the file menu.
|
|
28
|
+
*/
|
|
29
|
+
shouldAddToFileMenu(_file, _source, _leaf) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
handleFileMenu(menu, file, source, leaf) {
|
|
33
|
+
if (!(file instanceof TFile)) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (!this.createCommandInvocation().invoke(true)) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (!this.shouldAddToFileMenu(file, source, leaf)) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
menu.addItem((item) => {
|
|
43
|
+
item.setTitle(this.menuItemName ?? this.name).setIcon(this.icon).onClick(() => this.createCommandInvocation().invoke(false, file));
|
|
44
|
+
if (this.menuSection) {
|
|
45
|
+
item.setSection(this.menuSection);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
class FileCommandInvocationBase extends CommandInvocationBase {
|
|
51
|
+
file;
|
|
52
|
+
/**
|
|
53
|
+
* Invokes the command.
|
|
54
|
+
*
|
|
55
|
+
* @param checking - Is checking mode only. If `true`, only the check if the command can execute is performed. If `false`, the command is executed.
|
|
56
|
+
* @param file - The file to invoke the command for.
|
|
57
|
+
* @returns Whether the command was executed.
|
|
58
|
+
*/
|
|
59
|
+
invoke(checking, file) {
|
|
60
|
+
if (file) {
|
|
61
|
+
this.file = file;
|
|
62
|
+
}
|
|
63
|
+
return super.invoke(checking);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Checks if the command can execute.
|
|
67
|
+
*
|
|
68
|
+
* @returns Whether the command can execute.
|
|
69
|
+
*/
|
|
70
|
+
canExecute() {
|
|
71
|
+
const file = this.file ?? this.app.workspace.getActiveFile();
|
|
72
|
+
if (!file) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
this.file = file;
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export {
|
|
80
|
+
FileCommandBase,
|
|
81
|
+
FileCommandInvocationBase
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL0ZpbGVDb21tYW5kQmFzZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBCYXNlIGNsYXNzZXMgZm9yIGZpbGUgY29tbWFuZHMuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBNZW51LFxuICBQbHVnaW4sXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFdvcmtzcGFjZUxlYWZcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgQ29tbWFuZEludm9jYXRpb25CYXNlIH0gZnJvbSAnLi9Db21tYW5kQmFzZS50cyc7XG5pbXBvcnQgeyBOb25FZGl0b3JDb21tYW5kQmFzZSB9IGZyb20gJy4vTm9uRWRpdG9yQ29tbWFuZEJhc2UudHMnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGZpbGUgY29tbWFuZHMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaWxlQ29tbWFuZEJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbiA9IFBsdWdpbj4gZXh0ZW5kcyBOb25FZGl0b3JDb21tYW5kQmFzZTxUUGx1Z2luPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51SXRlbU5hbWU/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51U2VjdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlZ2lzdGVyKCk6IHZvaWQge1xuICAgIHN1cGVyLnJlZ2lzdGVyKCk7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2ZpbGUtbWVudScsIHRoaXMuaGFuZGxlRmlsZU1lbnUuYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZmlsZSBjb21tYW5kIGludm9jYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBjb21tYW5kIGludm9jYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3ZlcnJpZGUgY3JlYXRlQ29tbWFuZEludm9jYXRpb24oKTogRmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPjtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZmlsZSBtZW51LlxuICAgKlxuICAgKiBAcGFyYW0gX2ZpbGUgLSBUaGUgZmlsZSB0byBjaGVjay5cbiAgICogQHBhcmFtIF9zb3VyY2UgLSBUaGUgc291cmNlIG9mIHRoZSBmaWxlLlxuICAgKiBAcGFyYW0gX2xlYWYgLSBUaGUgbGVhZiB0byBjaGVjay5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGZpbGUgbWVudS5cbiAgICovXG4gIHByb3RlY3RlZCBzaG91bGRBZGRUb0ZpbGVNZW51KF9maWxlOiBURmlsZSwgX3NvdXJjZTogc3RyaW5nLCBfbGVhZj86IFdvcmtzcGFjZUxlYWYpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZpbGVNZW51KG1lbnU6IE1lbnUsIGZpbGU6IFRBYnN0cmFjdEZpbGUsIHNvdXJjZTogc3RyaW5nLCBsZWFmPzogV29ya3NwYWNlTGVhZik6IHZvaWQge1xuICAgIGlmICghKGZpbGUgaW5zdGFuY2VvZiBURmlsZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb24oKS5pbnZva2UodHJ1ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkQWRkVG9GaWxlTWVudShmaWxlLCBzb3VyY2UsIGxlYWYpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbWVudS5hZGRJdGVtKChpdGVtKSA9PiB7XG4gICAgICBpdGVtLnNldFRpdGxlKHRoaXMubWVudUl0ZW1OYW1lID8/IHRoaXMubmFtZSlcbiAgICAgICAgLnNldEljb24odGhpcy5pY29uKVxuICAgICAgICAub25DbGljaygoKSA9PiB0aGlzLmNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uKCkuaW52b2tlKGZhbHNlLCBmaWxlKSk7XG5cbiAgICAgIGlmICh0aGlzLm1lbnVTZWN0aW9uKSB7XG4gICAgICAgIGl0ZW0uc2V0U2VjdGlvbih0aGlzLm1lbnVTZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGZpbGUgY29tbWFuZCBpbnZvY2F0aW9ucy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpbGVDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbj4gZXh0ZW5kcyBDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4ge1xuICBwcm90ZWN0ZWQgZmlsZSE6IFRGaWxlO1xuXG4gIC8qKlxuICAgKiBJbnZva2VzIHRoZSBjb21tYW5kLlxuICAgKlxuICAgKiBAcGFyYW0gY2hlY2tpbmcgLSBJcyBjaGVja2luZyBtb2RlIG9ubHkuIElmIGB0cnVlYCwgb25seSB0aGUgY2hlY2sgaWYgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUgaXMgcGVyZm9ybWVkLiBJZiBgZmFsc2VgLCB0aGUgY29tbWFuZCBpcyBleGVjdXRlZC5cbiAgICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byBpbnZva2UgdGhlIGNvbW1hbmQgZm9yLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIHdhcyBleGVjdXRlZC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBpbnZva2UoY2hlY2tpbmc6IGJvb2xlYW4sIGZpbGU/OiBURmlsZSk6IGJvb2xlYW4ge1xuICAgIGlmIChmaWxlKSB7XG4gICAgICB0aGlzLmZpbGUgPSBmaWxlO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuaW52b2tlKGNoZWNraW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY2FuRXhlY3V0ZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBmaWxlID0gKHRoaXMuZmlsZSBhcyBURmlsZSB8IHVuZGVmaW5lZCkgPz8gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKTtcbiAgICBpZiAoIWZpbGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5maWxlID0gZmlsZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQWFBLFNBQVMsYUFBYTtBQUV0QixTQUFTLDZCQUE2QjtBQUN0QyxTQUFTLDRCQUE0QjtBQU85QixNQUFlLHdCQUF5RCxxQkFBOEI7QUFBQSxFQUN4RjtBQUFBLEVBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtILFdBQWlCO0FBQy9CLFVBQU0sU0FBUztBQUNmLFNBQUssT0FBTyxjQUFjLEtBQUssSUFBSSxVQUFVLEdBQUcsYUFBYSxLQUFLLGVBQWUsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUFBLEVBQzlGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBaUJVLG9CQUFvQixPQUFjLFNBQWlCLE9BQWdDO0FBQzNGLFdBQU87QUFBQSxFQUNUO0FBQUEsRUFFUSxlQUFlLE1BQVksTUFBcUIsUUFBZ0IsTUFBNEI7QUFDbEcsUUFBSSxFQUFFLGdCQUFnQixRQUFRO0FBQzVCO0FBQUEsSUFDRjtBQUVBLFFBQUksQ0FBQyxLQUFLLHdCQUF3QixFQUFFLE9BQU8sSUFBSSxHQUFHO0FBQ2hEO0FBQUEsSUFDRjtBQUVBLFFBQUksQ0FBQyxLQUFLLG9CQUFvQixNQUFNLFFBQVEsSUFBSSxHQUFHO0FBQ2pEO0FBQUEsSUFDRjtBQUVBLFNBQUssUUFBUSxDQUFDLFNBQVM7QUFDckIsV0FBSyxTQUFTLEtBQUssZ0JBQWdCLEtBQUssSUFBSSxFQUN6QyxRQUFRLEtBQUssSUFBSSxFQUNqQixRQUFRLE1BQU0sS0FBSyx3QkFBd0IsRUFBRSxPQUFPLE9BQU8sSUFBSSxDQUFDO0FBRW5FLFVBQUksS0FBSyxhQUFhO0FBQ3BCLGFBQUssV0FBVyxLQUFLLFdBQVc7QUFBQSxNQUNsQztBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFDRjtBQU9PLE1BQWUsa0NBQTBELHNCQUErQjtBQUFBLEVBQ25HO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNNLE9BQU8sVUFBbUIsTUFBdUI7QUFDL0QsUUFBSSxNQUFNO0FBQ1IsV0FBSyxPQUFPO0FBQUEsSUFDZDtBQUNBLFdBQU8sTUFBTSxPQUFPLFFBQVE7QUFBQSxFQUM5QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9tQixhQUFzQjtBQUN2QyxVQUFNLE9BQVEsS0FBSyxRQUE4QixLQUFLLElBQUksVUFBVSxjQUFjO0FBQ2xGLFFBQUksQ0FBQyxNQUFNO0FBQ1QsYUFBTztBQUFBLElBQ1Q7QUFDQSxTQUFLLE9BQU87QUFDWixXQUFPO0FBQUEsRUFDVDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
*
|
|
4
|
+
* Base classes for non-editor commands.
|
|
5
|
+
*/
|
|
6
|
+
import type { Plugin } from 'obsidian';
|
|
7
|
+
import type { CommandInvocationBase } from './CommandBase.mjs';
|
|
8
|
+
import { CommandBase } from './CommandBase.mjs';
|
|
9
|
+
/**
|
|
10
|
+
* Base class for non-editor commands.
|
|
11
|
+
*
|
|
12
|
+
* @typeParam TPlugin - The type of the plugin that the command belongs to.
|
|
13
|
+
*/
|
|
14
|
+
export declare abstract class NonEditorCommandBase<TPlugin extends Plugin> extends CommandBase<TPlugin> {
|
|
15
|
+
/**
|
|
16
|
+
* Checks if the command can execute.
|
|
17
|
+
*
|
|
18
|
+
* @param checking - Is checking mode only. If `true`, only the check if the command can execute is performed. If `false`, the command is executed.
|
|
19
|
+
* @returns Whether the command can execute.
|
|
20
|
+
*/
|
|
21
|
+
checkCallback(checking: boolean): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Creates a new command invocation.
|
|
24
|
+
*
|
|
25
|
+
* @returns The command invocation.
|
|
26
|
+
*/
|
|
27
|
+
protected abstract createCommandInvocation(): CommandInvocationBase;
|
|
28
|
+
}
|