obsidian-dev-utils 22.1.0 → 22.1.1-beta.2
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 +11 -0
- package/dist/lib/cjs/Async.cjs +2 -2
- package/dist/lib/cjs/Library.cjs +1 -1
- package/dist/lib/cjs/Object.cjs +1 -1
- package/dist/lib/cjs/Object.d.cts +6 -0
- package/dist/lib/cjs/codemirror/StateFieldSpec.cjs +1 -1
- package/dist/lib/cjs/codemirror/StateFieldSpec.d.cts +4 -4
- package/dist/lib/cjs/obsidian/Modals/Prompt.cjs +1 -1
- package/dist/lib/cjs/obsidian/Modals/Prompt.d.cts +1 -1
- package/dist/lib/cjs/obsidian/Plugin/PluginBase.cjs +9 -35
- package/dist/lib/cjs/obsidian/Plugin/PluginBase.d.cts +10 -30
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.cjs +161 -0
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.d.cts +41 -0
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.cjs +34 -48
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.d.cts +13 -32
- package/dist/lib/cjs/obsidian/Plugin/index.cjs +4 -7
- package/dist/lib/cjs/obsidian/Plugin/index.d.cts +1 -2
- package/dist/lib/cjs/obsidian/Vault.cjs +2 -2
- package/dist/lib/esm/Async.mjs +2 -2
- package/dist/lib/esm/Library.mjs +1 -1
- package/dist/lib/esm/Object.d.mts +6 -0
- package/dist/lib/esm/Object.mjs +1 -1
- package/dist/lib/esm/codemirror/StateFieldSpec.d.mts +4 -4
- package/dist/lib/esm/obsidian/Modals/Prompt.d.mts +1 -1
- package/dist/lib/esm/obsidian/Modals/Prompt.mjs +1 -1
- package/dist/lib/esm/obsidian/Plugin/PluginBase.d.mts +10 -30
- package/dist/lib/esm/obsidian/Plugin/PluginBase.mjs +9 -35
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.d.mts +41 -0
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.mjs +137 -0
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.d.mts +13 -32
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.mjs +35 -52
- package/dist/lib/esm/obsidian/Plugin/index.d.mts +1 -2
- package/dist/lib/esm/obsidian/Plugin/index.mjs +3 -5
- package/dist/lib/esm/obsidian/Vault.mjs +2 -2
- package/obsidian/Plugin/{PluginSettingsBase → PluginSettingsManagerBase}/package.json +3 -3
- package/package.json +7 -7
- package/dist/lib/cjs/obsidian/Plugin/EmptySettings.cjs +0 -38
- package/dist/lib/cjs/obsidian/Plugin/EmptySettings.d.cts +0 -14
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsBase.cjs +0 -92
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsBase.d.cts +0 -31
- package/dist/lib/esm/obsidian/Plugin/EmptySettings.d.mts +0 -14
- package/dist/lib/esm/obsidian/Plugin/EmptySettings.mjs +0 -14
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsBase.d.mts +0 -31
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsBase.mjs +0 -68
- package/obsidian/Plugin/EmptySettings/package.json +0 -6
@@ -9,14 +9,13 @@
|
|
9
9
|
import type { PluginSettingTab } from 'obsidian';
|
10
10
|
import type { Promisable, ReadonlyDeep } from 'type-fest';
|
11
11
|
import { Plugin } from 'obsidian';
|
12
|
-
import
|
13
|
-
import type { PluginSettingsBase } from './PluginSettingsBase.cjs';
|
12
|
+
import { PluginSettingsManagerBase } from './PluginSettingsManagerBase.cjs';
|
14
13
|
/**
|
15
14
|
* Base class for creating Obsidian plugins with built-in support for settings management, error handling, and notifications.
|
16
15
|
*
|
17
16
|
* @typeParam PluginSettings - The type representing the plugin settings object.
|
18
17
|
*/
|
19
|
-
export declare abstract class PluginBase<PluginSettings extends
|
18
|
+
export declare abstract class PluginBase<PluginSettings extends object = object> extends Plugin {
|
20
19
|
/**
|
21
20
|
* Gets the AbortSignal used for aborting long-running operations.
|
22
21
|
*
|
@@ -29,14 +28,9 @@ export declare abstract class PluginBase<PluginSettings extends PluginSettingsBa
|
|
29
28
|
* @returns The readonly plugin settings.
|
30
29
|
*/
|
31
30
|
get settings(): ReadonlyDeep<PluginSettings>;
|
32
|
-
|
33
|
-
* Gets a writable copy of the plugin settings.
|
34
|
-
*
|
35
|
-
* @returns A writable copy of the plugin settings.
|
36
|
-
*/
|
37
|
-
get settingsClone(): PluginSettings;
|
31
|
+
get settingsManager(): PluginSettingsManagerBase<PluginSettings>;
|
38
32
|
private _abortSignal;
|
39
|
-
private
|
33
|
+
private _settingsManager;
|
40
34
|
private notice?;
|
41
35
|
/**
|
42
36
|
* Logs a message to the console.
|
@@ -59,26 +53,18 @@ export declare abstract class PluginBase<PluginSettings extends PluginSettingsBa
|
|
59
53
|
* Called when the plugin is loaded
|
60
54
|
*/
|
61
55
|
onload(): Promise<void>;
|
62
|
-
/**
|
63
|
-
* Saves the new plugin settings.
|
64
|
-
*
|
65
|
-
* @param newSettings - The new settings to save.
|
66
|
-
* @returns A promise that resolves when the settings are saved.
|
67
|
-
*/
|
68
|
-
saveSettings(newSettings: PluginSettings): Promise<void>;
|
69
|
-
/**
|
70
|
-
* Creates the plugin settings. This method must be implemented by subclasses.
|
71
|
-
*
|
72
|
-
* @param data - The data to create the plugin settings from.
|
73
|
-
* @returns The plugin settings.
|
74
|
-
*/
|
75
|
-
protected abstract createPluginSettings(data: unknown): PluginSettings;
|
76
56
|
/**
|
77
57
|
* Creates a plugin settings tab. This method must be implemented by subclasses.
|
78
58
|
*
|
79
59
|
* @returns The settings tab or null if not applicable.
|
80
60
|
*/
|
81
61
|
protected abstract createPluginSettingsTab(): null | PluginSettingTab;
|
62
|
+
/**
|
63
|
+
* Creates the plugin settings manager. This method must be implemented by subclasses.
|
64
|
+
*
|
65
|
+
* @returns The plugin settings manager.
|
66
|
+
*/
|
67
|
+
protected abstract createSettingsManager(): PluginSettingsManagerBase<PluginSettings>;
|
82
68
|
/**
|
83
69
|
* Called when the layout is ready. This method can be overridden by subclasses to perform actions once
|
84
70
|
* the layout is ready.
|
@@ -99,10 +85,4 @@ export declare abstract class PluginBase<PluginSettings extends PluginSettingsBa
|
|
99
85
|
* @param message - The message to display.
|
100
86
|
*/
|
101
87
|
protected showNotice(message: string): void;
|
102
|
-
/**
|
103
|
-
* Loads the plugin settings from the saved data.
|
104
|
-
*
|
105
|
-
* @returns A promise that resolves when the settings are loaded.
|
106
|
-
*/
|
107
|
-
private loadSettings;
|
108
88
|
}
|
@@ -0,0 +1,161 @@
|
|
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 initCjs(){const globalThisRecord=globalThis;globalThisRecord["__name"]??=name;const originalRequire=require;if(originalRequire&&!originalRequire.__isPatched){require=Object.assign(id=>requirePatched(id),originalRequire,{__isPatched:true})}const newFuncs={__extractDefault:__name(()=>extractDefault,"__extractDefault"),process:__name(()=>{const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};return browserProcess},"process")};for(const key of Object.keys(newFuncs)){globalThisRecord[key]??=newFuncs[key]?.()}function name(obj){return obj}__name(name,"name");function extractDefault(module){return module&&module.__esModule&&module.default?module.default:module}__name(extractDefault,"extractDefault");function requirePatched(id){const module=originalRequire?.(id);if(module){return extractDefault(module)}if(id==="process"||id==="node:process"){console.error(`Module not found: ${id}. Fake process object is returned instead.`);return globalThis.process}console.error(`Module not found: ${id}. Empty object is returned instead.`);return{}}__name(requirePatched,"requirePatched")})();
|
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 PluginSettingsManagerBase_exports = {};
|
27
|
+
__export(PluginSettingsManagerBase_exports, {
|
28
|
+
PluginSettingsManagerBase: () => PluginSettingsManagerBase
|
29
|
+
});
|
30
|
+
module.exports = __toCommonJS(PluginSettingsManagerBase_exports);
|
31
|
+
var import_obsidian = require('obsidian');
|
32
|
+
var import_Function = require('../../Function.cjs');
|
33
|
+
var import_DateTransformer = require('../../Transformers/DateTransformer.cjs');
|
34
|
+
var import_DurationTransformer = require('../../Transformers/DurationTransformer.cjs');
|
35
|
+
var import_GroupTransformer = require('../../Transformers/GroupTransformer.cjs');
|
36
|
+
var import_SkipPrivatePropertyTransformer = require('../../Transformers/SkipPrivatePropertyTransformer.cjs');
|
37
|
+
const defaultTransformer = new import_GroupTransformer.GroupTransformer([
|
38
|
+
new import_SkipPrivatePropertyTransformer.SkipPrivatePropertyTransformer(),
|
39
|
+
new import_DateTransformer.DateTransformer(),
|
40
|
+
new import_DurationTransformer.DurationTransformer()
|
41
|
+
]);
|
42
|
+
class PluginSettingsProperty {
|
43
|
+
constructor(manager, property, defaultValue) {
|
44
|
+
this.manager = manager;
|
45
|
+
this.property = property;
|
46
|
+
this.defaultValue = defaultValue;
|
47
|
+
}
|
48
|
+
validationMessage = "";
|
49
|
+
value;
|
50
|
+
clear() {
|
51
|
+
this.value = void 0;
|
52
|
+
this.validationMessage = "";
|
53
|
+
}
|
54
|
+
get() {
|
55
|
+
return this.value ?? this.defaultValue;
|
56
|
+
}
|
57
|
+
getSafe() {
|
58
|
+
return this.validationMessage ? this.defaultValue : this.get();
|
59
|
+
}
|
60
|
+
async set(value) {
|
61
|
+
this.value = value;
|
62
|
+
if (this.value !== void 0) {
|
63
|
+
this.validationMessage = await this.manager.validate(this.property, this.value) ?? "";
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
67
|
+
class PropertiesMap extends Map {
|
68
|
+
getTyped(key) {
|
69
|
+
const property = super.get(key);
|
70
|
+
if (!property) {
|
71
|
+
throw new Error(`Property ${String(key)} not found`);
|
72
|
+
}
|
73
|
+
return property;
|
74
|
+
}
|
75
|
+
setTyped(key, value) {
|
76
|
+
return super.set(key, value);
|
77
|
+
}
|
78
|
+
}
|
79
|
+
class PluginSettingsManagerBase {
|
80
|
+
constructor(plugin) {
|
81
|
+
this.plugin = plugin;
|
82
|
+
const defaultSettings = this.createDefaultSettings();
|
83
|
+
this.properties = new PropertiesMap();
|
84
|
+
for (const key of Object.keys(defaultSettings)) {
|
85
|
+
this.properties.set(key, new PluginSettingsProperty(this, key, defaultSettings[key]));
|
86
|
+
}
|
87
|
+
this.safeSettings = new Proxy(defaultSettings, {
|
88
|
+
get: (_target, prop) => {
|
89
|
+
if (typeof prop !== "string") {
|
90
|
+
return void 0;
|
91
|
+
}
|
92
|
+
return this.properties.get(prop);
|
93
|
+
}
|
94
|
+
});
|
95
|
+
}
|
96
|
+
safeSettings;
|
97
|
+
properties;
|
98
|
+
getProperty(property) {
|
99
|
+
return this.properties.getTyped(property);
|
100
|
+
}
|
101
|
+
async loadFromFile() {
|
102
|
+
for (const property of this.properties.values()) {
|
103
|
+
property.clear();
|
104
|
+
}
|
105
|
+
const data = await this.plugin.loadData();
|
106
|
+
if (data === void 0 || data === null) {
|
107
|
+
return;
|
108
|
+
}
|
109
|
+
if (typeof data !== "object" || Array.isArray(data)) {
|
110
|
+
const type = Array.isArray(data) ? "Array" : typeof data;
|
111
|
+
console.error(`Invalid data type. Expected Object, got: ${type}`);
|
112
|
+
return;
|
113
|
+
}
|
114
|
+
let record = data;
|
115
|
+
record = this.getTransformer().transformObjectRecursively(record);
|
116
|
+
await this.prepareRecord(record);
|
117
|
+
for (const [key, value] of Object.entries(record)) {
|
118
|
+
const propertyObj = this.properties.get(key);
|
119
|
+
if (!propertyObj) {
|
120
|
+
console.warn(`Unknown property: ${key}`);
|
121
|
+
continue;
|
122
|
+
}
|
123
|
+
if (typeof value !== typeof propertyObj.defaultValue) {
|
124
|
+
console.warn(`Invalid value type. Expected ${typeof propertyObj.defaultValue}, got: ${typeof value}`);
|
125
|
+
continue;
|
126
|
+
}
|
127
|
+
await propertyObj.set(value);
|
128
|
+
}
|
129
|
+
}
|
130
|
+
/**
|
131
|
+
* Saves the new plugin settings.
|
132
|
+
*
|
133
|
+
* @returns A promise that resolves when the settings are saved.
|
134
|
+
*/
|
135
|
+
async saveToFile() {
|
136
|
+
const record = this.getTransformer().transformObjectRecursively(this.getSettings());
|
137
|
+
await this.plugin.saveData(record);
|
138
|
+
}
|
139
|
+
// eslint-disable-next-line @typescript-eslint/no-invalid-void-type
|
140
|
+
async validate(_property, _value) {
|
141
|
+
await (0, import_Function.noopAsync)();
|
142
|
+
}
|
143
|
+
getTransformer() {
|
144
|
+
return defaultTransformer;
|
145
|
+
}
|
146
|
+
async prepareRecord(_record) {
|
147
|
+
await (0, import_Function.noopAsync)();
|
148
|
+
}
|
149
|
+
getSettings() {
|
150
|
+
const settings = {};
|
151
|
+
for (const [key, property] of this.properties.entries()) {
|
152
|
+
settings[key] = property.get();
|
153
|
+
}
|
154
|
+
return settings;
|
155
|
+
}
|
156
|
+
}
|
157
|
+
// Annotate the CommonJS export names for ESM import in node:
|
158
|
+
0 && (module.exports = {
|
159
|
+
PluginSettingsManagerBase
|
160
|
+
});
|
161
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHlwZSB7IFJlYWRvbmx5RGVlcCB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IFBsdWdpbiB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBTdHJpbmdLZXlzIH0gZnJvbSAnLi4vLi4vT2JqZWN0LnRzJztcbmltcG9ydCB0eXBlIHsgVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvVHJhbnNmb3JtZXIudHMnO1xuXG5pbXBvcnQgeyBub29wQXN5bmMgfSBmcm9tICcuLi8uLi9GdW5jdGlvbi50cyc7XG5pbXBvcnQgeyBEYXRlVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvRGF0ZVRyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB7IER1cmF0aW9uVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvRHVyYXRpb25UcmFuc2Zvcm1lci50cyc7XG5pbXBvcnQgeyBHcm91cFRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vVHJhbnNmb3JtZXJzL0dyb3VwVHJhbnNmb3JtZXIudHMnO1xuaW1wb3J0IHsgU2tpcFByaXZhdGVQcm9wZXJ0eVRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vVHJhbnNmb3JtZXJzL1NraXBQcml2YXRlUHJvcGVydHlUcmFuc2Zvcm1lci50cyc7XG5cbmNvbnN0IGRlZmF1bHRUcmFuc2Zvcm1lciA9IG5ldyBHcm91cFRyYW5zZm9ybWVyKFtcbiAgbmV3IFNraXBQcml2YXRlUHJvcGVydHlUcmFuc2Zvcm1lcigpLFxuICBuZXcgRGF0ZVRyYW5zZm9ybWVyKCksXG4gIG5ldyBEdXJhdGlvblRyYW5zZm9ybWVyKClcbl0pO1xuXG5jbGFzcyBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5PFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0LCBQcm9wZXJ0eSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+PiB7XG4gIHB1YmxpYyB2YWxpZGF0aW9uTWVzc2FnZSA9ICcnO1xuICBwcml2YXRlIHZhbHVlOiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV0gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWFuYWdlcjogUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZTxQbHVnaW5TZXR0aW5ncz4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRWYWx1ZTogUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldXG4gICkge31cblxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gJyc7XG4gIH1cblxuICBwdWJsaWMgZ2V0KCk6IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgPz8gdGhpcy5kZWZhdWx0VmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2FmZSgpOiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV0ge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID8gdGhpcy5kZWZhdWx0VmFsdWUgOiB0aGlzLmdldCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldCh2YWx1ZTogUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldIHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIGlmICh0aGlzLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSAoYXdhaXQgdGhpcy5tYW5hZ2VyLnZhbGlkYXRlKHRoaXMucHJvcGVydHksIHRoaXMudmFsdWUpIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gJyc7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFByb3BlcnRpZXNNYXA8UGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3Q+IGV4dGVuZHMgTWFwPHN0cmluZywgUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxQbHVnaW5TZXR0aW5ncywgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4+PiB7XG4gIHB1YmxpYyBnZXRUeXBlZDxQcm9wZXJ0eSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+PihrZXk6IFByb3BlcnR5KTogUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxQbHVnaW5TZXR0aW5ncywgUHJvcGVydHk+IHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHN1cGVyLmdldChrZXkpO1xuICAgIGlmICghcHJvcGVydHkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvcGVydHkgJHtTdHJpbmcoa2V5KX0gbm90IGZvdW5kYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BlcnR5IGFzIFBsdWdpblNldHRpbmdzUHJvcGVydHk8UGx1Z2luU2V0dGluZ3MsIFByb3BlcnR5PjtcbiAgfVxuXG4gIHB1YmxpYyBzZXRUeXBlZDxQcm9wZXJ0eSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+PihrZXk6IFByb3BlcnR5LCB2YWx1ZTogUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxQbHVnaW5TZXR0aW5ncywgUHJvcGVydHk+KTogdGhpcyB7XG4gICAgcmV0dXJuIHN1cGVyLnNldChrZXksIHZhbHVlKTtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIG1hbmFnaW5nIHBsdWdpbiBzZXR0aW5ncy5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHR5cGUgcmVwcmVzZW50aW5nIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZTxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdD4ge1xuICBwdWJsaWMgcmVhZG9ubHkgc2FmZVNldHRpbmdzOiBSZWFkb25seURlZXA8UGx1Z2luU2V0dGluZ3M+O1xuXG4gIHByaXZhdGUgcHJvcGVydGllczogUHJvcGVydGllc01hcDxQbHVnaW5TZXR0aW5ncz47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcGx1Z2luOiBQbHVnaW4pIHtcbiAgICBjb25zdCBkZWZhdWx0U2V0dGluZ3MgPSB0aGlzLmNyZWF0ZURlZmF1bHRTZXR0aW5ncygpO1xuICAgIHRoaXMucHJvcGVydGllcyA9IG5ldyBQcm9wZXJ0aWVzTWFwPFBsdWdpblNldHRpbmdzPigpO1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZGVmYXVsdFNldHRpbmdzKSBhcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPltdKSB7XG4gICAgICB0aGlzLnByb3BlcnRpZXMuc2V0KGtleSwgbmV3IFBsdWdpblNldHRpbmdzUHJvcGVydHkodGhpcywga2V5LCBkZWZhdWx0U2V0dGluZ3Nba2V5XSkpO1xuICAgIH1cblxuICAgIHRoaXMuc2FmZVNldHRpbmdzID0gbmV3IFByb3h5KGRlZmF1bHRTZXR0aW5ncywge1xuICAgICAgZ2V0OiAoX3RhcmdldCwgcHJvcCk6IHVua25vd24gPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHByb3AgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXMuZ2V0KHByb3ApO1xuICAgICAgfVxuICAgIH0pIGFzIFJlYWRvbmx5RGVlcDxQbHVnaW5TZXR0aW5ncz47XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJvcGVydHk8UHJvcGVydHkgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPj4ocHJvcGVydHk6IFByb3BlcnR5KTogUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxQbHVnaW5TZXR0aW5ncywgUHJvcGVydHk+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0aWVzLmdldFR5cGVkKHByb3BlcnR5KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkRnJvbUZpbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiB0aGlzLnByb3BlcnRpZXMudmFsdWVzKCkpIHtcbiAgICAgIHByb3BlcnR5LmNsZWFyKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucGx1Z2luLmxvYWREYXRhKCkgYXMgdW5rbm93bjtcblxuICAgIGlmIChkYXRhID09PSB1bmRlZmluZWQgfHwgZGF0YSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgY29uc3QgdHlwZSA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyAnQXJyYXknIDogdHlwZW9mIGRhdGE7XG4gICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIGRhdGEgdHlwZS4gRXhwZWN0ZWQgT2JqZWN0LCBnb3Q6ICR7dHlwZX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcmVjb3JkID0gZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICByZWNvcmQgPSB0aGlzLmdldFRyYW5zZm9ybWVyKCkudHJhbnNmb3JtT2JqZWN0UmVjdXJzaXZlbHkocmVjb3JkKTtcbiAgICBhd2FpdCB0aGlzLnByZXBhcmVSZWNvcmQocmVjb3JkKTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlY29yZCkpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5T2JqID0gdGhpcy5wcm9wZXJ0aWVzLmdldChrZXkpO1xuICAgICAgaWYgKCFwcm9wZXJ0eU9iaikge1xuICAgICAgICBjb25zb2xlLndhcm4oYFVua25vd24gcHJvcGVydHk6ICR7a2V5fWApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gdHlwZW9mIHByb3BlcnR5T2JqLmRlZmF1bHRWYWx1ZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYEludmFsaWQgdmFsdWUgdHlwZS4gRXhwZWN0ZWQgJHt0eXBlb2YgcHJvcGVydHlPYmouZGVmYXVsdFZhbHVlfSwgZ290OiAke3R5cGVvZiB2YWx1ZX1gKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHByb3BlcnR5T2JqLnNldCh2YWx1ZSBhcyBQbHVnaW5TZXR0aW5nc1tTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPl0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyB0aGUgbmV3IHBsdWdpbiBzZXR0aW5ncy5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2V0dGluZ3MgYXJlIHNhdmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNhdmVUb0ZpbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVjb3JkID0gdGhpcy5nZXRUcmFuc2Zvcm1lcigpLnRyYW5zZm9ybU9iamVjdFJlY3Vyc2l2ZWx5KHRoaXMuZ2V0U2V0dGluZ3MoKSk7XG4gICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZURhdGEocmVjb3JkKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGVcbiAgcHVibGljIGFzeW5jIHZhbGlkYXRlPFByb3BlcnR5IGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4+KF9wcm9wZXJ0eTogUHJvcGVydHksIF92YWx1ZTogUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldKTogUHJvbWlzZTxzdHJpbmcgfCB2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlRGVmYXVsdFNldHRpbmdzKCk6IFBsdWdpblNldHRpbmdzO1xuXG4gIHByb3RlY3RlZCBnZXRUcmFuc2Zvcm1lcigpOiBUcmFuc2Zvcm1lciB7XG4gICAgcmV0dXJuIGRlZmF1bHRUcmFuc2Zvcm1lcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlUmVjb3JkKF9yZWNvcmQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFNldHRpbmdzKCk6IFJlY29yZDxTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPiwgdW5rbm93bj4ge1xuICAgIGNvbnN0IHNldHRpbmdzOiBSZWNvcmQ8U3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4sIHVua25vd24+ID0ge30gYXMgUmVjb3JkPFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+LCB1bmtub3duPjtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHByb3BlcnR5XSBvZiB0aGlzLnByb3BlcnRpZXMuZW50cmllcygpKSB7XG4gICAgICBzZXR0aW5nc1trZXkgYXMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz5dID0gcHJvcGVydHkuZ2V0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldHRpbmdzO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBLHNCQUF1QjtBQUt2QixzQkFBMEI7QUFDMUIsNkJBQWdDO0FBQ2hDLGlDQUFvQztBQUNwQyw4QkFBaUM7QUFDakMsNENBQStDO0FBRS9DLE1BQU0scUJBQXFCLElBQUkseUNBQWlCO0FBQUEsRUFDOUMsSUFBSSxxRUFBK0I7QUFBQSxFQUNuQyxJQUFJLHVDQUFnQjtBQUFBLEVBQ3BCLElBQUksK0NBQW9CO0FBQzFCLENBQUM7QUFFRCxNQUFNLHVCQUFtRztBQUFBLEVBSWhHLFlBQ1ksU0FDQSxVQUNELGNBQ2hCO0FBSGlCO0FBQ0E7QUFDRDtBQUFBLEVBQ2Y7QUFBQSxFQVBJLG9CQUFvQjtBQUFBLEVBQ25CO0FBQUEsRUFRRCxRQUFjO0FBQ25CLFNBQUssUUFBUTtBQUNiLFNBQUssb0JBQW9CO0FBQUEsRUFDM0I7QUFBQSxFQUVPLE1BQWdDO0FBQ3JDLFdBQU8sS0FBSyxTQUFTLEtBQUs7QUFBQSxFQUM1QjtBQUFBLEVBRU8sVUFBb0M7QUFDekMsV0FBTyxLQUFLLG9CQUFvQixLQUFLLGVBQWUsS0FBSyxJQUFJO0FBQUEsRUFDL0Q7QUFBQSxFQUVBLE1BQWEsSUFBSSxPQUE0RDtBQUMzRSxTQUFLLFFBQVE7QUFDYixRQUFJLEtBQUssVUFBVSxRQUFXO0FBQzVCLFdBQUssb0JBQXFCLE1BQU0sS0FBSyxRQUFRLFNBQVMsS0FBSyxVQUFVLEtBQUssS0FBSyxLQUE0QjtBQUFBLElBQzdHO0FBQUEsRUFDRjtBQUNGO0FBRUEsTUFBTSxzQkFBcUQsSUFBZ0Y7QUFBQSxFQUNsSSxTQUFzRCxLQUFpRTtBQUM1SCxVQUFNLFdBQVcsTUFBTSxJQUFJLEdBQUc7QUFDOUIsUUFBSSxDQUFDLFVBQVU7QUFDYixZQUFNLElBQUksTUFBTSxZQUFZLE9BQU8sR0FBRyxDQUFDLFlBQVk7QUFBQSxJQUNyRDtBQUVBLFdBQU87QUFBQSxFQUNUO0FBQUEsRUFFTyxTQUFzRCxLQUFlLE9BQStEO0FBQ3pJLFdBQU8sTUFBTSxJQUFJLEtBQUssS0FBSztBQUFBLEVBQzdCO0FBQ0Y7QUFPTyxNQUFlLDBCQUF5RDtBQUFBLEVBS3RFLFlBQW9CLFFBQWdCO0FBQWhCO0FBQ3pCLFVBQU0sa0JBQWtCLEtBQUssc0JBQXNCO0FBQ25ELFNBQUssYUFBYSxJQUFJLGNBQThCO0FBRXBELGVBQVcsT0FBTyxPQUFPLEtBQUssZUFBZSxHQUFtQztBQUM5RSxXQUFLLFdBQVcsSUFBSSxLQUFLLElBQUksdUJBQXVCLE1BQU0sS0FBSyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFBQSxJQUN0RjtBQUVBLFNBQUssZUFBZSxJQUFJLE1BQU0saUJBQWlCO0FBQUEsTUFDN0MsS0FBSyxDQUFDLFNBQVMsU0FBa0I7QUFDL0IsWUFBSSxPQUFPLFNBQVMsVUFBVTtBQUM1QixpQkFBTztBQUFBLFFBQ1Q7QUFFQSxlQUFPLEtBQUssV0FBVyxJQUFJLElBQUk7QUFBQSxNQUNqQztBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFBQSxFQXJCZ0I7QUFBQSxFQUVSO0FBQUEsRUFxQkQsWUFBeUQsVUFBc0U7QUFDcEksV0FBTyxLQUFLLFdBQVcsU0FBUyxRQUFRO0FBQUEsRUFDMUM7QUFBQSxFQUVBLE1BQWEsZUFBOEI7QUFDekMsZUFBVyxZQUFZLEtBQUssV0FBVyxPQUFPLEdBQUc7QUFDL0MsZUFBUyxNQUFNO0FBQUEsSUFDakI7QUFFQSxVQUFNLE9BQU8sTUFBTSxLQUFLLE9BQU8sU0FBUztBQUV4QyxRQUFJLFNBQVMsVUFBYSxTQUFTLE1BQU07QUFDdkM7QUFBQSxJQUNGO0FBRUEsUUFBSSxPQUFPLFNBQVMsWUFBWSxNQUFNLFFBQVEsSUFBSSxHQUFHO0FBQ25ELFlBQU0sT0FBTyxNQUFNLFFBQVEsSUFBSSxJQUFJLFVBQVUsT0FBTztBQUNwRCxjQUFRLE1BQU0sNENBQTRDLElBQUksRUFBRTtBQUNoRTtBQUFBLElBQ0Y7QUFFQSxRQUFJLFNBQVM7QUFDYixhQUFTLEtBQUssZUFBZSxFQUFFLDJCQUEyQixNQUFNO0FBQ2hFLFVBQU0sS0FBSyxjQUFjLE1BQU07QUFFL0IsZUFBVyxDQUFDLEtBQUssS0FBSyxLQUFLLE9BQU8sUUFBUSxNQUFNLEdBQUc7QUFDakQsWUFBTSxjQUFjLEtBQUssV0FBVyxJQUFJLEdBQUc7QUFDM0MsVUFBSSxDQUFDLGFBQWE7QUFDaEIsZ0JBQVEsS0FBSyxxQkFBcUIsR0FBRyxFQUFFO0FBQ3ZDO0FBQUEsTUFDRjtBQUVBLFVBQUksT0FBTyxVQUFVLE9BQU8sWUFBWSxjQUFjO0FBQ3BELGdCQUFRLEtBQUssZ0NBQWdDLE9BQU8sWUFBWSxZQUFZLFVBQVUsT0FBTyxLQUFLLEVBQUU7QUFDcEc7QUFBQSxNQUNGO0FBRUEsWUFBTSxZQUFZLElBQUksS0FBbUQ7QUFBQSxJQUMzRTtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxNQUFhLGFBQTRCO0FBQ3ZDLFVBQU0sU0FBUyxLQUFLLGVBQWUsRUFBRSwyQkFBMkIsS0FBSyxZQUFZLENBQUM7QUFDbEYsVUFBTSxLQUFLLE9BQU8sU0FBUyxNQUFNO0FBQUEsRUFDbkM7QUFBQTtBQUFBLEVBR0EsTUFBYSxTQUFzRCxXQUFxQixRQUEwRDtBQUNoSixjQUFNLDJCQUFVO0FBQUEsRUFDbEI7QUFBQSxFQUlVLGlCQUE4QjtBQUN0QyxXQUFPO0FBQUEsRUFDVDtBQUFBLEVBRUEsTUFBZ0IsY0FBYyxTQUFpRDtBQUM3RSxjQUFNLDJCQUFVO0FBQUEsRUFDbEI7QUFBQSxFQUVRLGNBQTJEO0FBQ2pFLFVBQU0sV0FBd0QsQ0FBQztBQUMvRCxlQUFXLENBQUMsS0FBSyxRQUFRLEtBQUssS0FBSyxXQUFXLFFBQVEsR0FBRztBQUN2RCxlQUFTLEdBQWlDLElBQUksU0FBUyxJQUFJO0FBQUEsSUFDN0Q7QUFFQSxXQUFPO0FBQUEsRUFDVDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
@@ -0,0 +1,41 @@
|
|
1
|
+
import type { ReadonlyDeep } from 'type-fest';
|
2
|
+
import { Plugin } from 'obsidian';
|
3
|
+
import type { StringKeys } from '../../Object.cjs';
|
4
|
+
import type { Transformer } from '../../Transformers/Transformer.cjs';
|
5
|
+
declare class PluginSettingsProperty<PluginSettings extends object, Property extends StringKeys<PluginSettings>> {
|
6
|
+
private readonly manager;
|
7
|
+
private readonly property;
|
8
|
+
readonly defaultValue: PluginSettings[Property];
|
9
|
+
validationMessage: string;
|
10
|
+
private value;
|
11
|
+
constructor(manager: PluginSettingsManagerBase<PluginSettings>, property: Property, defaultValue: PluginSettings[Property]);
|
12
|
+
clear(): void;
|
13
|
+
get(): PluginSettings[Property];
|
14
|
+
getSafe(): PluginSettings[Property];
|
15
|
+
set(value: PluginSettings[Property] | undefined): Promise<void>;
|
16
|
+
}
|
17
|
+
/**
|
18
|
+
* Base class for managing plugin settings.
|
19
|
+
*
|
20
|
+
* @typeParam PluginSettings - The type representing the plugin settings object.
|
21
|
+
*/
|
22
|
+
export declare abstract class PluginSettingsManagerBase<PluginSettings extends object> {
|
23
|
+
private plugin;
|
24
|
+
readonly safeSettings: ReadonlyDeep<PluginSettings>;
|
25
|
+
private properties;
|
26
|
+
constructor(plugin: Plugin);
|
27
|
+
getProperty<Property extends StringKeys<PluginSettings>>(property: Property): PluginSettingsProperty<PluginSettings, Property>;
|
28
|
+
loadFromFile(): Promise<void>;
|
29
|
+
/**
|
30
|
+
* Saves the new plugin settings.
|
31
|
+
*
|
32
|
+
* @returns A promise that resolves when the settings are saved.
|
33
|
+
*/
|
34
|
+
saveToFile(): Promise<void>;
|
35
|
+
validate<Property extends StringKeys<PluginSettings>>(_property: Property, _value: PluginSettings[Property]): Promise<string | void>;
|
36
|
+
protected abstract createDefaultSettings(): PluginSettings;
|
37
|
+
protected getTransformer(): Transformer;
|
38
|
+
protected prepareRecord(_record: Record<string, unknown>): Promise<void>;
|
39
|
+
private getSettings;
|
40
|
+
}
|
41
|
+
export {};
|
@@ -40,7 +40,6 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
|
|
40
40
|
this.plugin = plugin;
|
41
41
|
this.containerEl.addClass(import_CssClass.CssClass.LibraryName, (0, import_PluginId.getPluginId)(), import_CssClass.CssClass.PluginSettingsTab);
|
42
42
|
}
|
43
|
-
validatorsMap = /* @__PURE__ */ new WeakMap();
|
44
43
|
/**
|
45
44
|
* Binds a value component to a plugin setting.
|
46
45
|
*
|
@@ -57,65 +56,52 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
|
|
57
56
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
58
57
|
componentToPluginSettingsValueConverter: (value) => value,
|
59
58
|
onChanged: import_Function.noop,
|
60
|
-
pluginSettings: void 0,
|
61
59
|
pluginSettingsToComponentValueConverter: (value) => value,
|
62
|
-
|
63
|
-
shouldShowValidationMessage: true,
|
64
|
-
valueValidator: import_Function.noop
|
60
|
+
shouldShowValidationMessage: true
|
65
61
|
};
|
66
62
|
const optionsExt = { ...DEFAULT_OPTIONS, ...options };
|
67
|
-
const pluginSettingsFn = () => optionsExt.pluginSettings ?? this.plugin.settingsClone;
|
68
63
|
const validatorElement = (0, import_ValidatorComponent.getValidatorComponent)(valueComponent)?.validatorEl;
|
69
|
-
const
|
70
|
-
|
71
|
-
|
72
|
-
if (
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
}
|
78
|
-
validatorElement.setCustomValidity(errorMessage);
|
79
|
-
validatorElement.title = errorMessage;
|
80
|
-
if (validatorElement.isActiveElement() && optionsExt.shouldShowValidationMessage) {
|
81
|
-
validatorElement.reportValidity();
|
82
|
-
}
|
83
|
-
}
|
84
|
-
return !errorMessage;
|
85
|
-
};
|
86
|
-
valueComponent.setValue(optionsExt.pluginSettingsToComponentValueConverter(pluginSettingsFn()[property])).onChange(async (uiValue) => {
|
87
|
-
if (!await validate(uiValue)) {
|
88
|
-
return;
|
89
|
-
}
|
90
|
-
const pluginSettings = pluginSettingsFn();
|
91
|
-
pluginSettings[property] = optionsExt.componentToPluginSettingsValueConverter(uiValue);
|
92
|
-
if (optionsExt.shouldAutoSave) {
|
93
|
-
await this.plugin.saveSettings(pluginSettings);
|
64
|
+
const propertyObj = this.plugin.settingsManager.getProperty(property);
|
65
|
+
valueComponent.setValue(optionsExt.pluginSettingsToComponentValueConverter(propertyObj.get())).onChange(async (uiValue) => {
|
66
|
+
const convertedValue = optionsExt.componentToPluginSettingsValueConverter(uiValue);
|
67
|
+
if (isValidationMessageHolder(convertedValue)) {
|
68
|
+
propertyObj.validationMessage = convertedValue.validationMessage;
|
69
|
+
await propertyObj.set(void 0);
|
70
|
+
} else {
|
71
|
+
await propertyObj.set(convertedValue);
|
94
72
|
}
|
95
73
|
await optionsExt.onChanged();
|
96
74
|
});
|
97
|
-
validatorElement?.addEventListener("focus",
|
98
|
-
validatorElement?.addEventListener("blur",
|
99
|
-
|
100
|
-
(0, import_Async.invokeAsyncSafely)(() => validate());
|
75
|
+
validatorElement?.addEventListener("focus", validate);
|
76
|
+
validatorElement?.addEventListener("blur", validate);
|
77
|
+
validate();
|
101
78
|
return valueComponent;
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
79
|
+
function validate() {
|
80
|
+
if (!validatorElement) {
|
81
|
+
return;
|
82
|
+
}
|
83
|
+
if (!propertyObj.validationMessage) {
|
84
|
+
validatorElement.setCustomValidity("");
|
85
|
+
validatorElement.checkValidity();
|
86
|
+
propertyObj.validationMessage = validatorElement.validationMessage;
|
87
|
+
}
|
88
|
+
validatorElement.setCustomValidity(propertyObj.validationMessage);
|
89
|
+
validatorElement.title = propertyObj.validationMessage;
|
90
|
+
if (validatorElement.isActiveElement() && optionsExt.shouldShowValidationMessage) {
|
91
|
+
validatorElement.reportValidity();
|
92
|
+
}
|
113
93
|
}
|
114
|
-
return true;
|
115
94
|
}
|
95
|
+
hide() {
|
96
|
+
super.hide();
|
97
|
+
(0, import_Async.invokeAsyncSafely)(() => this.plugin.settingsManager.saveToFile());
|
98
|
+
}
|
99
|
+
}
|
100
|
+
function isValidationMessageHolder(value) {
|
101
|
+
return !!value.validationMessage;
|
116
102
|
}
|
117
103
|
// Annotate the CommonJS export names for ESM import in node:
|
118
104
|
0 && (module.exports = {
|
119
105
|
PluginSettingsTabBase
|
120
106
|
});
|
121
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIFBsdWdpblNldHRpbmdzVGFiQmFzZVxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHtcbiAgQ29uZGl0aW9uYWxLZXlzLFxuICBQcm9taXNhYmxlXG59IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IFBsdWdpblNldHRpbmdUYWIgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmcgfSBmcm9tICcuLi9Db21wb25lbnRzL1ZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nLnRzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luQmFzZSB9IGZyb20gJy4vUGx1Z2luQmFzZS50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpblNldHRpbmdzQmFzZSB9IGZyb20gJy4vUGx1Z2luU2V0dGluZ3NCYXNlLnRzJztcblxuaW1wb3J0IHtcbiAgY29udmVydEFzeW5jVG9TeW5jLFxuICBpbnZva2VBc3luY1NhZmVseVxufSBmcm9tICcuLi8uLi9Bc3luYy50cyc7XG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uLy4uL0Nzc0NsYXNzLnRzJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuLi8uLi9GdW5jdGlvbi50cyc7XG5pbXBvcnQgeyBnZXRWYWxpZGF0b3JDb21wb25lbnQgfSBmcm9tICcuLi9Db21wb25lbnRzL1ZhbGlkYXRvckNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBnZXRQbHVnaW5JZCB9IGZyb20gJy4vUGx1Z2luSWQudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGJpbmRpbmcgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5kT3B0aW9uczxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZT4ge1xuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZWQ/OiAoKSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdCB0byBiaW5kIHRoZSBjb21wb25lbnQgdG8uIERlZmF1bHQgaXMgdGhlIHBsdWdpbidzIGN1cnJlbnQgc2V0dGluZ3MuXG4gICAqL1xuICBwbHVnaW5TZXR0aW5ncz86IFBsdWdpblNldHRpbmdzO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBzYXZlcyB0aGUgcGx1Z2luIHNldHRpbmdzIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGNvbXBvbmVudCB2YWx1ZSBjaGFuZ2VzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHNob3VsZEF1dG9TYXZlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgc2hvd3MgdGhlIHZhbGlkYXRpb24gbWVzc2FnZSB3aGVuIHRoZSBjb21wb25lbnQgdmFsdWUgaXMgaW52YWxpZC4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIFVJIHZhbHVlIGJlZm9yZSBzZXR0aW5nIGl0IG9uIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqIEBwYXJhbSB1aVZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIEFuIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHZhbHVlIGlzIGludmFsaWQsIG9yIGAoZW1wdHkgc3RyaW5nKWAgb3IgYHZvaWRgIGlmIGl0IGlzIHZhbGlkLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1pbnZhbGlkLXZvaWQtdHlwZVxuICB2YWx1ZVZhbGlkYXRvcj86ICh1aVZhbHVlOiBVSVZhbHVlKSA9PiBQcm9taXNhYmxlPHN0cmluZyB8IHZvaWQ+O1xufVxuXG4vKipcbiAqIEV4dGVuZGVkIG9wdGlvbnMgZm9yIGJpbmRpbmcgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5kT3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFBsdWdpblNldHRpbmdzPiBleHRlbmRzIEJpbmRPcHRpb25zPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlPiB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgVUkgY29tcG9uZW50J3MgdmFsdWUgYmFjayB0byB0aGUgcGx1Z2luIHNldHRpbmdzIHZhbHVlLlxuICAgKiBAcGFyYW0gdWlWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqL1xuICBjb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXI6ICh1aVZhbHVlOiBVSVZhbHVlKSA9PiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV07XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdmFsdWUgdG8gdGhlIHZhbHVlIHVzZWQgYnkgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHBsdWdpblNldHRpbmdzVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSB0byBzZXQgb24gdGhlIFVJIGNvbXBvbmVudC5cbiAgICovXG4gIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcjogKHBsdWdpblNldHRpbmdzVmFsdWU6IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XSkgPT4gVUlWYWx1ZTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbnR5cGUgRXh0cmFjdFBsdWdpblNldHRpbmdzPFQgZXh0ZW5kcyBQbHVnaW5CYXNlPGFueT4+ID0gUGx1Z2luU2V0dGluZ3NCYXNlICYgVFsnc2V0dGluZ3NDbG9uZSddO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5ncyB0YWJzIGluIE9ic2lkaWFuLlxuICogUHJvdmlkZXMgYSBtZXRob2QgZm9yIGJpbmRpbmcgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsaW5nIGNoYW5nZXMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IGV4dGVuZHMgUGx1Z2luQmFzZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbHVnaW5TZXR0aW5nc1RhYkJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8YW55Pj4gZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgcHJpdmF0ZSB2YWxpZGF0b3JzTWFwID0gbmV3IFdlYWtNYXA8QmFzZUNvbXBvbmVudCwgKCkgPT4gUHJvbWlzZTxib29sZWFuPj4oKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIG92ZXJyaWRlIHBsdWdpbjogVFBsdWdpbikge1xuICAgIHN1cGVyKHBsdWdpbi5hcHAsIHBsdWdpbik7XG4gICAgdGhpcy5jb250YWluZXJFbC5hZGRDbGFzcyhDc3NDbGFzcy5MaWJyYXJ5TmFtZSwgZ2V0UGx1Z2luSWQoKSwgQ3NzQ2xhc3MuUGx1Z2luU2V0dGluZ3NUYWIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gYmluZC5cbiAgICogQHBhcmFtIHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgYmluZGluZyB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGJpbmQ8XG4gICAgVUlWYWx1ZSxcbiAgICBUVmFsdWVDb21wb25lbnRcbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHk6IENvbmRpdGlvbmFsS2V5czxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8VFBsdWdpbj4sIFVJVmFsdWU+LFxuICAgIG9wdGlvbnM/OiBCaW5kT3B0aW9uczxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8VFBsdWdpbj4sIFVJVmFsdWU+XG4gICk6IFRWYWx1ZUNvbXBvbmVudDtcbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gUHJvcGVydHkgLSBUaGUgcHJvcGVydHkgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGJpbmQuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50LFxuICAgIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRXh0cmFjdFBsdWdpblNldHRpbmdzPFRQbHVnaW4+XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICBvcHRpb25zOiBCaW5kT3B0aW9uc0V4dGVuZGVkPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxUUGx1Z2luPiwgVUlWYWx1ZSwgUHJvcGVydHk+XG4gICk6IFRWYWx1ZUNvbXBvbmVudDtcbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gUHJvcGVydHkgLSBUaGUgcHJvcGVydHkgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGJpbmQuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50LFxuICAgIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRXh0cmFjdFBsdWdpblNldHRpbmdzPFRQbHVnaW4+XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICBvcHRpb25zPzogQmluZE9wdGlvbnM8RXh0cmFjdFBsdWdpblNldHRpbmdzPFRQbHVnaW4+LCBVSVZhbHVlPlxuICApOiBUVmFsdWVDb21wb25lbnQge1xuICAgIHR5cGUgUGx1Z2luU2V0dGluZ3MgPSBFeHRyYWN0UGx1Z2luU2V0dGluZ3M8VFBsdWdpbj47XG4gICAgdHlwZSBQcm9wZXJ0eVR5cGUgPSBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV07XG4gICAgY29uc3QgREVGQVVMVF9PUFRJT05TOiBSZXF1aXJlZDxCaW5kT3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eT4+ID0ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICBjb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXI6ICh2YWx1ZTogVUlWYWx1ZSk6IFByb3BlcnR5VHlwZSA9PiB2YWx1ZSBhcyBQcm9wZXJ0eVR5cGUsXG4gICAgICBvbkNoYW5nZWQ6IG5vb3AsXG4gICAgICBwbHVnaW5TZXR0aW5nczogdW5kZWZpbmVkIGFzIFBsdWdpblNldHRpbmdzLFxuICAgICAgcGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyOiAodmFsdWU6IFByb3BlcnR5VHlwZSk6IFVJVmFsdWUgPT4gdmFsdWUgYXMgVUlWYWx1ZSxcbiAgICAgIHNob3VsZEF1dG9TYXZlOiB0cnVlLFxuICAgICAgc2hvdWxkU2hvd1ZhbGlkYXRpb25NZXNzYWdlOiB0cnVlLFxuICAgICAgdmFsdWVWYWxpZGF0b3I6IG5vb3BcbiAgICB9O1xuXG4gICAgY29uc3Qgb3B0aW9uc0V4dDogUmVxdWlyZWQ8QmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHk+PiA9IHsgLi4uREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICBjb25zdCBwbHVnaW5TZXR0aW5nc0ZuID0gKCk6IFBsdWdpblNldHRpbmdzID0+IG9wdGlvbnNFeHQucGx1Z2luU2V0dGluZ3MgPz8gdGhpcy5wbHVnaW4uc2V0dGluZ3NDbG9uZTtcbiAgICBjb25zdCB2YWxpZGF0b3JFbGVtZW50ID0gZ2V0VmFsaWRhdG9yQ29tcG9uZW50KHZhbHVlQ29tcG9uZW50KT8udmFsaWRhdG9yRWw7XG5cbiAgICBjb25zdCB2YWxpZGF0ZSA9IGFzeW5jICh1aVZhbHVlPzogVUlWYWx1ZSk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgICAgdWlWYWx1ZSA/Pz0gdmFsdWVDb21wb25lbnQuZ2V0VmFsdWUoKTtcbiAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSBhd2FpdCBvcHRpb25zRXh0LnZhbHVlVmFsaWRhdG9yKHVpVmFsdWUpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGlmICh2YWxpZGF0b3JFbGVtZW50KSB7XG4gICAgICAgIGlmICghZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgdmFsaWRhdG9yRWxlbWVudC5zZXRDdXN0b21WYWxpZGl0eSgnJyk7XG4gICAgICAgICAgdmFsaWRhdG9yRWxlbWVudC5jaGVja1ZhbGlkaXR5KCk7XG4gICAgICAgICAgZXJyb3JNZXNzYWdlID0gdmFsaWRhdG9yRWxlbWVudC52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbGlkYXRvckVsZW1lbnQuc2V0Q3VzdG9tVmFsaWRpdHkoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgdmFsaWRhdG9yRWxlbWVudC50aXRsZSA9IGVycm9yTWVzc2FnZTtcbiAgICAgICAgaWYgKHZhbGlkYXRvckVsZW1lbnQuaXNBY3RpdmVFbGVtZW50KCkgJiYgb3B0aW9uc0V4dC5zaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnJlcG9ydFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuICFlcnJvck1lc3NhZ2U7XG4gICAgfTtcblxuICAgIHZhbHVlQ29tcG9uZW50XG4gICAgICAuc2V0VmFsdWUob3B0aW9uc0V4dC5wbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXIocGx1Z2luU2V0dGluZ3NGbigpW3Byb3BlcnR5XSkpXG4gICAgICAub25DaGFuZ2UoYXN5bmMgKHVpVmFsdWUpID0+IHtcbiAgICAgICAgaWYgKCFhd2FpdCB2YWxpZGF0ZSh1aVZhbHVlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwbHVnaW5TZXR0aW5ncyA9IHBsdWdpblNldHRpbmdzRm4oKTtcbiAgICAgICAgcGx1Z2luU2V0dGluZ3NbcHJvcGVydHldID0gb3B0aW9uc0V4dC5jb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXIodWlWYWx1ZSk7XG4gICAgICAgIGlmIChvcHRpb25zRXh0LnNob3VsZEF1dG9TYXZlKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKHBsdWdpblNldHRpbmdzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IG9wdGlvbnNFeHQub25DaGFuZ2VkKCk7XG4gICAgICB9KTtcblxuICAgIHZhbGlkYXRvckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgY29udmVydEFzeW5jVG9TeW5jKCgpID0+IHZhbGlkYXRlKCkpKTtcbiAgICB2YWxpZGF0b3JFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgY29udmVydEFzeW5jVG9TeW5jKCgpID0+IHZhbGlkYXRlKCkpKTtcbiAgICB0aGlzLnZhbGlkYXRvcnNNYXAuc2V0KHZhbHVlQ29tcG9uZW50LCAoKSA9PiB2YWxpZGF0ZSgpKTtcblxuICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IHZhbGlkYXRlKCkpO1xuICAgIHJldHVybiB2YWx1ZUNvbXBvbmVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXZhbGlkYXRlcyB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gYmFzZUNvbXBvbmVudCAtIFRoZSBiYXNlIGNvbXBvbmVudCB0byByZXZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB2YWx1ZSBjb21wb25lbnQgaXMgdmFsaWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgcmV2YWxpZGF0ZShiYXNlQ29tcG9uZW50OiBCYXNlQ29tcG9uZW50KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgdmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JzTWFwLmdldChiYXNlQ29tcG9uZW50KTtcbiAgICBpZiAodmFsaWRhdG9yKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdmFsaWRhdG9yKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBWUEsc0JBQWlDO0FBTWpDLG1CQUdPO0FBQ1Asc0JBQXlCO0FBQ3pCLHNCQUFxQjtBQUNyQixnQ0FBc0M7QUFDdEMsc0JBQTRCO0FBZ0VyQixNQUFlLDhCQUErRCxpQ0FBaUI7QUFBQSxFQUc3RixZQUE0QixRQUFpQjtBQUNsRCxVQUFNLE9BQU8sS0FBSyxNQUFNO0FBRFM7QUFFakMsU0FBSyxZQUFZLFNBQVMseUJBQVMsaUJBQWEsNkJBQVksR0FBRyx5QkFBUyxpQkFBaUI7QUFBQSxFQUMzRjtBQUFBLEVBTFEsZ0JBQWdCLG9CQUFJLFFBQStDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBd0RwRSxLQUtMLGdCQUNBLFVBQ0EsU0FDaUI7QUFHakIsVUFBTSxrQkFBb0Y7QUFBQTtBQUFBLE1BRXhGLHlDQUF5QyxDQUFDLFVBQWlDO0FBQUEsTUFDM0UsV0FBVztBQUFBLE1BQ1gsZ0JBQWdCO0FBQUEsTUFDaEIseUNBQXlDLENBQUMsVUFBaUM7QUFBQSxNQUMzRSxnQkFBZ0I7QUFBQSxNQUNoQiw2QkFBNkI7QUFBQSxNQUM3QixnQkFBZ0I7QUFBQSxJQUNsQjtBQUVBLFVBQU0sYUFBK0UsRUFBRSxHQUFHLGlCQUFpQixHQUFHLFFBQVE7QUFHdEgsVUFBTSxtQkFBbUIsTUFBc0IsV0FBVyxrQkFBa0IsS0FBSyxPQUFPO0FBQ3hGLFVBQU0sdUJBQW1CLGlEQUFzQixjQUFjLEdBQUc7QUFFaEUsVUFBTSxXQUFXLE9BQU8sWUFBd0M7QUFDOUQsa0JBQVksZUFBZSxTQUFTO0FBQ3BDLFVBQUksZUFBZSxNQUFNLFdBQVcsZUFBZSxPQUFPO0FBQzFELFVBQUksa0JBQWtCO0FBQ3BCLFlBQUksQ0FBQyxjQUFjO0FBQ2pCLDJCQUFpQixrQkFBa0IsRUFBRTtBQUNyQywyQkFBaUIsY0FBYztBQUMvQix5QkFBZSxpQkFBaUI7QUFBQSxRQUNsQztBQUVBLHlCQUFpQixrQkFBa0IsWUFBWTtBQUMvQyx5QkFBaUIsUUFBUTtBQUN6QixZQUFJLGlCQUFpQixnQkFBZ0IsS0FBSyxXQUFXLDZCQUE2QjtBQUNoRiwyQkFBaUIsZUFBZTtBQUFBLFFBQ2xDO0FBQUEsTUFDRjtBQUVBLGFBQU8sQ0FBQztBQUFBLElBQ1Y7QUFFQSxtQkFDRyxTQUFTLFdBQVcsd0NBQXdDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQ3pGLFNBQVMsT0FBTyxZQUFZO0FBQzNCLFVBQUksQ0FBQyxNQUFNLFNBQVMsT0FBTyxHQUFHO0FBQzVCO0FBQUEsTUFDRjtBQUNBLFlBQU0saUJBQWlCLGlCQUFpQjtBQUN4QyxxQkFBZSxRQUFRLElBQUksV0FBVyx3Q0FBd0MsT0FBTztBQUNyRixVQUFJLFdBQVcsZ0JBQWdCO0FBQzdCLGNBQU0sS0FBSyxPQUFPLGFBQWEsY0FBYztBQUFBLE1BQy9DO0FBRUEsWUFBTSxXQUFXLFVBQVU7QUFBQSxJQUM3QixDQUFDO0FBRUgsc0JBQWtCLGlCQUFpQixhQUFTLGlDQUFtQixNQUFNLFNBQVMsQ0FBQyxDQUFDO0FBQ2hGLHNCQUFrQixpQkFBaUIsWUFBUSxpQ0FBbUIsTUFBTSxTQUFTLENBQUMsQ0FBQztBQUMvRSxTQUFLLGNBQWMsSUFBSSxnQkFBZ0IsTUFBTSxTQUFTLENBQUM7QUFFdkQsd0NBQWtCLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxNQUFnQixXQUFXLGVBQWdEO0FBQ3pFLFVBQU0sWUFBWSxLQUFLLGNBQWMsSUFBSSxhQUFhO0FBQ3RELFFBQUksV0FBVztBQUNiLGFBQU8sTUFBTSxVQUFVO0FBQUEsSUFDekI7QUFFQSxXQUFPO0FBQUEsRUFDVDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
107
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIFBsdWdpblNldHRpbmdzVGFiQmFzZVxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQ29uZGl0aW9uYWxLZXlzLFxuICBQcm9taXNhYmxlLFxuICBXcml0YWJsZURlZXBcbn0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgUGx1Z2luU2V0dGluZ1RhYiB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBTdHJpbmdLZXlzIH0gZnJvbSAnLi4vLi4vT2JqZWN0LnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmcgfSBmcm9tICcuLi9Db21wb25lbnRzL1ZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nLnRzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luQmFzZSB9IGZyb20gJy4vUGx1Z2luQmFzZS50cyc7XG5cbmltcG9ydCB7IGludm9rZUFzeW5jU2FmZWx5IH0gZnJvbSAnLi4vLi4vQXN5bmMudHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi9Dc3NDbGFzcy50cyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi4vLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgZ2V0VmFsaWRhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vQ29tcG9uZW50cy9WYWxpZGF0b3JDb21wb25lbnQudHMnO1xuaW1wb3J0IHsgZ2V0UGx1Z2luSWQgfSBmcm9tICcuL1BsdWdpbklkLnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBiaW5kaW5nIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnMge1xuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZWQ/KCk6IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHNob3dzIHRoZSB2YWxpZGF0aW9uIG1lc3NhZ2Ugd2hlbiB0aGUgY29tcG9uZW50IHZhbHVlIGlzIGludmFsaWQuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgc2hvdWxkU2hvd1ZhbGlkYXRpb25NZXNzYWdlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFeHRlbmRlZCBvcHRpb25zIGZvciBiaW5kaW5nIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdCwgVUlWYWx1ZSwgUHJvcGVydHkgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPj4gZXh0ZW5kcyBCaW5kT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgVUkgY29tcG9uZW50J3MgdmFsdWUgYmFjayB0byB0aGUgcGx1Z2luIHNldHRpbmdzIHZhbHVlLlxuICAgKiBAcGFyYW0gdWlWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqL1xuICBjb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXI6ICh1aVZhbHVlOiBVSVZhbHVlKSA9PiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV0gfCBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlcjtcblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHBsdWdpbiBzZXR0aW5ncyB2YWx1ZSB0byB0aGUgdmFsdWUgdXNlZCBieSB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gcGx1Z2luU2V0dGluZ3NWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgVUkgY29tcG9uZW50LlxuICAgKi9cbiAgcGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyOiAocGx1Z2luU2V0dGluZ3NWYWx1ZTogUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldKSA9PiBVSVZhbHVlO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxudHlwZSBFeHRyYWN0UGx1Z2luU2V0dGluZ3M8VCBleHRlbmRzIFBsdWdpbkJhc2U8YW55Pj4gPSBXcml0YWJsZURlZXA8VFsnc2V0dGluZ3MnXT47XG5cbmludGVyZmFjZSBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlciB7XG4gIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgcGx1Z2luIHNldHRpbmdzIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBQcm92aWRlcyBhIG1ldGhvZCBmb3IgYmluZGluZyB2YWx1ZSBjb21wb25lbnRzIHRvIHBsdWdpbiBzZXR0aW5ncyBhbmQgaGFuZGxpbmcgY2hhbmdlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgZXh0ZW5kcyBQbHVnaW5CYXNlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpblNldHRpbmdzVGFiQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxhbnk+PiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIG92ZXJyaWRlIHBsdWdpbjogVFBsdWdpbikge1xuICAgIHN1cGVyKHBsdWdpbi5hcHAsIHBsdWdpbik7XG4gICAgdGhpcy5jb250YWluZXJFbC5hZGRDbGFzcyhDc3NDbGFzcy5MaWJyYXJ5TmFtZSwgZ2V0UGx1Z2luSWQoKSwgQ3NzQ2xhc3MuUGx1Z2luU2V0dGluZ3NUYWIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gYmluZC5cbiAgICogQHBhcmFtIHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgYmluZGluZyB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGJpbmQ8XG4gICAgVUlWYWx1ZSxcbiAgICBUVmFsdWVDb21wb25lbnRcbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHk6IENvbmRpdGlvbmFsS2V5czxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8VFBsdWdpbj4sIFVJVmFsdWU+LFxuICAgIG9wdGlvbnM/OiBCaW5kT3B0aW9uc1xuICApOiBUVmFsdWVDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5IC0gVGhlIHByb3BlcnR5IG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudCxcbiAgICBQcm9wZXJ0eSBleHRlbmRzIFN0cmluZ0tleXM8RXh0cmFjdFBsdWdpblNldHRpbmdzPFRQbHVnaW4+PlxuICA+KFxuICAgIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQgJiBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPixcbiAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgb3B0aW9uczogQmluZE9wdGlvbnNFeHRlbmRlZDxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8VFBsdWdpbj4sIFVJVmFsdWUsIFByb3BlcnR5PlxuICApOiBUVmFsdWVDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5IC0gVGhlIHByb3BlcnR5IG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudCxcbiAgICBQcm9wZXJ0eSBleHRlbmRzIFN0cmluZ0tleXM8RXh0cmFjdFBsdWdpblNldHRpbmdzPFRQbHVnaW4+PlxuICA+KFxuICAgIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQgJiBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPixcbiAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgb3B0aW9ucz86IEJpbmRPcHRpb25zXG4gICk6IFRWYWx1ZUNvbXBvbmVudCB7XG4gICAgdHlwZSBQbHVnaW5TZXR0aW5ncyA9IEV4dHJhY3RQbHVnaW5TZXR0aW5nczxUUGx1Z2luPjtcbiAgICB0eXBlIFByb3BlcnR5VHlwZSA9IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XTtcbiAgICBjb25zdCBERUZBVUxUX09QVElPTlM6IFJlcXVpcmVkPEJpbmRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5Pj4gPSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgIGNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcjogKHZhbHVlOiBVSVZhbHVlKTogUHJvcGVydHlUeXBlID0+IHZhbHVlIGFzIFByb3BlcnR5VHlwZSxcbiAgICAgIG9uQ2hhbmdlZDogbm9vcCxcbiAgICAgIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcjogKHZhbHVlOiBQcm9wZXJ0eVR5cGUpOiBVSVZhbHVlID0+IHZhbHVlIGFzIFVJVmFsdWUsXG4gICAgICBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3Qgb3B0aW9uc0V4dDogUmVxdWlyZWQ8QmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHk+PiA9IHsgLi4uREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG5cbiAgICBjb25zdCB2YWxpZGF0b3JFbGVtZW50ID0gZ2V0VmFsaWRhdG9yQ29tcG9uZW50KHZhbHVlQ29tcG9uZW50KT8udmFsaWRhdG9yRWw7XG5cbiAgICBjb25zdCBwcm9wZXJ0eU9iaiA9IHRoaXMucGx1Z2luLnNldHRpbmdzTWFuYWdlci5nZXRQcm9wZXJ0eShwcm9wZXJ0eSk7XG5cbiAgICB2YWx1ZUNvbXBvbmVudFxuICAgICAgLnNldFZhbHVlKG9wdGlvbnNFeHQucGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyKHByb3BlcnR5T2JqLmdldCgpIGFzIFByb3BlcnR5VHlwZSkpXG4gICAgICAub25DaGFuZ2UoYXN5bmMgKHVpVmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgY29udmVydGVkVmFsdWUgPSBvcHRpb25zRXh0LmNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcih1aVZhbHVlKTtcbiAgICAgICAgaWYgKGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIoY29udmVydGVkVmFsdWUpKSB7XG4gICAgICAgICAgcHJvcGVydHlPYmoudmFsaWRhdGlvbk1lc3NhZ2UgPSBjb252ZXJ0ZWRWYWx1ZS52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICAgICAgICBhd2FpdCBwcm9wZXJ0eU9iai5zZXQodW5kZWZpbmVkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCBwcm9wZXJ0eU9iai5zZXQoY29udmVydGVkVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IG9wdGlvbnNFeHQub25DaGFuZ2VkKCk7XG4gICAgICB9KTtcblxuICAgIHZhbGlkYXRvckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdmFsaWRhdGUpO1xuICAgIHZhbGlkYXRvckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCB2YWxpZGF0ZSk7XG5cbiAgICB2YWxpZGF0ZSgpO1xuICAgIHJldHVybiB2YWx1ZUNvbXBvbmVudDtcblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgICAgaWYgKCF2YWxpZGF0b3JFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwcm9wZXJ0eU9iai52YWxpZGF0aW9uTWVzc2FnZSkge1xuICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnNldEN1c3RvbVZhbGlkaXR5KCcnKTtcbiAgICAgICAgdmFsaWRhdG9yRWxlbWVudC5jaGVja1ZhbGlkaXR5KCk7XG4gICAgICAgIHByb3BlcnR5T2JqLnZhbGlkYXRpb25NZXNzYWdlID0gdmFsaWRhdG9yRWxlbWVudC52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICAgIH1cblxuICAgICAgdmFsaWRhdG9yRWxlbWVudC5zZXRDdXN0b21WYWxpZGl0eShwcm9wZXJ0eU9iai52YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgICB2YWxpZGF0b3JFbGVtZW50LnRpdGxlID0gcHJvcGVydHlPYmoudmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICBpZiAodmFsaWRhdG9yRWxlbWVudC5pc0FjdGl2ZUVsZW1lbnQoKSAmJiBvcHRpb25zRXh0LnNob3VsZFNob3dWYWxpZGF0aW9uTWVzc2FnZSkge1xuICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnJlcG9ydFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGhpZGUoKTogdm9pZCB7XG4gICAgc3VwZXIuaGlkZSgpO1xuICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IHRoaXMucGx1Z2luLnNldHRpbmdzTWFuYWdlci5zYXZlVG9GaWxlKCkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlciB7XG4gIHJldHVybiAhISh2YWx1ZSBhcyBQYXJ0aWFsPFZhbGlkYXRpb25NZXNzYWdlSG9sZGVyPikudmFsaWRhdGlvbk1lc3NhZ2U7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBLHNCQUFpQztBQU1qQyxtQkFBa0M7QUFDbEMsc0JBQXlCO0FBQ3pCLHNCQUFxQjtBQUNyQixnQ0FBc0M7QUFDdEMsc0JBQTRCO0FBa0RyQixNQUFlLDhCQUErRCxpQ0FBaUI7QUFBQSxFQUM3RixZQUE0QixRQUFpQjtBQUNsRCxVQUFNLE9BQU8sS0FBSyxNQUFNO0FBRFM7QUFFakMsU0FBSyxZQUFZLFNBQVMseUJBQVMsaUJBQWEsNkJBQVksR0FBRyx5QkFBUyxpQkFBaUI7QUFBQSxFQUMzRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQW1ETyxLQUtMLGdCQUNBLFVBQ0EsU0FDaUI7QUFHakIsVUFBTSxrQkFBb0Y7QUFBQTtBQUFBLE1BRXhGLHlDQUF5QyxDQUFDLFVBQWlDO0FBQUEsTUFDM0UsV0FBVztBQUFBLE1BQ1gseUNBQXlDLENBQUMsVUFBaUM7QUFBQSxNQUMzRSw2QkFBNkI7QUFBQSxJQUMvQjtBQUVBLFVBQU0sYUFBK0UsRUFBRSxHQUFHLGlCQUFpQixHQUFHLFFBQVE7QUFFdEgsVUFBTSx1QkFBbUIsaURBQXNCLGNBQWMsR0FBRztBQUVoRSxVQUFNLGNBQWMsS0FBSyxPQUFPLGdCQUFnQixZQUFZLFFBQVE7QUFFcEUsbUJBQ0csU0FBUyxXQUFXLHdDQUF3QyxZQUFZLElBQUksQ0FBaUIsQ0FBQyxFQUM5RixTQUFTLE9BQU8sWUFBWTtBQUMzQixZQUFNLGlCQUFpQixXQUFXLHdDQUF3QyxPQUFPO0FBQ2pGLFVBQUksMEJBQTBCLGNBQWMsR0FBRztBQUM3QyxvQkFBWSxvQkFBb0IsZUFBZTtBQUMvQyxjQUFNLFlBQVksSUFBSSxNQUFTO0FBQUEsTUFDakMsT0FBTztBQUNMLGNBQU0sWUFBWSxJQUFJLGNBQWM7QUFBQSxNQUN0QztBQUNBLFlBQU0sV0FBVyxVQUFVO0FBQUEsSUFDN0IsQ0FBQztBQUVILHNCQUFrQixpQkFBaUIsU0FBUyxRQUFRO0FBQ3BELHNCQUFrQixpQkFBaUIsUUFBUSxRQUFRO0FBRW5ELGFBQVM7QUFDVCxXQUFPO0FBRVAsYUFBUyxXQUFpQjtBQUN4QixVQUFJLENBQUMsa0JBQWtCO0FBQ3JCO0FBQUEsTUFDRjtBQUVBLFVBQUksQ0FBQyxZQUFZLG1CQUFtQjtBQUNsQyx5QkFBaUIsa0JBQWtCLEVBQUU7QUFDckMseUJBQWlCLGNBQWM7QUFDL0Isb0JBQVksb0JBQW9CLGlCQUFpQjtBQUFBLE1BQ25EO0FBRUEsdUJBQWlCLGtCQUFrQixZQUFZLGlCQUFpQjtBQUNoRSx1QkFBaUIsUUFBUSxZQUFZO0FBQ3JDLFVBQUksaUJBQWlCLGdCQUFnQixLQUFLLFdBQVcsNkJBQTZCO0FBQ2hGLHlCQUFpQixlQUFlO0FBQUEsTUFDbEM7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBRWdCLE9BQWE7QUFDM0IsVUFBTSxLQUFLO0FBQ1gsd0NBQWtCLE1BQU0sS0FBSyxPQUFPLGdCQUFnQixXQUFXLENBQUM7QUFBQSxFQUNsRTtBQUNGO0FBRUEsU0FBUywwQkFBMEIsT0FBa0Q7QUFDbkYsU0FBTyxDQUFDLENBQUUsTUFBMkM7QUFDdkQ7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
@@ -3,49 +3,34 @@
|
|
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 {
|
7
|
-
import type { ConditionalKeys, Promisable } from 'type-fest';
|
6
|
+
import type { ConditionalKeys, Promisable, WritableDeep } from 'type-fest';
|
8
7
|
import { PluginSettingTab } from 'obsidian';
|
8
|
+
import type { StringKeys } from '../../Object.cjs';
|
9
9
|
import type { ValueComponentWithChangeTracking } from '../Components/ValueComponentWithChangeTracking.cjs';
|
10
10
|
import type { PluginBase } from './PluginBase.cjs';
|
11
|
-
import type { PluginSettingsBase } from './PluginSettingsBase.cjs';
|
12
11
|
/**
|
13
12
|
* Options for binding a value component to a plugin setting.
|
14
13
|
*/
|
15
|
-
export interface BindOptions
|
14
|
+
export interface BindOptions {
|
16
15
|
/**
|
17
16
|
* A callback function that is called when the value of the component changes.
|
18
17
|
*/
|
19
|
-
onChanged
|
20
|
-
/**
|
21
|
-
* The plugin settings object to bind the component to. Default is the plugin's current settings.
|
22
|
-
*/
|
23
|
-
pluginSettings?: PluginSettings;
|
24
|
-
/**
|
25
|
-
* If true, saves the plugin settings automatically after the component value changes. Default is `true`.
|
26
|
-
*/
|
27
|
-
shouldAutoSave?: boolean;
|
18
|
+
onChanged?(): Promisable<void>;
|
28
19
|
/**
|
29
20
|
* If true, shows the validation message when the component value is invalid. Default is `true`.
|
30
21
|
*/
|
31
22
|
shouldShowValidationMessage?: boolean;
|
32
|
-
/**
|
33
|
-
* Validates the UI value before setting it on the plugin settings.
|
34
|
-
* @param uiValue - The value of the UI component.
|
35
|
-
* @returns An error message if the value is invalid, or `(empty string)` or `void` if it is valid.
|
36
|
-
*/
|
37
|
-
valueValidator?: (uiValue: UIValue) => Promisable<string | void>;
|
38
23
|
}
|
39
24
|
/**
|
40
25
|
* Extended options for binding a value component to a plugin setting.
|
41
26
|
*/
|
42
|
-
export interface BindOptionsExtended<PluginSettings, UIValue, Property extends
|
27
|
+
export interface BindOptionsExtended<PluginSettings extends object, UIValue, Property extends StringKeys<PluginSettings>> extends BindOptions {
|
43
28
|
/**
|
44
29
|
* Converts the UI component's value back to the plugin settings value.
|
45
30
|
* @param uiValue - The value of the UI component.
|
46
31
|
* @returns The value to set on the plugin settings.
|
47
32
|
*/
|
48
|
-
componentToPluginSettingsValueConverter: (uiValue: UIValue) => PluginSettings[Property];
|
33
|
+
componentToPluginSettingsValueConverter: (uiValue: UIValue) => PluginSettings[Property] | ValidationMessageHolder;
|
49
34
|
/**
|
50
35
|
* Converts the plugin settings value to the value used by the UI component.
|
51
36
|
* @param pluginSettingsValue - The value of the property in the plugin settings.
|
@@ -53,7 +38,10 @@ export interface BindOptionsExtended<PluginSettings, UIValue, Property extends k
|
|
53
38
|
*/
|
54
39
|
pluginSettingsToComponentValueConverter: (pluginSettingsValue: PluginSettings[Property]) => UIValue;
|
55
40
|
}
|
56
|
-
type ExtractPluginSettings<T extends PluginBase<any>> =
|
41
|
+
type ExtractPluginSettings<T extends PluginBase<any>> = WritableDeep<T['settings']>;
|
42
|
+
interface ValidationMessageHolder {
|
43
|
+
validationMessage: string;
|
44
|
+
}
|
57
45
|
/**
|
58
46
|
* Base class for creating plugin settings tabs in Obsidian.
|
59
47
|
* Provides a method for binding value components to plugin settings and handling changes.
|
@@ -62,7 +50,6 @@ type ExtractPluginSettings<T extends PluginBase<any>> = PluginSettingsBase & T['
|
|
62
50
|
*/
|
63
51
|
export declare abstract class PluginSettingsTabBase<TPlugin extends PluginBase<any>> extends PluginSettingTab {
|
64
52
|
plugin: TPlugin;
|
65
|
-
private validatorsMap;
|
66
53
|
constructor(plugin: TPlugin);
|
67
54
|
/**
|
68
55
|
* Binds a value component to a plugin setting.
|
@@ -74,7 +61,7 @@ export declare abstract class PluginSettingsTabBase<TPlugin extends PluginBase<a
|
|
74
61
|
* @param options - The options for binding the value component.
|
75
62
|
* @returns The value component.
|
76
63
|
*/
|
77
|
-
bind<UIValue, TValueComponent>(valueComponent: TValueComponent & ValueComponentWithChangeTracking<UIValue>, property: ConditionalKeys<ExtractPluginSettings<TPlugin>, UIValue>, options?: BindOptions
|
64
|
+
bind<UIValue, TValueComponent>(valueComponent: TValueComponent & ValueComponentWithChangeTracking<UIValue>, property: ConditionalKeys<ExtractPluginSettings<TPlugin>, UIValue>, options?: BindOptions): TValueComponent;
|
78
65
|
/**
|
79
66
|
* Binds a value component to a plugin setting.
|
80
67
|
*
|
@@ -86,13 +73,7 @@ export declare abstract class PluginSettingsTabBase<TPlugin extends PluginBase<a
|
|
86
73
|
* @param options - The options for binding the value component.
|
87
74
|
* @returns The value component.
|
88
75
|
*/
|
89
|
-
bind<UIValue, TValueComponent, Property extends
|
90
|
-
|
91
|
-
* Revalidates the value component.
|
92
|
-
*
|
93
|
-
* @param baseComponent - The base component to revalidate.
|
94
|
-
* @returns A promise that resolves to a boolean indicating whether the value component is valid.
|
95
|
-
*/
|
96
|
-
protected revalidate(baseComponent: BaseComponent): Promise<boolean>;
|
76
|
+
bind<UIValue, TValueComponent, Property extends StringKeys<ExtractPluginSettings<TPlugin>>>(valueComponent: TValueComponent & ValueComponentWithChangeTracking<UIValue>, property: Property, options: BindOptionsExtended<ExtractPluginSettings<TPlugin>, UIValue, Property>): TValueComponent;
|
77
|
+
hide(): void;
|
97
78
|
}
|
98
79
|
export {};
|
@@ -35,33 +35,30 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
35
35
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
36
36
|
var Plugin_exports = {};
|
37
37
|
__export(Plugin_exports, {
|
38
|
-
EmptySettings: () => EmptySettings,
|
39
38
|
ObsidianPluginRepoPaths: () => ObsidianPluginRepoPaths,
|
40
39
|
Plugin: () => Plugin,
|
41
40
|
PluginBase: () => PluginBase,
|
42
41
|
PluginContext: () => PluginContext,
|
43
42
|
PluginId: () => PluginId,
|
44
|
-
|
43
|
+
PluginSettingsManagerBase: () => PluginSettingsManagerBase,
|
45
44
|
PluginSettingsTabBase: () => PluginSettingsTabBase
|
46
45
|
});
|
47
46
|
module.exports = __toCommonJS(Plugin_exports);
|
48
|
-
var EmptySettings = __toESM(__extractDefault(require('./EmptySettings.cjs')), 1);
|
49
47
|
var ObsidianPluginRepoPaths = __toESM(__extractDefault(require('./ObsidianPluginRepoPaths.cjs')), 1);
|
50
48
|
var Plugin = __toESM(__extractDefault(require('./Plugin.cjs')), 1);
|
51
49
|
var PluginBase = __toESM(__extractDefault(require('./PluginBase.cjs')), 1);
|
52
50
|
var PluginContext = __toESM(__extractDefault(require('./PluginContext.cjs')), 1);
|
53
51
|
var PluginId = __toESM(__extractDefault(require('./PluginId.cjs')), 1);
|
54
|
-
var
|
52
|
+
var PluginSettingsManagerBase = __toESM(__extractDefault(require('./PluginSettingsManagerBase.cjs')), 1);
|
55
53
|
var PluginSettingsTabBase = __toESM(__extractDefault(require('./PluginSettingsTabBase.cjs')), 1);
|
56
54
|
// Annotate the CommonJS export names for ESM import in node:
|
57
55
|
0 && (module.exports = {
|
58
|
-
EmptySettings,
|
59
56
|
ObsidianPluginRepoPaths,
|
60
57
|
Plugin,
|
61
58
|
PluginBase,
|
62
59
|
PluginContext,
|
63
60
|
PluginId,
|
64
|
-
|
61
|
+
PluginSettingsManagerBase,
|
65
62
|
PluginSettingsTabBase
|
66
63
|
});
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
64
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIGZyb20gJy4vT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMudHMnO1xuZXhwb3J0ICogYXMgUGx1Z2luIGZyb20gJy4vUGx1Z2luLnRzJztcbmV4cG9ydCAqIGFzIFBsdWdpbkJhc2UgZnJvbSAnLi9QbHVnaW5CYXNlLnRzJztcbmV4cG9ydCAqIGFzIFBsdWdpbkNvbnRleHQgZnJvbSAnLi9QbHVnaW5Db250ZXh0LnRzJztcbmV4cG9ydCAqIGFzIFBsdWdpbklkIGZyb20gJy4vUGx1Z2luSWQudHMnO1xuZXhwb3J0ICogYXMgUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZSBmcm9tICcuL1BsdWdpblNldHRpbmdzTWFuYWdlckJhc2UudHMnO1xuZXhwb3J0ICogYXMgUGx1Z2luU2V0dGluZ3NUYWJCYXNlIGZyb20gJy4vUGx1Z2luU2V0dGluZ3NUYWJCYXNlLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBLDhCQUF5QztBQUN6QyxhQUF3QjtBQUN4QixpQkFBNEI7QUFDNUIsb0JBQStCO0FBQy9CLGVBQTBCO0FBQzFCLGdDQUEyQztBQUMzQyw0QkFBdUM7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
@@ -1,8 +1,7 @@
|
|
1
|
-
export * as EmptySettings from './EmptySettings.cjs';
|
2
1
|
export * as ObsidianPluginRepoPaths from './ObsidianPluginRepoPaths.cjs';
|
3
2
|
export * as Plugin from './Plugin.cjs';
|
4
3
|
export * as PluginBase from './PluginBase.cjs';
|
5
4
|
export * as PluginContext from './PluginContext.cjs';
|
6
5
|
export * as PluginId from './PluginId.cjs';
|
7
|
-
export * as
|
6
|
+
export * as PluginSettingsManagerBase from './PluginSettingsManagerBase.cjs';
|
8
7
|
export * as PluginSettingsTabBase from './PluginSettingsTabBase.cjs';
|