obsidian-dev-utils 14.4.0 → 14.4.1-beta.10

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.
@@ -32,7 +32,7 @@ __export(Library_exports, {
32
32
  LIBRARY_VERSION: () => LIBRARY_VERSION
33
33
  });
34
34
  module.exports = __toCommonJS(Library_exports);
35
- const LIBRARY_VERSION = "14.4.0";
35
+ const LIBRARY_VERSION = "14.4.1-beta.10";
36
36
  const LIBRARY_NAME = "obsidian-dev-utils";
37
37
  const LIBRARY_STYLES = ".obsidian-dev-utils {\n /* default styles */\n}\n\n.obsidian-dev-utils.alert-modal {\n /* default styles */\n}\n\n.obsidian-dev-utils.confirm-modal {\n /* default styles */\n}\n\n.obsidian-dev-utils.plugin-settings-tab {\n /* default styles */\n}\n\n.obsidian-dev-utils.plugin-settings-tab .value-component-invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n\n.obsidian-dev-utils.prompt-modal {\n /* default styles */\n}\n\n.obsidian-dev-utils.select-item-modal {\n /* default styles */\n}\n";
38
38
  // Annotate the CommonJS export names for ESM import in node:
@@ -31,18 +31,90 @@ __export(PluginSettingsTabBase_exports, {
31
31
  });
32
32
  module.exports = __toCommonJS(PluginSettingsTabBase_exports);
33
33
  var import_obsidian = require('obsidian');
34
+ var import_Async = require('../../Async.cjs');
34
35
  var import_CssClass = require('../../CssClass.cjs');
35
36
  var import_PluginBase = require('./PluginBase.cjs');
36
37
  var import_PluginId = require('./PluginId.cjs');
38
+ var import_ValueComponent = require('./ValueComponent.cjs');
37
39
  class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
38
40
  constructor(plugin) {
39
41
  super(plugin.app, plugin);
40
42
  this.plugin = plugin;
41
43
  this.containerEl.addClass(import_CssClass.CssClass.LibraryName, (0, import_PluginId.getPluginId)(), import_CssClass.CssClass.PluginSettingsTab);
42
44
  }
45
+ validatorsMap = /* @__PURE__ */ new WeakMap();
46
+ /**
47
+ * Binds a value component to a plugin setting.
48
+ *
49
+ * @typeParam UIValue - The type of the value of the UI component.
50
+ * @typeParam TValueComponent - The type of the value component.
51
+ * @typeParam Property - The property of the plugin settings to bind to.
52
+ * @param valueComponent - The value component to bind.
53
+ * @param property - The property of the plugin settings to bind to.
54
+ * @param options - The options for binding the value component.
55
+ * @returns The value component.
56
+ */
57
+ bind(valueComponent, property, options) {
58
+ const DEFAULT_OPTIONS = {
59
+ componentToPluginSettingsValueConverter: (value) => value,
60
+ pluginSettingsToComponentValueConverter: (value) => value,
61
+ shouldAutoSave: true,
62
+ shouldShowValidationMessage: true
63
+ };
64
+ const optionsExt = { ...DEFAULT_OPTIONS, ...options };
65
+ const pluginSettingsFn = () => optionsExt.pluginSettings ?? this.plugin.settingsCopy;
66
+ const validate = async (uiValue) => {
67
+ if (!optionsExt.valueValidator) {
68
+ return true;
69
+ }
70
+ uiValue ??= valueComponent.getValue();
71
+ const errorMessage = await optionsExt.valueValidator(uiValue);
72
+ const validatorElement2 = (0, import_ValueComponent.getValidatorElement)(valueComponent);
73
+ if (validatorElement2) {
74
+ validatorElement2.setCustomValidity(errorMessage ?? "");
75
+ validatorElement2.title = errorMessage ?? "";
76
+ validatorElement2.toggleClass(import_CssClass.CssClass.ValueComponentInvalid, !!errorMessage);
77
+ if (validatorElement2.isActiveElement() && optionsExt.shouldShowValidationMessage) {
78
+ validatorElement2.reportValidity();
79
+ }
80
+ }
81
+ return !errorMessage;
82
+ };
83
+ valueComponent.setValue(optionsExt.pluginSettingsToComponentValueConverter(pluginSettingsFn()[property])).onChange(async (uiValue) => {
84
+ if (!await validate(uiValue)) {
85
+ return;
86
+ }
87
+ const pluginSettings = pluginSettingsFn();
88
+ pluginSettings[property] = optionsExt.componentToPluginSettingsValueConverter(uiValue);
89
+ if (optionsExt.shouldAutoSave) {
90
+ await this.plugin.saveSettings(pluginSettings);
91
+ }
92
+ await optionsExt.onChanged?.();
93
+ });
94
+ const validatorElement = (0, import_ValueComponent.getValidatorElement)(valueComponent);
95
+ validatorElement?.addEventListener("focus", (0, import_Async.convertAsyncToSync)(() => validate()));
96
+ validatorElement?.addEventListener("blur", (0, import_Async.convertAsyncToSync)(() => validate()));
97
+ this.validatorsMap.set(valueComponent, () => validate());
98
+ (0, import_Async.invokeAsyncSafely)(() => validate());
99
+ return valueComponent;
100
+ }
101
+ /**
102
+ * Revalidates the value component.
103
+ *
104
+ * @param valueComponent - The value component to revalidate.
105
+ * @returns A promise that resolves to a boolean indicating whether the value component is valid.
106
+ */
107
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
108
+ async revalidate(valueComponent) {
109
+ const validator = this.validatorsMap.get(valueComponent);
110
+ if (validator) {
111
+ return await validator();
112
+ }
113
+ return true;
114
+ }
43
115
  }
44
116
  // Annotate the CommonJS export names for ESM import in node:
45
117
  0 && (module.exports = {
46
118
  PluginSettingsTabBase
47
119
  });
48
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIFBsdWdpblNldHRpbmdzVGFiQmFzZVxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB7IFBsdWdpblNldHRpbmdUYWIgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luU2V0dGluZ3NCYXNlIH0gZnJvbSAnLi9QbHVnaW5TZXR0aW5nc0Jhc2UudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uLy4uL0Nzc0NsYXNzLnRzJztcbmltcG9ydCB7IFBsdWdpbkJhc2UgfSBmcm9tICcuL1BsdWdpbkJhc2UudHMnO1xuaW1wb3J0IHsgZ2V0UGx1Z2luSWQgfSBmcm9tICcuL1BsdWdpbklkLnRzJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBwbHVnaW4gc2V0dGluZ3MgdGFicyBpbiBPYnNpZGlhbi5cbiAqIFByb3ZpZGVzIGEgbWV0aG9kIGZvciBiaW5kaW5nIHZhbHVlIGNvbXBvbmVudHMgdG8gcGx1Z2luIHNldHRpbmdzIGFuZCBoYW5kbGluZyBjaGFuZ2VzLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCBleHRlbmRzIFBsdWdpbkJhc2UuXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyBvYmplY3QuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbHVnaW5TZXR0aW5nc1RhYkJhc2U8XG4gIFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPFBsdWdpblNldHRpbmdzPixcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nc0Jhc2UgPSBUUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxpbmZlciBQPiA/IFAgOiBuZXZlclxuPiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIG92ZXJyaWRlIHBsdWdpbjogVFBsdWdpbikge1xuICAgIHN1cGVyKHBsdWdpbi5hcHAsIHBsdWdpbik7XG4gICAgdGhpcy5jb250YWluZXJFbC5hZGRDbGFzcyhDc3NDbGFzcy5MaWJyYXJ5TmFtZSwgZ2V0UGx1Z2luSWQoKSwgQ3NzQ2xhc3MuUGx1Z2luU2V0dGluZ3NUYWIpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsc0JBQWlDO0FBSWpDLHNCQUF5QjtBQUN6Qix3QkFBMkI7QUFDM0Isc0JBQTRCO0FBU3JCLE1BQWUsOEJBR1osaUNBQWlCO0FBQUEsRUFDbEIsWUFBNEIsUUFBaUI7QUFDbEQsVUFBTSxPQUFPLEtBQUssTUFBTTtBQURTO0FBRWpDLFNBQUssWUFBWSxTQUFTLHlCQUFTLGlCQUFhLDZCQUFZLEdBQUcseUJBQVMsaUJBQWlCO0FBQUEsRUFDM0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
120
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIFBsdWdpblNldHRpbmdzVGFiQmFzZVxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgVmFsdWVDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IFBsdWdpblNldHRpbmdUYWIgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgS2V5c01hdGNoaW5nIH0gZnJvbSAnLi4vLi4vQHR5cGVzLnRzJztcbmltcG9ydCB0eXBlIHsgTWF5YmVQcm9taXNlIH0gZnJvbSAnLi4vLi4vQXN5bmMudHMnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5TZXR0aW5nc0Jhc2UgfSBmcm9tICcuL1BsdWdpblNldHRpbmdzQmFzZS50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nIH0gZnJvbSAnLi9WYWx1ZUNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgaW52b2tlQXN5bmNTYWZlbHlcblxufSBmcm9tICcuLi8uLi9Bc3luYy50cyc7XG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uLy4uL0Nzc0NsYXNzLnRzJztcbmltcG9ydCB7IFBsdWdpbkJhc2UgfSBmcm9tICcuL1BsdWdpbkJhc2UudHMnO1xuaW1wb3J0IHsgZ2V0UGx1Z2luSWQgfSBmcm9tICcuL1BsdWdpbklkLnRzJztcbmltcG9ydCB7IGdldFZhbGlkYXRvckVsZW1lbnQgfSBmcm9tICcuL1ZhbHVlQ29tcG9uZW50LnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBiaW5kaW5nIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWU+IHtcbiAgLyoqXG4gICAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudCBjaGFuZ2VzLlxuICAgKi9cbiAgb25DaGFuZ2VkPzogKCkgPT4gTWF5YmVQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdCB0byBiaW5kIHRoZSBjb21wb25lbnQgdG8uIERlZmF1bHQgaXMgdGhlIHBsdWdpbidzIGN1cnJlbnQgc2V0dGluZ3MuXG4gICAqL1xuICBwbHVnaW5TZXR0aW5ncz86IFBsdWdpblNldHRpbmdzO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBzYXZlcyB0aGUgcGx1Z2luIHNldHRpbmdzIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGNvbXBvbmVudCB2YWx1ZSBjaGFuZ2VzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHNob3VsZEF1dG9TYXZlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgc2hvd3MgdGhlIHZhbGlkYXRpb24gbWVzc2FnZSB3aGVuIHRoZSBjb21wb25lbnQgdmFsdWUgaXMgaW52YWxpZC4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIFVJIHZhbHVlIGJlZm9yZSBzZXR0aW5nIGl0IG9uIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqIEBwYXJhbSB1aVZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIEFuIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHZhbHVlIGlzIGludmFsaWQsIG9yIGAoZW1wdHkgc3RyaW5nKWAgb3IgYHZvaWRgIGlmIGl0IGlzIHZhbGlkLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1pbnZhbGlkLXZvaWQtdHlwZVxuICB2YWx1ZVZhbGlkYXRvcj86ICh1aVZhbHVlOiBVSVZhbHVlKSA9PiBNYXliZVByb21pc2U8c3RyaW5nIHwgdm9pZD47XG59XG5cbi8qKlxuICogRXh0ZW5kZWQgb3B0aW9ucyBmb3IgYmluZGluZyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbmRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3M+IGV4dGVuZHMgQmluZE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWU+IHtcbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBVSSBjb21wb25lbnQncyB2YWx1ZSBiYWNrIHRvIHRoZSBwbHVnaW4gc2V0dGluZ3MgdmFsdWUuXG4gICAqIEBwYXJhbSB1aVZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSB0byBzZXQgb24gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIGNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcjogKHVpVmFsdWU6IFVJVmFsdWUpID0+IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XTtcblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHBsdWdpbiBzZXR0aW5ncyB2YWx1ZSB0byB0aGUgdmFsdWUgdXNlZCBieSB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gcGx1Z2luU2V0dGluZ3NWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgVUkgY29tcG9uZW50LlxuICAgKi9cbiAgcGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyOiAocGx1Z2luU2V0dGluZ3NWYWx1ZTogUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldKSA9PiBVSVZhbHVlO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5ncyB0YWJzIGluIE9ic2lkaWFuLlxuICogUHJvdmlkZXMgYSBtZXRob2QgZm9yIGJpbmRpbmcgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsaW5nIGNoYW5nZXMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IGV4dGVuZHMgUGx1Z2luQmFzZS5cbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpblNldHRpbmdzVGFiQmFzZTxcbiAgVFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8UGx1Z2luU2V0dGluZ3M+LFxuICBQbHVnaW5TZXR0aW5ncyBleHRlbmRzIFBsdWdpblNldHRpbmdzQmFzZSA9IFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPGluZmVyIFA+ID8gUCA6IG5ldmVyXG4+IGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG4gIHByaXZhdGUgdmFsaWRhdG9yc01hcCA9IG5ldyBXZWFrTWFwPFZhbHVlQ29tcG9uZW50PHVua25vd24+LCAoKSA9PiBQcm9taXNlPGJvb2xlYW4+PigpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgb3ZlcnJpZGUgcGx1Z2luOiBUUGx1Z2luKSB7XG4gICAgc3VwZXIocGx1Z2luLmFwcCwgcGx1Z2luKTtcbiAgICB0aGlzLmNvbnRhaW5lckVsLmFkZENsYXNzKENzc0NsYXNzLkxpYnJhcnlOYW1lLCBnZXRQbHVnaW5JZCgpLCBDc3NDbGFzcy5QbHVnaW5TZXR0aW5nc1RhYik7XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBVSVZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gVFZhbHVlQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudFxuICA+KFxuICAgIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQgJiBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPixcbiAgICBwcm9wZXJ0eTogS2V5c01hdGNoaW5nPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlPixcbiAgICBvcHRpb25zPzogQmluZE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWU+XG4gICk6IFRWYWx1ZUNvbXBvbmVudDtcblxuICAvKipcbiAgICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBVSVZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gVFZhbHVlQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBQcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gYmluZC5cbiAgICogQHBhcmFtIHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgYmluZGluZyB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIGJpbmQ8XG4gICAgVUlWYWx1ZSxcbiAgICBUVmFsdWVDb21wb25lbnQsXG4gICAgUHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBQbHVnaW5TZXR0aW5nc1xuICA+KFxuICAgIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQgJiBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPixcbiAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgb3B0aW9uczogQmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHk+XG4gICk6IFRWYWx1ZUNvbXBvbmVudDtcblxuICAvKipcbiAgICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBVSVZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gVFZhbHVlQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBQcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gYmluZC5cbiAgICogQHBhcmFtIHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgYmluZGluZyB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIGJpbmQ8XG4gICAgVUlWYWx1ZSxcbiAgICBUVmFsdWVDb21wb25lbnQsXG4gICAgUHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBQbHVnaW5TZXR0aW5nc1xuICA+KFxuICAgIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQgJiBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPixcbiAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgb3B0aW9ucz86IEJpbmRPcHRpb25zPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlPlxuICApOiBUVmFsdWVDb21wb25lbnQge1xuICAgIHR5cGUgUHJvcGVydHlUeXBlID0gUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldO1xuICAgIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogQmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHk+ID0ge1xuICAgICAgY29tcG9uZW50VG9QbHVnaW5TZXR0aW5nc1ZhbHVlQ29udmVydGVyOiAodmFsdWU6IFVJVmFsdWUpOiBQcm9wZXJ0eVR5cGUgPT4gdmFsdWUgYXMgUHJvcGVydHlUeXBlLFxuICAgICAgcGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyOiAodmFsdWU6IFByb3BlcnR5VHlwZSk6IFVJVmFsdWUgPT4gdmFsdWUgYXMgVUlWYWx1ZSxcbiAgICAgIHNob3VsZEF1dG9TYXZlOiB0cnVlLFxuICAgICAgc2hvdWxkU2hvd1ZhbGlkYXRpb25NZXNzYWdlOiB0cnVlXG4gICAgfTtcblxuICAgIGNvbnN0IG9wdGlvbnNFeHQ6IEJpbmRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5PiA9IHsgLi4uREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG4gICAgY29uc3QgcGx1Z2luU2V0dGluZ3NGbiA9ICgpOiBQbHVnaW5TZXR0aW5ncyA9PiBvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzID8/IHRoaXMucGx1Z2luLnNldHRpbmdzQ29weTtcblxuICAgIGNvbnN0IHZhbGlkYXRlID0gYXN5bmMgKHVpVmFsdWU/OiBVSVZhbHVlKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgICBpZiAoIW9wdGlvbnNFeHQudmFsdWVWYWxpZGF0b3IpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICB1aVZhbHVlID8/PSB2YWx1ZUNvbXBvbmVudC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYXdhaXQgb3B0aW9uc0V4dC52YWx1ZVZhbGlkYXRvcih1aVZhbHVlKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBjb25zdCB2YWxpZGF0b3JFbGVtZW50ID0gZ2V0VmFsaWRhdG9yRWxlbWVudCh2YWx1ZUNvbXBvbmVudCk7XG4gICAgICBpZiAodmFsaWRhdG9yRWxlbWVudCkge1xuICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnNldEN1c3RvbVZhbGlkaXR5KGVycm9yTWVzc2FnZSA/PyAnJyk7XG4gICAgICAgIHZhbGlkYXRvckVsZW1lbnQudGl0bGUgPSBlcnJvck1lc3NhZ2UgPz8gJyc7XG4gICAgICAgIHZhbGlkYXRvckVsZW1lbnQudG9nZ2xlQ2xhc3MoQ3NzQ2xhc3MuVmFsdWVDb21wb25lbnRJbnZhbGlkLCAhIWVycm9yTWVzc2FnZSk7XG4gICAgICAgIGlmICh2YWxpZGF0b3JFbGVtZW50LmlzQWN0aXZlRWxlbWVudCgpICYmIG9wdGlvbnNFeHQuc2hvdWxkU2hvd1ZhbGlkYXRpb25NZXNzYWdlKSB7XG4gICAgICAgICAgdmFsaWRhdG9yRWxlbWVudC5yZXBvcnRWYWxpZGl0eSgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAhZXJyb3JNZXNzYWdlO1xuICAgIH07XG5cbiAgICB2YWx1ZUNvbXBvbmVudFxuICAgICAgLnNldFZhbHVlKG9wdGlvbnNFeHQucGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyKHBsdWdpblNldHRpbmdzRm4oKVtwcm9wZXJ0eV0pKVxuICAgICAgLm9uQ2hhbmdlKGFzeW5jICh1aVZhbHVlKSA9PiB7XG4gICAgICAgIGlmICghYXdhaXQgdmFsaWRhdGUodWlWYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGx1Z2luU2V0dGluZ3MgPSBwbHVnaW5TZXR0aW5nc0ZuKCk7XG4gICAgICAgIHBsdWdpblNldHRpbmdzW3Byb3BlcnR5XSA9IG9wdGlvbnNFeHQuY29tcG9uZW50VG9QbHVnaW5TZXR0aW5nc1ZhbHVlQ29udmVydGVyKHVpVmFsdWUpO1xuICAgICAgICBpZiAob3B0aW9uc0V4dC5zaG91bGRBdXRvU2F2ZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncyhwbHVnaW5TZXR0aW5ncyk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBvcHRpb25zRXh0Lm9uQ2hhbmdlZD8uKCk7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IHZhbGlkYXRvckVsZW1lbnQgPSBnZXRWYWxpZGF0b3JFbGVtZW50KHZhbHVlQ29tcG9uZW50KTtcbiAgICB2YWxpZGF0b3JFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIGNvbnZlcnRBc3luY1RvU3luYygoKSA9PiB2YWxpZGF0ZSgpKSk7XG4gICAgdmFsaWRhdG9yRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGNvbnZlcnRBc3luY1RvU3luYygoKSA9PiB2YWxpZGF0ZSgpKSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB0aGlzLnZhbGlkYXRvcnNNYXAuc2V0KHZhbHVlQ29tcG9uZW50IGFzIFZhbHVlQ29tcG9uZW50PGFueT4sICgpID0+IHZhbGlkYXRlKCkpO1xuXG4gICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gdmFsaWRhdGUoKSk7XG4gICAgcmV0dXJuIHZhbHVlQ29tcG9uZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldmFsaWRhdGVzIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gcmV2YWxpZGF0ZS5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgdmFsdWUgY29tcG9uZW50IGlzIHZhbGlkLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcHJvdGVjdGVkIGFzeW5jIHJldmFsaWRhdGUodmFsdWVDb21wb25lbnQ6IFZhbHVlQ29tcG9uZW50PGFueT4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB2YWxpZGF0b3IgPSB0aGlzLnZhbGlkYXRvcnNNYXAuZ2V0KHZhbHVlQ29tcG9uZW50KTtcbiAgICBpZiAodmFsaWRhdG9yKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdmFsaWRhdG9yKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxzQkFBaUM7QUFPakMsbUJBSU87QUFDUCxzQkFBeUI7QUFDekIsd0JBQTJCO0FBQzNCLHNCQUE0QjtBQUM1Qiw0QkFBb0M7QUE2RDdCLE1BQWUsOEJBR1osaUNBQWlCO0FBQUEsRUFHbEIsWUFBNEIsUUFBaUI7QUFDbEQsVUFBTSxPQUFPLEtBQUssTUFBTTtBQURTO0FBRWpDLFNBQUssWUFBWSxTQUFTLHlCQUFTLGlCQUFhLDZCQUFZLEdBQUcseUJBQVMsaUJBQWlCO0FBQUEsRUFDM0Y7QUFBQSxFQUxRLGdCQUFnQixvQkFBSSxRQUF5RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQTBEM0UsS0FLUixnQkFDQSxVQUNBLFNBQ2lCO0FBRWpCLFVBQU0sa0JBQTBFO0FBQUEsTUFDOUUseUNBQXlDLENBQUMsVUFBaUM7QUFBQSxNQUMzRSx5Q0FBeUMsQ0FBQyxVQUFpQztBQUFBLE1BQzNFLGdCQUFnQjtBQUFBLE1BQ2hCLDZCQUE2QjtBQUFBLElBQy9CO0FBRUEsVUFBTSxhQUFxRSxFQUFFLEdBQUcsaUJBQWlCLEdBQUcsUUFBUTtBQUM1RyxVQUFNLG1CQUFtQixNQUFzQixXQUFXLGtCQUFrQixLQUFLLE9BQU87QUFFeEYsVUFBTSxXQUFXLE9BQU8sWUFBd0M7QUFDOUQsVUFBSSxDQUFDLFdBQVcsZ0JBQWdCO0FBQzlCLGVBQU87QUFBQSxNQUNUO0FBQ0Esa0JBQVksZUFBZSxTQUFTO0FBQ3BDLFlBQU0sZUFBZSxNQUFNLFdBQVcsZUFBZSxPQUFPO0FBQzVELFlBQU1BLHdCQUFtQiwyQ0FBb0IsY0FBYztBQUMzRCxVQUFJQSxtQkFBa0I7QUFDcEIsUUFBQUEsa0JBQWlCLGtCQUFrQixnQkFBZ0IsRUFBRTtBQUNyRCxRQUFBQSxrQkFBaUIsUUFBUSxnQkFBZ0I7QUFDekMsUUFBQUEsa0JBQWlCLFlBQVkseUJBQVMsdUJBQXVCLENBQUMsQ0FBQyxZQUFZO0FBQzNFLFlBQUlBLGtCQUFpQixnQkFBZ0IsS0FBSyxXQUFXLDZCQUE2QjtBQUNoRixVQUFBQSxrQkFBaUIsZUFBZTtBQUFBLFFBQ2xDO0FBQUEsTUFDRjtBQUVBLGFBQU8sQ0FBQztBQUFBLElBQ1Y7QUFFQSxtQkFDRyxTQUFTLFdBQVcsd0NBQXdDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQ3pGLFNBQVMsT0FBTyxZQUFZO0FBQzNCLFVBQUksQ0FBQyxNQUFNLFNBQVMsT0FBTyxHQUFHO0FBQzVCO0FBQUEsTUFDRjtBQUNBLFlBQU0saUJBQWlCLGlCQUFpQjtBQUN4QyxxQkFBZSxRQUFRLElBQUksV0FBVyx3Q0FBd0MsT0FBTztBQUNyRixVQUFJLFdBQVcsZ0JBQWdCO0FBQzdCLGNBQU0sS0FBSyxPQUFPLGFBQWEsY0FBYztBQUFBLE1BQy9DO0FBRUEsWUFBTSxXQUFXLFlBQVk7QUFBQSxJQUMvQixDQUFDO0FBRUgsVUFBTSx1QkFBbUIsMkNBQW9CLGNBQWM7QUFDM0Qsc0JBQWtCLGlCQUFpQixhQUFTLGlDQUFtQixNQUFNLFNBQVMsQ0FBQyxDQUFDO0FBQ2hGLHNCQUFrQixpQkFBaUIsWUFBUSxpQ0FBbUIsTUFBTSxTQUFTLENBQUMsQ0FBQztBQUUvRSxTQUFLLGNBQWMsSUFBSSxnQkFBdUMsTUFBTSxTQUFTLENBQUM7QUFFOUUsd0NBQWtCLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNBLE1BQWdCLFdBQVcsZ0JBQXVEO0FBQ2hGLFVBQU0sWUFBWSxLQUFLLGNBQWMsSUFBSSxjQUFjO0FBQ3ZELFFBQUksV0FBVztBQUNiLGFBQU8sTUFBTSxVQUFVO0FBQUEsSUFDekI7QUFFQSxXQUFPO0FBQUEsRUFDVDtBQUNGOyIsCiAgIm5hbWVzIjogWyJ2YWxpZGF0b3JFbGVtZW50Il0KfQo=
@@ -3,9 +3,57 @@
3
3
  * This module defines a base class for creating plugin setting tabs in Obsidian.
4
4
  * It provides a utility method to bind value components to plugin settings and handle changes.
5
5
  */
6
+ import type { ValueComponent } from 'obsidian';
6
7
  import { PluginSettingTab } from 'obsidian';
8
+ import type { KeysMatching } from '../../@types.ts';
9
+ import type { MaybePromise } from '../../Async.ts';
7
10
  import type { PluginSettingsBase } from './PluginSettingsBase.ts';
11
+ import type { ValueComponentWithChangeTracking } from './ValueComponent.ts';
8
12
  import { PluginBase } from './PluginBase.ts';
13
+ /**
14
+ * Options for binding a value component to a plugin setting.
15
+ */
16
+ export interface BindOptions<PluginSettings, UIValue> {
17
+ /**
18
+ * A callback function that is called when the value of the component changes.
19
+ */
20
+ onChanged?: () => MaybePromise<void>;
21
+ /**
22
+ * The plugin settings object to bind the component to. Default is the plugin's current settings.
23
+ */
24
+ pluginSettings?: PluginSettings;
25
+ /**
26
+ * If true, saves the plugin settings automatically after the component value changes. Default is `true`.
27
+ */
28
+ shouldAutoSave?: boolean;
29
+ /**
30
+ * If true, shows the validation message when the component value is invalid. Default is `true`.
31
+ */
32
+ shouldShowValidationMessage?: boolean;
33
+ /**
34
+ * Validates the UI value before setting it on the plugin settings.
35
+ * @param uiValue - The value of the UI component.
36
+ * @returns An error message if the value is invalid, or `(empty string)` or `void` if it is valid.
37
+ */
38
+ valueValidator?: (uiValue: UIValue) => MaybePromise<string | void>;
39
+ }
40
+ /**
41
+ * Extended options for binding a value component to a plugin setting.
42
+ */
43
+ export interface BindOptionsExtended<PluginSettings, UIValue, Property extends keyof PluginSettings> extends BindOptions<PluginSettings, UIValue> {
44
+ /**
45
+ * Converts the UI component's value back to the plugin settings value.
46
+ * @param uiValue - The value of the UI component.
47
+ * @returns The value to set on the plugin settings.
48
+ */
49
+ componentToPluginSettingsValueConverter: (uiValue: UIValue) => PluginSettings[Property];
50
+ /**
51
+ * Converts the plugin settings value to the value used by the UI component.
52
+ * @param pluginSettingsValue - The value of the property in the plugin settings.
53
+ * @returns The value to set on the UI component.
54
+ */
55
+ pluginSettingsToComponentValueConverter: (pluginSettingsValue: PluginSettings[Property]) => UIValue;
56
+ }
9
57
  /**
10
58
  * Base class for creating plugin settings tabs in Obsidian.
11
59
  * Provides a method for binding value components to plugin settings and handling changes.
@@ -15,5 +63,36 @@ import { PluginBase } from './PluginBase.ts';
15
63
  */
16
64
  export declare abstract class PluginSettingsTabBase<TPlugin extends PluginBase<PluginSettings>, PluginSettings extends PluginSettingsBase = TPlugin extends PluginBase<infer P> ? P : never> extends PluginSettingTab {
17
65
  plugin: TPlugin;
66
+ private validatorsMap;
18
67
  constructor(plugin: TPlugin);
68
+ /**
69
+ * Binds a value component to a plugin setting.
70
+ *
71
+ * @typeParam UIValue - The type of the value of the UI component.
72
+ * @typeParam TValueComponent - The type of the value component.
73
+ * @param valueComponent - The value component to bind.
74
+ * @param property - The property of the plugin settings to bind to.
75
+ * @param options - The options for binding the value component.
76
+ * @returns The value component.
77
+ */
78
+ protected bind<UIValue, TValueComponent>(valueComponent: TValueComponent & ValueComponentWithChangeTracking<UIValue>, property: KeysMatching<PluginSettings, UIValue>, options?: BindOptions<PluginSettings, UIValue>): TValueComponent;
79
+ /**
80
+ * Binds a value component to a plugin setting.
81
+ *
82
+ * @typeParam UIValue - The type of the value of the UI component.
83
+ * @typeParam TValueComponent - The type of the value component.
84
+ * @typeParam Property - The property of the plugin settings to bind to.
85
+ * @param valueComponent - The value component to bind.
86
+ * @param property - The property of the plugin settings to bind to.
87
+ * @param options - The options for binding the value component.
88
+ * @returns The value component.
89
+ */
90
+ protected bind<UIValue, TValueComponent, Property extends keyof PluginSettings>(valueComponent: TValueComponent & ValueComponentWithChangeTracking<UIValue>, property: Property, options: BindOptionsExtended<PluginSettings, UIValue, Property>): TValueComponent;
91
+ /**
92
+ * Revalidates the value component.
93
+ *
94
+ * @param valueComponent - The value component to revalidate.
95
+ * @returns A promise that resolves to a boolean indicating whether the value component is valid.
96
+ */
97
+ protected revalidate(valueComponent: ValueComponent<any>): Promise<boolean>;
19
98
  }
@@ -27,92 +27,10 @@ var __copyProps = (to, from, except, desc) => {
27
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
28
  var ValueComponent_exports = {};
29
29
  __export(ValueComponent_exports, {
30
- extend: () => extend,
31
- revalidate: () => revalidate
30
+ getValidatorElement: () => getValidatorElement
32
31
  });
33
32
  module.exports = __toCommonJS(ValueComponent_exports);
34
33
  var import_obsidian = require('obsidian');
35
- var import_Async = require('../../Async.cjs');
36
- var import_CssClass = require('../../CssClass.cjs');
37
- var import_Object = require('../../Object.cjs');
38
- const validatorsMap = /* @__PURE__ */ new WeakMap();
39
- class ValueComponentEx {
40
- constructor(valueComponent) {
41
- this.valueComponent = valueComponent;
42
- }
43
- /**
44
- * Returns the ValueComponent with extended functionality.
45
- */
46
- asExtended() {
47
- return (0, import_Object.assignWithNonEnumerableProperties)({}, this.valueComponent, this);
48
- }
49
- /**
50
- * Binds the ValueComponent to a property in the plugin settings.
51
- *
52
- * @typeParam Plugin - The type of the plugin that extends `PluginBase`.
53
- * @typeParam Property - The key of the plugin setting that the component is bound to.
54
- * @typeParam PluginSettings - The type of the plugin settings object.
55
- * @param plugin - The plugin.
56
- * @param property - The property key in `PluginSettings` to bind to the UI component.
57
- * @param options - Configuration options.
58
- * @returns The `ValueComponent` instance that was bound to the property.
59
- */
60
- bind(plugin, property, options) {
61
- const DEFAULT_OPTIONS = {
62
- componentToPluginSettingsValueConverter: (value) => value,
63
- pluginSettingsToComponentValueConverter: (value) => value,
64
- shouldAutoSave: true,
65
- shouldShowValidationMessage: true
66
- };
67
- const optionsExt = { ...DEFAULT_OPTIONS, ...options };
68
- const pluginExt = plugin;
69
- const pluginSettingsFn = () => optionsExt.pluginSettings ?? pluginExt.settingsCopy;
70
- const validate = async (uiValue) => {
71
- if (!optionsExt.valueValidator) {
72
- return true;
73
- }
74
- uiValue ??= this.valueComponent.getValue();
75
- const errorMessage = await optionsExt.valueValidator(uiValue);
76
- const validatorElement2 = getValidatorElement(this.valueComponent);
77
- if (validatorElement2) {
78
- validatorElement2.setCustomValidity(errorMessage ?? "");
79
- validatorElement2.title = errorMessage ?? "";
80
- validatorElement2.toggleClass(import_CssClass.CssClass.ValueComponentInvalid, !!errorMessage);
81
- if (validatorElement2.isActiveElement() && optionsExt.shouldShowValidationMessage) {
82
- validatorElement2.reportValidity();
83
- }
84
- }
85
- return !errorMessage;
86
- };
87
- this.valueComponent.setValue(optionsExt.pluginSettingsToComponentValueConverter(pluginSettingsFn()[property])).onChange(async (uiValue) => {
88
- if (!await validate(uiValue)) {
89
- return;
90
- }
91
- const pluginSettings = pluginSettingsFn();
92
- pluginSettings[property] = optionsExt.componentToPluginSettingsValueConverter(uiValue);
93
- if (optionsExt.shouldAutoSave) {
94
- await pluginExt.saveSettings(pluginSettings);
95
- }
96
- await optionsExt.onChanged?.();
97
- });
98
- const validatorElement = getValidatorElement(this.valueComponent);
99
- validatorElement?.addEventListener("focus", (0, import_Async.convertAsyncToSync)(() => validate()));
100
- validatorElement?.addEventListener("blur", (0, import_Async.convertAsyncToSync)(() => validate()));
101
- validatorsMap.set(this.valueComponent, () => validate());
102
- (0, import_Async.invokeAsyncSafely)(() => validate());
103
- return this.asExtended();
104
- }
105
- }
106
- function extend(valueComponent) {
107
- return new ValueComponentEx(valueComponent).asExtended();
108
- }
109
- async function revalidate(valueComponent) {
110
- const validator = validatorsMap.get(valueComponent);
111
- if (validator) {
112
- return await validator();
113
- }
114
- return true;
115
- }
116
34
  function getValidatorElement(valueComponent) {
117
35
  if (valueComponent instanceof import_obsidian.DropdownComponent) {
118
36
  return valueComponent.selectEl;
@@ -130,7 +48,6 @@ function getValidatorElement(valueComponent) {
130
48
  }
131
49
  // Annotate the CommonJS export names for ESM import in node:
132
50
  0 && (module.exports = {
133
- extend,
134
- revalidate
51
+ getValidatorElement
135
52
  });
136
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9WYWx1ZUNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gVmFsdWVDb21wb25lbnRcbiAqIENvbnRhaW5zIHV0aWxpdHkgdHlwZXMgYW5kIGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgdmFsdWUgY29tcG9uZW50cywgd2hpY2ggYXJlIFVJIGNvbXBvbmVudHMgdGhhdCBkaXNwbGF5IGFuZCBlZGl0IHZhbHVlcy5cbiAqL1xuXG5pbXBvcnQge1xuICBEcm9wZG93bkNvbXBvbmVudCxcbiAgU2xpZGVyQ29tcG9uZW50LFxuICBUZXh0QXJlYUNvbXBvbmVudCxcbiAgVGV4dENvbXBvbmVudCxcbiAgVmFsdWVDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEtleXNNYXRjaGluZyB9IGZyb20gJy4uLy4uL0B0eXBlcy50cyc7XG5pbXBvcnQgdHlwZSB7IE1heWJlUHJvbWlzZSB9IGZyb20gJy4uLy4uL0FzeW5jLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdG9yRWxlbWVudCB9IGZyb20gJy4uLy4uL0hUTUxFbGVtZW50LnRzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luQmFzZSB9IGZyb20gJy4vUGx1Z2luQmFzZS50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpblNldHRpbmdzQmFzZSB9IGZyb20gJy4vUGx1Z2luU2V0dGluZ3NCYXNlLnRzJztcblxuaW1wb3J0IHtcbiAgY29udmVydEFzeW5jVG9TeW5jLFxuICBpbnZva2VBc3luY1NhZmVseVxufSBmcm9tICcuLi8uLi9Bc3luYy50cyc7XG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uLy4uL0Nzc0NsYXNzLnRzJztcbmltcG9ydCB7IGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyB9IGZyb20gJy4uLy4uL09iamVjdC50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYmluZGluZyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICovXG5pbnRlcmZhY2UgQmluZFZhbHVlQ29tcG9uZW50T3B0aW9uczxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZT4ge1xuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZWQ/OiAoKSA9PiBNYXliZVByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0IHRvIGJpbmQgdGhlIGNvbXBvbmVudCB0by4gRGVmYXVsdCBpcyB0aGUgcGx1Z2luJ3MgY3VycmVudCBzZXR0aW5ncy5cbiAgICovXG4gIHBsdWdpblNldHRpbmdzPzogUGx1Z2luU2V0dGluZ3M7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHNhdmVzIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXV0b21hdGljYWxseSBhZnRlciB0aGUgY29tcG9uZW50IHZhbHVlIGNoYW5nZXMuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgc2hvdWxkQXV0b1NhdmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBzaG93cyB0aGUgdmFsaWRhdGlvbiBtZXNzYWdlIHdoZW4gdGhlIGNvbXBvbmVudCB2YWx1ZSBpcyBpbnZhbGlkLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHNob3VsZFNob3dWYWxpZGF0aW9uTWVzc2FnZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgVUkgdmFsdWUgYmVmb3JlIHNldHRpbmcgaXQgb24gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICogQHBhcmFtIHVpVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgQW4gZXJyb3IgbWVzc2FnZSBpZiB0aGUgdmFsdWUgaXMgaW52YWxpZCwgb3IgYChlbXB0eSBzdHJpbmcpYCBvciBgdm9pZGAgaWYgaXQgaXMgdmFsaWQuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdm9pZC10eXBlXG4gIHZhbHVlVmFsaWRhdG9yPzogKHVpVmFsdWU6IFVJVmFsdWUpID0+IE1heWJlUHJvbWlzZTxzdHJpbmcgfCB2b2lkPjtcbn1cblxuLyoqXG4gKiBFeHRlbmRlZCBvcHRpb25zIGZvciBiaW5kaW5nIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gKi9cbmludGVyZmFjZSBCaW5kVmFsdWVDb21wb25lbnRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3M+IGV4dGVuZHMgQmluZFZhbHVlQ29tcG9uZW50T3B0aW9uczxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZT4ge1xuICAvKipcbiAgICogQ29udmVydHMgdGhlIFVJIGNvbXBvbmVudCdzIHZhbHVlIGJhY2sgdG8gdGhlIHBsdWdpbiBzZXR0aW5ncyB2YWx1ZS5cbiAgICogQHBhcmFtIHVpVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgY29tcG9uZW50VG9QbHVnaW5TZXR0aW5nc1ZhbHVlQ29udmVydGVyOiAodWlWYWx1ZTogVUlWYWx1ZSkgPT4gUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgcGx1Z2luIHNldHRpbmdzIHZhbHVlIHRvIHRoZSB2YWx1ZSB1c2VkIGJ5IHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBwbHVnaW5TZXR0aW5nc1ZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBVSSBjb21wb25lbnQuXG4gICAqL1xuICBwbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXI6IChwbHVnaW5TZXR0aW5nc1ZhbHVlOiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV0pID0+IFVJVmFsdWU7XG59XG5cbi8qKlxuICogVmFsdWVDb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCBhcyBhbiBvcmlnaW5hbCBWYWx1ZUNvbXBvbmVudCB3aXRoIGV4dGVuZGVkIGZ1bmN0aW9uYWxpdHkuXG4gKi9cbnR5cGUgVmFsdWVDb21wb25lbnRFeFR5cGU8VUlWYWx1ZSwgVFZhbHVlQ29tcG9uZW50IGV4dGVuZHMgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4+ID0gVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRFeDxVSVZhbHVlLCBUVmFsdWVDb21wb25lbnQ+O1xuXG4vKipcbiAqIEEgVmFsdWVDb21wb25lbnQgdGhhdCBjYW4gdHJhY2sgY2hhbmdlcy5cbiAqL1xuaW50ZXJmYWNlIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFQ+IGV4dGVuZHMgVmFsdWVDb21wb25lbnQ8VD4ge1xuICAvKipcbiAgICogU2V0cyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudCBjaGFuZ2VzLlxuICAgKi9cbiAgb25DaGFuZ2UoY2FsbGJhY2s6IChuZXdWYWx1ZTogVCkgPT4gUHJvbWlzZTx2b2lkPik6IHRoaXM7XG59XG5cbmNvbnN0IHZhbGlkYXRvcnNNYXAgPSBuZXcgV2Vha01hcDxWYWx1ZUNvbXBvbmVudDx1bmtub3duPiwgKCkgPT4gUHJvbWlzZTxib29sZWFuPj4oKTtcblxuLyoqXG4gKiBWYWx1ZUNvbXBvbmVudCB3aXRoIGV4dGVuZGVkIGZ1bmN0aW9uYWxpdHkuXG4gKi9cbmNsYXNzIFZhbHVlQ29tcG9uZW50RXg8VUlWYWx1ZSwgVFZhbHVlQ29tcG9uZW50IGV4dGVuZHMgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4+IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCkge1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIFZhbHVlQ29tcG9uZW50IHdpdGggZXh0ZW5kZWQgZnVuY3Rpb25hbGl0eS5cbiAgICovXG4gIHB1YmxpYyBhc0V4dGVuZGVkKCk6IFZhbHVlQ29tcG9uZW50RXhUeXBlPFVJVmFsdWUsIFRWYWx1ZUNvbXBvbmVudD4ge1xuICAgIHJldHVybiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoe30sIHRoaXMudmFsdWVDb21wb25lbnQsIHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIHRoZSBWYWx1ZUNvbXBvbmVudCB0byBhIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdC5cbiAgICogQHR5cGVQYXJhbSBQcm9wZXJ0eSAtIFRoZSBrZXkgb2YgdGhlIHBsdWdpbiBzZXR0aW5nIHRoYXQgdGhlIGNvbXBvbmVudCBpcyBib3VuZCB0by5cbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4uXG4gICAqIEBwYXJhbSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgaW4gYFBsdWdpblNldHRpbmdzYCB0byBiaW5kIHRvIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgKiBAcmV0dXJucyBUaGUgYFZhbHVlQ29tcG9uZW50YCBpbnN0YW5jZSB0aGF0IHdhcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBQbHVnaW5TZXR0aW5ncyBleHRlbmRzIFBsdWdpblNldHRpbmdzQmFzZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVyc1xuICAgIFByb3BlcnR5IGV4dGVuZHMgS2V5c01hdGNoaW5nPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlPlxuICA+KFxuICAgIHBsdWdpbjogUGx1Z2luQmFzZTxQbHVnaW5TZXR0aW5ncz4sXG4gICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgIG9wdGlvbnM/OiBCaW5kVmFsdWVDb21wb25lbnRPcHRpb25zPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlPlxuICApOiBWYWx1ZUNvbXBvbmVudEV4VHlwZTxVSVZhbHVlLCBUVmFsdWVDb21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiBCaW5kcyB0aGUgVmFsdWVDb21wb25lbnQgdG8gYSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCBleHRlbmRzIGBQbHVnaW5CYXNlYC5cbiAgICogQHR5cGVQYXJhbSBQcm9wZXJ0eSAtIFRoZSBrZXkgb2YgdGhlIHBsdWdpbiBzZXR0aW5nIHRoYXQgdGhlIGNvbXBvbmVudCBpcyBib3VuZCB0by5cbiAgICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbi5cbiAgICogQHBhcmFtIHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IGtleSBpbiBgUGx1Z2luU2V0dGluZ3NgIHRvIGJpbmQgdG8gdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIFRoZSBgVmFsdWVDb21wb25lbnRgIGluc3RhbmNlIHRoYXQgd2FzIGJvdW5kIHRvIHRoZSBwcm9wZXJ0eS5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFBsdWdpblNldHRpbmdzIGV4dGVuZHMgUGx1Z2luU2V0dGluZ3NCYXNlLFxuICAgIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3NcbiAgPihcbiAgICBwbHVnaW46IFBsdWdpbkJhc2U8UGx1Z2luU2V0dGluZ3M+LFxuICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICBvcHRpb25zOiBCaW5kVmFsdWVDb21wb25lbnRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5PlxuICApOiBWYWx1ZUNvbXBvbmVudEV4VHlwZTxVSVZhbHVlLCBUVmFsdWVDb21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiBCaW5kcyB0aGUgVmFsdWVDb21wb25lbnQgdG8gYSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCBleHRlbmRzIGBQbHVnaW5CYXNlYC5cbiAgICogQHR5cGVQYXJhbSBQcm9wZXJ0eSAtIFRoZSBrZXkgb2YgdGhlIHBsdWdpbiBzZXR0aW5nIHRoYXQgdGhlIGNvbXBvbmVudCBpcyBib3VuZCB0by5cbiAgICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbi5cbiAgICogQHBhcmFtIHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IGtleSBpbiBgUGx1Z2luU2V0dGluZ3NgIHRvIGJpbmQgdG8gdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIFRoZSBgVmFsdWVDb21wb25lbnRgIGluc3RhbmNlIHRoYXQgd2FzIGJvdW5kIHRvIHRoZSBwcm9wZXJ0eS5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFBsdWdpblNldHRpbmdzIGV4dGVuZHMgUGx1Z2luU2V0dGluZ3NCYXNlLFxuICAgIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3NcbiAgPihcbiAgICBwbHVnaW46IFBsdWdpbkJhc2U8UGx1Z2luU2V0dGluZ3M+LFxuICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICBvcHRpb25zPzogQmluZFZhbHVlQ29tcG9uZW50T3B0aW9uczxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZT5cbiAgKTogVmFsdWVDb21wb25lbnRFeFR5cGU8VUlWYWx1ZSwgVFZhbHVlQ29tcG9uZW50PiB7XG4gICAgdHlwZSBQcm9wZXJ0eVR5cGUgPSBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV07XG4gICAgY29uc3QgREVGQVVMVF9PUFRJT05TOiBCaW5kVmFsdWVDb21wb25lbnRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5PiA9IHtcbiAgICAgIGNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcjogKHZhbHVlKTogUHJvcGVydHlUeXBlID0+IHZhbHVlIGFzIFByb3BlcnR5VHlwZSxcbiAgICAgIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcjogKHZhbHVlKTogVUlWYWx1ZSA9PiB2YWx1ZSBhcyBVSVZhbHVlLFxuICAgICAgc2hvdWxkQXV0b1NhdmU6IHRydWUsXG4gICAgICBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3Qgb3B0aW9uc0V4dDogQmluZFZhbHVlQ29tcG9uZW50T3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eT4gPSB7IC4uLkRFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuICAgIGNvbnN0IHBsdWdpbkV4dCA9IHBsdWdpbiBhcyB1bmtub3duIGFzIFBsdWdpbkJhc2U8UGx1Z2luU2V0dGluZ3M+O1xuICAgIGNvbnN0IHBsdWdpblNldHRpbmdzRm4gPSAoKTogUGx1Z2luU2V0dGluZ3MgPT4gb3B0aW9uc0V4dC5wbHVnaW5TZXR0aW5ncyA/PyBwbHVnaW5FeHQuc2V0dGluZ3NDb3B5O1xuXG4gICAgY29uc3QgdmFsaWRhdGUgPSBhc3luYyAodWlWYWx1ZT86IFVJVmFsdWUpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICAgIGlmICghb3B0aW9uc0V4dC52YWx1ZVZhbGlkYXRvcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHVpVmFsdWUgPz89IHRoaXMudmFsdWVDb21wb25lbnQuZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGF3YWl0IG9wdGlvbnNFeHQudmFsdWVWYWxpZGF0b3IodWlWYWx1ZSkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgdmFsaWRhdG9yRWxlbWVudCA9IGdldFZhbGlkYXRvckVsZW1lbnQodGhpcy52YWx1ZUNvbXBvbmVudCk7XG4gICAgICBpZiAodmFsaWRhdG9yRWxlbWVudCkge1xuICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnNldEN1c3RvbVZhbGlkaXR5KGVycm9yTWVzc2FnZSA/PyAnJyk7XG4gICAgICAgIHZhbGlkYXRvckVsZW1lbnQudGl0bGUgPSBlcnJvck1lc3NhZ2UgPz8gJyc7XG4gICAgICAgIHZhbGlkYXRvckVsZW1lbnQudG9nZ2xlQ2xhc3MoQ3NzQ2xhc3MuVmFsdWVDb21wb25lbnRJbnZhbGlkLCAhIWVycm9yTWVzc2FnZSk7XG4gICAgICAgIGlmICh2YWxpZGF0b3JFbGVtZW50LmlzQWN0aXZlRWxlbWVudCgpICYmIG9wdGlvbnNFeHQuc2hvdWxkU2hvd1ZhbGlkYXRpb25NZXNzYWdlKSB7XG4gICAgICAgICAgdmFsaWRhdG9yRWxlbWVudC5yZXBvcnRWYWxpZGl0eSgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAhZXJyb3JNZXNzYWdlO1xuICAgIH07XG5cbiAgICB0aGlzLnZhbHVlQ29tcG9uZW50XG4gICAgICAuc2V0VmFsdWUob3B0aW9uc0V4dC5wbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXIocGx1Z2luU2V0dGluZ3NGbigpW3Byb3BlcnR5XSkpXG4gICAgICAub25DaGFuZ2UoYXN5bmMgKHVpVmFsdWUpID0+IHtcbiAgICAgICAgaWYgKCFhd2FpdCB2YWxpZGF0ZSh1aVZhbHVlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwbHVnaW5TZXR0aW5ncyA9IHBsdWdpblNldHRpbmdzRm4oKTtcbiAgICAgICAgcGx1Z2luU2V0dGluZ3NbcHJvcGVydHldID0gb3B0aW9uc0V4dC5jb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXIodWlWYWx1ZSk7XG4gICAgICAgIGlmIChvcHRpb25zRXh0LnNob3VsZEF1dG9TYXZlKSB7XG4gICAgICAgICAgYXdhaXQgcGx1Z2luRXh0LnNhdmVTZXR0aW5ncyhwbHVnaW5TZXR0aW5ncyk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBvcHRpb25zRXh0Lm9uQ2hhbmdlZD8uKCk7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IHZhbGlkYXRvckVsZW1lbnQgPSBnZXRWYWxpZGF0b3JFbGVtZW50KHRoaXMudmFsdWVDb21wb25lbnQpO1xuICAgIHZhbGlkYXRvckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgY29udmVydEFzeW5jVG9TeW5jKCgpID0+IHZhbGlkYXRlKCkpKTtcbiAgICB2YWxpZGF0b3JFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgY29udmVydEFzeW5jVG9TeW5jKCgpID0+IHZhbGlkYXRlKCkpKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHZhbGlkYXRvcnNNYXAuc2V0KHRoaXMudmFsdWVDb21wb25lbnQgYXMgVmFsdWVDb21wb25lbnQ8YW55PiwgKCkgPT4gdmFsaWRhdGUoKSk7XG5cbiAgICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiB2YWxpZGF0ZSgpKTtcbiAgICByZXR1cm4gdGhpcy5hc0V4dGVuZGVkKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBFeHRlbmRzIGEgVmFsdWVDb21wb25lbnQgd2l0aCBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkuXG4gKlxuICogQHR5cGVQYXJhbSBVSVZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHRoZSBjb21wb25lbnQgZGlzcGxheXMuXG4gKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQgZXh0ZW5kaW5nIGBWYWx1ZUNvbXBvbmVudGAuXG4gKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGV4dGVuZC5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQgd2l0aCBleHRlbmRlZCBmdW5jdGlvbmFsaXR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kPFVJVmFsdWUsIFRWYWx1ZUNvbXBvbmVudCBleHRlbmRzIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+Pih2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4pOiBWYWx1ZUNvbXBvbmVudEV4VHlwZTxVSVZhbHVlLCBUVmFsdWVDb21wb25lbnQ+IHtcbiAgcmV0dXJuIG5ldyBWYWx1ZUNvbXBvbmVudEV4PFVJVmFsdWUsIFRWYWx1ZUNvbXBvbmVudD4odmFsdWVDb21wb25lbnQpLmFzRXh0ZW5kZWQoKTtcbn1cblxuLyoqXG4gKiBSZXZhbGlkYXRlcyBhIHZhbHVlIGNvbXBvbmVudC5cbiAqXG4gKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIHJldmFsaWRhdGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlIGNvbXBvbmVudCBpcyB2YWxpZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmV2YWxpZGF0ZSh2YWx1ZUNvbXBvbmVudDogVmFsdWVDb21wb25lbnQ8YW55Pik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB2YWxpZGF0b3IgPSB2YWxpZGF0b3JzTWFwLmdldCh2YWx1ZUNvbXBvbmVudCk7XG4gIGlmICh2YWxpZGF0b3IpIHtcbiAgICByZXR1cm4gYXdhaXQgdmFsaWRhdG9yKCk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB2YWxpZGF0b3IgZWxlbWVudCBmcm9tIGEgdmFsdWUgY29tcG9uZW50IGlmIGl0IGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGdldCB0aGUgdmFsaWRhdG9yIGVsZW1lbnQgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZGF0b3IgZWxlbWVudCBpZiBpdCBleGlzdHMsIG9yIGBudWxsYCBpZiBpdCBkb2VzIG5vdC5cbiAqL1xuZnVuY3Rpb24gZ2V0VmFsaWRhdG9yRWxlbWVudDxVSVZhbHVlPih2YWx1ZUNvbXBvbmVudDogVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4pOiBudWxsIHwgVmFsaWRhdG9yRWxlbWVudCB7XG4gIGlmICh2YWx1ZUNvbXBvbmVudCBpbnN0YW5jZW9mIERyb3Bkb3duQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIHZhbHVlQ29tcG9uZW50LnNlbGVjdEVsO1xuICB9XG5cbiAgaWYgKHZhbHVlQ29tcG9uZW50IGluc3RhbmNlb2YgU2xpZGVyQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIHZhbHVlQ29tcG9uZW50LnNsaWRlckVsO1xuICB9XG5cbiAgaWYgKHZhbHVlQ29tcG9uZW50IGluc3RhbmNlb2YgVGV4dEFyZWFDb21wb25lbnQpIHtcbiAgICByZXR1cm4gdmFsdWVDb21wb25lbnQuaW5wdXRFbDtcbiAgfVxuXG4gIGlmICh2YWx1ZUNvbXBvbmVudCBpbnN0YW5jZW9mIFRleHRDb21wb25lbnQpIHtcbiAgICByZXR1cm4gdmFsdWVDb21wb25lbnQuaW5wdXRFbDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0Esc0JBTU87QUFRUCxtQkFHTztBQUNQLHNCQUF5QjtBQUN6QixvQkFBa0Q7QUF1RWxELE1BQU0sZ0JBQWdCLG9CQUFJLFFBQXlEO0FBS25GLE1BQU0saUJBQTZGO0FBQUEsRUFDMUYsWUFBb0IsZ0JBQWlDO0FBQWpDO0FBQUEsRUFDM0I7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtPLGFBQTZEO0FBQ2xFLGVBQU8saURBQWtDLENBQUMsR0FBRyxLQUFLLGdCQUFnQixJQUFJO0FBQUEsRUFDeEU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFxRE8sS0FJTCxRQUNBLFVBQ0EsU0FDZ0Q7QUFFaEQsVUFBTSxr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
53
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9WYWx1ZUNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gVmFsdWVDb21wb25lbnRcbiAqIENvbnRhaW5zIHV0aWxpdHkgdHlwZXMgYW5kIGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgdmFsdWUgY29tcG9uZW50cywgd2hpY2ggYXJlIFVJIGNvbXBvbmVudHMgdGhhdCBkaXNwbGF5IGFuZCBlZGl0IHZhbHVlcy5cbiAqL1xuXG5pbXBvcnQge1xuICBEcm9wZG93bkNvbXBvbmVudCxcbiAgU2xpZGVyQ29tcG9uZW50LFxuICBUZXh0QXJlYUNvbXBvbmVudCxcbiAgVGV4dENvbXBvbmVudCxcbiAgVmFsdWVDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckVsZW1lbnQgfSBmcm9tICcuLi8uLi9IVE1MRWxlbWVudC50cyc7XG5cbi8qKlxuICogQSBWYWx1ZUNvbXBvbmVudCB0aGF0IGNhbiB0cmFjayBjaGFuZ2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFQ+IGV4dGVuZHMgVmFsdWVDb21wb25lbnQ8VD4ge1xuICAvKipcbiAgICogU2V0cyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudCBjaGFuZ2VzLlxuICAgKi9cbiAgb25DaGFuZ2UoY2FsbGJhY2s6IChuZXdWYWx1ZTogVCkgPT4gUHJvbWlzZTx2b2lkPik6IHRoaXM7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsaWRhdG9yIGVsZW1lbnQgZnJvbSBhIHZhbHVlIGNvbXBvbmVudCBpZiBpdCBleGlzdHMuXG4gKlxuICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBnZXQgdGhlIHZhbGlkYXRvciBlbGVtZW50IGZyb20uXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdG9yIGVsZW1lbnQgaWYgaXQgZXhpc3RzLCBvciBgbnVsbGAgaWYgaXQgZG9lcyBub3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZGF0b3JFbGVtZW50PFVJVmFsdWU+KHZhbHVlQ29tcG9uZW50OiBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPik6IG51bGwgfCBWYWxpZGF0b3JFbGVtZW50IHtcbiAgaWYgKHZhbHVlQ29tcG9uZW50IGluc3RhbmNlb2YgRHJvcGRvd25Db21wb25lbnQpIHtcbiAgICByZXR1cm4gdmFsdWVDb21wb25lbnQuc2VsZWN0RWw7XG4gIH1cblxuICBpZiAodmFsdWVDb21wb25lbnQgaW5zdGFuY2VvZiBTbGlkZXJDb21wb25lbnQpIHtcbiAgICByZXR1cm4gdmFsdWVDb21wb25lbnQuc2xpZGVyRWw7XG4gIH1cblxuICBpZiAodmFsdWVDb21wb25lbnQgaW5zdGFuY2VvZiBUZXh0QXJlYUNvbXBvbmVudCkge1xuICAgIHJldHVybiB2YWx1ZUNvbXBvbmVudC5pbnB1dEVsO1xuICB9XG5cbiAgaWYgKHZhbHVlQ29tcG9uZW50IGluc3RhbmNlb2YgVGV4dENvbXBvbmVudCkge1xuICAgIHJldHVybiB2YWx1ZUNvbXBvbmVudC5pbnB1dEVsO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0Esc0JBTU87QUFzQkEsU0FBUyxvQkFBNkIsZ0JBQW9GO0FBQy9ILE1BQUksMEJBQTBCLG1DQUFtQjtBQUMvQyxXQUFPLGVBQWU7QUFBQSxFQUN4QjtBQUVBLE1BQUksMEJBQTBCLGlDQUFpQjtBQUM3QyxXQUFPLGVBQWU7QUFBQSxFQUN4QjtBQUVBLE1BQUksMEJBQTBCLG1DQUFtQjtBQUMvQyxXQUFPLGVBQWU7QUFBQSxFQUN4QjtBQUVBLE1BQUksMEJBQTBCLCtCQUFlO0FBQzNDLFdBQU8sZUFBZTtBQUFBLEVBQ3hCO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -3,62 +3,11 @@
3
3
  * Contains utility types and functions for handling value components, which are UI components that display and edit values.
4
4
  */
5
5
  import { ValueComponent } from 'obsidian';
6
- import type { KeysMatching } from '../../@types.ts';
7
- import type { MaybePromise } from '../../Async.ts';
8
- import type { PluginBase } from './PluginBase.ts';
9
- import type { PluginSettingsBase } from './PluginSettingsBase.ts';
10
- /**
11
- * Options for binding a value component to a plugin setting.
12
- */
13
- interface BindValueComponentOptions<PluginSettings, UIValue> {
14
- /**
15
- * A callback function that is called when the value of the component changes.
16
- */
17
- onChanged?: () => MaybePromise<void>;
18
- /**
19
- * The plugin settings object to bind the component to. Default is the plugin's current settings.
20
- */
21
- pluginSettings?: PluginSettings;
22
- /**
23
- * If true, saves the plugin settings automatically after the component value changes. Default is `true`.
24
- */
25
- shouldAutoSave?: boolean;
26
- /**
27
- * If true, shows the validation message when the component value is invalid. Default is `true`.
28
- */
29
- shouldShowValidationMessage?: boolean;
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 `(empty string)` or `void` if it is valid.
34
- */
35
- valueValidator?: (uiValue: UIValue) => MaybePromise<string | void>;
36
- }
37
- /**
38
- * Extended options for binding a value component to a plugin setting.
39
- */
40
- interface BindValueComponentOptionsExtended<PluginSettings, UIValue, Property extends keyof PluginSettings> extends BindValueComponentOptions<PluginSettings, UIValue> {
41
- /**
42
- * Converts the UI component's value back to the plugin settings value.
43
- * @param uiValue - The value of the UI component.
44
- * @returns The value to set on the plugin settings.
45
- */
46
- componentToPluginSettingsValueConverter: (uiValue: UIValue) => PluginSettings[Property];
47
- /**
48
- * Converts the plugin settings value to the value used by the UI component.
49
- * @param pluginSettingsValue - The value of the property in the plugin settings.
50
- * @returns The value to set on the UI component.
51
- */
52
- pluginSettingsToComponentValueConverter: (pluginSettingsValue: PluginSettings[Property]) => UIValue;
53
- }
54
- /**
55
- * ValueComponent that can be used as an original ValueComponent with extended functionality.
56
- */
57
- type ValueComponentExType<UIValue, TValueComponent extends ValueComponentWithChangeTracking<UIValue>> = TValueComponent & ValueComponentEx<UIValue, TValueComponent>;
6
+ import type { ValidatorElement } from '../../HTMLElement.ts';
58
7
  /**
59
8
  * A ValueComponent that can track changes.
60
9
  */
61
- interface ValueComponentWithChangeTracking<T> extends ValueComponent<T> {
10
+ export interface ValueComponentWithChangeTracking<T> extends ValueComponent<T> {
62
11
  /**
63
12
  * Sets a callback function to be called when the value of the component changes.
64
13
  *
@@ -67,53 +16,9 @@ interface ValueComponentWithChangeTracking<T> extends ValueComponent<T> {
67
16
  onChange(callback: (newValue: T) => Promise<void>): this;
68
17
  }
69
18
  /**
70
- * ValueComponent with extended functionality.
71
- */
72
- declare class ValueComponentEx<UIValue, TValueComponent extends ValueComponentWithChangeTracking<UIValue>> {
73
- private valueComponent;
74
- constructor(valueComponent: TValueComponent);
75
- /**
76
- * Returns the ValueComponent with extended functionality.
77
- */
78
- asExtended(): ValueComponentExType<UIValue, TValueComponent>;
79
- /**
80
- * Binds the ValueComponent to a property in the plugin settings.
81
- *
82
- * @typeParam PluginSettings - The type of the plugin settings object.
83
- * @typeParam Property - The key of the plugin setting that the component is bound to.
84
- * @param plugin - The plugin.
85
- * @param property - The property key in `PluginSettings` to bind to the UI component.
86
- * @param options - Configuration options.
87
- * @returns The `ValueComponent` instance that was bound to the property.
88
- */
89
- bind<PluginSettings extends PluginSettingsBase, Property extends KeysMatching<PluginSettings, UIValue>>(plugin: PluginBase<PluginSettings>, property: Property, options?: BindValueComponentOptions<PluginSettings, UIValue>): ValueComponentExType<UIValue, TValueComponent>;
90
- /**
91
- * Binds the ValueComponent to a property in the plugin settings.
92
- *
93
- * @typeParam Plugin - The type of the plugin that extends `PluginBase`.
94
- * @typeParam Property - The key of the plugin setting that the component is bound to.
95
- * @typeParam PluginSettings - The type of the plugin settings object.
96
- * @param plugin - The plugin.
97
- * @param property - The property key in `PluginSettings` to bind to the UI component.
98
- * @param options - Configuration options.
99
- * @returns The `ValueComponent` instance that was bound to the property.
100
- */
101
- bind<PluginSettings extends PluginSettingsBase, Property extends keyof PluginSettings>(plugin: PluginBase<PluginSettings>, property: Property, options: BindValueComponentOptionsExtended<PluginSettings, UIValue, Property>): ValueComponentExType<UIValue, TValueComponent>;
102
- }
103
- /**
104
- * Extends a ValueComponent with additional functionality.
105
- *
106
- * @typeParam UIValue - The type of the value the component displays.
107
- * @typeParam TValueComponent - The type of the value component extending `ValueComponent`.
108
- * @param valueComponent - The value component to extend.
109
- * @returns The value component with extended functionality.
110
- */
111
- export declare function extend<UIValue, TValueComponent extends ValueComponentWithChangeTracking<UIValue>>(valueComponent: TValueComponent & ValueComponentWithChangeTracking<UIValue>): ValueComponentExType<UIValue, TValueComponent>;
112
- /**
113
- * Revalidates a value component.
19
+ * Gets the validator element from a value component if it exists.
114
20
  *
115
- * @param valueComponent - The value component to revalidate.
116
- * @returns `true` if the value component is valid, `false` otherwise.
21
+ * @param valueComponent - The value component to get the validator element from.
22
+ * @returns The validator element if it exists, or `null` if it does not.
117
23
  */
118
- export declare function revalidate(valueComponent: ValueComponent<any>): Promise<boolean>;
119
- export {};
24
+ export declare function getValidatorElement<UIValue>(valueComponent: ValueComponentWithChangeTracking<UIValue>): null | ValidatorElement;
@@ -47,6 +47,7 @@ var import_copyToObsidianPluginsFolderPlugin = require('./copyToObsidianPluginsF
47
47
  var import_fixEsmPlugin = require('./fixEsmPlugin.cjs');
48
48
  var import_fixSourceMapsPlugin = require('./fixSourceMapsPlugin.cjs');
49
49
  var import_preprocessPlugin = require('./preprocessPlugin.cjs');
50
+ var import_watchCssChangesPlugin = require('./watchCssChangesPlugin.cjs');
50
51
  var __process = globalThis["process"] ?? {
51
52
  "browser": true,
52
53
  "cwd": () => "/",
@@ -133,6 +134,7 @@ async function buildObsidianPlugin(options) {
133
134
  platform: "node",
134
135
  plugins: [
135
136
  (0, import_preprocessPlugin.preprocessPlugin)(),
137
+ (0, import_watchCssChangesPlugin.watchCssChangesPlugin)(),
136
138
  (0, import_fixEsmPlugin.fixEsmPlugin)(),
137
139
  (0, import_fixSourceMapsPlugin.fixSourceMapsPlugin)(isProductionBuild, distPath, pluginName),
138
140
  ...customEsbuildPlugins,
@@ -162,4 +164,4 @@ async function invokeEsbuild(buildContext, isProductionBuild) {
162
164
  buildObsidianPlugin,
163
165
  invokeEsbuild
164
166
  });
165
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdHMvZXNidWlsZC9PYnNpZGlhblBsdWdpbkJ1aWxkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzWydwcm9jZXNzJ10gPz8ge1xuICBcImJyb3dzZXJcIjogdHJ1ZSxcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIE9ic2lkaWFuUGx1Z2luQnVpbGRlclxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSB0byBidWlsZCBhbmQgYnVuZGxlIGFuIE9ic2lkaWFuIHBsdWdpbiB1c2luZyBlc2J1aWxkLlxuICogSXQgaW5jbHVkZXMgZnVuY3Rpb25zIHRvIGhhbmRsZSB0aGUgYnVpbGQgcHJvY2VzcyBiYXNlZCBvbiBkaWZmZXJlbnQgYnVpbGQgbW9kZXMgKGRldmVsb3BtZW50IG9yIHByb2R1Y3Rpb24pLFxuICogYW5kIGl0IHNldHMgdXAgdmFyaW91cyBlc2J1aWxkIHBsdWdpbnMgdG8gcHJlcHJvY2VzcywgbGludCwgZml4IHNvdXJjZSBtYXBzLCBhbmQgY29weSBmaWxlcyB0byB0aGUgT2JzaWRpYW4gcGx1Z2lucyBmb2xkZXIuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBCdWlsZENvbnRleHQsXG4gIEJ1aWxkT3B0aW9ucyxcbiAgUGx1Z2luXG59IGZyb20gJ2VzYnVpbGQnO1xuXG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICdkb3RlbnYnO1xuaW1wb3J0IHsgY29udGV4dCB9IGZyb20gJ2VzYnVpbGQnO1xuXG5pbXBvcnQgeyB0aHJvd0V4cHJlc3Npb24gfSBmcm9tICcuLi8uLi9FcnJvci50cyc7XG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4uLy4uL29ic2lkaWFuL1BsdWdpbi9PYnNpZGlhblBsdWdpblJlcG9QYXRocy50cyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnLi4vLi4vUGF0aC50cyc7XG5pbXBvcnQgeyBidWlsZFZhbGlkYXRlIH0gZnJvbSAnLi4vYnVpbGQudHMnO1xuaW1wb3J0IHsgQ2xpVGFza1Jlc3VsdCB9IGZyb20gJy4uL0NsaVV0aWxzLnRzJztcbmltcG9ydCB7XG4gIGJ1aWx0aW5Nb2R1bGVzLFxuICBjcCxcbiAgZXhpc3RzU3luYyxcbiAgbWtkaXIsXG4gIHByb2Nlc3MsXG4gIHJtLFxuICB3cml0ZUZpbGVcbn0gZnJvbSAnLi4vTm9kZU1vZHVsZXMudHMnO1xuaW1wb3J0IHsgcmVhZFBhY2thZ2VKc29uIH0gZnJvbSAnLi4vTnBtLnRzJztcbmltcG9ydCB7IHJlc29sdmVQYXRoRnJvbVJvb3QgfSBmcm9tICcuLi9Sb290LnRzJztcbmltcG9ydCB7IGNvcHlUb09ic2lkaWFuUGx1Z2luc0ZvbGRlclBsdWdpbiB9IGZyb20gJy4vY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luLnRzJztcbmltcG9ydCB7IGZpeEVzbVBsdWdpbiB9IGZyb20gJy4vZml4RXNtUGx1Z2luLnRzJztcbmltcG9ydCB7IGZpeFNvdXJjZU1hcHNQbHVnaW4gfSBmcm9tICcuL2ZpeFNvdXJjZU1hcHNQbHVnaW4udHMnO1xuaW1wb3J0IHsgcHJlcHJvY2Vzc1BsdWdpbiB9IGZyb20gJy4vcHJlcHJvY2Vzc1BsdWdpbi50cyc7XG5cbi8qKlxuICogRW51bWVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBidWlsZCBtb2Rlcy5cbiAqL1xuZXhwb3J0IGVudW0gQnVpbGRNb2RlIHtcbiAgLyoqIERldmVsb3BtZW50IG1vZGUgZm9yIGJ1aWxkaW5nIHRoZSBwbHVnaW4gKi9cbiAgRGV2ZWxvcG1lbnQsXG4gIC8qKiBQcm9kdWN0aW9uIG1vZGUgZm9yIGJ1aWxkaW5nIHRoZSBwbHVnaW4gKi9cbiAgUHJvZHVjdGlvblxufVxuXG4vKipcbiAqIEJhbm5lciB0ZXh0IHRvIGJlIGluY2x1ZGVkIGF0IHRoZSB0b3Agb2YgdGhlIGdlbmVyYXRlZCBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGJhbm5lciA9IGAvKlxuVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgRVNCVUlMRFxuaWYgeW91IHdhbnQgdG8gdmlldyB0aGUgc291cmNlLCBwbGVhc2UgdmlzaXQgdGhlIGdpdGh1YiByZXBvc2l0b3J5IG9mIHRoaXMgcGx1Z2luXG4qL1xuYDtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBidWlsZGluZyBhbiBPYnNpZGlhbiBwbHVnaW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRPYnNpZGlhblBsdWdpbk9wdGlvbnMge1xuICAvKipcbiAgICogQ3VzdG9tIGVzYnVpbGQgcGx1Z2lucyB0byBiZSB1c2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy5cbiAgICovXG4gIGN1c3RvbUVzYnVpbGRQbHVnaW5zPzogUGx1Z2luW107XG5cbiAgLyoqXG4gICAqIFRoZSBidWlsZCBtb2RlLCBlaXRoZXIgRGV2ZWxvcG1lbnQgb3IgUHJvZHVjdGlvblxuICAgKi9cbiAgbW9kZTogQnVpbGRNb2RlO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGZvciBPYnNpZGlhbiBjb25maWd1cmF0aW9uLiBEZWZhdWx0cyB0byB0aGUgYE9CU0lESUFOX0NPTkZJR19ESVJgIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgb2JzaWRpYW5Db25maWdEaXI/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBPYnNpZGlhblBsdWdpbkJ1aWxkZXJFbnYge1xuICBPQlNJRElBTl9DT05GSUdfRElSOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBPYnNpZGlhbiBwbHVnaW4gYmFzZWQgb24gdGhlIHNwZWNpZmllZCBtb2RlIGFuZCBjb25maWd1cmF0aW9uIGRpcmVjdG9yeS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBidWlsZGluZyB0aGUgcGx1Z2luLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBgVGFza1Jlc3VsdGAgaW5kaWNhdGluZyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBidWlsZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkT2JzaWRpYW5QbHVnaW4ob3B0aW9uczogQnVpbGRPYnNpZGlhblBsdWdpbk9wdGlvbnMpOiBQcm9taXNlPENsaVRhc2tSZXN1bHQ+IHtcbiAgYXdhaXQgYnVpbGRWYWxpZGF0ZSgpO1xuICBjb25maWcoKTtcbiAgY29uc3Qgb2JzaWRpYW5QbHVnaW5CdWlsZGVyRW52ID0gcHJvY2Vzcy5lbnYgYXMgUGFydGlhbDxPYnNpZGlhblBsdWdpbkJ1aWxkZXJFbnY+O1xuXG4gIGNvbnN0IHtcbiAgICBjdXN0b21Fc2J1aWxkUGx1Z2lucyA9IFtdLFxuICAgIG1vZGUsXG4gICAgb2JzaWRpYW5Db25maWdEaXI6IF9vYnNpZGlhbkNvbmZpZ0RpclxuICB9ID0gb3B0aW9ucztcblxuICBjb25zdCBvYnNpZGlhbkNvbmZpZ0RpciA9IF9vYnNpZGlhbkNvbmZpZ0RpciA/PyBvYnNpZGlhblBsdWdpbkJ1aWxkZXJFbnYuT0JTSURJQU5fQ09ORklHX0RJUiA/PyAnJztcbiAgY29uc3QgaXNQcm9kdWN0aW9uQnVpbGQgPSBtb2RlID09PSBCdWlsZE1vZGUuUHJvZHVjdGlvbjtcblxuICBjb25zdCBkaXN0RGlyID0gcmVzb2x2ZVBhdGhGcm9tUm9vdChpc1Byb2R1Y3Rpb25CdWlsZCA/IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZCA6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3REZXYpO1xuICBpZiAoIWRpc3REaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGRpc3QgZGlyZWN0b3J5Jyk7XG4gIH1cblxuICBpZiAoZXhpc3RzU3luYyhkaXN0RGlyKSkge1xuICAgIGF3YWl0IHJtKGRpc3REaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB9XG4gIGF3YWl0IG1rZGlyKGRpc3REaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGRpc3RGaWxlTmFtZXMgPSBbXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uLFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlN0eWxlc0Nzc1xuICBdO1xuICBpZiAoIWlzUHJvZHVjdGlvbkJ1aWxkKSB7XG4gICAgYXdhaXQgd3JpdGVGaWxlKGpvaW4oZGlzdERpciwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuSG90UmVsb2FkKSwgJycsICd1dGYtOCcpO1xuICB9XG5cbiAgZm9yIChjb25zdCBmaWxlTmFtZSBvZiBkaXN0RmlsZU5hbWVzKSB7XG4gICAgY29uc3QgbG9jYWxGaWxlID0gcmVzb2x2ZVBhdGhGcm9tUm9vdChmaWxlTmFtZSk7XG4gICAgaWYgKCFsb2NhbEZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGRldGVybWluZSB0aGUgbG9jYWwgZmlsZSBmb3IgJHtmaWxlTmFtZX1gKTtcbiAgICB9XG4gICAgY29uc3QgZGlzdEZpbGUgPSBqb2luKGRpc3REaXIsIGZpbGVOYW1lKTtcblxuICAgIGlmIChleGlzdHNTeW5jKGxvY2FsRmlsZSkpIHtcbiAgICAgIGF3YWl0IGNwKGxvY2FsRmlsZSwgZGlzdEZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRpc3RQYXRoID0gam9pbihkaXN0RGlyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYWluSnMpO1xuXG4gIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gIGNvbnN0IHBsdWdpbk5hbWUgPSBwYWNrYWdlSnNvbi5uYW1lID8/ICcodW5rbm93biknO1xuXG4gIGNvbnN0IGJ1aWxkT3B0aW9uczogQnVpbGRPcHRpb25zID0ge1xuICAgIGJhbm5lcjoge1xuICAgICAganM6IGJhbm5lclxuICAgIH0sXG4gICAgYnVuZGxlOiB0cnVlLFxuICAgIGVudHJ5UG9pbnRzOiBbcmVzb2x2ZVBhdGhGcm9tUm9vdChqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlNyYywgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFpblRzKSkgPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignQ291bGQgbm90IGRldGVybWluZSB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBwbHVnaW4nKSldLFxuICAgIGV4dGVybmFsOiBbXG4gICAgICAnb2JzaWRpYW4nLFxuICAgICAgJ2VsZWN0cm9uJyxcbiAgICAgICdAY29kZW1pcnJvci9hdXRvY29tcGxldGUnLFxuICAgICAgJ0Bjb2RlbWlycm9yL2NvbGxhYicsXG4gICAgICAnQGNvZGVtaXJyb3IvY29tbWFuZHMnLFxuICAgICAgJ0Bjb2RlbWlycm9yL2xhbmd1YWdlJyxcbiAgICAgICdAY29kZW1pcnJvci9saW50JyxcbiAgICAgICdAY29kZW1pcnJvci9zZWFyY2gnLFxuICAgICAgJ0Bjb2RlbWlycm9yL3N0YXRlJyxcbiAgICAgICdAY29kZW1pcnJvci92aWV3JyxcbiAgICAgICdAbGV6ZXIvY29tbW9uJyxcbiAgICAgICdAbGV6ZXIvaGlnaGxpZ2h0JyxcbiAgICAgICdAbGV6ZXIvbHInLFxuICAgICAgJ2VzYnVpbGQnLFxuICAgICAgJ2VzbGludCcsXG4gICAgICAuLi5idWlsdGluTW9kdWxlc1xuICAgIF0sXG4gICAgZm9ybWF0OiAnY2pzJyxcbiAgICBsb2dMZXZlbDogJ2luZm8nLFxuICAgIG1pbmlmeTogaXNQcm9kdWN0aW9uQnVpbGQsXG4gICAgb3V0ZmlsZTogZGlzdFBhdGgsXG4gICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICBwbHVnaW5zOiBbXG4gICAgICBwcmVwcm9jZXNzUGx1Z2luKCksXG4gICAgICBmaXhFc21QbHVnaW4oKSxcbiAgICAgIGZpeFNvdXJjZU1hcHNQbHVnaW4oaXNQcm9kdWN0aW9uQnVpbGQsIGRpc3RQYXRoLCBwbHVnaW5OYW1lKSxcbiAgICAgIC4uLmN1c3RvbUVzYnVpbGRQbHVnaW5zLFxuICAgICAgY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luKGlzUHJvZHVjdGlvbkJ1aWxkLCBkaXN0RGlyLCBvYnNpZGlhbkNvbmZpZ0RpciwgcGx1Z2luTmFtZSlcbiAgICBdLFxuICAgIHNvdXJjZW1hcDogaXNQcm9kdWN0aW9uQnVpbGQgPyBmYWxzZSA6ICdpbmxpbmUnLFxuICAgIHRhcmdldDogJ2VzbmV4dCcsXG4gICAgdHJlZVNoYWtpbmc6IHRydWVcbiAgfTtcblxuICBjb25zdCBidWlsZENvbnRleHQgPSBhd2FpdCBjb250ZXh0KGJ1aWxkT3B0aW9ucyk7XG4gIHJldHVybiBhd2FpdCBpbnZva2VFc2J1aWxkKGJ1aWxkQ29udGV4dCwgaXNQcm9kdWN0aW9uQnVpbGQpO1xufVxuXG4vKipcbiAqIEludm9rZXMgdGhlIGJ1aWxkIHByb2Nlc3Mgd2l0aCB0aGUgcHJvdmlkZWQgYnVpbGQgY29udGV4dC5cbiAqXG4gKiBAcGFyYW0gYnVpbGRDb250ZXh0IC0gVGhlIGJ1aWxkIGNvbnRleHQgZ2VuZXJhdGVkIGJ5IGVzYnVpbGQuXG4gKiBAcGFyYW0gaXNQcm9kdWN0aW9uQnVpbGQgLSBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBidWlsZCBpcyBhIHByb2R1Y3Rpb24gYnVpbGQuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGBUYXNrUmVzdWx0YCBpbmRpY2F0aW5nIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIGJ1aWxkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW52b2tlRXNidWlsZChidWlsZENvbnRleHQ6IEJ1aWxkQ29udGV4dCwgaXNQcm9kdWN0aW9uQnVpbGQ6IGJvb2xlYW4pOiBQcm9taXNlPENsaVRhc2tSZXN1bHQ+IHtcbiAgaWYgKGlzUHJvZHVjdGlvbkJ1aWxkKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYnVpbGRDb250ZXh0LnJlYnVpbGQoKTtcbiAgICBjb25zdCBpc1N1Y2Nlc3MgPSByZXN1bHQuZXJyb3JzLmxlbmd0aCA9PSAwICYmIHJlc3VsdC53YXJuaW5ncy5sZW5ndGggPT0gMDtcbiAgICByZXR1cm4gQ2xpVGFza1Jlc3VsdC5TdWNjZXNzKGlzU3VjY2Vzcyk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgYnVpbGRDb250ZXh0LndhdGNoKCk7XG4gICAgcmV0dXJuIENsaVRhc2tSZXN1bHQuRG9Ob3RFeGl0KCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtQkEsb0JBQXVCO0FBQ3ZCLHFCQUF3QjtBQUV4QixtQkFBZ0M7QUFDaEMscUNBQXdDO0FBQ3hDLGtCQUFxQjtBQUNyQixtQkFBOEI7QUFDOUIsc0JBQThCO0FBQzlCLHlCQVFPO0FBQ1AsaUJBQWdDO0FBQ2hDLGtCQUFvQztBQUNwQywrQ0FBa0Q7QUFDbEQsMEJBQTZCO0FBQzdCLGlDQUFvQztBQUNwQyw4QkFBaUM7QUF6Q2pDLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLFdBQVc7QUFBQSxFQUNYLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUF5Q08sSUFBSyxZQUFMLGtCQUFLQSxlQUFMO0FBRUwsRUFBQUEsc0JBQUE7QUFFQSxFQUFBQSxzQkFBQTtBQUpVLFNBQUFBO0FBQUEsR0FBQTtBQVVMLE1BQU0sU0FBUztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb0N0QixlQUFzQixvQkFBb0IsU0FBNkQ7QUFDckcsWUFBTSw0QkFBYztBQUNwQiw0QkFBTztBQUNQLFFBQU0sMkJBQTJCLDJCQUFRO0FBRXpDLFFBQU07QUFBQSxJQUNKLHVCQUF1QixDQUFDO0FBQUEsSUFDeEI7QUFBQSxJQUNBLG1CQUFtQjtBQUFBLEVBQ3JCLElBQUk7QUFF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
167
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdHMvZXNidWlsZC9PYnNpZGlhblBsdWdpbkJ1aWxkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzWydwcm9jZXNzJ10gPz8ge1xuICBcImJyb3dzZXJcIjogdHJ1ZSxcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIE9ic2lkaWFuUGx1Z2luQnVpbGRlclxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSB0byBidWlsZCBhbmQgYnVuZGxlIGFuIE9ic2lkaWFuIHBsdWdpbiB1c2luZyBlc2J1aWxkLlxuICogSXQgaW5jbHVkZXMgZnVuY3Rpb25zIHRvIGhhbmRsZSB0aGUgYnVpbGQgcHJvY2VzcyBiYXNlZCBvbiBkaWZmZXJlbnQgYnVpbGQgbW9kZXMgKGRldmVsb3BtZW50IG9yIHByb2R1Y3Rpb24pLFxuICogYW5kIGl0IHNldHMgdXAgdmFyaW91cyBlc2J1aWxkIHBsdWdpbnMgdG8gcHJlcHJvY2VzcywgbGludCwgZml4IHNvdXJjZSBtYXBzLCBhbmQgY29weSBmaWxlcyB0byB0aGUgT2JzaWRpYW4gcGx1Z2lucyBmb2xkZXIuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBCdWlsZENvbnRleHQsXG4gIEJ1aWxkT3B0aW9ucyxcbiAgUGx1Z2luXG59IGZyb20gJ2VzYnVpbGQnO1xuXG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICdkb3RlbnYnO1xuaW1wb3J0IHsgY29udGV4dCB9IGZyb20gJ2VzYnVpbGQnO1xuXG5pbXBvcnQgeyB0aHJvd0V4cHJlc3Npb24gfSBmcm9tICcuLi8uLi9FcnJvci50cyc7XG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4uLy4uL29ic2lkaWFuL1BsdWdpbi9PYnNpZGlhblBsdWdpblJlcG9QYXRocy50cyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnLi4vLi4vUGF0aC50cyc7XG5pbXBvcnQgeyBidWlsZFZhbGlkYXRlIH0gZnJvbSAnLi4vYnVpbGQudHMnO1xuaW1wb3J0IHsgQ2xpVGFza1Jlc3VsdCB9IGZyb20gJy4uL0NsaVV0aWxzLnRzJztcbmltcG9ydCB7XG4gIGJ1aWx0aW5Nb2R1bGVzLFxuICBjcCxcbiAgZXhpc3RzU3luYyxcbiAgbWtkaXIsXG4gIHByb2Nlc3MsXG4gIHJtLFxuICB3cml0ZUZpbGVcbn0gZnJvbSAnLi4vTm9kZU1vZHVsZXMudHMnO1xuaW1wb3J0IHsgcmVhZFBhY2thZ2VKc29uIH0gZnJvbSAnLi4vTnBtLnRzJztcbmltcG9ydCB7IHJlc29sdmVQYXRoRnJvbVJvb3QgfSBmcm9tICcuLi9Sb290LnRzJztcbmltcG9ydCB7IGNvcHlUb09ic2lkaWFuUGx1Z2luc0ZvbGRlclBsdWdpbiB9IGZyb20gJy4vY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luLnRzJztcbmltcG9ydCB7IGZpeEVzbVBsdWdpbiB9IGZyb20gJy4vZml4RXNtUGx1Z2luLnRzJztcbmltcG9ydCB7IGZpeFNvdXJjZU1hcHNQbHVnaW4gfSBmcm9tICcuL2ZpeFNvdXJjZU1hcHNQbHVnaW4udHMnO1xuaW1wb3J0IHsgcHJlcHJvY2Vzc1BsdWdpbiB9IGZyb20gJy4vcHJlcHJvY2Vzc1BsdWdpbi50cyc7XG5pbXBvcnQgeyB3YXRjaENzc0NoYW5nZXNQbHVnaW4gfSBmcm9tICcuL3dhdGNoQ3NzQ2hhbmdlc1BsdWdpbi50cyc7XG5cbi8qKlxuICogRW51bWVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBidWlsZCBtb2Rlcy5cbiAqL1xuZXhwb3J0IGVudW0gQnVpbGRNb2RlIHtcbiAgLyoqIERldmVsb3BtZW50IG1vZGUgZm9yIGJ1aWxkaW5nIHRoZSBwbHVnaW4gKi9cbiAgRGV2ZWxvcG1lbnQsXG4gIC8qKiBQcm9kdWN0aW9uIG1vZGUgZm9yIGJ1aWxkaW5nIHRoZSBwbHVnaW4gKi9cbiAgUHJvZHVjdGlvblxufVxuXG4vKipcbiAqIEJhbm5lciB0ZXh0IHRvIGJlIGluY2x1ZGVkIGF0IHRoZSB0b3Agb2YgdGhlIGdlbmVyYXRlZCBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGJhbm5lciA9IGAvKlxuVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgRVNCVUlMRFxuaWYgeW91IHdhbnQgdG8gdmlldyB0aGUgc291cmNlLCBwbGVhc2UgdmlzaXQgdGhlIGdpdGh1YiByZXBvc2l0b3J5IG9mIHRoaXMgcGx1Z2luXG4qL1xuYDtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBidWlsZGluZyBhbiBPYnNpZGlhbiBwbHVnaW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRPYnNpZGlhblBsdWdpbk9wdGlvbnMge1xuICAvKipcbiAgICogQ3VzdG9tIGVzYnVpbGQgcGx1Z2lucyB0byBiZSB1c2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy5cbiAgICovXG4gIGN1c3RvbUVzYnVpbGRQbHVnaW5zPzogUGx1Z2luW107XG5cbiAgLyoqXG4gICAqIFRoZSBidWlsZCBtb2RlLCBlaXRoZXIgRGV2ZWxvcG1lbnQgb3IgUHJvZHVjdGlvblxuICAgKi9cbiAgbW9kZTogQnVpbGRNb2RlO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGZvciBPYnNpZGlhbiBjb25maWd1cmF0aW9uLiBEZWZhdWx0cyB0byB0aGUgYE9CU0lESUFOX0NPTkZJR19ESVJgIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgb2JzaWRpYW5Db25maWdEaXI/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBPYnNpZGlhblBsdWdpbkJ1aWxkZXJFbnYge1xuICBPQlNJRElBTl9DT05GSUdfRElSOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBPYnNpZGlhbiBwbHVnaW4gYmFzZWQgb24gdGhlIHNwZWNpZmllZCBtb2RlIGFuZCBjb25maWd1cmF0aW9uIGRpcmVjdG9yeS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBidWlsZGluZyB0aGUgcGx1Z2luLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBgVGFza1Jlc3VsdGAgaW5kaWNhdGluZyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBidWlsZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkT2JzaWRpYW5QbHVnaW4ob3B0aW9uczogQnVpbGRPYnNpZGlhblBsdWdpbk9wdGlvbnMpOiBQcm9taXNlPENsaVRhc2tSZXN1bHQ+IHtcbiAgYXdhaXQgYnVpbGRWYWxpZGF0ZSgpO1xuICBjb25maWcoKTtcbiAgY29uc3Qgb2JzaWRpYW5QbHVnaW5CdWlsZGVyRW52ID0gcHJvY2Vzcy5lbnYgYXMgUGFydGlhbDxPYnNpZGlhblBsdWdpbkJ1aWxkZXJFbnY+O1xuXG4gIGNvbnN0IHtcbiAgICBjdXN0b21Fc2J1aWxkUGx1Z2lucyA9IFtdLFxuICAgIG1vZGUsXG4gICAgb2JzaWRpYW5Db25maWdEaXI6IF9vYnNpZGlhbkNvbmZpZ0RpclxuICB9ID0gb3B0aW9ucztcblxuICBjb25zdCBvYnNpZGlhbkNvbmZpZ0RpciA9IF9vYnNpZGlhbkNvbmZpZ0RpciA/PyBvYnNpZGlhblBsdWdpbkJ1aWxkZXJFbnYuT0JTSURJQU5fQ09ORklHX0RJUiA/PyAnJztcbiAgY29uc3QgaXNQcm9kdWN0aW9uQnVpbGQgPSBtb2RlID09PSBCdWlsZE1vZGUuUHJvZHVjdGlvbjtcblxuICBjb25zdCBkaXN0RGlyID0gcmVzb2x2ZVBhdGhGcm9tUm9vdChpc1Byb2R1Y3Rpb25CdWlsZCA/IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZCA6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3REZXYpO1xuICBpZiAoIWRpc3REaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGRpc3QgZGlyZWN0b3J5Jyk7XG4gIH1cblxuICBpZiAoZXhpc3RzU3luYyhkaXN0RGlyKSkge1xuICAgIGF3YWl0IHJtKGRpc3REaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB9XG4gIGF3YWl0IG1rZGlyKGRpc3REaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGRpc3RGaWxlTmFtZXMgPSBbXG4gICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uLFxuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlN0eWxlc0Nzc1xuICBdO1xuICBpZiAoIWlzUHJvZHVjdGlvbkJ1aWxkKSB7XG4gICAgYXdhaXQgd3JpdGVGaWxlKGpvaW4oZGlzdERpciwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuSG90UmVsb2FkKSwgJycsICd1dGYtOCcpO1xuICB9XG5cbiAgZm9yIChjb25zdCBmaWxlTmFtZSBvZiBkaXN0RmlsZU5hbWVzKSB7XG4gICAgY29uc3QgbG9jYWxGaWxlID0gcmVzb2x2ZVBhdGhGcm9tUm9vdChmaWxlTmFtZSk7XG4gICAgaWYgKCFsb2NhbEZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGRldGVybWluZSB0aGUgbG9jYWwgZmlsZSBmb3IgJHtmaWxlTmFtZX1gKTtcbiAgICB9XG4gICAgY29uc3QgZGlzdEZpbGUgPSBqb2luKGRpc3REaXIsIGZpbGVOYW1lKTtcblxuICAgIGlmIChleGlzdHNTeW5jKGxvY2FsRmlsZSkpIHtcbiAgICAgIGF3YWl0IGNwKGxvY2FsRmlsZSwgZGlzdEZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRpc3RQYXRoID0gam9pbihkaXN0RGlyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYWluSnMpO1xuXG4gIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gIGNvbnN0IHBsdWdpbk5hbWUgPSBwYWNrYWdlSnNvbi5uYW1lID8/ICcodW5rbm93biknO1xuXG4gIGNvbnN0IGJ1aWxkT3B0aW9uczogQnVpbGRPcHRpb25zID0ge1xuICAgIGJhbm5lcjoge1xuICAgICAganM6IGJhbm5lclxuICAgIH0sXG4gICAgYnVuZGxlOiB0cnVlLFxuICAgIGVudHJ5UG9pbnRzOiBbcmVzb2x2ZVBhdGhGcm9tUm9vdChqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlNyYywgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFpblRzKSkgPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignQ291bGQgbm90IGRldGVybWluZSB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBwbHVnaW4nKSldLFxuICAgIGV4dGVybmFsOiBbXG4gICAgICAnb2JzaWRpYW4nLFxuICAgICAgJ2VsZWN0cm9uJyxcbiAgICAgICdAY29kZW1pcnJvci9hdXRvY29tcGxldGUnLFxuICAgICAgJ0Bjb2RlbWlycm9yL2NvbGxhYicsXG4gICAgICAnQGNvZGVtaXJyb3IvY29tbWFuZHMnLFxuICAgICAgJ0Bjb2RlbWlycm9yL2xhbmd1YWdlJyxcbiAgICAgICdAY29kZW1pcnJvci9saW50JyxcbiAgICAgICdAY29kZW1pcnJvci9zZWFyY2gnLFxuICAgICAgJ0Bjb2RlbWlycm9yL3N0YXRlJyxcbiAgICAgICdAY29kZW1pcnJvci92aWV3JyxcbiAgICAgICdAbGV6ZXIvY29tbW9uJyxcbiAgICAgICdAbGV6ZXIvaGlnaGxpZ2h0JyxcbiAgICAgICdAbGV6ZXIvbHInLFxuICAgICAgJ2VzYnVpbGQnLFxuICAgICAgJ2VzbGludCcsXG4gICAgICAuLi5idWlsdGluTW9kdWxlc1xuICAgIF0sXG4gICAgZm9ybWF0OiAnY2pzJyxcbiAgICBsb2dMZXZlbDogJ2luZm8nLFxuICAgIG1pbmlmeTogaXNQcm9kdWN0aW9uQnVpbGQsXG4gICAgb3V0ZmlsZTogZGlzdFBhdGgsXG4gICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICBwbHVnaW5zOiBbXG4gICAgICBwcmVwcm9jZXNzUGx1Z2luKCksXG4gICAgICB3YXRjaENzc0NoYW5nZXNQbHVnaW4oKSxcbiAgICAgIGZpeEVzbVBsdWdpbigpLFxuICAgICAgZml4U291cmNlTWFwc1BsdWdpbihpc1Byb2R1Y3Rpb25CdWlsZCwgZGlzdFBhdGgsIHBsdWdpbk5hbWUpLFxuICAgICAgLi4uY3VzdG9tRXNidWlsZFBsdWdpbnMsXG4gICAgICBjb3B5VG9PYnNpZGlhblBsdWdpbnNGb2xkZXJQbHVnaW4oaXNQcm9kdWN0aW9uQnVpbGQsIGRpc3REaXIsIG9ic2lkaWFuQ29uZmlnRGlyLCBwbHVnaW5OYW1lKVxuICAgIF0sXG4gICAgc291cmNlbWFwOiBpc1Byb2R1Y3Rpb25CdWlsZCA/IGZhbHNlIDogJ2lubGluZScsXG4gICAgdGFyZ2V0OiAnZXNuZXh0JyxcbiAgICB0cmVlU2hha2luZzogdHJ1ZVxuICB9O1xuXG4gIGNvbnN0IGJ1aWxkQ29udGV4dCA9IGF3YWl0IGNvbnRleHQoYnVpbGRPcHRpb25zKTtcbiAgcmV0dXJuIGF3YWl0IGludm9rZUVzYnVpbGQoYnVpbGRDb250ZXh0LCBpc1Byb2R1Y3Rpb25CdWlsZCk7XG59XG5cbi8qKlxuICogSW52b2tlcyB0aGUgYnVpbGQgcHJvY2VzcyB3aXRoIHRoZSBwcm92aWRlZCBidWlsZCBjb250ZXh0LlxuICpcbiAqIEBwYXJhbSBidWlsZENvbnRleHQgLSBUaGUgYnVpbGQgY29udGV4dCBnZW5lcmF0ZWQgYnkgZXNidWlsZC5cbiAqIEBwYXJhbSBpc1Byb2R1Y3Rpb25CdWlsZCAtIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGJ1aWxkIGlzIGEgcHJvZHVjdGlvbiBidWlsZC5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgYFRhc2tSZXN1bHRgIGluZGljYXRpbmcgdGhlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB0aGUgYnVpbGQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnZva2VFc2J1aWxkKGJ1aWxkQ29udGV4dDogQnVpbGRDb250ZXh0LCBpc1Byb2R1Y3Rpb25CdWlsZDogYm9vbGVhbik6IFByb21pc2U8Q2xpVGFza1Jlc3VsdD4ge1xuICBpZiAoaXNQcm9kdWN0aW9uQnVpbGQpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBidWlsZENvbnRleHQucmVidWlsZCgpO1xuICAgIGNvbnN0IGlzU3VjY2VzcyA9IHJlc3VsdC5lcnJvcnMubGVuZ3RoID09IDAgJiYgcmVzdWx0Lndhcm5pbmdzLmxlbmd0aCA9PSAwO1xuICAgIHJldHVybiBDbGlUYXNrUmVzdWx0LlN1Y2Nlc3MoaXNTdWNjZXNzKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBidWlsZENvbnRleHQud2F0Y2goKTtcbiAgICByZXR1cm4gQ2xpVGFza1Jlc3VsdC5Eb05vdEV4aXQoKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW1CQSxvQkFBdUI7QUFDdkIscUJBQXdCO0FBRXhCLG1CQUFnQztBQUNoQyxxQ0FBd0M7QUFDeEMsa0JBQXFCO0FBQ3JCLG1CQUE4QjtBQUM5QixzQkFBOEI7QUFDOUIseUJBUU87QUFDUCxpQkFBZ0M7QUFDaEMsa0JBQW9DO0FBQ3BDLCtDQUFrRDtBQUNsRCwwQkFBNkI7QUFDN0IsaUNBQW9DO0FBQ3BDLDhCQUFpQztBQUNqQyxtQ0FBc0M7QUExQ3RDLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLFdBQVc7QUFBQSxFQUNYLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUEwQ08sSUFBSyxZQUFMLGtCQUFLQSxlQUFMO0FBRUwsRUFBQUEsc0JBQUE7QUFFQSxFQUFBQSxzQkFBQTtBQUpVLFNBQUFBO0FBQUEsR0FBQTtBQVVMLE1BQU0sU0FBUztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb0N0QixlQUFzQixvQkFBb0IsU0FBNkQ7QUFDckcsWUFBTSw0QkFBYztB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
@@ -43,7 +43,8 @@ __export(esbuild_exports, {
43
43
  fixEsmPlugin: () => fixEsmPlugin,
44
44
  fixSourceMapsPlugin: () => fixSourceMapsPlugin,
45
45
  preprocessPlugin: () => preprocessPlugin,
46
- renameToCjsPlugin: () => renameToCjsPlugin
46
+ renameToCjsPlugin: () => renameToCjsPlugin,
47
+ watchCssChangesPlugin: () => watchCssChangesPlugin
47
48
  });
48
49
  module.exports = __toCommonJS(esbuild_exports);
49
50
  var copyToObsidianPluginsFolderPlugin = __toESM(__extractDefault(require('./copyToObsidianPluginsFolderPlugin.cjs')), 1);
@@ -53,6 +54,7 @@ var fixSourceMapsPlugin = __toESM(__extractDefault(require('./fixSourceMapsPlugi
53
54
  var ObsidianPluginBuilder = __toESM(__extractDefault(require('./ObsidianPluginBuilder.cjs')), 1);
54
55
  var preprocessPlugin = __toESM(__extractDefault(require('./preprocessPlugin.cjs')), 1);
55
56
  var renameToCjsPlugin = __toESM(__extractDefault(require('./renameToCjsPlugin.cjs')), 1);
57
+ var watchCssChangesPlugin = __toESM(__extractDefault(require('./watchCssChangesPlugin.cjs')), 1);
56
58
  var __process = globalThis["process"] ?? {
57
59
  "browser": true,
58
60
  "cwd": () => "/",
@@ -67,6 +69,7 @@ var __process = globalThis["process"] ?? {
67
69
  fixEsmPlugin,
68
70
  fixSourceMapsPlugin,
69
71
  preprocessPlugin,
70
- renameToCjsPlugin
72
+ renameToCjsPlugin,
73
+ watchCssChangesPlugin
71
74
  });
72
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdHMvZXNidWlsZC9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiYnJvd3NlclwiOiB0cnVlLFxuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzIGNvcHlUb09ic2lkaWFuUGx1Z2luc0ZvbGRlclBsdWdpbiBmcm9tICcuL2NvcHlUb09ic2lkaWFuUGx1Z2luc0ZvbGRlclBsdWdpbi50cyc7XG5leHBvcnQgKiBhcyBEZXBlbmRlbmN5IGZyb20gJy4vRGVwZW5kZW5jeS50cyc7XG5leHBvcnQgKiBhcyBmaXhFc21QbHVnaW4gZnJvbSAnLi9maXhFc21QbHVnaW4udHMnO1xuZXhwb3J0ICogYXMgZml4U291cmNlTWFwc1BsdWdpbiBmcm9tICcuL2ZpeFNvdXJjZU1hcHNQbHVnaW4udHMnO1xuZXhwb3J0ICogYXMgT2JzaWRpYW5QbHVnaW5CdWlsZGVyIGZyb20gJy4vT2JzaWRpYW5QbHVnaW5CdWlsZGVyLnRzJztcbmV4cG9ydCAqIGFzIHByZXByb2Nlc3NQbHVnaW4gZnJvbSAnLi9wcmVwcm9jZXNzUGx1Z2luLnRzJztcbmV4cG9ydCAqIGFzIHJlbmFtZVRvQ2pzUGx1Z2luIGZyb20gJy4vcmVuYW1lVG9DanNQbHVnaW4udHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSx3Q0FBbUQ7QUFDbkQsaUJBQTRCO0FBQzVCLG1CQUE4QjtBQUM5QiwwQkFBcUM7QUFDckMsNEJBQXVDO0FBQ3ZDLHVCQUFrQztBQUNsQyx3QkFBbUM7QUFkbkMsSUFBSSxZQUFZLFdBQVcsU0FBUyxLQUFLO0FBQUEsRUFDdkMsV0FBVztBQUFBLEVBQ1gsT0FBTyxNQUFJO0FBQUEsRUFDWCxPQUFPLENBQUM7QUFBQSxFQUNSLFlBQVk7QUFDZDsiLAogICJuYW1lcyI6IFtdCn0K
75
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdHMvZXNidWlsZC9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiYnJvd3NlclwiOiB0cnVlLFxuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzIGNvcHlUb09ic2lkaWFuUGx1Z2luc0ZvbGRlclBsdWdpbiBmcm9tICcuL2NvcHlUb09ic2lkaWFuUGx1Z2luc0ZvbGRlclBsdWdpbi50cyc7XG5leHBvcnQgKiBhcyBEZXBlbmRlbmN5IGZyb20gJy4vRGVwZW5kZW5jeS50cyc7XG5leHBvcnQgKiBhcyBmaXhFc21QbHVnaW4gZnJvbSAnLi9maXhFc21QbHVnaW4udHMnO1xuZXhwb3J0ICogYXMgZml4U291cmNlTWFwc1BsdWdpbiBmcm9tICcuL2ZpeFNvdXJjZU1hcHNQbHVnaW4udHMnO1xuZXhwb3J0ICogYXMgT2JzaWRpYW5QbHVnaW5CdWlsZGVyIGZyb20gJy4vT2JzaWRpYW5QbHVnaW5CdWlsZGVyLnRzJztcbmV4cG9ydCAqIGFzIHByZXByb2Nlc3NQbHVnaW4gZnJvbSAnLi9wcmVwcm9jZXNzUGx1Z2luLnRzJztcbmV4cG9ydCAqIGFzIHJlbmFtZVRvQ2pzUGx1Z2luIGZyb20gJy4vcmVuYW1lVG9DanNQbHVnaW4udHMnO1xuZXhwb3J0ICogYXMgd2F0Y2hDc3NDaGFuZ2VzUGx1Z2luIGZyb20gJy4vd2F0Y2hDc3NDaGFuZ2VzUGx1Z2luLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSx3Q0FBbUQ7QUFDbkQsaUJBQTRCO0FBQzVCLG1CQUE4QjtBQUM5QiwwQkFBcUM7QUFDckMsNEJBQXVDO0FBQ3ZDLHVCQUFrQztBQUNsQyx3QkFBbUM7QUFDbkMsNEJBQXVDO0FBZnZDLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLFdBQVc7QUFBQSxFQUNYLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -5,3 +5,4 @@ export * as fixSourceMapsPlugin from './fixSourceMapsPlugin.ts';
5
5
  export * as ObsidianPluginBuilder from './ObsidianPluginBuilder.ts';
6
6
  export * as preprocessPlugin from './preprocessPlugin.ts';
7
7
  export * as renameToCjsPlugin from './renameToCjsPlugin.ts';
8
+ export * as watchCssChangesPlugin from './watchCssChangesPlugin.ts';
@@ -0,0 +1,57 @@
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 __extractDefault(module){return module&&module.__esModule&&module.default?module.default:module}
7
+
8
+ (function patchRequireEsmDefault(){const __require=require;require=Object.assign(id=>{const module=__require(id)??{};return __extractDefault(module)},__require)})()
9
+
10
+ "use strict";
11
+ var __defProp = Object.defineProperty;
12
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
+ var __getOwnPropNames = Object.getOwnPropertyNames;
14
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
15
+ var __export = (target, all) => {
16
+ for (var name in all)
17
+ __defProp(target, name, { get: all[name], enumerable: true });
18
+ };
19
+ var __copyProps = (to, from, except, desc) => {
20
+ if (from && typeof from === "object" || typeof from === "function") {
21
+ for (let key of __getOwnPropNames(from))
22
+ if (!__hasOwnProp.call(to, key) && key !== except)
23
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
24
+ }
25
+ return to;
26
+ };
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var watchCssChangesPlugin_exports = {};
29
+ __export(watchCssChangesPlugin_exports, {
30
+ watchCssChangesPlugin: () => watchCssChangesPlugin
31
+ });
32
+ module.exports = __toCommonJS(watchCssChangesPlugin_exports);
33
+ var import_ObsidianPluginRepoPaths = require('../../obsidian/Plugin/ObsidianPluginRepoPaths.cjs');
34
+ var import_NodeModules = require('../NodeModules.cjs');
35
+ var import_Root = require('../Root.cjs');
36
+ function watchCssChangesPlugin() {
37
+ const stylesCssPath = (0, import_Root.resolvePathFromRootSafe)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.StylesCss);
38
+ const watchFiles = [];
39
+ if ((0, import_NodeModules.existsSync)(stylesCssPath)) {
40
+ watchFiles.push(stylesCssPath);
41
+ }
42
+ return {
43
+ name: "watch-css-changes",
44
+ setup(build) {
45
+ build.onLoad({ filter: /\.*/, namespace: "watch-css-changes" }, () => {
46
+ return {
47
+ watchFiles
48
+ };
49
+ });
50
+ }
51
+ };
52
+ }
53
+ // Annotate the CommonJS export names for ESM import in node:
54
+ 0 && (module.exports = {
55
+ watchCssChangesPlugin
56
+ });
57
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdHMvZXNidWlsZC93YXRjaENzc0NoYW5nZXNQbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0eXBlIHtcbiAgT25Mb2FkUmVzdWx0LFxuICBQbHVnaW5cbn0gZnJvbSAnZXNidWlsZCc7XG5cbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vLi4vb2JzaWRpYW4vUGx1Z2luL09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLnRzJztcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICcuLi9Ob2RlTW9kdWxlcy50cyc7XG5pbXBvcnQgeyByZXNvbHZlUGF0aEZyb21Sb290U2FmZSB9IGZyb20gJy4uL1Jvb3QudHMnO1xuXG4vKipcbiAqIEByZXR1cm5zIEEgcGx1Z2luIHRoYXQgd2F0Y2hlcyBmb3IgY2hhbmdlcyB0byBDU1MgZmlsZXMgYW5kIHJlYnVpbGRzIHRoZSBwbHVnaW4gd2hlbiB0aGV5IGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhdGNoQ3NzQ2hhbmdlc1BsdWdpbigpOiBQbHVnaW4ge1xuICBjb25zdCBzdHlsZXNDc3NQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuU3R5bGVzQ3NzKTtcbiAgY29uc3Qgd2F0Y2hGaWxlczogc3RyaW5nW10gPSBbXTtcbiAgaWYgKGV4aXN0c1N5bmMoc3R5bGVzQ3NzUGF0aCkpIHtcbiAgICB3YXRjaEZpbGVzLnB1c2goc3R5bGVzQ3NzUGF0aCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICd3YXRjaC1jc3MtY2hhbmdlcycsXG4gICAgc2V0dXAoYnVpbGQpOiB2b2lkIHtcbiAgICAgIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjogL1xcLiovLCBuYW1lc3BhY2U6ICd3YXRjaC1jc3MtY2hhbmdlcycgfSwgKCk6IE9uTG9hZFJlc3VsdCA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgd2F0Y2hGaWxlc1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBLHFDQUF3QztBQUN4Qyx5QkFBMkI7QUFDM0Isa0JBQXdDO0FBS2pDLFNBQVMsd0JBQWdDO0FBQzlDLFFBQU0sb0JBQWdCLHFDQUF3Qix1REFBd0IsU0FBUztBQUMvRSxRQUFNLGFBQXVCLENBQUM7QUFDOUIsVUFBSSwrQkFBVyxhQUFhLEdBQUc7QUFDN0IsZUFBVyxLQUFLLGFBQWE7QUFBQSxFQUMvQjtBQUVBLFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLE1BQU0sT0FBYTtBQUNqQixZQUFNLE9BQU8sRUFBRSxRQUFRLE9BQU8sV0FBVyxvQkFBb0IsR0FBRyxNQUFvQjtBQUNsRixlQUFPO0FBQUEsVUFDTDtBQUFBLFFBQ0Y7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,5 @@
1
+ import type { Plugin } from 'esbuild';
2
+ /**
3
+ * @returns A plugin that watches for changes to CSS files and rebuilds the plugin when they change.
4
+ */
5
+ export declare function watchCssChangesPlugin(): Plugin;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-dev-utils",
3
- "version": "14.4.0",
3
+ "version": "14.4.1-beta.10",
4
4
  "description": "This is the collection of useful functions that you can use for your Obsidian plugin development",
5
5
  "keywords": [
6
6
  "obsidian"
Binary file