obsidian-dev-utils 7.0.1-beta.1 → 7.0.1-beta.3
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 +8 -0
- package/dist/lib/obsidian/Plugin/PluginBase.cjs +7 -4
- package/dist/lib/obsidian/Plugin/PluginBase.d.ts +3 -7
- package/dist/lib/obsidian/Plugin/PluginSettingsBase.cjs +27 -25
- package/dist/lib/obsidian/Plugin/PluginSettingsBase.d.ts +7 -6
- package/dist/lib/obsidian/Plugin/PluginSettingsTabBase.cjs +1 -1
- package/dist/lib/obsidian/Plugin/PluginSettingsTabBase.d.ts +8 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -55,6 +55,10 @@ class PluginBase extends import_obsidian.Plugin {
|
|
55
55
|
get settingsCopy() {
|
56
56
|
return this.settings.clone();
|
57
57
|
}
|
58
|
+
// eslint-disable-next-line @typescript-eslint/class-literal-property-style
|
59
|
+
get PluginSettingsTabConstructor() {
|
60
|
+
return null;
|
61
|
+
}
|
58
62
|
/**
|
59
63
|
* Gets the plugin settings.
|
60
64
|
*
|
@@ -74,9 +78,8 @@ class PluginBase extends import_obsidian.Plugin {
|
|
74
78
|
this.showNotice("An unhandled error occurred. Please check the console for more information.");
|
75
79
|
}));
|
76
80
|
await this.loadSettings();
|
77
|
-
|
78
|
-
|
79
|
-
this.addSettingTab(pluginSettingsTab);
|
81
|
+
if (this.PluginSettingsTabConstructor) {
|
82
|
+
this.addSettingTab(new this.PluginSettingsTabConstructor(this));
|
80
83
|
}
|
81
84
|
const abortController = new AbortController();
|
82
85
|
this._abortSignal = abortController.signal;
|
@@ -144,4 +147,4 @@ ${message}`);
|
|
144
147
|
0 && (module.exports = {
|
145
148
|
PluginBase
|
146
149
|
});
|
147
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5CYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1sncHJvY2VzcyddID8/
|
150
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5CYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1sncHJvY2VzcyddID8/IHtcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIFBsdWdpbkJhc2VcbiAqIEJhc2UgY2xhc3MgZm9yIE9ic2lkaWFuIHBsdWdpbnMgcHJvdmlkaW5nIHV0aWxpdHkgbWV0aG9kcyBmb3Igc2V0dGluZ3MgbWFuYWdlbWVudCwgZXJyb3IgaGFuZGxpbmcsIGFuZCBub3RpZmljYXRpb25zLlxuICpcbiAqIFRoaXMgY2xhc3Mgc2ltcGxpZmllcyB0aGUgcHJvY2VzcyBvZiBtYW5hZ2luZyBwbHVnaW4gc2V0dGluZ3MsIGRpc3BsYXlpbmcgbm90aWZpY2F0aW9ucywgYW5kIGhhbmRsaW5nIGVycm9ycy5cbiAqIFN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCBtZXRob2RzIHRvIGNyZWF0ZSBkZWZhdWx0IHNldHRpbmdzIGFuZCBzZXR0aW5ncyB0YWJzLCBhbmQgY29tcGxldGUgcGx1Z2luLXNwZWNpZmljXG4gKiBsb2FkaW5nIHRhc2tzLlxuICovXG5cbmltcG9ydCB7XG4gIE5vdGljZSxcbiAgUGx1Z2luXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBNYXliZVByb21pc2UgfSBmcm9tICcuLi8uLi9Bc3luYy50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBsdWdpblNldHRpbmdzQmFzZSxcbiAgUGx1Z2luU2V0dGluZ3NDb25zdHJ1Y3RvclxufSBmcm9tICcuL1BsdWdpblNldHRpbmdzQmFzZS50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBsdWdpblNldHRpbmdzVGFiQmFzZSxcbiAgUGx1Z2luU2V0dGluZ3NUYWJDb25zdHJ1Y3RvclxufSBmcm9tICcuL1BsdWdpblNldHRpbmdzVGFiQmFzZS50cyc7XG5cbmltcG9ydCB7IHJlZ2lzdGVyQXN5bmNFcnJvckV2ZW50SGFuZGxlciB9IGZyb20gJy4uLy4uL0Vycm9yLnRzJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuLi8uLi9GdW5jdGlvbi50cyc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgT2JzaWRpYW4gcGx1Z2lucyB3aXRoIGJ1aWx0LWluIHN1cHBvcnQgZm9yIHNldHRpbmdzIG1hbmFnZW1lbnQsIGVycm9yIGhhbmRsaW5nLCBhbmQgbm90aWZpY2F0aW9ucy5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHR5cGUgcmVwcmVzZW50aW5nIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGx1Z2luQmFzZTxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIFBsdWdpblNldHRpbmdzQmFzZSA9IFBsdWdpblNldHRpbmdzQmFzZT4gZXh0ZW5kcyBQbHVnaW4ge1xuICAvKipcbiAgICogR2V0cyB0aGUgQWJvcnRTaWduYWwgdXNlZCBmb3IgYWJvcnRpbmcgbG9uZy1ydW5uaW5nIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhYm9ydCBzaWduYWwuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFib3J0U2lnbmFsKCk6IEFib3J0U2lnbmFsIHtcbiAgICByZXR1cm4gdGhpcy5fYWJvcnRTaWduYWw7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgcGx1Z2luIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGNvcHkgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3NDb3B5KCk6IFBsdWdpblNldHRpbmdzIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5jbG9uZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBQbHVnaW5TZXR0aW5nc0NvbnN0cnVjdG9yKCk6IFBsdWdpblNldHRpbmdzQ29uc3RydWN0b3I8UGx1Z2luU2V0dGluZ3M+O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvY2xhc3MtbGl0ZXJhbC1wcm9wZXJ0eS1zdHlsZVxuICBwcm90ZWN0ZWQgZ2V0IFBsdWdpblNldHRpbmdzVGFiQ29uc3RydWN0b3IoKTogbnVsbCB8IFBsdWdpblNldHRpbmdzVGFiQ29uc3RydWN0b3I8dGhpcywgUGx1Z2luU2V0dGluZ3MsIFBsdWdpblNldHRpbmdzVGFiQmFzZTx0aGlzLCBQbHVnaW5TZXR0aW5ncz4+IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHNldHRpbmdzKCk6IFBsdWdpblNldHRpbmdzIHtcbiAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3M7XG4gIH1cblxuICBwcml2YXRlIF9hYm9ydFNpZ25hbCE6IEFib3J0U2lnbmFsO1xuXG4gIHByaXZhdGUgX3NldHRpbmdzITogUGx1Z2luU2V0dGluZ3M7XG5cbiAgcHJpdmF0ZSBub3RpY2U/OiBOb3RpY2U7XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gaXMgbG9hZGVkXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgb25sb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucmVnaXN0ZXIocmVnaXN0ZXJBc3luY0Vycm9yRXZlbnRIYW5kbGVyKCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd05vdGljZSgnQW4gdW5oYW5kbGVkIGVycm9yIG9jY3VycmVkLiBQbGVhc2UgY2hlY2sgdGhlIGNvbnNvbGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uJyk7XG4gICAgfSkpO1xuXG4gICAgYXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcbiAgICBpZiAodGhpcy5QbHVnaW5TZXR0aW5nc1RhYkNvbnN0cnVjdG9yKSB7XG4gICAgICB0aGlzLmFkZFNldHRpbmdUYWIobmV3IHRoaXMuUGx1Z2luU2V0dGluZ3NUYWJDb25zdHJ1Y3Rvcih0aGlzKSk7XG4gICAgfVxuXG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX2Fib3J0U2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDtcbiAgICB0aGlzLnJlZ2lzdGVyKCgpID0+IHtcbiAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMub25sb2FkQ29tcGxldGUoKTtcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeSh0aGlzLm9uTGF5b3V0UmVhZHkuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgdGhlIG5ldyBwbHVnaW4gc2V0dGluZ3MuXG4gICAqXG4gICAqIEBwYXJhbSBuZXdTZXR0aW5ncyAtIFRoZSBuZXcgc2V0dGluZ3MgdG8gc2F2ZS5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2V0dGluZ3MgYXJlIHNhdmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNhdmVTZXR0aW5ncyhuZXdTZXR0aW5nczogUGx1Z2luU2V0dGluZ3MpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9zZXR0aW5ncyA9IG5ld1NldHRpbmdzLmNsb25lKCk7XG4gICAgYXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzLnRvSlNPTigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgbGF5b3V0IGlzIHJlYWR5LiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIHBlcmZvcm0gYWN0aW9ucyBvbmNlXG4gICAqIHRoZSBsYXlvdXQgaXMgcmVhZHkuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSBvciB2b2lkIGluZGljYXRpbmcgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGxheW91dCBzZXR1cC5cbiAgICovXG4gIHByb3RlY3RlZCBvbkxheW91dFJlYWR5KCk6IE1heWJlUHJvbWlzZTx2b2lkPiB7XG4gICAgbm9vcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gbG9hZGluZyBpcyBjb21wbGV0ZS4gVGhpcyBtZXRob2QgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIHRvIHBlcmZvcm1cbiAgICogYW55IGFkZGl0aW9uYWwgc2V0dXAgcmVxdWlyZWQgYWZ0ZXIgbG9hZGluZyBpcyBjb21wbGV0ZS5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIG9yIHZvaWQgaW5kaWNhdGluZyB0aGUgY29tcGxldGlvbiBvZiB0aGUgbG9hZCBwcm9jZXNzLlxuICAgKi9cbiAgcHJvdGVjdGVkIG9ubG9hZENvbXBsZXRlKCk6IE1heWJlUHJvbWlzZTx2b2lkPiB7XG4gICAgbm9vcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIGEgbm90aWNlIG1lc3NhZ2UgdG8gdGhlIHVzZXIuXG4gICAqXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2UgdG8gZGlzcGxheS5cbiAgICovXG4gIHByb3RlY3RlZCBzaG93Tm90aWNlKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5vdGljZSkge1xuICAgICAgdGhpcy5ub3RpY2UuaGlkZSgpO1xuICAgIH1cblxuICAgIHRoaXMubm90aWNlID0gbmV3IE5vdGljZShgJHt0aGlzLm1hbmlmZXN0Lm5hbWV9XFxuJHttZXNzYWdlfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBwbHVnaW4gc2V0dGluZ3MgZnJvbSB0aGUgc2F2ZWQgZGF0YS5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2V0dGluZ3MgYXJlIGxvYWRlZC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgbG9hZFNldHRpbmdzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmxvYWREYXRhKCkgYXMgdW5rbm93bjtcbiAgICBjb25zdCBzZXR0aW5ncyA9IG5ldyB0aGlzLlBsdWdpblNldHRpbmdzQ29uc3RydWN0b3IoZGF0YSk7XG4gICAgdGhpcy5fc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICBpZiAoc2V0dGluZ3Muc2hvdWxkU2F2ZUFmdGVyTG9hZCgpKSB7XG4gICAgICBhd2FpdCB0aGlzLnNhdmVTZXR0aW5ncyhzZXR0aW5ncyk7XG4gICAgfVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBY0Esc0JBR087QUFZUCxtQkFBK0M7QUFDL0Msc0JBQXFCO0FBOUJyQixJQUFJLFlBQVksV0FBVyxTQUFTLEtBQUs7QUFBQSxFQUN2QyxPQUFPLE1BQUk7QUFBQSxFQUNYLE9BQU8sQ0FBQztBQUFBLEVBQ1IsWUFBWTtBQUNkO0FBaUNPLE1BQWUsbUJBQW1GLHVCQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTTlHLElBQVcsY0FBMkI7QUFDcEMsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsZUFBK0I7QUFDeEMsV0FBTyxLQUFLLFNBQVMsTUFBTTtBQUFBLEVBQzdCO0FBQUE7QUFBQSxFQUtBLElBQWMsK0JBQXVJO0FBQ25KLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBYyxXQUEyQjtBQUN2QyxXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUEsRUFFUTtBQUFBLEVBRUE7QUFBQSxFQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLUixNQUFzQixTQUF3QjtBQUM1QyxTQUFLLGFBQVMsNkNBQStCLE1BQU07QUFDakQsV0FBSyxXQUFXLDZFQUE2RTtBQUFBLElBQy9GLENBQUMsQ0FBQztBQUVGLFVBQU0sS0FBSyxhQUFhO0FBQ3hCLFFBQUksS0FBSyw4QkFBOEI7QUFDckMsV0FBSyxjQUFjLElBQUksS0FBSyw2QkFBNkIsSUFBSSxDQUFDO0FBQUEsSUFDaEU7QUFFQSxVQUFNLGtCQUFrQixJQUFJLGdCQUFnQjtBQUM1QyxTQUFLLGVBQWUsZ0JBQWdCO0FBQ3BDLFNBQUssU0FBUyxNQUFNO0FBQ2xCLHNCQUFnQixNQUFNO0FBQUEsSUFDeEIsQ0FBQztBQUNELFVBQU0sS0FBSyxlQUFlO0FBQzFCLFNBQUssSUFBSSxVQUFVLGNBQWMsS0FBSyxjQUFjLEtBQUssSUFBSSxDQUFDO0FBQUEsRUFDaEU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLE1BQWEsYUFBYSxhQUE0QztBQUNwRSxTQUFLLFlBQVksWUFBWSxNQUFNO0FBQ25DLFVBQU0sS0FBSyxTQUFTLEtBQUssU0FBUyxPQUFPLENBQUM7QUFBQSxFQUM1QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUVUsZ0JBQW9DO0FBQzVDLDhCQUFLO0FBQUEsRUFDUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUVUsaUJBQXFDO0FBQzdDLDhCQUFLO0FBQUEsRUFDUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9VLFdBQVcsU0FBdUI7QUFDMUMsUUFBSSxLQUFLLFFBQVE7QUFDZixXQUFLLE9BQU8sS0FBSztBQUFBLElBQ25CO0FBRUEsU0FBSyxTQUFTLElBQUksdUJBQU8sR0FBRyxLQUFLLFNBQVMsSUFBSTtBQUFBLEVBQUssT0FBTyxFQUFFO0FBQUEsRUFDOUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxNQUFjLGVBQThCO0FBQzFDLFVBQU0sT0FBTyxNQUFNLEtBQUssU0FBUztBQUNqQyxVQUFNLFdBQVcsSUFBSSxLQUFLLDBCQUEwQixJQUFJO0FBQ3hELFNBQUssWUFBWTtBQUNqQixRQUFJLFNBQVMsb0JBQW9CLEdBQUc7QUFDbEMsWUFBTSxLQUFLLGFBQWEsUUFBUTtBQUFBLElBQ2xDO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
@@ -6,9 +6,10 @@
|
|
6
6
|
* Subclasses should implement methods to create default settings and settings tabs, and complete plugin-specific
|
7
7
|
* loading tasks.
|
8
8
|
*/
|
9
|
-
import { Plugin
|
9
|
+
import { Plugin } from 'obsidian';
|
10
10
|
import type { MaybePromise } from '../../Async.ts';
|
11
11
|
import type { PluginSettingsBase, PluginSettingsConstructor } from './PluginSettingsBase.ts';
|
12
|
+
import type { PluginSettingsTabBase, PluginSettingsTabConstructor } from './PluginSettingsTabBase.ts';
|
12
13
|
/**
|
13
14
|
* Base class for creating Obsidian plugins with built-in support for settings management, error handling, and notifications.
|
14
15
|
*
|
@@ -28,6 +29,7 @@ export declare abstract class PluginBase<PluginSettings extends PluginSettingsBa
|
|
28
29
|
*/
|
29
30
|
get settingsCopy(): PluginSettings;
|
30
31
|
protected abstract get PluginSettingsConstructor(): PluginSettingsConstructor<PluginSettings>;
|
32
|
+
protected get PluginSettingsTabConstructor(): null | PluginSettingsTabConstructor<this, PluginSettings, PluginSettingsTabBase<this, PluginSettings>>;
|
31
33
|
/**
|
32
34
|
* Gets the plugin settings.
|
33
35
|
*
|
@@ -48,12 +50,6 @@ export declare abstract class PluginBase<PluginSettings extends PluginSettingsBa
|
|
48
50
|
* @returns A promise that resolves when the settings are saved.
|
49
51
|
*/
|
50
52
|
saveSettings(newSettings: PluginSettings): Promise<void>;
|
51
|
-
/**
|
52
|
-
* Creates a plugin settings tab. This method must be implemented by subclasses.
|
53
|
-
*
|
54
|
-
* @returns The settings tab or null if not applicable.
|
55
|
-
*/
|
56
|
-
protected abstract createPluginSettingsTab(): null | PluginSettingTab;
|
57
53
|
/**
|
58
54
|
* Called when the layout is ready. This method can be overridden by subclasses to perform actions once
|
59
55
|
* the layout is ready.
|
@@ -37,7 +37,7 @@ class PluginSettingsBase {
|
|
37
37
|
* @param data - The data to initialize the settings from.
|
38
38
|
*/
|
39
39
|
constructor(data) {
|
40
|
-
this.
|
40
|
+
this.init(data);
|
41
41
|
}
|
42
42
|
/**
|
43
43
|
* Clones the settings.
|
@@ -47,29 +47,6 @@ class PluginSettingsBase {
|
|
47
47
|
clone() {
|
48
48
|
return new this.constructor(this.toJSON());
|
49
49
|
}
|
50
|
-
/**
|
51
|
-
* Initializes the settings from JSON data.
|
52
|
-
*
|
53
|
-
* @param data - The data to initialize the settings from.
|
54
|
-
*/
|
55
|
-
initFromJson(data) {
|
56
|
-
if (data === void 0 || data === null) {
|
57
|
-
return;
|
58
|
-
}
|
59
|
-
if (typeof data !== "object" || Array.isArray(data)) {
|
60
|
-
const type = Array.isArray(data) ? "Array" : typeof data;
|
61
|
-
console.error(`Invalid data type. Expected Object, got: ${type}`);
|
62
|
-
return;
|
63
|
-
}
|
64
|
-
const record = data;
|
65
|
-
for (const [key, value] of Object.entries(record)) {
|
66
|
-
if (key in this) {
|
67
|
-
this[key] = value;
|
68
|
-
} else {
|
69
|
-
console.error(`Unknown property: ${key}`);
|
70
|
-
}
|
71
|
-
}
|
72
|
-
}
|
73
50
|
/**
|
74
51
|
* Determines if the settings should be saved after loading.
|
75
52
|
*
|
@@ -86,9 +63,34 @@ class PluginSettingsBase {
|
|
86
63
|
toJSON() {
|
87
64
|
return Object.fromEntries(Object.entries(this));
|
88
65
|
}
|
66
|
+
initFromRecord(record) {
|
67
|
+
for (const [key, value] of Object.entries(record)) {
|
68
|
+
if (key in this) {
|
69
|
+
this[key] = value;
|
70
|
+
} else {
|
71
|
+
console.error(`Unknown property: ${key}`);
|
72
|
+
}
|
73
|
+
}
|
74
|
+
}
|
75
|
+
/**
|
76
|
+
* Initializes the settings from JSON data.
|
77
|
+
*
|
78
|
+
* @param data - The data to initialize the settings from.
|
79
|
+
*/
|
80
|
+
init(data) {
|
81
|
+
if (data === void 0 || data === null) {
|
82
|
+
return;
|
83
|
+
}
|
84
|
+
if (typeof data !== "object" || Array.isArray(data)) {
|
85
|
+
const type = Array.isArray(data) ? "Array" : typeof data;
|
86
|
+
console.error(`Invalid data type. Expected Object, got: ${type}`);
|
87
|
+
return;
|
88
|
+
}
|
89
|
+
this.initFromRecord(data);
|
90
|
+
}
|
89
91
|
}
|
90
92
|
// Annotate the CommonJS export names for ESM import in node:
|
91
93
|
0 && (module.exports = {
|
92
94
|
PluginSettingsBase
|
93
95
|
});
|
94
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc0Jhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIFBsdWdpblNldHRpbmdzQmFzZVxuICogQmFzZSBjbGFzcyBmb3IgcGx1Z2luIHNldHRpbmdzLlxuICovXG5cbi8qKlxuICogVHlwZSByZXByZXNlbnRpbmcgdGhlIGNvbnN0cnVjdG9yIGZvciBwbHVnaW4gc2V0dGluZ3MuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCB0eXBlIFBsdWdpblNldHRpbmdzQ29uc3RydWN0b3I8UGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nc0Jhc2U+
|
96
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc0Jhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIFBsdWdpblNldHRpbmdzQmFzZVxuICogQmFzZSBjbGFzcyBmb3IgcGx1Z2luIHNldHRpbmdzLlxuICovXG5cbi8qKlxuICogVHlwZSByZXByZXNlbnRpbmcgdGhlIGNvbnN0cnVjdG9yIGZvciBwbHVnaW4gc2V0dGluZ3MuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCB0eXBlIFBsdWdpblNldHRpbmdzQ29uc3RydWN0b3I8UGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nc0Jhc2U+ID0gbmV3IChkYXRhOiB1bmtub3duKSA9PiBQbHVnaW5TZXR0aW5ncztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBwbHVnaW4gc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBQbHVnaW5TZXR0aW5nc0Jhc2Uge1xuICAvKipcbiAgICogQ29uc3RydWN0b3IgZm9yIFBsdWdpblNldHRpbmdzQmFzZS5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSB0byBpbml0aWFsaXplIHRoZSBzZXR0aW5ncyBmcm9tLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGRhdGE6IHVua25vd24pIHtcbiAgICB0aGlzLmluaXQoZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvbmVzIHRoZSBzZXR0aW5ncy5cbiAgICpcbiAgICogQHJldHVybnMgQSBjbG9uZSBvZiB0aGUgc2V0dGluZ3MuXG4gICAqL1xuICBwdWJsaWMgY2xvbmUoKTogdGhpcyB7XG4gICAgcmV0dXJuIG5ldyAodGhpcy5jb25zdHJ1Y3RvciBhcyBQbHVnaW5TZXR0aW5nc0NvbnN0cnVjdG9yPHRoaXM+KSh0aGlzLnRvSlNPTigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBzZXR0aW5ncyBzaG91bGQgYmUgc2F2ZWQgYWZ0ZXIgbG9hZGluZy5cbiAgICpcbiAgICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgc2V0dGluZ3Mgc2hvdWxkIGJlIHNhdmVkIGFmdGVyIGxvYWRpbmcuXG4gICAqL1xuICBwdWJsaWMgc2hvdWxkU2F2ZUFmdGVyTG9hZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHNldHRpbmdzIHRvIGEgSlNPTiBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBzZXR0aW5ncyBhcyBhIEpTT04gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIHRvSlNPTigpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh0aGlzKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdEZyb21SZWNvcmQocmVjb3JkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlY29yZCkpIHtcbiAgICAgIGlmIChrZXkgaW4gdGhpcykge1xuICAgICAgICB0aGlzW2tleSBhcyBrZXlvZiB0aGlzXSA9IHZhbHVlIGFzIHRoaXNba2V5b2YgdGhpc107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBVbmtub3duIHByb3BlcnR5OiAke2tleX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIHNldHRpbmdzIGZyb20gSlNPTiBkYXRhLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBkYXRhIHRvIGluaXRpYWxpemUgdGhlIHNldHRpbmdzIGZyb20uXG4gICAqL1xuICBwcml2YXRlIGluaXQoZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGlmIChkYXRhID09PSB1bmRlZmluZWQgfHwgZGF0YSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgY29uc3QgdHlwZSA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyAnQXJyYXknIDogdHlwZW9mIGRhdGE7XG4gICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIGRhdGEgdHlwZS4gRXhwZWN0ZWQgT2JqZWN0LCBnb3Q6ICR7dHlwZX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmluaXRGcm9tUmVjb3JkKGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZU8sTUFBTSxtQkFBbUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNdkIsWUFBWSxNQUFlO0FBQ2hDLFNBQUssS0FBSyxJQUFJO0FBQUEsRUFDaEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxRQUFjO0FBQ25CLFdBQU8sSUFBSyxLQUFLLFlBQWdELEtBQUssT0FBTyxDQUFDO0FBQUEsRUFDaEY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxzQkFBK0I7QUFDcEMsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxTQUFrQztBQUN2QyxXQUFPLE9BQU8sWUFBWSxPQUFPLFFBQVEsSUFBSSxDQUFDO0FBQUEsRUFDaEQ7QUFBQSxFQUVVLGVBQWUsUUFBdUM7QUFDOUQsZUFBVyxDQUFDLEtBQUssS0FBSyxLQUFLLE9BQU8sUUFBUSxNQUFNLEdBQUc7QUFDakQsVUFBSSxPQUFPLE1BQU07QUFDZixhQUFLLEdBQWlCLElBQUk7QUFBQSxNQUM1QixPQUFPO0FBQ0wsZ0JBQVEsTUFBTSxxQkFBcUIsR0FBRyxFQUFFO0FBQUEsTUFDMUM7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9RLEtBQUssTUFBcUI7QUFDaEMsUUFBSSxTQUFTLFVBQWEsU0FBUyxNQUFNO0FBQ3ZDO0FBQUEsSUFDRjtBQUVBLFFBQUksT0FBTyxTQUFTLFlBQVksTUFBTSxRQUFRLElBQUksR0FBRztBQUNuRCxZQUFNLE9BQU8sTUFBTSxRQUFRLElBQUksSUFBSSxVQUFVLE9BQU87QUFDcEQsY0FBUSxNQUFNLDRDQUE0QyxJQUFJLEVBQUU7QUFDaEU7QUFBQSxJQUNGO0FBRUEsU0FBSyxlQUFlLElBQStCO0FBQUEsRUFDckQ7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
@@ -24,12 +24,6 @@ export declare class PluginSettingsBase {
|
|
24
24
|
* @returns A clone of the settings.
|
25
25
|
*/
|
26
26
|
clone(): this;
|
27
|
-
/**
|
28
|
-
* Initializes the settings from JSON data.
|
29
|
-
*
|
30
|
-
* @param data - The data to initialize the settings from.
|
31
|
-
*/
|
32
|
-
initFromJson(data: unknown): void;
|
33
27
|
/**
|
34
28
|
* Determines if the settings should be saved after loading.
|
35
29
|
*
|
@@ -42,4 +36,11 @@ export declare class PluginSettingsBase {
|
|
42
36
|
* @returns The settings as a JSON object.
|
43
37
|
*/
|
44
38
|
toJSON(): Record<string, unknown>;
|
39
|
+
protected initFromRecord(record: Record<string, unknown>): void;
|
40
|
+
/**
|
41
|
+
* Initializes the settings from JSON data.
|
42
|
+
*
|
43
|
+
* @param data - The data to initialize the settings from.
|
44
|
+
*/
|
45
|
+
private init;
|
45
46
|
}
|
@@ -42,4 +42,4 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
|
|
42
42
|
0 && (module.exports = {
|
43
43
|
PluginSettingsTabBase
|
44
44
|
});
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
45
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIFBsdWdpblNldHRpbmdzVGFiQmFzZVxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB7IFBsdWdpblNldHRpbmdUYWIgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luU2V0dGluZ3NCYXNlIH0gZnJvbSAnLi9QbHVnaW5TZXR0aW5nc0Jhc2UudHMnO1xuXG5pbXBvcnQgeyBQbHVnaW5CYXNlIH0gZnJvbSAnLi9QbHVnaW5CYXNlLnRzJztcblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyB0aGUgY29uc3RydWN0b3IgZm9yIHBsdWdpbiBzZXR0aW5ncyB0YWJzLlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IGV4dGVuZHMgUGx1Z2luQmFzZS5cbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5nc1RhYiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICovXG5leHBvcnQgdHlwZSBQbHVnaW5TZXR0aW5nc1RhYkNvbnN0cnVjdG9yPFxuICBQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPFBsdWdpblNldHRpbmdzPixcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nc0Jhc2UsXG4gIFBsdWdpblNldHRpbmdzVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ3NUYWJCYXNlPFBsdWdpbiwgUGx1Z2luU2V0dGluZ3M+XG4+ID0gbmV3IChwbHVnaW46IFBsdWdpbikgPT4gUGx1Z2luU2V0dGluZ3NUYWI7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgcGx1Z2luIHNldHRpbmdzIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBQcm92aWRlcyBhIG1ldGhvZCBmb3IgYmluZGluZyB2YWx1ZSBjb21wb25lbnRzIHRvIHBsdWdpbiBzZXR0aW5ncyBhbmQgaGFuZGxpbmcgY2hhbmdlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgZXh0ZW5kcyBQbHVnaW5CYXNlLlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGx1Z2luU2V0dGluZ3NUYWJCYXNlPFxuICBUUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxQbHVnaW5TZXR0aW5ncz4sXG4gIFBsdWdpblNldHRpbmdzIGV4dGVuZHMgUGx1Z2luU2V0dGluZ3NCYXNlID0gVFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8aW5mZXIgUD4gPyBQIDogbmV2ZXJcbj4gZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBvdmVycmlkZSBwbHVnaW46IFRQbHVnaW4pIHtcbiAgICBzdXBlcihwbHVnaW4uYXBwLCBwbHVnaW4pO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsc0JBQWlDO0FBSWpDLHdCQUEyQjtBQXNCcEIsTUFBZSw4QkFHWixpQ0FBaUI7QUFBQSxFQUNsQixZQUE0QixRQUFpQjtBQUNsRCxVQUFNLE9BQU8sS0FBSyxNQUFNO0FBRFM7QUFBQSxFQUVuQztBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
@@ -6,6 +6,14 @@
|
|
6
6
|
import { PluginSettingTab } from 'obsidian';
|
7
7
|
import type { PluginSettingsBase } from './PluginSettingsBase.ts';
|
8
8
|
import { PluginBase } from './PluginBase.ts';
|
9
|
+
/**
|
10
|
+
* Type representing the constructor for plugin settings tabs.
|
11
|
+
*
|
12
|
+
* @typeParam Plugin - The type of the plugin that extends PluginBase.
|
13
|
+
* @typeParam PluginSettings - The type of the plugin settings.
|
14
|
+
* @typeParam PluginSettingsTab - The type of the plugin settings tab.
|
15
|
+
*/
|
16
|
+
export type PluginSettingsTabConstructor<Plugin extends PluginBase<PluginSettings>, PluginSettings extends PluginSettingsBase, PluginSettingsTab extends PluginSettingsTabBase<Plugin, PluginSettings>> = new (plugin: Plugin) => PluginSettingsTab;
|
9
17
|
/**
|
10
18
|
* Base class for creating plugin settings tabs in Obsidian.
|
11
19
|
* Provides a method for binding value components to plugin settings and handling changes.
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "obsidian-dev-utils",
|
3
|
-
"version": "7.0.1-beta.
|
3
|
+
"version": "7.0.1-beta.3",
|
4
4
|
"description": "This is the collection of useful functions that you can use for your Obsidian plugin development",
|
5
5
|
"main": "./dist/lib/index.cjs",
|
6
6
|
"types": "./dist/lib/index.d.ts",
|