obsidian-dev-utils 1.6.0 → 1.7.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
CHANGED
|
@@ -45,20 +45,29 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
|
|
|
45
45
|
this.plugin = plugin;
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
|
-
* Binds a value component to a
|
|
49
|
-
* Updates the plugin settings when the value component's value changes.
|
|
48
|
+
* Binds a value component to a plugin setting property.
|
|
50
49
|
*
|
|
51
50
|
* @template TValueComponent - The type of the value component.
|
|
52
|
-
* @template Property - The type of the
|
|
53
|
-
* @
|
|
54
|
-
*
|
|
55
|
-
* @param
|
|
56
|
-
* @param
|
|
57
|
-
* @
|
|
51
|
+
* @template Property - The type of the plugin setting property.
|
|
52
|
+
* @template PropertyType - The type of the plugin setting property value.
|
|
53
|
+
*
|
|
54
|
+
* @param valueComponent - The value component to bind.
|
|
55
|
+
* @param property - The plugin setting property to bind the value component to.
|
|
56
|
+
* @param options - Additional options for binding.
|
|
57
|
+
* @param options.autoSave - Whether to automatically save the settings when the value changes. Default is true.
|
|
58
|
+
* @param options.settingToUIValueConverter - A function to convert the setting value to the UI value. Default is identity function.
|
|
59
|
+
* @param options.uiToSettingValueConverter - A function to convert the UI value to the setting value. Default is identity function.
|
|
60
|
+
*
|
|
61
|
+
* @returns The bound value component.
|
|
58
62
|
*/
|
|
59
|
-
bindValueComponent(valueComponent,
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
bindValueComponent(valueComponent, property, {
|
|
64
|
+
autoSave = true,
|
|
65
|
+
settingToUIValueConverter = (value) => value,
|
|
66
|
+
uiToSettingValueConverter = (value) => value
|
|
67
|
+
} = {}) {
|
|
68
|
+
const pluginSettings = this.plugin.settingsCopy;
|
|
69
|
+
valueComponent.setValue(settingToUIValueConverter(pluginSettings[property])).onChange(async (newValue) => {
|
|
70
|
+
pluginSettings[property] = uiToSettingValueConverter(newValue);
|
|
62
71
|
if (autoSave) {
|
|
63
72
|
await this.plugin.saveSettings(pluginSettings);
|
|
64
73
|
}
|
|
@@ -70,4 +79,4 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
|
|
|
70
79
|
0 && (module.exports = {
|
|
71
80
|
PluginSettingsTabBase
|
|
72
81
|
});
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9faW1wb3J0X21ldGFfdXJsID0gZ2xvYmFsVGhpc1tcImltcG9ydC5tZXRhLnVybFwiXSA/PyAoKCk9PnJlcXVpcmUoXCJub2RlOnVybFwiKS5wYXRoVG9GaWxlVVJMKF9fZmlsZW5hbWUpKSgpO1xuY29uc3QgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1tcInByb2Nlc3NcIl0gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAZmlsZSBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgYmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgcGx1Z2luIHNldHRpbmcgdGFicyBpbiBPYnNpZGlhbi5cbiAqIEl0IHByb3ZpZGVzIGEgdXRpbGl0eSBtZXRob2QgdG8gYmluZCB2YWx1ZSBjb21wb25lbnRzIHRvIHBsdWdpbiBzZXR0aW5ncyBhbmQgaGFuZGxlIGNoYW5nZXMuXG4gKi9cblxuaW1wb3J0IHsgUGx1Z2luU2V0dGluZ1RhYiB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgUGx1Z2luQmFzZSB9IGZyb20gXCIuL1BsdWdpbkJhc2UudHNcIjtcbmltcG9ydCB0eXBlIHsgS2V5c01hdGNoaW5nIH0gZnJvbSBcIi4uLy4uL0B0eXBlcy50c1wiO1xuXG5pbnRlcmZhY2UgVmFsdWVDb21wb25lbnQ8VD4ge1xuICBzZXRWYWx1ZSh2YWx1ZTogVCk6IHRoaXM7XG4gIG9uQ2hhbmdlKGNhbGxiYWNrOiAobmV3VmFsdWU6IFQpID0+
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9faW1wb3J0X21ldGFfdXJsID0gZ2xvYmFsVGhpc1tcImltcG9ydC5tZXRhLnVybFwiXSA/PyAoKCk9PnJlcXVpcmUoXCJub2RlOnVybFwiKS5wYXRoVG9GaWxlVVJMKF9fZmlsZW5hbWUpKSgpO1xuY29uc3QgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1tcInByb2Nlc3NcIl0gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAZmlsZSBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgYmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgcGx1Z2luIHNldHRpbmcgdGFicyBpbiBPYnNpZGlhbi5cbiAqIEl0IHByb3ZpZGVzIGEgdXRpbGl0eSBtZXRob2QgdG8gYmluZCB2YWx1ZSBjb21wb25lbnRzIHRvIHBsdWdpbiBzZXR0aW5ncyBhbmQgaGFuZGxlIGNoYW5nZXMuXG4gKi9cblxuaW1wb3J0IHsgUGx1Z2luU2V0dGluZ1RhYiB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgUGx1Z2luQmFzZSB9IGZyb20gXCIuL1BsdWdpbkJhc2UudHNcIjtcbmltcG9ydCB0eXBlIHsgS2V5c01hdGNoaW5nIH0gZnJvbSBcIi4uLy4uL0B0eXBlcy50c1wiO1xuXG5pbnRlcmZhY2UgVmFsdWVDb21wb25lbnQ8VD4ge1xuICBzZXRWYWx1ZSh2YWx1ZTogVCk6IHRoaXM7XG4gIG9uQ2hhbmdlKGNhbGxiYWNrOiAobmV3VmFsdWU6IFQpID0+IFByb21pc2U8dm9pZD4pOiB0aGlzO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5ncyB0YWJzIGluIE9ic2lkaWFuLlxuICogUHJvdmlkZXMgYSBtZXRob2QgZm9yIGJpbmRpbmcgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsaW5nIGNoYW5nZXMuXG4gKlxuICogQHRlbXBsYXRlIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgZXh0ZW5kcyBQbHVnaW5CYXNlLlxuICogQHRlbXBsYXRlIFBsdWdpblNldHRpbmdzIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyBvYmplY3QuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbHVnaW5TZXR0aW5nc1RhYkJhc2U8XG4gIFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPFBsdWdpblNldHRpbmdzPixcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3Rcbj4gZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgUGx1Z2luU2V0dGluZ3NUYWJCYXNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RQbHVnaW59IHBsdWdpbiAtIFRoZSBwbHVnaW4gaW5zdGFuY2UgdG8gd2hpY2ggdGhpcyBzZXR0aW5ncyB0YWIgYmVsb25ncy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgb3ZlcnJpZGUgcGx1Z2luOiBUUGx1Z2luKSB7XG4gICAgc3VwZXIocGx1Z2luLmFwcCwgcGx1Z2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nIHByb3BlcnR5LlxuICAgKlxuICAgKiBAdGVtcGxhdGUgVFZhbHVlQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHRlbXBsYXRlIFByb3BlcnR5IC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiBzZXR0aW5nIHByb3BlcnR5LlxuICAgKiBAdGVtcGxhdGUgUHJvcGVydHlUeXBlIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiBzZXR0aW5nIHByb3BlcnR5IHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGJpbmQuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eSAtIFRoZSBwbHVnaW4gc2V0dGluZyBwcm9wZXJ0eSB0byBiaW5kIHRoZSB2YWx1ZSBjb21wb25lbnQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQWRkaXRpb25hbCBvcHRpb25zIGZvciBiaW5kaW5nLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5hdXRvU2F2ZSAtIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBzYXZlIHRoZSBzZXR0aW5ncyB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLiBEZWZhdWx0IGlzIHRydWUuXG4gICAqIEBwYXJhbSBvcHRpb25zLnNldHRpbmdUb1VJVmFsdWVDb252ZXJ0ZXIgLSBBIGZ1bmN0aW9uIHRvIGNvbnZlcnQgdGhlIHNldHRpbmcgdmFsdWUgdG8gdGhlIFVJIHZhbHVlLiBEZWZhdWx0IGlzIGlkZW50aXR5IGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gb3B0aW9ucy51aVRvU2V0dGluZ1ZhbHVlQ29udmVydGVyIC0gQSBmdW5jdGlvbiB0byBjb252ZXJ0IHRoZSBVSSB2YWx1ZSB0byB0aGUgc2V0dGluZyB2YWx1ZS4gRGVmYXVsdCBpcyBpZGVudGl0eSBmdW5jdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHByb3RlY3RlZCBiaW5kVmFsdWVDb21wb25lbnQ8XG4gICAgVFZhbHVlQ29tcG9uZW50IGV4dGVuZHMgVmFsdWVDb21wb25lbnQ8dW5rbm93bj4sXG4gICAgUHJvcGVydHkgZXh0ZW5kcyBLZXlzTWF0Y2hpbmc8UGx1Z2luU2V0dGluZ3MsIFByb3BlcnR5VHlwZT4sXG4gICAgUHJvcGVydHlUeXBlID0gVFZhbHVlQ29tcG9uZW50IGV4dGVuZHMgVmFsdWVDb21wb25lbnQ8aW5mZXIgUD4gPyBQIDogbmV2ZXIsXG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCxcbiAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAge1xuICAgICAgYXV0b1NhdmUgPSB0cnVlLFxuICAgICAgc2V0dGluZ1RvVUlWYWx1ZUNvbnZlcnRlciA9ICh2YWx1ZSk6IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XSA9PiB2YWx1ZSxcbiAgICAgIHVpVG9TZXR0aW5nVmFsdWVDb252ZXJ0ZXIgPSAodmFsdWUpOiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV0gPT4gdmFsdWVcbiAgICB9OiB7XG4gICAgICBhdXRvU2F2ZT86IGJvb2xlYW5cbiAgICAgIHNldHRpbmdUb1VJVmFsdWVDb252ZXJ0ZXI/OiAodmFsdWU6IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XSkgPT4gUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldLFxuICAgICAgdWlUb1NldHRpbmdWYWx1ZUNvbnZlcnRlcj86ICh2YWx1ZTogUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldKSA9PiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV1cbiAgICB9ID0ge31cbiAgKTogVFZhbHVlQ29tcG9uZW50IHtcbiAgICBjb25zdCBwbHVnaW5TZXR0aW5ncyA9IHRoaXMucGx1Z2luLnNldHRpbmdzQ29weTtcbiAgICB2YWx1ZUNvbXBvbmVudFxuICAgICAgLnNldFZhbHVlKHNldHRpbmdUb1VJVmFsdWVDb252ZXJ0ZXIocGx1Z2luU2V0dGluZ3NbcHJvcGVydHldKSlcbiAgICAgIC5vbkNoYW5nZShhc3luYyAobmV3VmFsdWUpID0+IHtcbiAgICAgICAgcGx1Z2luU2V0dGluZ3NbcHJvcGVydHldID0gdWlUb1NldHRpbmdWYWx1ZUNvbnZlcnRlcihuZXdWYWx1ZSBhcyBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV0pO1xuICAgICAgICBpZiAoYXV0b1NhdmUpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MocGx1Z2luU2V0dGluZ3MpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICByZXR1cm4gdmFsdWVDb21wb25lbnQ7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBLHNCQUFpQztBQUNqQyx3QkFBMkI7QUFaM0IsTUFBTSxvQkFBb0IsV0FBVyxpQkFBaUIsTUFBTSxNQUFJLFFBQVEsVUFBVSxFQUFFLGNBQWMsVUFBVSxHQUFHO0FBQy9HLE1BQU0sWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3pDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUFzQk8sTUFBZSw4QkFHWixpQ0FBaUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNbEIsWUFBNEIsUUFBaUI7QUFDbEQsVUFBTSxPQUFPLEtBQUssTUFBTTtBQURTO0FBQUEsRUFFbkM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBa0JVLG1CQUtSLGdCQUNBLFVBQ0E7QUFBQSxJQUNFLFdBQVc7QUFBQSxJQUNYLDRCQUE0QixDQUFDLFVBQW9DO0FBQUEsSUFDakUsNEJBQTRCLENBQUMsVUFBb0M7QUFBQSxFQUNuRSxJQUlJLENBQUMsR0FDWTtBQUNqQixVQUFNLGlCQUFpQixLQUFLLE9BQU87QUFDbkMsbUJBQ0csU0FBUywwQkFBMEIsZUFBZSxRQUFRLENBQUMsQ0FBQyxFQUM1RCxTQUFTLE9BQU8sYUFBYTtBQUM1QixxQkFBZSxRQUFRLElBQUksMEJBQTBCLFFBQW9DO0FBQ3pGLFVBQUksVUFBVTtBQUNaLGNBQU0sS0FBSyxPQUFPLGFBQWEsY0FBYztBQUFBLE1BQy9DO0FBQUEsSUFDRixDQUFDO0FBQ0gsV0FBTztBQUFBLEVBQ1Q7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -25,17 +25,25 @@ export declare abstract class PluginSettingsTabBase<TPlugin extends PluginBase<P
|
|
|
25
25
|
*/
|
|
26
26
|
constructor(plugin: TPlugin);
|
|
27
27
|
/**
|
|
28
|
-
* Binds a value component to a
|
|
29
|
-
* Updates the plugin settings when the value component's value changes.
|
|
28
|
+
* Binds a value component to a plugin setting property.
|
|
30
29
|
*
|
|
31
30
|
* @template TValueComponent - The type of the value component.
|
|
32
|
-
* @template Property - The type of the
|
|
33
|
-
* @
|
|
34
|
-
*
|
|
35
|
-
* @param
|
|
36
|
-
* @param
|
|
37
|
-
* @
|
|
31
|
+
* @template Property - The type of the plugin setting property.
|
|
32
|
+
* @template PropertyType - The type of the plugin setting property value.
|
|
33
|
+
*
|
|
34
|
+
* @param valueComponent - The value component to bind.
|
|
35
|
+
* @param property - The plugin setting property to bind the value component to.
|
|
36
|
+
* @param options - Additional options for binding.
|
|
37
|
+
* @param options.autoSave - Whether to automatically save the settings when the value changes. Default is true.
|
|
38
|
+
* @param options.settingToUIValueConverter - A function to convert the setting value to the UI value. Default is identity function.
|
|
39
|
+
* @param options.uiToSettingValueConverter - A function to convert the UI value to the setting value. Default is identity function.
|
|
40
|
+
*
|
|
41
|
+
* @returns The bound value component.
|
|
38
42
|
*/
|
|
39
|
-
protected bindValueComponent<TValueComponent extends ValueComponent<unknown>, Property extends KeysMatching<PluginSettings, PropertyType>, PropertyType = TValueComponent extends ValueComponent<infer P> ? P : never>(valueComponent: TValueComponent,
|
|
43
|
+
protected bindValueComponent<TValueComponent extends ValueComponent<unknown>, Property extends KeysMatching<PluginSettings, PropertyType>, PropertyType = TValueComponent extends ValueComponent<infer P> ? P : never>(valueComponent: TValueComponent, property: Property, { autoSave, settingToUIValueConverter, uiToSettingValueConverter }?: {
|
|
44
|
+
autoSave?: boolean;
|
|
45
|
+
settingToUIValueConverter?: (value: PluginSettings[Property]) => PluginSettings[Property];
|
|
46
|
+
uiToSettingValueConverter?: (value: PluginSettings[Property]) => PluginSettings[Property];
|
|
47
|
+
}): TValueComponent;
|
|
40
48
|
}
|
|
41
49
|
export {};
|
package/package.json
CHANGED