obsidian-dev-utils 3.44.0 → 4.1.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 +8 -0
- package/dist/lib/obsidian/Plugin/ValueComponent.cjs +92 -0
- package/dist/lib/obsidian/Plugin/ValueComponent.d.ts +97 -0
- package/dist/lib/obsidian/Plugin/index.cjs +4 -4
- package/dist/lib/obsidian/Plugin/index.d.ts +1 -1
- package/package.json +1 -1
- package/dist/lib/obsidian/Plugin/UIComponent.cjs +0 -81
- package/dist/lib/obsidian/Plugin/UIComponent.d.ts +0 -88
package/CHANGELOG.md
CHANGED
@@ -0,0 +1,92 @@
|
|
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 patchRequireEsmDefault(){const __require=require;require=Object.assign(id=>{const module=__require(id);return module.__esModule&&module.default?module.default:module},__require)})()
|
7
|
+
|
8
|
+
"use strict";
|
9
|
+
var __defProp = Object.defineProperty;
|
10
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
11
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
12
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
13
|
+
var __export = (target, all) => {
|
14
|
+
for (var name in all)
|
15
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
16
|
+
};
|
17
|
+
var __copyProps = (to, from, except, desc) => {
|
18
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
19
|
+
for (let key of __getOwnPropNames(from))
|
20
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
21
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
22
|
+
}
|
23
|
+
return to;
|
24
|
+
};
|
25
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
26
|
+
var ValueComponent_exports = {};
|
27
|
+
__export(ValueComponent_exports, {
|
28
|
+
bindValueComponent: () => bindValueComponent
|
29
|
+
});
|
30
|
+
module.exports = __toCommonJS(ValueComponent_exports);
|
31
|
+
var import_obsidian = require('obsidian');
|
32
|
+
function bindValueComponent(plugin, valueComponent, property, options) {
|
33
|
+
const DEFAULT_OPTIONS = {
|
34
|
+
autoSave: true,
|
35
|
+
pluginSettingsToComponentValueConverter: (value) => value,
|
36
|
+
componentToPluginSettingsValueConverter: (value) => value
|
37
|
+
};
|
38
|
+
const optionsExt = { ...DEFAULT_OPTIONS, ...options };
|
39
|
+
const pluginExt = plugin;
|
40
|
+
const uiComponentExt = valueComponent;
|
41
|
+
const pluginSettingsFn = () => optionsExt.pluginSettings ?? pluginExt.settingsCopy;
|
42
|
+
uiComponentExt.setValue(optionsExt.pluginSettingsToComponentValueConverter(pluginSettingsFn()[property])).onChange(async (uiValue) => {
|
43
|
+
if (!validateComponent(uiValue)) {
|
44
|
+
return;
|
45
|
+
}
|
46
|
+
const pluginSettings = pluginSettingsFn();
|
47
|
+
pluginSettings[property] = optionsExt.componentToPluginSettingsValueConverter(uiValue);
|
48
|
+
if (optionsExt.autoSave) {
|
49
|
+
await pluginExt.saveSettings(pluginSettings);
|
50
|
+
}
|
51
|
+
await optionsExt.onChanged?.();
|
52
|
+
});
|
53
|
+
const validatorElement = getValidatorElement(valueComponent);
|
54
|
+
if (validatorElement) {
|
55
|
+
validatorElement.addEventListener("focus", () => validateComponent());
|
56
|
+
validatorElement.addEventListener("blur", () => validateComponent());
|
57
|
+
}
|
58
|
+
return valueComponent;
|
59
|
+
function validateComponent(uiValue) {
|
60
|
+
if (!optionsExt.valueValidator) {
|
61
|
+
return true;
|
62
|
+
}
|
63
|
+
uiValue ??= uiComponentExt.getValue();
|
64
|
+
const errorMessage = optionsExt.valueValidator(uiValue);
|
65
|
+
const validatorElement2 = getValidatorElement(valueComponent);
|
66
|
+
if (validatorElement2) {
|
67
|
+
validatorElement2.setCustomValidity(errorMessage ?? "");
|
68
|
+
validatorElement2.reportValidity();
|
69
|
+
}
|
70
|
+
return !errorMessage;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
function getValidatorElement(valueComponent) {
|
74
|
+
if (valueComponent instanceof import_obsidian.DropdownComponent) {
|
75
|
+
return valueComponent.selectEl;
|
76
|
+
}
|
77
|
+
if (valueComponent instanceof import_obsidian.SliderComponent) {
|
78
|
+
return valueComponent.sliderEl;
|
79
|
+
}
|
80
|
+
if (valueComponent instanceof import_obsidian.TextAreaComponent) {
|
81
|
+
return valueComponent.inputEl;
|
82
|
+
}
|
83
|
+
if (valueComponent instanceof import_obsidian.TextComponent) {
|
84
|
+
return valueComponent.inputEl;
|
85
|
+
}
|
86
|
+
return null;
|
87
|
+
}
|
88
|
+
// Annotate the CommonJS export names for ESM import in node:
|
89
|
+
0 && (module.exports = {
|
90
|
+
bindValueComponent
|
91
|
+
});
|
92
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9WYWx1ZUNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtcbiAgRHJvcGRvd25Db21wb25lbnQsXG4gIFNsaWRlckNvbXBvbmVudCxcbiAgVGV4dEFyZWFDb21wb25lbnQsXG4gIFRleHRDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEtleXNNYXRjaGluZyB9IGZyb20gJy4uLy4uL0B0eXBlcy50cyc7XG5pbXBvcnQgdHlwZSB7IE1heWJlUHJvbWlzZSB9IGZyb20gJy4uLy4uL0FzeW5jLnRzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luQmFzZSB9IGZyb20gJy4vUGx1Z2luQmFzZS50cyc7XG5cbi8qKlxuICogQSBWYWx1ZUNvbXBvbmVudCB0aGF0IGNhbiBiZSBib3VuZCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlQ29tcG9uZW50PFVJVmFsdWU+IHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgZ2V0VmFsdWUoKTogVUlWYWx1ZTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgc2V0VmFsdWUodmFsdWU6IFVJVmFsdWUpOiB0aGlzO1xuXG4gIC8qKlxuICAgKiBTZXRzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQgY2hhbmdlcy5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZShjYWxsYmFjazogKG5ld1ZhbHVlOiBVSVZhbHVlKSA9PiBQcm9taXNlPHZvaWQ+KTogdGhpcztcbn1cblxuLyoqXG4gKiBBIEhUTUwgZWxlbWVudCB0aGF0IGNhbiBiZSB2YWxpZGF0ZWQuXG4gKi9cbmludGVyZmFjZSBWYWxpZGF0b3JFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAvKipcbiAgICogU2V0cyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIG9uIHRoZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgbWVzc2FnZSB0byBzZXQgb24gdGhlIGVsZW1lbnQuXG4gICAqL1xuICBzZXRDdXN0b21WYWxpZGl0eShlcnJvcjogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogUmVwb3J0cyB0aGUgdmFsaWRpdHkgb2YgdGhlIGVsZW1lbnQuXG4gICAqL1xuICByZXBvcnRWYWxpZGl0eSgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGJpbmRpbmcgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAqL1xuaW50ZXJmYWNlIEJpbmRWYWx1ZUNvbXBvbmVudE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWU+IHtcbiAgLyoqXG4gICAqIElmIHRydWUsIHNhdmVzIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXV0b21hdGljYWxseSBhZnRlciB0aGUgY29tcG9uZW50IHZhbHVlIGNoYW5nZXMuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgYXV0b1NhdmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdCB0byBiaW5kIHRoZSBjb21wb25lbnQgdG8uIERlZmF1bHQgaXMgdGhlIHBsdWdpbidzIGN1cnJlbnQgc2V0dGluZ3MuXG4gICAqL1xuICBwbHVnaW5TZXR0aW5ncz86IFBsdWdpblNldHRpbmdzO1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIFVJIHZhbHVlIGJlZm9yZSBzZXR0aW5nIGl0IG9uIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqIEBwYXJhbSB1aVZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIEFuIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHZhbHVlIGlzIGludmFsaWQsIG9yIGBudWxsYCBpZiBpdCBpcyB2YWxpZC5cbiAgICovXG4gIHZhbHVlVmFsaWRhdG9yPzogKHVpVmFsdWU6IFVJVmFsdWUpID0+IHN0cmluZyB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudCBjaGFuZ2VzLlxuICAgKi9cbiAgb25DaGFuZ2VkPzogKCkgPT4gTWF5YmVQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIEV4dGVuZGVkIG9wdGlvbnMgZm9yIGJpbmRpbmcgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAqL1xuaW50ZXJmYWNlIEJpbmRWYWx1ZUNvbXBvbmVudE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBQbHVnaW5TZXR0aW5ncz4gZXh0ZW5kcyBCaW5kVmFsdWVDb21wb25lbnRPcHRpb25zPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlPiB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgcGx1Z2luIHNldHRpbmdzIHZhbHVlIHRvIHRoZSB2YWx1ZSB1c2VkIGJ5IHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBwbHVnaW5TZXR0aW5nc1ZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBVSSBjb21wb25lbnQuXG4gICAqL1xuICBwbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXI6IChwbHVnaW5TZXR0aW5nc1ZhbHVlOiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV0pID0+IFVJVmFsdWU7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBVSSBjb21wb25lbnQncyB2YWx1ZSBiYWNrIHRvIHRoZSBwbHVnaW4gc2V0dGluZ3MgdmFsdWUuXG4gICAqIEBwYXJhbSB1aVZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSB0byBzZXQgb24gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIGNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcjogKHVpVmFsdWU6IFVJVmFsdWUpID0+IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XTtcbn1cblxuLyoqXG4gKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3Mgd2l0aCBvcHRpb25hbCBhdXRvbWF0aWMgc2F2aW5nIGFuZCB2YWx1ZSBjb252ZXJzaW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IGV4dGVuZHMgYFBsdWdpbkJhc2VgLlxuICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50IGV4dGVuZGluZyBgVmFsdWVDb21wb25lbnRgLlxuICogQHR5cGVQYXJhbSBQcm9wZXJ0eSAtIFRoZSBrZXkgb2YgdGhlIHBsdWdpbiBzZXR0aW5nIHRoYXQgdGhlIGNvbXBvbmVudCBpcyBib3VuZCB0by5cbiAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSBpbmZlcnJlZCB0eXBlIGJhc2VkIG9uIHRoZSBVSSBjb21wb25lbnQncyB0eXBlLlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSBpbmZlcnJlZCB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luLlxuICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHdpbGwgZGlzcGxheSBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgc2V0dGluZyB2YWx1ZS5cbiAqIEBwYXJhbSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgaW4gYFBsdWdpblNldHRpbmdzYCB0byBiaW5kIHRvIHRoZSBVSSBjb21wb25lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBgVmFsdWVDb21wb25lbnRgIGluc3RhbmNlIHRoYXQgd2FzIGJvdW5kIHRvIHRoZSBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJpbmRWYWx1ZUNvbXBvbmVudDxcbiAgUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxvYmplY3Q+LFxuICBUVmFsdWVDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUNvbXBvbmVudDx1bmtub3duPixcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnNcbiAgUHJvcGVydHkgZXh0ZW5kcyBLZXlzTWF0Y2hpbmc8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWU+LFxuICBVSVZhbHVlID0gVFZhbHVlQ29tcG9uZW50IGV4dGVuZHMgVmFsdWVDb21wb25lbnQ8aW5mZXIgUD4gPyBQIDogbmV2ZXIsXG4gIFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0ID0gUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxpbmZlciBQPiA/IFAgOiBuZXZlclxuPihcbiAgcGx1Z2luOiBQbHVnaW4sXG4gIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQsXG4gIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgb3B0aW9ucz86IEJpbmRWYWx1ZUNvbXBvbmVudE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWU+XG4pOiBUVmFsdWVDb21wb25lbnQ7XG5cbi8qKlxuICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzIHdpdGggb3B0aW9uYWwgYXV0b21hdGljIHNhdmluZyBhbmQgdmFsdWUgY29udmVyc2lvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCBleHRlbmRzIGBQbHVnaW5CYXNlYC5cbiAqIEB0eXBlUGFyYW0gVFZhbHVlQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudCBleHRlbmRpbmcgYFZhbHVlQ29tcG9uZW50YC5cbiAqIEB0eXBlUGFyYW0gUHJvcGVydHkgLSBUaGUga2V5IG9mIHRoZSBwbHVnaW4gc2V0dGluZyB0aGF0IHRoZSBjb21wb25lbnQgaXMgYm91bmQgdG8uXG4gKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgaW5mZXJyZWQgdHlwZSBiYXNlZCBvbiB0aGUgdmFsdWUgY29tcG9uZW50J3MgdHlwZS5cbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgaW5mZXJyZWQgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbi5cbiAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdGhhdCB3aWxsIGRpc3BsYXkgYW5kIGludGVyYWN0IHdpdGggdGhlIHNldHRpbmcgdmFsdWUuXG4gKiBAcGFyYW0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IGluIGBQbHVnaW5TZXR0aW5nc2AgdG8gYmluZCB0byB0aGUgVUkgY29tcG9uZW50LlxuICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgYFZhbHVlQ29tcG9uZW50YCBpbnN0YW5jZSB0aGF0IHdhcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kVmFsdWVDb21wb25lbnQ8XG4gIFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8b2JqZWN0PixcbiAgVFZhbHVlQ29tcG9uZW50IGV4dGVuZHMgVmFsdWVDb21wb25lbnQ8dW5rbm93bj4sXG4gIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3MsXG4gIFVJVmFsdWUgPSBUVmFsdWVDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUNvbXBvbmVudDxpbmZlciBQPiA/IFAgOiBuZXZlcixcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QgPSBQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPGluZmVyIFA+ID8gUCA6IG5ldmVyXG4+KFxuICBwbHVnaW46IFBsdWdpbixcbiAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCxcbiAgcHJvcGVydHk6IFByb3BlcnR5LFxuICBvcHRpb25zOiBCaW5kVmFsdWVDb21wb25lbnRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5PlxuKTogVFZhbHVlQ29tcG9uZW50O1xuXG4vKipcbiAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncyB3aXRoIG9wdGlvbmFsIGF1dG9tYXRpYyBzYXZpbmcgYW5kIHZhbHVlIGNvbnZlcnNpb24uXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgZXh0ZW5kcyBgUGx1Z2luQmFzZWAuXG4gKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQgZXh0ZW5kaW5nIGBWYWx1ZUNvbXBvbmVudGAuXG4gKiBAdHlwZVBhcmFtIFByb3BlcnR5IC0gVGhlIGtleSBvZiB0aGUgcGx1Z2luIHNldHRpbmcgdGhhdCB0aGUgY29tcG9uZW50IGlzIGJvdW5kIHRvLlxuICogQHR5cGVQYXJhbSBVSVZhbHVlIC0gVGhlIGluZmVycmVkIHR5cGUgYmFzZWQgb24gdGhlIHZhbHVlIGNvbXBvbmVudCdzIHR5cGUuXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIGluZmVycmVkIHR5cGUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4uXG4gKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRoYXQgd2lsbCBkaXNwbGF5IGFuZCBpbnRlcmFjdCB3aXRoIHRoZSBzZXR0aW5nIHZhbHVlLlxuICogQHBhcmFtIHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IGtleSBpbiBgUGx1Z2luU2V0dGluZ3NgIHRvIGJpbmQgdG8gdGhlIFVJIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIGBWYWx1ZUNvbXBvbmVudGAgaW5zdGFuY2UgdGhhdCB3YXMgYm91bmQgdG8gdGhlIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYmluZFZhbHVlQ29tcG9uZW50PFxuICBQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPG9iamVjdD4sXG4gIFRWYWx1ZUNvbXBvbmVudCBleHRlbmRzIFZhbHVlQ29tcG9uZW50PHVua25vd24+LFxuICBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFBsdWdpblNldHRpbmdzLFxuICBVSVZhbHVlID0gVFZhbHVlQ29tcG9uZW50IGV4dGVuZHMgVmFsdWVDb21wb25lbnQ8aW5mZXIgUD4gPyBQIDogbmV2ZXIsXG4gIFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0ID0gUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxpbmZlciBQPiA/IFAgOiBuZXZlclxuPihcbiAgcGx1Z2luOiBQbHVnaW4sXG4gIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQsXG4gIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgb3B0aW9ucz86IEJpbmRWYWx1ZUNvbXBvbmVudE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWU+XG4pOiBUVmFsdWVDb21wb25lbnQge1xuICB0eXBlIFByb3BlcnR5VHlwZSA9IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XTtcbiAgY29uc3QgREVGQVVMVF9PUFRJT05TOiBCaW5kVmFsdWVDb21wb25lbnRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5PiA9IHtcbiAgICBhdXRvU2F2ZTogdHJ1ZSxcbiAgICBwbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXI6ICh2YWx1ZSk6IFVJVmFsdWUgPT4gdmFsdWUgYXMgVUlWYWx1ZSxcbiAgICBjb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXI6ICh2YWx1ZSk6IFByb3BlcnR5VHlwZSA9PiB2YWx1ZSBhcyBQcm9wZXJ0eVR5cGVcbiAgfTtcblxuICBjb25zdCBvcHRpb25zRXh0OiBCaW5kVmFsdWVDb21wb25lbnRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5PiA9IHsgLi4uREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG4gIGNvbnN0IHBsdWdpbkV4dCA9IHBsdWdpbiBhcyB1bmtub3duIGFzIFBsdWdpbkJhc2U8UGx1Z2luU2V0dGluZ3M+O1xuICBjb25zdCB1aUNvbXBvbmVudEV4dCA9IHZhbHVlQ29tcG9uZW50IGFzIFZhbHVlQ29tcG9uZW50PFVJVmFsdWU+O1xuICBjb25zdCBwbHVnaW5TZXR0aW5nc0ZuID0gKCk6IFBsdWdpblNldHRpbmdzID0+IG9wdGlvbnNFeHQucGx1Z2luU2V0dGluZ3MgPz8gcGx1Z2luRXh0LnNldHRpbmdzQ29weTtcbiAgdWlDb21wb25lbnRFeHRcbiAgICAuc2V0VmFsdWUob3B0aW9uc0V4dC5wbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXIocGx1Z2luU2V0dGluZ3NGbigpW3Byb3BlcnR5XSkpXG4gICAgLm9uQ2hhbmdlKGFzeW5jICh1aVZhbHVlKSA9PiB7XG4gICAgICBpZiAoIXZhbGlkYXRlQ29tcG9uZW50KHVpVmFsdWUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsdWdpblNldHRpbmdzID0gcGx1Z2luU2V0dGluZ3NGbigpO1xuICAgICAgcGx1Z2luU2V0dGluZ3NbcHJvcGVydHldID0gb3B0aW9uc0V4dC5jb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXIodWlWYWx1ZSk7XG4gICAgICBpZiAob3B0aW9uc0V4dC5hdXRvU2F2ZSkge1xuICAgICAgICBhd2FpdCBwbHVnaW5FeHQuc2F2ZVNldHRpbmdzKHBsdWdpblNldHRpbmdzKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgb3B0aW9uc0V4dC5vbkNoYW5nZWQ/LigpO1xuICAgIH0pO1xuXG4gIGNvbnN0IHZhbGlkYXRvckVsZW1lbnQgPSBnZXRWYWxpZGF0b3JFbGVtZW50KHZhbHVlQ29tcG9uZW50KTtcbiAgaWYgKHZhbGlkYXRvckVsZW1lbnQpIHtcbiAgICB2YWxpZGF0b3JFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4gdmFsaWRhdGVDb21wb25lbnQoKSk7XG4gICAgdmFsaWRhdG9yRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4gdmFsaWRhdGVDb21wb25lbnQoKSk7XG4gIH1cblxuICByZXR1cm4gdmFsdWVDb21wb25lbnQ7XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVDb21wb25lbnQodWlWYWx1ZT86IFVJVmFsdWUpOiBib29sZWFuIHtcbiAgICBpZiAoIW9wdGlvbnNFeHQudmFsdWVWYWxpZGF0b3IpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB1aVZhbHVlID8/PSB1aUNvbXBvbmVudEV4dC5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IG9wdGlvbnNFeHQudmFsdWVWYWxpZGF0b3IodWlWYWx1ZSk7XG4gICAgY29uc3QgdmFsaWRhdG9yRWxlbWVudCA9IGdldFZhbGlkYXRvckVsZW1lbnQodmFsdWVDb21wb25lbnQpO1xuICAgIGlmICh2YWxpZGF0b3JFbGVtZW50KSB7XG4gICAgICB2YWxpZGF0b3JFbGVtZW50LnNldEN1c3RvbVZhbGlkaXR5KGVycm9yTWVzc2FnZSA/PyAnJyk7XG4gICAgICB2YWxpZGF0b3JFbGVtZW50LnJlcG9ydFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICFlcnJvck1lc3NhZ2U7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB2YWxpZGF0b3IgZWxlbWVudCBmcm9tIGEgdmFsdWUgY29tcG9uZW50IGlmIGl0IGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGdldCB0aGUgdmFsaWRhdG9yIGVsZW1lbnQgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZGF0b3IgZWxlbWVudCBpZiBpdCBleGlzdHMsIG9yIGBudWxsYCBpZiBpdCBkb2VzIG5vdC5cbiAqL1xuZnVuY3Rpb24gZ2V0VmFsaWRhdG9yRWxlbWVudCh2YWx1ZUNvbXBvbmVudDogVmFsdWVDb21wb25lbnQ8dW5rbm93bj4pOiBWYWxpZGF0b3JFbGVtZW50IHwgbnVsbCB7XG4gIGlmICh2YWx1ZUNvbXBvbmVudCBpbnN0YW5jZW9mIERyb3Bkb3duQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIHZhbHVlQ29tcG9uZW50LnNlbGVjdEVsO1xuICB9XG5cbiAgaWYgKHZhbHVlQ29tcG9uZW50IGluc3RhbmNlb2YgU2xpZGVyQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIHZhbHVlQ29tcG9uZW50LnNsaWRlckVsO1xuICB9XG5cbiAgaWYgKHZhbHVlQ29tcG9uZW50IGluc3RhbmNlb2YgVGV4dEFyZWFDb21wb25lbnQpIHtcbiAgICByZXR1cm4gdmFsdWVDb21wb25lbnQuaW5wdXRFbDtcbiAgfVxuXG4gIGlmICh2YWx1ZUNvbXBvbmVudCBpbnN0YW5jZW9mIFRleHRDb21wb25lbnQpIHtcbiAgICByZXR1cm4gdmFsdWVDb21wb25lbnQuaW5wdXRFbDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxzQkFLTztBQW9LQSxTQUFTLG1CQU9kLFFBQ0EsZ0JBQ0EsVUFDQSxTQUNpQjtBQUVqQixRQUFNLGtCQUF3RjtBQUFBLElBQzVGLFVBQVU7QUFBQSxJQUNWLHlDQUF5QyxDQUFDLFVBQW1CO0FBQUEsSUFDN0QseUNBQXlDLENBQUMsVUFBd0I7QUFBQSxFQUNwRTtBQUVBLFFBQU0sYUFBbUYsRUFBRSxHQUFHLGlCQUFpQixHQUFHLFFBQVE7QUFDMUgsUUFBTSxZQUFZO0FBQ2xCLFFBQU0saUJBQWlCO0FBQ3ZCLFFBQU0sbUJBQW1CLE1BQXNCLFdBQVcsa0JBQWtCLFVBQVU7QUFDdEYsaUJBQ0csU0FBUyxXQUFXLHdDQUF3QyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUN6RixTQUFTLE9BQU8sWUFBWTtBQUMzQixRQUFJLENBQUMsa0JBQWtCLE9BQU8sR0FBRztBQUMvQjtBQUFBLElBQ0Y7QUFDQSxVQUFNLGlCQUFpQixpQkFBaUI7QUFDeEMsbUJBQWUsUUFBUSxJQUFJLFdBQVcsd0NBQXdDLE9BQU87QUFDckYsUUFBSSxXQUFXLFVBQVU7QUFDdkIsWUFBTSxVQUFVLGFBQWEsY0FBYztBQUFBLElBQzdDO0FBRUEsVUFBTSxXQUFXLFlBQVk7QUFBQSxFQUMvQixDQUFDO0FBRUgsUUFBTSxtQkFBbUIsb0JBQW9CLGNBQWM7QUFDM0QsTUFBSSxrQkFBa0I7QUFDcEIscUJBQWlCLGlCQUFpQixTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFDcEUscUJBQWlCLGlCQUFpQixRQUFRLE1BQU0sa0JBQWtCLENBQUM7QUFBQSxFQUNyRTtBQUVBLFNBQU87QUFFUCxXQUFTLGtCQUFrQixTQUE0QjtBQUNyRCxRQUFJLENBQUMsV0FBVyxnQkFBZ0I7QUFDOUIsYUFBTztBQUFBLElBQ1Q7QUFDQSxnQkFBWSxlQUFlLFNBQVM7QUFDcEMsVUFBTSxlQUFlLFdBQVcsZUFBZSxPQUFPO0FBQ3RELFVBQU1BLG9CQUFtQixvQkFBb0IsY0FBYztBQUMzRCxRQUFJQSxtQkFBa0I7QUFDcEIsTUFBQUEsa0JBQWlCLGtCQUFrQixnQkFBZ0IsRUFBRTtBQUNyRCxNQUFBQSxrQkFBaUIsZUFBZTtBQUFBLElBQ2xDO0FBRUEsV0FBTyxDQUFDO0FBQUEsRUFDVjtBQUNGO0FBUUEsU0FBUyxvQkFBb0IsZ0JBQWtFO0FBQzdGLE1BQUksMEJBQTBCLG1DQUFtQjtBQUMvQyxXQUFPLGVBQWU7QUFBQSxFQUN4QjtBQUVBLE1BQUksMEJBQTBCLGlDQUFpQjtBQUM3QyxXQUFPLGVBQWU7QUFBQSxFQUN4QjtBQUVBLE1BQUksMEJBQTBCLG1DQUFtQjtBQUMvQyxXQUFPLGVBQWU7QUFBQSxFQUN4QjtBQUVBLE1BQUksMEJBQTBCLCtCQUFlO0FBQzNDLFdBQU8sZUFBZTtBQUFBLEVBQ3hCO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogWyJ2YWxpZGF0b3JFbGVtZW50Il0KfQo=
|
@@ -0,0 +1,97 @@
|
|
1
|
+
import type { KeysMatching } from '../../@types.ts';
|
2
|
+
import type { MaybePromise } from '../../Async.ts';
|
3
|
+
import type { PluginBase } from './PluginBase.ts';
|
4
|
+
/**
|
5
|
+
* A ValueComponent that can be bound to a plugin setting.
|
6
|
+
*/
|
7
|
+
export interface ValueComponent<UIValue> {
|
8
|
+
/**
|
9
|
+
* Gets the value of the component.
|
10
|
+
*
|
11
|
+
* @returns The value of the component.
|
12
|
+
*/
|
13
|
+
getValue(): UIValue;
|
14
|
+
/**
|
15
|
+
* Sets the value of the component.
|
16
|
+
* @param value - The value to set on the component.
|
17
|
+
*/
|
18
|
+
setValue(value: UIValue): this;
|
19
|
+
/**
|
20
|
+
* Sets a callback function to be called when the value of the component changes.
|
21
|
+
* @param callback - A callback function that is called when the value of the component changes.
|
22
|
+
*/
|
23
|
+
onChange(callback: (newValue: UIValue) => Promise<void>): this;
|
24
|
+
}
|
25
|
+
/**
|
26
|
+
* Options for binding a value component to a plugin setting.
|
27
|
+
*/
|
28
|
+
interface BindValueComponentOptions<PluginSettings, UIValue> {
|
29
|
+
/**
|
30
|
+
* If true, saves the plugin settings automatically after the component value changes. Default is `true`.
|
31
|
+
*/
|
32
|
+
autoSave?: boolean;
|
33
|
+
/**
|
34
|
+
* The plugin settings object to bind the component to. Default is the plugin's current settings.
|
35
|
+
*/
|
36
|
+
pluginSettings?: PluginSettings;
|
37
|
+
/**
|
38
|
+
* Validates the UI value before setting it on the plugin settings.
|
39
|
+
* @param uiValue - The value of the UI component.
|
40
|
+
* @returns An error message if the value is invalid, or `null` if it is valid.
|
41
|
+
*/
|
42
|
+
valueValidator?: (uiValue: UIValue) => string | null;
|
43
|
+
/**
|
44
|
+
* A callback function that is called when the value of the component changes.
|
45
|
+
*/
|
46
|
+
onChanged?: () => MaybePromise<void>;
|
47
|
+
}
|
48
|
+
/**
|
49
|
+
* Extended options for binding a value component to a plugin setting.
|
50
|
+
*/
|
51
|
+
interface BindValueComponentOptionsExtended<PluginSettings, UIValue, Property extends keyof PluginSettings> extends BindValueComponentOptions<PluginSettings, UIValue> {
|
52
|
+
/**
|
53
|
+
* Converts the plugin settings value to the value used by the UI component.
|
54
|
+
* @param pluginSettingsValue - The value of the property in the plugin settings.
|
55
|
+
* @returns The value to set on the UI component.
|
56
|
+
*/
|
57
|
+
pluginSettingsToComponentValueConverter: (pluginSettingsValue: PluginSettings[Property]) => UIValue;
|
58
|
+
/**
|
59
|
+
* Converts the UI component's value back to the plugin settings value.
|
60
|
+
* @param uiValue - The value of the UI component.
|
61
|
+
* @returns The value to set on the plugin settings.
|
62
|
+
*/
|
63
|
+
componentToPluginSettingsValueConverter: (uiValue: UIValue) => PluginSettings[Property];
|
64
|
+
}
|
65
|
+
/**
|
66
|
+
* Binds a value component to a property in the plugin settings with optional automatic saving and value conversion.
|
67
|
+
*
|
68
|
+
* @typeParam Plugin - The type of the plugin that extends `PluginBase`.
|
69
|
+
* @typeParam TValueComponent - The type of the value component extending `ValueComponent`.
|
70
|
+
* @typeParam Property - The key of the plugin setting that the component is bound to.
|
71
|
+
* @typeParam UIValue - The inferred type based on the UI component's type.
|
72
|
+
* @typeParam PluginSettings - The inferred type of the plugin settings object.
|
73
|
+
*
|
74
|
+
* @param plugin - The plugin.
|
75
|
+
* @param valueComponent - The component that will display and interact with the setting value.
|
76
|
+
* @param property - The property key in `PluginSettings` to bind to the UI component.
|
77
|
+
* @param options - Configuration options.
|
78
|
+
* @returns The `ValueComponent` instance that was bound to the property.
|
79
|
+
*/
|
80
|
+
export declare function bindValueComponent<Plugin extends PluginBase<object>, TValueComponent extends ValueComponent<unknown>, Property extends KeysMatching<PluginSettings, UIValue>, UIValue = TValueComponent extends ValueComponent<infer P> ? P : never, PluginSettings extends object = Plugin extends PluginBase<infer P> ? P : never>(plugin: Plugin, valueComponent: TValueComponent, property: Property, options?: BindValueComponentOptions<PluginSettings, UIValue>): TValueComponent;
|
81
|
+
/**
|
82
|
+
* Binds a value component to a property in the plugin settings with optional automatic saving and value conversion.
|
83
|
+
*
|
84
|
+
* @typeParam Plugin - The type of the plugin that extends `PluginBase`.
|
85
|
+
* @typeParam TValueComponent - The type of the value component extending `ValueComponent`.
|
86
|
+
* @typeParam Property - The key of the plugin setting that the component is bound to.
|
87
|
+
* @typeParam UIValue - The inferred type based on the value component's type.
|
88
|
+
* @typeParam PluginSettings - The inferred type of the plugin settings object.
|
89
|
+
*
|
90
|
+
* @param plugin - The plugin.
|
91
|
+
* @param valueComponent - The component that will display and interact with the setting value.
|
92
|
+
* @param property - The property key in `PluginSettings` to bind to the UI component.
|
93
|
+
* @param options - Configuration options.
|
94
|
+
* @returns The `ValueComponent` instance that was bound to the property.
|
95
|
+
*/
|
96
|
+
export declare function bindValueComponent<Plugin extends PluginBase<object>, TValueComponent extends ValueComponent<unknown>, Property extends keyof PluginSettings, UIValue = TValueComponent extends ValueComponent<infer P> ? P : never, PluginSettings extends object = Plugin extends PluginBase<infer P> ? P : never>(plugin: Plugin, valueComponent: TValueComponent, property: Property, options: BindValueComponentOptionsExtended<PluginSettings, UIValue, Property>): TValueComponent;
|
97
|
+
export {};
|
@@ -40,7 +40,7 @@ __export(Plugin_exports, {
|
|
40
40
|
PluginBase: () => PluginBase,
|
41
41
|
PluginSettings: () => PluginSettings,
|
42
42
|
PluginSettingsTabBase: () => PluginSettingsTabBase,
|
43
|
-
|
43
|
+
ValueComponent: () => ValueComponent
|
44
44
|
});
|
45
45
|
module.exports = __toCommonJS(Plugin_exports);
|
46
46
|
var ObsidianPluginRepoPaths = __toESM(require('./ObsidianPluginRepoPaths.cjs'), 1);
|
@@ -48,7 +48,7 @@ var Plugin = __toESM(require('./Plugin.cjs'), 1);
|
|
48
48
|
var PluginBase = __toESM(require('./PluginBase.cjs'), 1);
|
49
49
|
var PluginSettings = __toESM(require('./PluginSettings.cjs'), 1);
|
50
50
|
var PluginSettingsTabBase = __toESM(require('./PluginSettingsTabBase.cjs'), 1);
|
51
|
-
var
|
51
|
+
var ValueComponent = __toESM(require('./ValueComponent.cjs'), 1);
|
52
52
|
// Annotate the CommonJS export names for ESM import in node:
|
53
53
|
0 && (module.exports = {
|
54
54
|
ObsidianPluginRepoPaths,
|
@@ -56,6 +56,6 @@ var UIComponent = __toESM(require('./UIComponent.cjs'), 1);
|
|
56
56
|
PluginBase,
|
57
57
|
PluginSettings,
|
58
58
|
PluginSettingsTabBase,
|
59
|
-
|
59
|
+
ValueComponent
|
60
60
|
});
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
61
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIGZyb20gJy4vT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMudHMnO1xuZXhwb3J0ICogYXMgUGx1Z2luIGZyb20gJy4vUGx1Z2luLnRzJztcbmV4cG9ydCAqIGFzIFBsdWdpbkJhc2UgZnJvbSAnLi9QbHVnaW5CYXNlLnRzJztcbmV4cG9ydCAqIGFzIFBsdWdpblNldHRpbmdzIGZyb20gJy4vUGx1Z2luU2V0dGluZ3MudHMnO1xuZXhwb3J0ICogYXMgUGx1Z2luU2V0dGluZ3NUYWJCYXNlIGZyb20gJy4vUGx1Z2luU2V0dGluZ3NUYWJCYXNlLnRzJztcbmV4cG9ydCAqIGFzIFZhbHVlQ29tcG9uZW50IGZyb20gJy4vVmFsdWVDb21wb25lbnQudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBLDhCQUF5QztBQUN6QyxhQUF3QjtBQUN4QixpQkFBNEI7QUFDNUIscUJBQWdDO0FBQ2hDLDRCQUF1QztBQUN2QyxxQkFBZ0M7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
@@ -3,4 +3,4 @@ export * as Plugin from './Plugin.ts';
|
|
3
3
|
export * as PluginBase from './PluginBase.ts';
|
4
4
|
export * as PluginSettings from './PluginSettings.ts';
|
5
5
|
export * as PluginSettingsTabBase from './PluginSettingsTabBase.ts';
|
6
|
-
export * as
|
6
|
+
export * as ValueComponent from './ValueComponent.ts';
|
package/package.json
CHANGED
@@ -1,81 +0,0 @@
|
|
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 patchRequireEsmDefault(){const __require=require;require=Object.assign(id=>{const module=__require(id);return module.__esModule&&module.default?module.default:module},__require)})()
|
7
|
-
|
8
|
-
"use strict";
|
9
|
-
var __defProp = Object.defineProperty;
|
10
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
11
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
12
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
13
|
-
var __export = (target, all) => {
|
14
|
-
for (var name in all)
|
15
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
16
|
-
};
|
17
|
-
var __copyProps = (to, from, except, desc) => {
|
18
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
19
|
-
for (let key of __getOwnPropNames(from))
|
20
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
21
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
22
|
-
}
|
23
|
-
return to;
|
24
|
-
};
|
25
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
26
|
-
var UIComponent_exports = {};
|
27
|
-
__export(UIComponent_exports, {
|
28
|
-
bindUiComponent: () => bindUiComponent
|
29
|
-
});
|
30
|
-
module.exports = __toCommonJS(UIComponent_exports);
|
31
|
-
var import_obsidian = require('obsidian');
|
32
|
-
function bindUiComponent(plugin, uiComponent, property, options) {
|
33
|
-
const DEFAULT_OPTIONS = {
|
34
|
-
autoSave: true,
|
35
|
-
settingToUIValueConverter: (value) => value,
|
36
|
-
uiToSettingValueConverter: (value) => value
|
37
|
-
};
|
38
|
-
const optionsExt = { ...DEFAULT_OPTIONS, ...options };
|
39
|
-
const pluginExt = plugin;
|
40
|
-
const uiComponentExt = uiComponent;
|
41
|
-
const pluginSettingsFn = () => optionsExt.pluginSettings ?? pluginExt.settingsCopy;
|
42
|
-
uiComponentExt.setValue(optionsExt.settingToUIValueConverter(pluginSettingsFn()[property])).onChange(async (uiValue) => {
|
43
|
-
if (optionsExt.uiValueValidator) {
|
44
|
-
const errorMessage = optionsExt.uiValueValidator(uiValue);
|
45
|
-
const validatorElement = getValidatorElement(uiComponent);
|
46
|
-
if (validatorElement) {
|
47
|
-
validatorElement.setCustomValidity(errorMessage ?? "");
|
48
|
-
validatorElement.reportValidity();
|
49
|
-
}
|
50
|
-
if (errorMessage) {
|
51
|
-
return;
|
52
|
-
}
|
53
|
-
}
|
54
|
-
const pluginSettings = pluginSettingsFn();
|
55
|
-
pluginSettings[property] = optionsExt.uiToSettingValueConverter(uiValue);
|
56
|
-
if (optionsExt.autoSave) {
|
57
|
-
await pluginExt.saveSettings(pluginSettings);
|
58
|
-
}
|
59
|
-
});
|
60
|
-
return uiComponent;
|
61
|
-
}
|
62
|
-
function getValidatorElement(uiComponent) {
|
63
|
-
if (uiComponent instanceof import_obsidian.DropdownComponent) {
|
64
|
-
return uiComponent.selectEl;
|
65
|
-
}
|
66
|
-
if (uiComponent instanceof import_obsidian.SliderComponent) {
|
67
|
-
return uiComponent.sliderEl;
|
68
|
-
}
|
69
|
-
if (uiComponent instanceof import_obsidian.TextAreaComponent) {
|
70
|
-
return uiComponent.inputEl;
|
71
|
-
}
|
72
|
-
if (uiComponent instanceof import_obsidian.TextComponent) {
|
73
|
-
return uiComponent.inputEl;
|
74
|
-
}
|
75
|
-
return null;
|
76
|
-
}
|
77
|
-
// Annotate the CommonJS export names for ESM import in node:
|
78
|
-
0 && (module.exports = {
|
79
|
-
bindUiComponent
|
80
|
-
});
|
81
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9VSUNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtcbiAgRHJvcGRvd25Db21wb25lbnQsXG4gIFNsaWRlckNvbXBvbmVudCxcbiAgVGV4dEFyZWFDb21wb25lbnQsXG4gIFRleHRDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEtleXNNYXRjaGluZyB9IGZyb20gJy4uLy4uL0B0eXBlcy50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbkJhc2UgfSBmcm9tICcuL1BsdWdpbkJhc2UudHMnO1xuXG4vKipcbiAqIEEgVUkgY29tcG9uZW50IHRoYXQgY2FuIGJlIGJvdW5kIHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVUlDb21wb25lbnQ8VUlWYWx1ZT4ge1xuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgc2V0VmFsdWUodmFsdWU6IFVJVmFsdWUpOiB0aGlzO1xuXG4gIC8qKlxuICAgKiBTZXRzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQgY2hhbmdlcy5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZShjYWxsYmFjazogKG5ld1ZhbHVlOiBVSVZhbHVlKSA9PiBQcm9taXNlPHZvaWQ+KTogdGhpcztcbn1cblxuLyoqXG4gKiBBIFVJIGNvbXBvbmVudCB0aGF0IGNhbiBiZSB2YWxpZGF0ZWQuXG4gKi9cbmludGVyZmFjZSBWYWxpZGF0b3JFbGVtZW50IHtcbiAgLyoqXG4gICAqIFNldHMgYSBjdXN0b20gZXJyb3IgbWVzc2FnZSBvbiB0aGUgZWxlbWVudC5cbiAgICogQHBhcmFtIGVycm9yIC0gVGhlIGVycm9yIG1lc3NhZ2UgdG8gc2V0IG9uIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgc2V0Q3VzdG9tVmFsaWRpdHkoZXJyb3I6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlcG9ydHMgdGhlIHZhbGlkaXR5IG9mIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgcmVwb3J0VmFsaWRpdHkoKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBiaW5kaW5nIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gKi9cbmludGVyZmFjZSBCaW5kVUlDb21wb25lbnRPcHRpb25zPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlVHlwZT4ge1xuICAvKipcbiAgICogSWYgdHJ1ZSwgc2F2ZXMgdGhlIHBsdWdpbiBzZXR0aW5ncyBhdXRvbWF0aWNhbGx5IGFmdGVyIHRoZSBjb21wb25lbnQgdmFsdWUgY2hhbmdlcy4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICBhdXRvU2F2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0IHRvIGJpbmQgdGhlIGNvbXBvbmVudCB0by4gRGVmYXVsdCBpcyB0aGUgcGx1Z2luJ3MgY3VycmVudCBzZXR0aW5ncy5cbiAgICovXG4gIHBsdWdpblNldHRpbmdzPzogUGx1Z2luU2V0dGluZ3M7XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgVUkgdmFsdWUgYmVmb3JlIHNldHRpbmcgaXQgb24gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICogQHBhcmFtIHVpVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgQW4gZXJyb3IgbWVzc2FnZSBpZiB0aGUgdmFsdWUgaXMgaW52YWxpZCwgb3IgYG51bGxgIGlmIGl0IGlzIHZhbGlkLlxuICAgKi9cbiAgdWlWYWx1ZVZhbGlkYXRvcj86ICh1aVZhbHVlOiBVSVZhbHVlVHlwZSkgPT4gc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBFeHRlbmRlZCBvcHRpb25zIGZvciBiaW5kaW5nIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gKi9cbmludGVyZmFjZSBCaW5kVUlDb21wb25lbnRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlLCBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFBsdWdpblNldHRpbmdzPiBleHRlbmRzIEJpbmRVSUNvbXBvbmVudE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlPiB7XG4gIC8qKlxuICogQ29udmVydHMgdGhlIHNldHRpbmcgdmFsdWUgdG8gdGhlIHZhbHVlIHVzZWQgYnkgdGhlIFVJIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBwcm9wZXJ0eVZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgVUkgY29tcG9uZW50LlxuICovXG4gIHNldHRpbmdUb1VJVmFsdWVDb252ZXJ0ZXI6IChwcm9wZXJ0eVZhbHVlOiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV0pID0+IFVJVmFsdWVUeXBlO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgVUkgY29tcG9uZW50J3MgdmFsdWUgYmFjayB0byB0aGUgc2V0dGluZyB2YWx1ZS5cbiAgICogQHBhcmFtIHVpVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgdWlUb1NldHRpbmdWYWx1ZUNvbnZlcnRlcjogKHVpVmFsdWU6IFVJVmFsdWVUeXBlKSA9PiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV07XG59XG5cbi8qKlxuICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzIHdpdGggb3B0aW9uYWwgYXV0b21hdGljIHNhdmluZyBhbmQgdmFsdWUgY29udmVyc2lvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCBleHRlbmRzIGBQbHVnaW5CYXNlYC5cbiAqIEB0eXBlUGFyYW0gVFVJQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudCBleHRlbmRpbmcgYFVJQ29tcG9uZW50YC5cbiAqIEB0eXBlUGFyYW0gUHJvcGVydHkgLSBUaGUga2V5IG9mIHRoZSBwbHVnaW4gc2V0dGluZyB0aGF0IHRoZSBjb21wb25lbnQgaXMgYm91bmQgdG8uXG4gKiBAdHlwZVBhcmFtIFVJVmFsdWVUeXBlIC0gVGhlIGluZmVycmVkIHR5cGUgYmFzZWQgb24gdGhlIFVJIGNvbXBvbmVudCdzIHR5cGUuXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIGluZmVycmVkIHR5cGUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4uXG4gKiBAcGFyYW0gdWlDb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRoYXQgd2lsbCBkaXNwbGF5IGFuZCBpbnRlcmFjdCB3aXRoIHRoZSBzZXR0aW5nIHZhbHVlLlxuICogQHBhcmFtIHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IGtleSBpbiBgUGx1Z2luU2V0dGluZ3NgIHRvIGJpbmQgdG8gdGhlIFVJIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuICpcbiAqIEByZXR1cm5zIFRoZSBgVUlDb21wb25lbnRgIGluc3RhbmNlIHRoYXQgd2FzIGJvdW5kIHRvIHRoZSBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJpbmRVaUNvbXBvbmVudDxcbiAgUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxvYmplY3Q+LFxuICBUVUlDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudDx1bmtub3duPixcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnNcbiAgUHJvcGVydHkgZXh0ZW5kcyBLZXlzTWF0Y2hpbmc8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlPixcbiAgVUlWYWx1ZVR5cGUgPSBUVUlDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudDxpbmZlciBQPiA/IFAgOiBuZXZlcixcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QgPSBQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPGluZmVyIFA+ID8gUCA6IG5ldmVyXG4+KFxuICBwbHVnaW46IFBsdWdpbixcbiAgdWlDb21wb25lbnQ6IFRVSUNvbXBvbmVudCxcbiAgcHJvcGVydHk6IFByb3BlcnR5LFxuICBvcHRpb25zPzogQmluZFVJQ29tcG9uZW50T3B0aW9uczxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZVR5cGU+XG4pOiBUVUlDb21wb25lbnQ7XG5cbi8qKlxuICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzIHdpdGggb3B0aW9uYWwgYXV0b21hdGljIHNhdmluZyBhbmQgdmFsdWUgY29udmVyc2lvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCBleHRlbmRzIGBQbHVnaW5CYXNlYC5cbiAqIEB0eXBlUGFyYW0gVFVJQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudCBleHRlbmRpbmcgYFVJQ29tcG9uZW50YC5cbiAqIEB0eXBlUGFyYW0gUHJvcGVydHkgLSBUaGUga2V5IG9mIHRoZSBwbHVnaW4gc2V0dGluZyB0aGF0IHRoZSBjb21wb25lbnQgaXMgYm91bmQgdG8uXG4gKiBAdHlwZVBhcmFtIFVJVmFsdWVUeXBlIC0gVGhlIGluZmVycmVkIHR5cGUgYmFzZWQgb24gdGhlIFVJIGNvbXBvbmVudCdzIHR5cGUuXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIGluZmVycmVkIHR5cGUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4uXG4gKiBAcGFyYW0gdWlDb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRoYXQgd2lsbCBkaXNwbGF5IGFuZCBpbnRlcmFjdCB3aXRoIHRoZSBzZXR0aW5nIHZhbHVlLlxuICogQHBhcmFtIHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IGtleSBpbiBgUGx1Z2luU2V0dGluZ3NgIHRvIGJpbmQgdG8gdGhlIFVJIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuICpcbiAqIEByZXR1cm5zIFRoZSBgVUlDb21wb25lbnRgIGluc3RhbmNlIHRoYXQgd2FzIGJvdW5kIHRvIHRoZSBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJpbmRVaUNvbXBvbmVudDxcbiAgUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxvYmplY3Q+LFxuICBUVUlDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudDx1bmtub3duPixcbiAgUHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBQbHVnaW5TZXR0aW5ncyxcbiAgVUlWYWx1ZVR5cGUgPSBUVUlDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudDxpbmZlciBQPiA/IFAgOiBuZXZlcixcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QgPSBQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPGluZmVyIFA+ID8gUCA6IG5ldmVyXG4+KFxuICBwbHVnaW46IFBsdWdpbixcbiAgdWlDb21wb25lbnQ6IFRVSUNvbXBvbmVudCxcbiAgcHJvcGVydHk6IFByb3BlcnR5LFxuICBvcHRpb25zOiBCaW5kVUlDb21wb25lbnRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlLCBQcm9wZXJ0eT5cbik6IFRVSUNvbXBvbmVudDtcblxuLyoqXG4gKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3Mgd2l0aCBvcHRpb25hbCBhdXRvbWF0aWMgc2F2aW5nIGFuZCB2YWx1ZSBjb252ZXJzaW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IGV4dGVuZHMgYFBsdWdpbkJhc2VgLlxuICogQHR5cGVQYXJhbSBUVUlDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50IGV4dGVuZGluZyBgVUlDb21wb25lbnRgLlxuICogQHR5cGVQYXJhbSBQcm9wZXJ0eSAtIFRoZSBrZXkgb2YgdGhlIHBsdWdpbiBzZXR0aW5nIHRoYXQgdGhlIGNvbXBvbmVudCBpcyBib3VuZCB0by5cbiAqIEB0eXBlUGFyYW0gVUlWYWx1ZVR5cGUgLSBUaGUgaW5mZXJyZWQgdHlwZSBiYXNlZCBvbiB0aGUgVUkgY29tcG9uZW50J3MgdHlwZS5cbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgaW5mZXJyZWQgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbi5cbiAqIEBwYXJhbSB1aUNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdGhhdCB3aWxsIGRpc3BsYXkgYW5kIGludGVyYWN0IHdpdGggdGhlIHNldHRpbmcgdmFsdWUuXG4gKiBAcGFyYW0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IGluIGBQbHVnaW5TZXR0aW5nc2AgdG8gYmluZCB0byB0aGUgVUkgY29tcG9uZW50LlxuICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gKlxuICogQHJldHVybnMgVGhlIGBVSUNvbXBvbmVudGAgaW5zdGFuY2UgdGhhdCB3YXMgYm91bmQgdG8gdGhlIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYmluZFVpQ29tcG9uZW50PFxuICBQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPG9iamVjdD4sXG4gIFRVSUNvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50PHVua25vd24+LFxuICBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFBsdWdpblNldHRpbmdzLFxuICBVSVZhbHVlVHlwZSA9IFRVSUNvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50PGluZmVyIFA+ID8gUCA6IG5ldmVyLFxuICBQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdCA9IFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8aW5mZXIgUD4gPyBQIDogbmV2ZXJcbj4oXG4gIHBsdWdpbjogUGx1Z2luLFxuICB1aUNvbXBvbmVudDogVFVJQ29tcG9uZW50LFxuICBwcm9wZXJ0eTogUHJvcGVydHksXG4gIG9wdGlvbnM/OiBCaW5kVUlDb21wb25lbnRPcHRpb25zPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlVHlwZT5cbik6IFRVSUNvbXBvbmVudCB7XG4gIHR5cGUgUHJvcGVydHlUeXBlID0gUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldO1xuICBjb25zdCBERUZBVUxUX09QVElPTlM6IEJpbmRVSUNvbXBvbmVudE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZVR5cGUsIFByb3BlcnR5PiA9IHtcbiAgICBhdXRvU2F2ZTogdHJ1ZSxcbiAgICBzZXR0aW5nVG9VSVZhbHVlQ29udmVydGVyOiAodmFsdWUpOiBVSVZhbHVlVHlwZSA9PiB2YWx1ZSBhcyBVSVZhbHVlVHlwZSxcbiAgICB1aVRvU2V0dGluZ1ZhbHVlQ29udmVydGVyOiAodmFsdWUpOiBQcm9wZXJ0eVR5cGUgPT4gdmFsdWUgYXMgUHJvcGVydHlUeXBlXG4gIH07XG5cbiAgY29uc3Qgb3B0aW9uc0V4dDogQmluZFVJQ29tcG9uZW50T3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlVHlwZSwgUHJvcGVydHk+ID0geyAuLi5ERUZBVUxUX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcbiAgY29uc3QgcGx1Z2luRXh0ID0gcGx1Z2luIGFzIHVua25vd24gYXMgUGx1Z2luQmFzZTxQbHVnaW5TZXR0aW5ncz47XG4gIGNvbnN0IHVpQ29tcG9uZW50RXh0ID0gdWlDb21wb25lbnQgYXMgVUlDb21wb25lbnQ8VUlWYWx1ZVR5cGU+O1xuICBjb25zdCBwbHVnaW5TZXR0aW5nc0ZuID0gKCk6IFBsdWdpblNldHRpbmdzID0+IG9wdGlvbnNFeHQucGx1Z2luU2V0dGluZ3MgPz8gcGx1Z2luRXh0LnNldHRpbmdzQ29weTtcbiAgdWlDb21wb25lbnRFeHRcbiAgICAuc2V0VmFsdWUob3B0aW9uc0V4dC5zZXR0aW5nVG9VSVZhbHVlQ29udmVydGVyKHBsdWdpblNldHRpbmdzRm4oKVtwcm9wZXJ0eV0pKVxuICAgIC5vbkNoYW5nZShhc3luYyAodWlWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG9wdGlvbnNFeHQudWlWYWx1ZVZhbGlkYXRvcikge1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBvcHRpb25zRXh0LnVpVmFsdWVWYWxpZGF0b3IodWlWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvckVsZW1lbnQgPSBnZXRWYWxpZGF0b3JFbGVtZW50KHVpQ29tcG9uZW50KTtcbiAgICAgICAgaWYgKHZhbGlkYXRvckVsZW1lbnQpIHtcbiAgICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnNldEN1c3RvbVZhbGlkaXR5KGVycm9yTWVzc2FnZSA/PyAnJyk7XG4gICAgICAgICAgdmFsaWRhdG9yRWxlbWVudC5yZXBvcnRWYWxpZGl0eSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsdWdpblNldHRpbmdzID0gcGx1Z2luU2V0dGluZ3NGbigpO1xuICAgICAgcGx1Z2luU2V0dGluZ3NbcHJvcGVydHldID0gb3B0aW9uc0V4dC51aVRvU2V0dGluZ1ZhbHVlQ29udmVydGVyKHVpVmFsdWUpO1xuICAgICAgaWYgKG9wdGlvbnNFeHQuYXV0b1NhdmUpIHtcbiAgICAgICAgYXdhaXQgcGx1Z2luRXh0LnNhdmVTZXR0aW5ncyhwbHVnaW5TZXR0aW5ncyk7XG4gICAgICB9XG4gICAgfSk7XG4gIHJldHVybiB1aUNvbXBvbmVudDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB2YWxpZGF0b3IgZWxlbWVudCBmcm9tIGEgVUkgY29tcG9uZW50IGlmIGl0IGV4aXN0cy5cbiAqIEBwYXJhbSB1aUNvbXBvbmVudCAtIFRoZSBVSSBjb21wb25lbnQgdG8gZ2V0IHRoZSB2YWxpZGF0b3IgZWxlbWVudCBmcm9tLlxuICogQHJldHVybnMgVGhlIHZhbGlkYXRvciBlbGVtZW50IGlmIGl0IGV4aXN0cywgb3IgYG51bGxgIGlmIGl0IGRvZXMgbm90LlxuICovXG5mdW5jdGlvbiBnZXRWYWxpZGF0b3JFbGVtZW50KHVpQ29tcG9uZW50OiBVSUNvbXBvbmVudDx1bmtub3duPik6IFZhbGlkYXRvckVsZW1lbnQgfCBudWxsIHtcbiAgaWYgKHVpQ29tcG9uZW50IGluc3RhbmNlb2YgRHJvcGRvd25Db21wb25lbnQpIHtcbiAgICByZXR1cm4gdWlDb21wb25lbnQuc2VsZWN0RWw7XG4gIH1cblxuICBpZiAodWlDb21wb25lbnQgaW5zdGFuY2VvZiBTbGlkZXJDb21wb25lbnQpIHtcbiAgICByZXR1cm4gdWlDb21wb25lbnQuc2xpZGVyRWw7XG4gIH1cblxuICBpZiAodWlDb21wb25lbnQgaW5zdGFuY2VvZiBUZXh0QXJlYUNvbXBvbmVudCkge1xuICAgIHJldHVybiB1aUNvbXBvbmVudC5pbnB1dEVsO1xuICB9XG5cbiAgaWYgKHVpQ29tcG9uZW50IGluc3RhbmNlb2YgVGV4dENvbXBvbmVudCkge1xuICAgIHJldHVybiB1aUNvbXBvbmVudC5pbnB1dEVsO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHNCQUtPO0FBMEpBLFNBQVMsZ0JBT2QsUUFDQSxhQUNBLFVBQ0EsU0FDYztBQUVkLFFBQU0sa0JBQXlGO0FBQUEsSUFDN0YsVUFBVTtBQUFBLElBQ1YsMkJBQTJCLENBQUMsVUFBdUI7QUFBQSxJQUNuRCwyQkFBMkIsQ0FBQyxVQUF3QjtBQUFBLEVBQ3REO0FBRUEsUUFBTSxhQUFvRixFQUFFLEdBQUcsaUJBQWlCLEdBQUcsUUFBUTtBQUMzSCxRQUFNLFlBQVk7QUFDbEIsUUFBTSxpQkFBaUI7QUFDdkIsUUFBTSxtQkFBbUIsTUFBc0IsV0FBVyxrQkFBa0IsVUFBVTtBQUN0RixpQkFDRyxTQUFTLFdBQVcsMEJBQTBCLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQzNFLFNBQVMsT0FBTyxZQUFZO0FBQzNCLFFBQUksV0FBVyxrQkFBa0I7QUFDL0IsWUFBTSxlQUFlLFdBQVcsaUJBQWlCLE9BQU87QUFDeEQsWUFBTSxtQkFBbUIsb0JBQW9CLFdBQVc7QUFDeEQsVUFBSSxrQkFBa0I7QUFDcEIseUJBQWlCLGtCQUFrQixnQkFBZ0IsRUFBRTtBQUNyRCx5QkFBaUIsZUFBZTtBQUFBLE1BQ2xDO0FBQ0EsVUFBSSxjQUFjO0FBQ2hCO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFDQSxVQUFNLGlCQUFpQixpQkFBaUI7QUFDeEMsbUJBQWUsUUFBUSxJQUFJLFdBQVcsMEJBQTBCLE9BQU87QUFDdkUsUUFBSSxXQUFXLFVBQVU7QUFDdkIsWUFBTSxVQUFVLGFBQWEsY0FBYztBQUFBLElBQzdDO0FBQUEsRUFDRixDQUFDO0FBQ0gsU0FBTztBQUNUO0FBT0EsU0FBUyxvQkFBb0IsYUFBNEQ7QUFDdkYsTUFBSSx1QkFBdUIsbUNBQW1CO0FBQzVDLFdBQU8sWUFBWTtBQUFBLEVBQ3JCO0FBRUEsTUFBSSx1QkFBdUIsaUNBQWlCO0FBQzFDLFdBQU8sWUFBWTtBQUFBLEVBQ3JCO0FBRUEsTUFBSSx1QkFBdUIsbUNBQW1CO0FBQzVDLFdBQU8sWUFBWTtBQUFBLEVBQ3JCO0FBRUEsTUFBSSx1QkFBdUIsK0JBQWU7QUFDeEMsV0FBTyxZQUFZO0FBQUEsRUFDckI7QUFFQSxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
@@ -1,88 +0,0 @@
|
|
1
|
-
import type { KeysMatching } from '../../@types.ts';
|
2
|
-
import type { PluginBase } from './PluginBase.ts';
|
3
|
-
/**
|
4
|
-
* A UI component that can be bound to a plugin setting.
|
5
|
-
*/
|
6
|
-
export interface UIComponent<UIValue> {
|
7
|
-
/**
|
8
|
-
* Sets the value of the component.
|
9
|
-
* @param value - The value to set on the component.
|
10
|
-
*/
|
11
|
-
setValue(value: UIValue): this;
|
12
|
-
/**
|
13
|
-
* Sets a callback function to be called when the value of the component changes.
|
14
|
-
* @param callback - A callback function that is called when the value of the component changes.
|
15
|
-
*/
|
16
|
-
onChange(callback: (newValue: UIValue) => Promise<void>): this;
|
17
|
-
}
|
18
|
-
/**
|
19
|
-
* Options for binding a value component to a plugin setting.
|
20
|
-
*/
|
21
|
-
interface BindUIComponentOptions<PluginSettings, UIValueType> {
|
22
|
-
/**
|
23
|
-
* If true, saves the plugin settings automatically after the component value changes. Default is `true`.
|
24
|
-
*/
|
25
|
-
autoSave?: boolean;
|
26
|
-
/**
|
27
|
-
* The plugin settings object to bind the component to. Default is the plugin's current settings.
|
28
|
-
*/
|
29
|
-
pluginSettings?: PluginSettings;
|
30
|
-
/**
|
31
|
-
* Validates the UI value before setting it on the plugin settings.
|
32
|
-
* @param uiValue - The value of the UI component.
|
33
|
-
* @returns An error message if the value is invalid, or `null` if it is valid.
|
34
|
-
*/
|
35
|
-
uiValueValidator?: (uiValue: UIValueType) => string | null;
|
36
|
-
}
|
37
|
-
/**
|
38
|
-
* Extended options for binding a value component to a plugin setting.
|
39
|
-
*/
|
40
|
-
interface BindUIComponentOptionsExtended<PluginSettings, UIValueType, Property extends keyof PluginSettings> extends BindUIComponentOptions<PluginSettings, UIValueType> {
|
41
|
-
/**
|
42
|
-
* Converts the setting value to the value used by the UI component.
|
43
|
-
* @param propertyValue - The value of the property in the plugin settings.
|
44
|
-
* @returns The value to set on the UI component.
|
45
|
-
*/
|
46
|
-
settingToUIValueConverter: (propertyValue: PluginSettings[Property]) => UIValueType;
|
47
|
-
/**
|
48
|
-
* Converts the UI component's value back to the setting value.
|
49
|
-
* @param uiValue - The value of the UI component.
|
50
|
-
* @returns The value to set on the plugin settings.
|
51
|
-
*/
|
52
|
-
uiToSettingValueConverter: (uiValue: UIValueType) => PluginSettings[Property];
|
53
|
-
}
|
54
|
-
/**
|
55
|
-
* Binds a value component to a property in the plugin settings with optional automatic saving and value conversion.
|
56
|
-
*
|
57
|
-
* @typeParam Plugin - The type of the plugin that extends `PluginBase`.
|
58
|
-
* @typeParam TUIComponent - The type of the value component extending `UIComponent`.
|
59
|
-
* @typeParam Property - The key of the plugin setting that the component is bound to.
|
60
|
-
* @typeParam UIValueType - The inferred type based on the UI component's type.
|
61
|
-
* @typeParam PluginSettings - The inferred type of the plugin settings object.
|
62
|
-
*
|
63
|
-
* @param plugin - The plugin.
|
64
|
-
* @param uiComponent - The component that will display and interact with the setting value.
|
65
|
-
* @param property - The property key in `PluginSettings` to bind to the UI component.
|
66
|
-
* @param options - Configuration options.
|
67
|
-
*
|
68
|
-
* @returns The `UIComponent` instance that was bound to the property.
|
69
|
-
*/
|
70
|
-
export declare function bindUiComponent<Plugin extends PluginBase<object>, TUIComponent extends UIComponent<unknown>, Property extends KeysMatching<PluginSettings, UIValueType>, UIValueType = TUIComponent extends UIComponent<infer P> ? P : never, PluginSettings extends object = Plugin extends PluginBase<infer P> ? P : never>(plugin: Plugin, uiComponent: TUIComponent, property: Property, options?: BindUIComponentOptions<PluginSettings, UIValueType>): TUIComponent;
|
71
|
-
/**
|
72
|
-
* Binds a value component to a property in the plugin settings with optional automatic saving and value conversion.
|
73
|
-
*
|
74
|
-
* @typeParam Plugin - The type of the plugin that extends `PluginBase`.
|
75
|
-
* @typeParam TUIComponent - The type of the value component extending `UIComponent`.
|
76
|
-
* @typeParam Property - The key of the plugin setting that the component is bound to.
|
77
|
-
* @typeParam UIValueType - The inferred type based on the UI component's type.
|
78
|
-
* @typeParam PluginSettings - The inferred type of the plugin settings object.
|
79
|
-
*
|
80
|
-
* @param plugin - The plugin.
|
81
|
-
* @param uiComponent - The component that will display and interact with the setting value.
|
82
|
-
* @param property - The property key in `PluginSettings` to bind to the UI component.
|
83
|
-
* @param options - Configuration options.
|
84
|
-
*
|
85
|
-
* @returns The `UIComponent` instance that was bound to the property.
|
86
|
-
*/
|
87
|
-
export declare function bindUiComponent<Plugin extends PluginBase<object>, TUIComponent extends UIComponent<unknown>, Property extends keyof PluginSettings, UIValueType = TUIComponent extends UIComponent<infer P> ? P : never, PluginSettings extends object = Plugin extends PluginBase<infer P> ? P : never>(plugin: Plugin, uiComponent: TUIComponent, property: Property, options: BindUIComponentOptionsExtended<PluginSettings, UIValueType, Property>): TUIComponent;
|
88
|
-
export {};
|