obsidian-dev-utils 1.6.0 → 1.7.1
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
|
-
*
|
|
49
|
-
* Updates the plugin settings when the value component's value changes.
|
|
48
|
+
* Internal implementation of `bindValueComponent` that handles both overloads.
|
|
50
49
|
*
|
|
51
|
-
* @
|
|
52
|
-
* @
|
|
53
|
-
* @
|
|
54
|
-
*
|
|
55
|
-
* @param
|
|
56
|
-
* @param
|
|
57
|
-
* @
|
|
50
|
+
* @typeParam TValueComponent - The type of the value component extending `ValueComponent`.
|
|
51
|
+
* @typeParam Property - The key of the plugin setting that the component is bound to.
|
|
52
|
+
* @typeParam UIValueType - The inferred type of the UI value based on the value component's type.
|
|
53
|
+
*
|
|
54
|
+
* @param valueComponent - The component that will display and interact with the setting value.
|
|
55
|
+
* @param property - The property key in `PluginSettings` to bind to the component.
|
|
56
|
+
* @param options - Configuration options.
|
|
57
|
+
* @param options.autoSave - If true, saves the plugin settings automatically after the component value changes.
|
|
58
|
+
* @param options.settingToUIValueConverter - A function that converts the setting value to the value used by the UI component.
|
|
59
|
+
* @param options.uiToSettingValueConverter - A function that converts the UI component's value back to the setting value.
|
|
60
|
+
*
|
|
61
|
+
* @returns The `TValueComponent` instance that was bound to the property.
|
|
58
62
|
*/
|
|
59
|
-
bindValueComponent(valueComponent,
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
bindValueComponent(valueComponent, property, {
|
|
64
|
+
autoSave,
|
|
65
|
+
settingToUIValueConverter,
|
|
66
|
+
uiToSettingValueConverter
|
|
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+IFByb21pc2U8dm9pZD4pOiB0aGlzO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5ncyB0YWJzIGluIE9ic2lkaWFuLlxuICogUHJvdmlkZXMgYSBtZXRob2QgZm9yIGJpbmRpbmcgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsaW5nIGNoYW5nZXMuXG4gKlxuICogQHRlbXBsYXRlIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgZXh0ZW5kcyBQbHVnaW5CYXNlLlxuICogQHRlbXBsYXRlIFBsdWdpblNldHRpbmdzIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyBvYmplY3QuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbHVnaW5TZXR0aW5nc1RhYkJhc2U8XG4gIFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPFBsdWdpblNldHRpbmdzPixcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3Rcbj4gZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgUGx1Z2luU2V0dGluZ3NUYWJCYXNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RQbHVnaW59IHBsdWdpbiAtIFRoZSBwbHVnaW4gaW5zdGFuY2UgdG8gd2hpY2ggdGhpcyBzZXR0aW5ncyB0YWIgYmVsb25ncy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgb3ZlcnJpZGUgcGx1Z2luOiBUUGx1Z2luKSB7XG4gICAgc3VwZXIocGx1Z2luLmFwcCwgcGx1Z2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3Mgd2l0aCBvcHRpb25hbCBhdXRvbWF0aWMgc2F2aW5nIGFuZCB2YWx1ZSBjb252ZXJzaW9uLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQgZXh0ZW5kaW5nIGBWYWx1ZUNvbXBvbmVudGAuXG4gICAqIEB0eXBlUGFyYW0gUHJvcGVydHkgLSBUaGUga2V5IG9mIHRoZSBwbHVnaW4gc2V0dGluZyB0aGF0IHRoZSBjb21wb25lbnQgaXMgYm91bmQgdG8uXG4gICAqIEB0eXBlUGFyYW0gUHJvcGVydHlUeXBlIC0gVGhlIGluZmVycmVkIHR5cGUgb2YgdGhlIHByb3BlcnR5IGJhc2VkIG9uIHRoZSB2YWx1ZSBjb21wb25lbnQncyB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRoYXQgd2lsbCBkaXNwbGF5IGFuZCBpbnRlcmFjdCB3aXRoIHRoZSBzZXR0aW5nIHZhbHVlLlxuICAgKiBAcGFyYW0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IGluIGBQbHVnaW5TZXR0aW5nc2AgdG8gYmluZCB0byB0aGUgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAgICogQHBhcmFtIG9wdGlvbnMuYXV0b1NhdmUgLSBJZiB0cnVlLCBzYXZlcyB0aGUgcGx1Z2luIHNldHRpbmdzIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGNvbXBvbmVudCB2YWx1ZSBjaGFuZ2VzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgYFRWYWx1ZUNvbXBvbmVudGAgaW5zdGFuY2UgdGhhdCB3YXMgYm91bmQgdG8gdGhlIHByb3BlcnR5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGJpbmRWYWx1ZUNvbXBvbmVudDxcbiAgICBUVmFsdWVDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUNvbXBvbmVudDx1bmtub3duPixcbiAgICBQcm9wZXJ0eSBleHRlbmRzIEtleXNNYXRjaGluZzxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZVR5cGU+LFxuICAgIFVJVmFsdWVUeXBlID0gVFZhbHVlQ29tcG9uZW50IGV4dGVuZHMgVmFsdWVDb21wb25lbnQ8aW5mZXIgUD4gPyBQIDogbmV2ZXIsXG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCxcbiAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGF1dG9TYXZlPzogYm9vbGVhblxuICAgIH1cbiAgKTogVFZhbHVlQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3Mgd2l0aCBhdXRvbWF0aWMgc2F2aW5nIGFuZCBjdXN0b20gdmFsdWUgY29udmVyc2lvbi5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50IGV4dGVuZGluZyBgVmFsdWVDb21wb25lbnRgLlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5IC0gVGhlIGtleSBvZiB0aGUgcGx1Z2luIHNldHRpbmcgdGhhdCB0aGUgY29tcG9uZW50IGlzIGJvdW5kIHRvLlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWVUeXBlIC0gVGhlIGluZmVycmVkIHR5cGUgb2YgdGhlIFVJIHZhbHVlIGJhc2VkIG9uIHRoZSB2YWx1ZSBjb21wb25lbnQncyB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRoYXQgd2lsbCBkaXNwbGF5IGFuZCBpbnRlcmFjdCB3aXRoIHRoZSBzZXR0aW5nIHZhbHVlLlxuICAgKiBAcGFyYW0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IGluIGBQbHVnaW5TZXR0aW5nc2AgdG8gYmluZCB0byB0aGUgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAgICogQHBhcmFtIG9wdGlvbnMuYXV0b1NhdmUgLSBJZiB0cnVlLCBzYXZlcyB0aGUgcGx1Z2luIHNldHRpbmdzIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGNvbXBvbmVudCB2YWx1ZSBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5zZXR0aW5nVG9VSVZhbHVlQ29udmVydGVyIC0gQSBmdW5jdGlvbiB0aGF0IGNvbnZlcnRzIHRoZSBzZXR0aW5nIHZhbHVlIHRvIHRoZSB2YWx1ZSB1c2VkIGJ5IHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBvcHRpb25zLnVpVG9TZXR0aW5nVmFsdWVDb252ZXJ0ZXIgLSBBIGZ1bmN0aW9uIHRoYXQgY29udmVydHMgdGhlIFVJIGNvbXBvbmVudCdzIHZhbHVlIGJhY2sgdG8gdGhlIHNldHRpbmcgdmFsdWUuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBgVFZhbHVlQ29tcG9uZW50YCBpbnN0YW5jZSB0aGF0IHdhcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gICAqL1xuICBwcm90ZWN0ZWQgYmluZFZhbHVlQ29tcG9uZW50PFxuICAgIFRWYWx1ZUNvbXBvbmVudCBleHRlbmRzIFZhbHVlQ29tcG9uZW50PHVua25vd24+LFxuICAgIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3MsXG4gICAgVUlWYWx1ZVR5cGUgPSBUVmFsdWVDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUNvbXBvbmVudDxpbmZlciBQPiA/IFAgOiBuZXZlcixcbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50LFxuICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBhdXRvU2F2ZT86IGJvb2xlYW4sXG4gICAgICBzZXR0aW5nVG9VSVZhbHVlQ29udmVydGVyOiAocHJvcGVydHlWYWx1ZTogUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldKSA9PiBVSVZhbHVlVHlwZSxcbiAgICAgIHVpVG9TZXR0aW5nVmFsdWVDb252ZXJ0ZXI6ICh1aVZhbHVlOiBVSVZhbHVlVHlwZSkgPT4gUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldXG4gICAgfVxuICApOiBUVmFsdWVDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIEludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIGBiaW5kVmFsdWVDb21wb25lbnRgIHRoYXQgaGFuZGxlcyBib3RoIG92ZXJsb2Fkcy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50IGV4dGVuZGluZyBgVmFsdWVDb21wb25lbnRgLlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5IC0gVGhlIGtleSBvZiB0aGUgcGx1Z2luIHNldHRpbmcgdGhhdCB0aGUgY29tcG9uZW50IGlzIGJvdW5kIHRvLlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWVUeXBlIC0gVGhlIGluZmVycmVkIHR5cGUgb2YgdGhlIFVJIHZhbHVlIGJhc2VkIG9uIHRoZSB2YWx1ZSBjb21wb25lbnQncyB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRoYXQgd2lsbCBkaXNwbGF5IGFuZCBpbnRlcmFjdCB3aXRoIHRoZSBzZXR0aW5nIHZhbHVlLlxuICAgKiBAcGFyYW0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IGluIGBQbHVnaW5TZXR0aW5nc2AgdG8gYmluZCB0byB0aGUgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAgICogQHBhcmFtIG9wdGlvbnMuYXV0b1NhdmUgLSBJZiB0cnVlLCBzYXZlcyB0aGUgcGx1Z2luIHNldHRpbmdzIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGNvbXBvbmVudCB2YWx1ZSBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5zZXR0aW5nVG9VSVZhbHVlQ29udmVydGVyIC0gQSBmdW5jdGlvbiB0aGF0IGNvbnZlcnRzIHRoZSBzZXR0aW5nIHZhbHVlIHRvIHRoZSB2YWx1ZSB1c2VkIGJ5IHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBvcHRpb25zLnVpVG9TZXR0aW5nVmFsdWVDb252ZXJ0ZXIgLSBBIGZ1bmN0aW9uIHRoYXQgY29udmVydHMgdGhlIFVJIGNvbXBvbmVudCdzIHZhbHVlIGJhY2sgdG8gdGhlIHNldHRpbmcgdmFsdWUuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBgVFZhbHVlQ29tcG9uZW50YCBpbnN0YW5jZSB0aGF0IHdhcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gICAqL1xuICBwcm90ZWN0ZWQgYmluZFZhbHVlQ29tcG9uZW50PFxuICAgIFRWYWx1ZUNvbXBvbmVudCBleHRlbmRzIFZhbHVlQ29tcG9uZW50PHVua25vd24+LFxuICAgIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3MsXG4gICAgVUlWYWx1ZVR5cGUgPSBUVmFsdWVDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUNvbXBvbmVudDxpbmZlciBQPiA/IFAgOiBuZXZlcixcbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50LFxuICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICB7XG4gICAgICBhdXRvU2F2ZSxcbiAgICAgIHNldHRpbmdUb1VJVmFsdWVDb252ZXJ0ZXIsXG4gICAgICB1aVRvU2V0dGluZ1ZhbHVlQ29udmVydGVyXG4gICAgfToge1xuICAgICAgYXV0b1NhdmU/OiBib29sZWFuLFxuICAgICAgc2V0dGluZ1RvVUlWYWx1ZUNvbnZlcnRlcjogKHByb3BlcnR5VmFsdWU6IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XSkgPT4gVUlWYWx1ZVR5cGUsXG4gICAgICB1aVRvU2V0dGluZ1ZhbHVlQ29udmVydGVyOiAodWlWYWx1ZTogVUlWYWx1ZVR5cGUpID0+IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XVxuICAgIH1cbiAgKTogVFZhbHVlQ29tcG9uZW50IHtcbiAgICBjb25zdCBwbHVnaW5TZXR0aW5ncyA9IHRoaXMucGx1Z2luLnNldHRpbmdzQ29weTtcbiAgICAodmFsdWVDb21wb25lbnQgYXMgVmFsdWVDb21wb25lbnQ8VUlWYWx1ZVR5cGU+KVxuICAgICAgLnNldFZhbHVlKHNldHRpbmdUb1VJVmFsdWVDb252ZXJ0ZXIocGx1Z2luU2V0dGluZ3NbcHJvcGVydHldKSlcbiAgICAgIC5vbkNoYW5nZShhc3luYyAobmV3VmFsdWUpID0+IHtcbiAgICAgICAgcGx1Z2luU2V0dGluZ3NbcHJvcGVydHldID0gdWlUb1NldHRpbmdWYWx1ZUNvbnZlcnRlcihuZXdWYWx1ZSk7XG4gICAgICAgIGlmIChhdXRvU2F2ZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncyhwbHVnaW5TZXR0aW5ncyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHJldHVybiB2YWx1ZUNvbXBvbmVudDtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0Esc0JBQWlDO0FBQ2pDLHdCQUEyQjtBQVozQixNQUFNLG9CQUFvQixXQUFXLGlCQUFpQixNQUFNLE1BQUksUUFBUSxVQUFVLEVBQUUsY0FBYyxVQUFVLEdBQUc7QUFDL0csTUFBTSxZQUFZLFdBQVcsU0FBUyxLQUFLO0FBQUEsRUFDekMsT0FBTyxNQUFJO0FBQUEsRUFDWCxPQUFPLENBQUM7QUFBQSxFQUNSLFlBQVk7QUFDZDtBQXNCTyxNQUFlLDhCQUdaLGlDQUFpQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1sQixZQUE0QixRQUFpQjtBQUNsRCxVQUFNLE9BQU8sS0FBSyxNQUFNO0FBRFM7QUFBQSxFQUVuQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUEwRVUsbUJBS1IsZ0JBQ0EsVUFDQTtBQUFBLElBQ0U7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsR0FLaUI7QUFDakIsVUFBTSxpQkFBaUIsS0FBSyxPQUFPO0FBQ25DLElBQUMsZUFDRSxTQUFTLDBCQUEwQixlQUFlLFFBQVEsQ0FBQyxDQUFDLEVBQzVELFNBQVMsT0FBTyxhQUFhO0FBQzVCLHFCQUFlLFFBQVEsSUFBSSwwQkFBMEIsUUFBUTtBQUM3RCxVQUFJLFVBQVU7QUFDWixjQUFNLEtBQUssT0FBTyxhQUFhLGNBQWM7QUFBQSxNQUMvQztBQUFBLElBQ0YsQ0FBQztBQUNILFdBQU87QUFBQSxFQUNUO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -25,17 +25,42 @@ 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 property in the plugin settings with optional automatic saving and value conversion.
|
|
30
29
|
*
|
|
31
|
-
* @
|
|
32
|
-
* @
|
|
33
|
-
* @
|
|
34
|
-
*
|
|
35
|
-
* @param
|
|
36
|
-
* @param
|
|
37
|
-
* @
|
|
30
|
+
* @typeParam TValueComponent - The type of the value component extending `ValueComponent`.
|
|
31
|
+
* @typeParam Property - The key of the plugin setting that the component is bound to.
|
|
32
|
+
* @typeParam PropertyType - The inferred type of the property based on the value component's type.
|
|
33
|
+
*
|
|
34
|
+
* @param valueComponent - The component that will display and interact with the setting value.
|
|
35
|
+
* @param property - The property key in `PluginSettings` to bind to the component.
|
|
36
|
+
* @param options - Configuration options.
|
|
37
|
+
* @param options.autoSave - If true, saves the plugin settings automatically after the component value changes.
|
|
38
|
+
*
|
|
39
|
+
* @returns The `TValueComponent` instance that was bound to the property.
|
|
40
|
+
*/
|
|
41
|
+
protected bindValueComponent<TValueComponent extends ValueComponent<unknown>, Property extends KeysMatching<PluginSettings, UIValueType>, UIValueType = TValueComponent extends ValueComponent<infer P> ? P : never>(valueComponent: TValueComponent, property: Property, options?: {
|
|
42
|
+
autoSave?: boolean;
|
|
43
|
+
}): TValueComponent;
|
|
44
|
+
/**
|
|
45
|
+
* Binds a value component to a property in the plugin settings with automatic saving and custom value conversion.
|
|
46
|
+
*
|
|
47
|
+
* @typeParam TValueComponent - The type of the value component extending `ValueComponent`.
|
|
48
|
+
* @typeParam Property - The key of the plugin setting that the component is bound to.
|
|
49
|
+
* @typeParam UIValueType - The inferred type of the UI value based on the value component's type.
|
|
50
|
+
*
|
|
51
|
+
* @param valueComponent - The component that will display and interact with the setting value.
|
|
52
|
+
* @param property - The property key in `PluginSettings` to bind to the component.
|
|
53
|
+
* @param options - Configuration options.
|
|
54
|
+
* @param options.autoSave - If true, saves the plugin settings automatically after the component value changes.
|
|
55
|
+
* @param options.settingToUIValueConverter - A function that converts the setting value to the value used by the UI component.
|
|
56
|
+
* @param options.uiToSettingValueConverter - A function that converts the UI component's value back to the setting value.
|
|
57
|
+
*
|
|
58
|
+
* @returns The `TValueComponent` instance that was bound to the property.
|
|
38
59
|
*/
|
|
39
|
-
protected bindValueComponent<TValueComponent extends ValueComponent<unknown>, Property extends
|
|
60
|
+
protected bindValueComponent<TValueComponent extends ValueComponent<unknown>, Property extends keyof PluginSettings, UIValueType = TValueComponent extends ValueComponent<infer P> ? P : never>(valueComponent: TValueComponent, property: Property, options: {
|
|
61
|
+
autoSave?: boolean;
|
|
62
|
+
settingToUIValueConverter: (propertyValue: PluginSettings[Property]) => UIValueType;
|
|
63
|
+
uiToSettingValueConverter: (uiValue: UIValueType) => PluginSettings[Property];
|
|
64
|
+
}): TValueComponent;
|
|
40
65
|
}
|
|
41
66
|
export {};
|
package/package.json
CHANGED