@mnaoumov/obsidian-lib 7.0.0 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/incremental-file-index-component/package.json +6 -0
- package/dist/lib/cjs/__merged.cjs +15 -1
- package/dist/lib/cjs/__merged.d.cts +2 -0
- package/dist/lib/cjs/components/incremental-file-index-component.cjs +340 -0
- package/dist/lib/cjs/components/incremental-file-index-component.d.cts +152 -0
- package/dist/lib/cjs/components/index.cjs +4 -1
- package/dist/lib/cjs/components/index.d.cts +1 -0
- package/dist/lib/cjs/generated-during-build.cjs +1 -1
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian-word-characters.cjs +231 -0
- package/dist/lib/cjs/obsidian-word-characters.d.cts +59 -0
- package/dist/lib/esm/__merged.d.mts +2 -0
- package/dist/lib/esm/__merged.mjs +15 -1
- package/dist/lib/esm/components/incremental-file-index-component.d.mts +152 -0
- package/dist/lib/esm/components/incremental-file-index-component.mjs +260 -0
- package/dist/lib/esm/components/index.d.mts +1 -0
- package/dist/lib/esm/components/index.mjs +3 -1
- package/dist/lib/esm/generated-during-build.mjs +1 -1
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/obsidian-word-characters.d.mts +59 -0
- package/dist/lib/esm/obsidian-word-characters.mjs +139 -0
- package/package.json +1 -1
|
@@ -0,0 +1,260 @@
|
|
|
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
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return "/";
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: "android"
|
|
14
|
+
};
|
|
15
|
+
const existingProcess = globalThis.process;
|
|
16
|
+
if (!existingProcess) {
|
|
17
|
+
globalThis.process = browserProcess;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (existingProcess.versions?.node) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const existingProcessRecord = existingProcess;
|
|
24
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
25
|
+
existingProcessRecord[key] ??= value;
|
|
26
|
+
}
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ensureBrowserProcess();
|
|
31
|
+
})();
|
|
32
|
+
|
|
33
|
+
import { invokeAsyncSafely } from "@mnaoumov/typescript-lib/async";
|
|
34
|
+
import {
|
|
35
|
+
noop,
|
|
36
|
+
noopAsync
|
|
37
|
+
} from "@mnaoumov/typescript-lib/function";
|
|
38
|
+
import {
|
|
39
|
+
debounce,
|
|
40
|
+
TFile,
|
|
41
|
+
TFolder,
|
|
42
|
+
Vault
|
|
43
|
+
} from "obsidian";
|
|
44
|
+
import { ComponentEx } from "./component-ex.mjs";
|
|
45
|
+
const SAVE_DEBOUNCE_IN_MILLISECONDS = 5e3;
|
|
46
|
+
class IncrementalFileIndexComponent extends ComponentEx {
|
|
47
|
+
/**
|
|
48
|
+
* Whether startup reconciliation has completed.
|
|
49
|
+
*
|
|
50
|
+
* @returns Whether the index completed its first reconciliation.
|
|
51
|
+
*/
|
|
52
|
+
get isBuilt() {
|
|
53
|
+
return this.isBuiltValue;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Projection, notifications and persistence supplied by the consumer.
|
|
57
|
+
*/
|
|
58
|
+
options;
|
|
59
|
+
isBuiltValue = false;
|
|
60
|
+
readTail = noopAsync();
|
|
61
|
+
records = /* @__PURE__ */ new Map();
|
|
62
|
+
requestSave;
|
|
63
|
+
revision = 0;
|
|
64
|
+
revisions = /* @__PURE__ */ new WeakMap();
|
|
65
|
+
savedRevision = 0;
|
|
66
|
+
savePromise = null;
|
|
67
|
+
/**
|
|
68
|
+
* Creates an index with consumer-owned projection and persistence.
|
|
69
|
+
*
|
|
70
|
+
* @param params - The index dependencies.
|
|
71
|
+
*/
|
|
72
|
+
constructor(params) {
|
|
73
|
+
super();
|
|
74
|
+
this.options = { accepts: params.accepts, app: params.app, indexFile: params.indexFile, load: params.load, onRemove: params.onRemove, onSet: params.onSet, save: params.save };
|
|
75
|
+
this.requestSave = debounce(
|
|
76
|
+
() => {
|
|
77
|
+
invokeAsyncSafely(() => this.flush());
|
|
78
|
+
},
|
|
79
|
+
SAVE_DEBOUNCE_IN_MILLISECONDS,
|
|
80
|
+
false
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Saves a snapshot after previous writes finish, including changes arriving during a write.
|
|
85
|
+
*
|
|
86
|
+
* @returns Completion of the serialized writes; rejects on persistence failure without marking it saved.
|
|
87
|
+
*/
|
|
88
|
+
async flush() {
|
|
89
|
+
if (this.savePromise) {
|
|
90
|
+
await this.savePromise;
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
this.savePromise = this.saveChanges();
|
|
94
|
+
try {
|
|
95
|
+
await this.savePromise;
|
|
96
|
+
} finally {
|
|
97
|
+
this.savePromise = null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Returns a shallow snapshot; consumers must treat records as immutable.
|
|
102
|
+
*
|
|
103
|
+
* @returns Current records by vault-relative path.
|
|
104
|
+
*/
|
|
105
|
+
getRecords() {
|
|
106
|
+
return new Map(this.records);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Registers changes before startup restoration.
|
|
110
|
+
*/
|
|
111
|
+
onload() {
|
|
112
|
+
const { app } = this.options;
|
|
113
|
+
this.registerEvent(app.metadataCache.on("changed", (file, content) => {
|
|
114
|
+
this.setText(file, content);
|
|
115
|
+
}));
|
|
116
|
+
this.registerEvent(app.vault.on("create", this.queueScan.bind(this)));
|
|
117
|
+
this.registerEvent(app.vault.on("modify", this.queueScan.bind(this)));
|
|
118
|
+
this.registerEvent(app.vault.on("delete", (file) => {
|
|
119
|
+
if (file instanceof TFile) {
|
|
120
|
+
this.removeRecord(file.path);
|
|
121
|
+
} else {
|
|
122
|
+
this.removeTree(file.path);
|
|
123
|
+
}
|
|
124
|
+
}));
|
|
125
|
+
this.registerEvent(app.vault.on("rename", (file, oldPath) => {
|
|
126
|
+
this.rename(file, oldPath);
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Reuses unchanged saved records and reads other files one at a time.
|
|
131
|
+
*
|
|
132
|
+
* @returns Completion of startup reconciliation.
|
|
133
|
+
*/
|
|
134
|
+
async onloadAsync() {
|
|
135
|
+
const saved = await this.options.load();
|
|
136
|
+
for (const file of this.options.app.vault.getFiles()) {
|
|
137
|
+
if (this.isUnloaded()) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (!this.options.accepts(file) || this.revisions.has(file) || this.options.app.vault.getFileByPath(file.path) !== file) {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const entry = saved.get(file.path);
|
|
144
|
+
if (entry?.mtime === file.stat.mtime && entry.size === file.stat.size) {
|
|
145
|
+
this.setRecord(file.path, entry);
|
|
146
|
+
} else {
|
|
147
|
+
await this.scanFile(file);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
await this.readTail;
|
|
151
|
+
if (this.isUnloaded()) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
this.isBuiltValue = true;
|
|
155
|
+
this.markDirty();
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Cancels the debounce and flushes completed indexes before disposing event listeners.
|
|
159
|
+
*/
|
|
160
|
+
onunload() {
|
|
161
|
+
this.requestSave.cancel();
|
|
162
|
+
if (this.isBuiltValue) {
|
|
163
|
+
invokeAsyncSafely(() => this.flush());
|
|
164
|
+
}
|
|
165
|
+
super.onunload();
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Rebuilds projections for every accepted file, for example after a consumer learns new names to find in text.
|
|
169
|
+
* Events arriving during the scan supersede its older reads. Consumers coordinate any domain scan markers.
|
|
170
|
+
*
|
|
171
|
+
* @returns Completion of the bounded full scan.
|
|
172
|
+
*/
|
|
173
|
+
async rescan() {
|
|
174
|
+
for (const file of this.options.app.vault.getFiles()) {
|
|
175
|
+
await this.scanFile(file);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
markDirty() {
|
|
179
|
+
this.revision++;
|
|
180
|
+
if (this.isBuiltValue && !this.isUnloaded()) {
|
|
181
|
+
this.requestSave();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
queueScan(file) {
|
|
185
|
+
if (file instanceof TFile) {
|
|
186
|
+
invokeAsyncSafely(() => this.scanFile(file));
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
removeRecord(path) {
|
|
190
|
+
if (!this.records.delete(path)) {
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
this.options.onRemove(path);
|
|
194
|
+
this.markDirty();
|
|
195
|
+
}
|
|
196
|
+
removeTree(path) {
|
|
197
|
+
for (const key of this.records.keys()) {
|
|
198
|
+
if (!(key === path || key.startsWith(`${path}/`))) {
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
this.removeRecord(key);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
rename(file, oldPath) {
|
|
205
|
+
if (file instanceof TFile) {
|
|
206
|
+
this.removeRecord(oldPath);
|
|
207
|
+
} else {
|
|
208
|
+
this.removeTree(oldPath);
|
|
209
|
+
}
|
|
210
|
+
this.queueScan(file);
|
|
211
|
+
if (file instanceof TFolder) {
|
|
212
|
+
Vault.recurseChildren(file, this.queueScan.bind(this));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
async saveChanges() {
|
|
216
|
+
while (this.isBuiltValue && this.savedRevision !== this.revision) {
|
|
217
|
+
const revision = this.revision;
|
|
218
|
+
await this.options.save(new Map(this.records));
|
|
219
|
+
this.savedRevision = revision;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
async scanFile(file) {
|
|
223
|
+
if (this.isUnloaded() || !this.options.accepts(file)) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
this.removeRecord(file.path);
|
|
227
|
+
const token = {};
|
|
228
|
+
this.revisions.set(file, token);
|
|
229
|
+
const { path } = file;
|
|
230
|
+
const { mtime, size } = file.stat;
|
|
231
|
+
const isCurrent = () => !this.isUnloaded() && this.revisions.get(file) === token && file.path === path && file.stat.mtime === mtime && file.stat.size === size && this.options.app.vault.getFileByPath(path) === file;
|
|
232
|
+
const read = this.readTail.then(async () => {
|
|
233
|
+
if (!isCurrent()) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
const content = await this.options.app.vault.cachedRead(file);
|
|
237
|
+
if (!isCurrent()) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
this.setText(file, content);
|
|
241
|
+
});
|
|
242
|
+
this.readTail = read.catch(noop);
|
|
243
|
+
await read;
|
|
244
|
+
}
|
|
245
|
+
setRecord(path, entry) {
|
|
246
|
+
this.records.set(path, entry);
|
|
247
|
+
this.options.onSet(path, entry.record);
|
|
248
|
+
this.markDirty();
|
|
249
|
+
}
|
|
250
|
+
setText(file, content) {
|
|
251
|
+
this.revisions.set(file, {});
|
|
252
|
+
if (!this.isUnloaded() && this.options.accepts(file)) {
|
|
253
|
+
this.setRecord(file.path, { mtime: file.stat.mtime, record: this.options.indexFile({ content, file }), size: file.stat.size });
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
export {
|
|
258
|
+
IncrementalFileIndexComponent
|
|
259
|
+
};
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2luY3JlbWVudGFsLWZpbGUtaW5kZXgtY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBJbmNyZW1lbnRhbCBwZXItZmlsZSBwcm9qZWN0aW9ucyB3aXRoIHN0YXQtYmFzZWQgcmVzdG9yYXRpb24gYW5kIGluamVjdGVkIHBlcnNpc3RlbmNlLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBEZWJvdW5jZXIsXG4gIFRBYnN0cmFjdEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBpbnZva2VBc3luY1NhZmVseSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQge1xuICBub29wLFxuICBub29wQXN5bmNcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Z1bmN0aW9uJztcbmltcG9ydCB7XG4gIGRlYm91bmNlLFxuICBURmlsZSxcbiAgVEZvbGRlcixcbiAgVmF1bHRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcblxuY29uc3QgU0FWRV9ERUJPVU5DRV9JTl9NSUxMSVNFQ09ORFMgPSA1MDAwO1xuXG4vKipcbiAqIERlcGVuZGVuY2llcyBvZiBhbiBpbmNyZW1lbnRhbCBpbmRleC4gUGVyc2lzdGVuY2UgbXVzdCB2YWxpZGF0ZSBpdHMgb3duIHNjaGVtYS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgaW1tdXRhYmxlIHBlci1maWxlIHByb2plY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5jcmVtZW50YWxGaWxlSW5kZXhDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtczxUPiB7XG4gIC8qKlxuICAgKiBGaWxlcyBhY2NlcHRlZCBieSB0aGlzIGluZGV4LCBmb3IgZXhhbXBsZSBNYXJrZG93biBmaWxlcyBvbmx5LlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjZXB0czogKGZpbGU6IFRGaWxlKSA9PiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIG93bmluZyB0aGUgdmF1bHQuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcbiAgLyoqXG4gICAqIEJ1aWxkcyBhbiBpbW11dGFibGUgcmVjb3JkIHN5bmNocm9ub3VzbHk7IHRleHQgaXMgbmV2ZXIgcmV0YWluZWQgYnkgdGhpcyBjb21wb25lbnQuXG4gICAqL1xuICByZWFkb25seSBpbmRleEZpbGU6IChwYXJhbXM6IEluZGV4RmlsZVBhcmFtcykgPT4gVDtcbiAgLyoqXG4gICAqIFJlYWRzIHZhbGlkYXRlZCByZWNvcmRzLCBvciBhbiBlbXB0eSBtYXAgZm9yIGEgbWlzc2luZy9pbmNvbXBhdGlibGUgY2FjaGUuXG4gICAqL1xuICByZWFkb25seSBsb2FkOiAoKSA9PiBQcm9taXNlPFJlYWRvbmx5TWFwPHN0cmluZywgSW5kZXhlZEZpbGVSZWNvcmQ8VD4+PjtcbiAgLyoqXG4gICAqIFJlbW92ZXMgYSByZWNvcmQgZnJvbSBhIGNvbnN1bWVyJ3Mgc2Vjb25kYXJ5IGluZGV4LiBDYWxsZWQgZm9yIGtub3duIHJlY29yZHMgb25seS5cbiAgICovXG4gIHJlYWRvbmx5IG9uUmVtb3ZlOiAocGF0aDogc3RyaW5nKSA9PiB2b2lkO1xuICAvKipcbiAgICogVXBkYXRlcyBhIGNvbnN1bWVyJ3Mgc2Vjb25kYXJ5IGluZGV4LCBpbmNsdWRpbmcgcmVzdG9yZWQgcmVjb3Jkcy5cbiAgICovXG4gIHJlYWRvbmx5IG9uU2V0OiAocGF0aDogc3RyaW5nLCByZWNvcmQ6IFQpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBQZXJzaXN0cyBhIHNuYXBzaG90OyB3cml0ZXMgYXJlIHNlcmlhbGl6ZWQgYW5kIHJldHJpZWQgYnkgdGhlIG5leHQgZmx1c2ggYWZ0ZXIgZmFpbHVyZS5cbiAgICovXG4gIHJlYWRvbmx5IHNhdmU6IChyZWNvcmRzOiBSZWFkb25seU1hcDxzdHJpbmcsIEluZGV4ZWRGaWxlUmVjb3JkPFQ+PikgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBBIHByb2plY3Rpb24gYW5kIHRoZSBmaWxlIHN0YXRzIG9ic2VydmVkIGJlZm9yZSByZWFkaW5nIGl0cyB0ZXh0LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSBpbW11dGFibGUgcGVyLWZpbGUgcHJvamVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmRleGVkRmlsZVJlY29yZDxUPiB7XG4gIC8qKlxuICAgKiBMYXN0IG1vZGlmaWNhdGlvbiB0aW1lLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICByZWFkb25seSBtdGltZTogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIGNvbnN1bWVyJ3MgaW1tdXRhYmxlIHByb2plY3Rpb24uXG4gICAqL1xuICByZWFkb25seSByZWNvcmQ6IFQ7XG4gIC8qKlxuICAgKiBGaWxlIHNpemUgaW4gYnl0ZXMuXG4gICAqL1xuICByZWFkb25seSBzaXplOiBudW1iZXI7XG59XG5cbi8qKlxuICogSW5wdXRzIHRvIGEgcGVyLWZpbGUgcHJvamVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmRleEZpbGVQYXJhbXMge1xuICAvKipcbiAgICogVGV4dCByZWFkIGZyb20gdGhlIHZhdWx0LCBvciBzdXBwbGllZCBieSBhIG1ldGFkYXRhLWNhY2hlIGV2ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGZpbGUgYmVpbmcgaW5kZXhlZC5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGU6IFRGaWxlO1xufVxuXG4vKipcbiAqIEtlZXBzIHBlci1maWxlIHByb2plY3Rpb25zIGN1cnJlbnQgd2hpbGUgbG9hZGVkLiBDYWxsIGxvYWRXaXRoUHJvbWlzZXMgYWZ0ZXIgbWV0YWRhdGEgcmVhZGluZXNzIGlmIHRoZVxuICogcHJvamVjdGlvbiBuZWVkcyBjYWNoZWQgbWV0YWRhdGEuIExpc3RlbmVycyBhcmUgaW5zdGFsbGVkIGJlZm9yZSByZXN0b3JhdGlvbiwgYW5kIGV2ZW50cyB3aW4gb3ZlciBvbGRlciByZWFkcy5cbiAqIFJlYWRzIGFyZSBzZXF1ZW50aWFsLCBib3VuZGluZyBtZW1vcnkgYW5kIEkvTzsgY29uc3VtZXJzIG93biBzY2hlbWEsIHN0b3JhZ2UgbG9jYXRpb24gYW5kIHNlY29uZGFyeSBpbmRleGVzLlxuICogVW5jaGFuZ2VkIHJlY29yZHMgYXJlIHJldXNlZCBieSBtdGltZSBhbmQgc2l6ZSwgd2hpY2ggY2Fubm90IGRldGVjdCBhIHNhbWUtc3RhdCBleHRlcm5hbCByZXdyaXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSBpbW11dGFibGUgcGVyLWZpbGUgcHJvamVjdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEluY3JlbWVudGFsRmlsZUluZGV4Q29tcG9uZW50PFQ+IGV4dGVuZHMgQ29tcG9uZW50RXgge1xuICAvKipcbiAgICogV2hldGhlciBzdGFydHVwIHJlY29uY2lsaWF0aW9uIGhhcyBjb21wbGV0ZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGluZGV4IGNvbXBsZXRlZCBpdHMgZmlyc3QgcmVjb25jaWxpYXRpb24uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzQnVpbHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNCdWlsdFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2plY3Rpb24sIG5vdGlmaWNhdGlvbnMgYW5kIHBlcnNpc3RlbmNlIHN1cHBsaWVkIGJ5IHRoZSBjb25zdW1lci5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zOiBJbmNyZW1lbnRhbEZpbGVJbmRleENvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zPFQ+O1xuXG4gIHByaXZhdGUgaXNCdWlsdFZhbHVlID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZFRhaWw6IFByb21pc2U8dm9pZD4gPSBub29wQXN5bmMoKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZWNvcmRzID0gbmV3IE1hcDxzdHJpbmcsIEluZGV4ZWRGaWxlUmVjb3JkPFQ+PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3RTYXZlOiBEZWJvdW5jZXI8W10sIHZvaWQ+O1xuICBwcml2YXRlIHJldmlzaW9uID0gMDtcbiAgcHJpdmF0ZSByZWFkb25seSByZXZpc2lvbnMgPSBuZXcgV2Vha01hcDxURmlsZSwgb2JqZWN0PigpO1xuICBwcml2YXRlIHNhdmVkUmV2aXNpb24gPSAwO1xuICBwcml2YXRlIHNhdmVQcm9taXNlOiBudWxsIHwgUHJvbWlzZTx2b2lkPiA9IG51bGw7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5kZXggd2l0aCBjb25zdW1lci1vd25lZCBwcm9qZWN0aW9uIGFuZCBwZXJzaXN0ZW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBpbmRleCBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBJbmNyZW1lbnRhbEZpbGVJbmRleENvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zPFQ+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7IGFjY2VwdHM6IHBhcmFtcy5hY2NlcHRzLCBhcHA6IHBhcmFtcy5hcHAsIGluZGV4RmlsZTogcGFyYW1zLmluZGV4RmlsZSwgbG9hZDogcGFyYW1zLmxvYWQsIG9uUmVtb3ZlOiBwYXJhbXMub25SZW1vdmUsIG9uU2V0OiBwYXJhbXMub25TZXQsIHNhdmU6IHBhcmFtcy5zYXZlIH07XG4gICAgdGhpcy5yZXF1ZXN0U2F2ZSA9IGRlYm91bmNlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiB0aGlzLmZsdXNoKCkpO1xuICAgICAgfSxcbiAgICAgIFNBVkVfREVCT1VOQ0VfSU5fTUlMTElTRUNPTkRTLFxuICAgICAgZmFsc2VcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGEgc25hcHNob3QgYWZ0ZXIgcHJldmlvdXMgd3JpdGVzIGZpbmlzaCwgaW5jbHVkaW5nIGNoYW5nZXMgYXJyaXZpbmcgZHVyaW5nIGEgd3JpdGUuXG4gICAqXG4gICAqIEByZXR1cm5zIENvbXBsZXRpb24gb2YgdGhlIHNlcmlhbGl6ZWQgd3JpdGVzOyByZWplY3RzIG9uIHBlcnNpc3RlbmNlIGZhaWx1cmUgd2l0aG91dCBtYXJraW5nIGl0IHNhdmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnNhdmVQcm9taXNlKSB7XG4gICAgICBhd2FpdCB0aGlzLnNhdmVQcm9taXNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNhdmVQcm9taXNlID0gdGhpcy5zYXZlQ2hhbmdlcygpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnNhdmVQcm9taXNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnNhdmVQcm9taXNlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHNoYWxsb3cgc25hcHNob3Q7IGNvbnN1bWVycyBtdXN0IHRyZWF0IHJlY29yZHMgYXMgaW1tdXRhYmxlLlxuICAgKlxuICAgKiBAcmV0dXJucyBDdXJyZW50IHJlY29yZHMgYnkgdmF1bHQtcmVsYXRpdmUgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBnZXRSZWNvcmRzKCk6IFJlYWRvbmx5TWFwPHN0cmluZywgSW5kZXhlZEZpbGVSZWNvcmQ8VD4+IHtcbiAgICByZXR1cm4gbmV3IE1hcCh0aGlzLnJlY29yZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBjaGFuZ2VzIGJlZm9yZSBzdGFydHVwIHJlc3RvcmF0aW9uLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGFwcCB9ID0gdGhpcy5vcHRpb25zO1xuICAgIHRoaXMucmVnaXN0ZXJFdmVudChhcHAubWV0YWRhdGFDYWNoZS5vbignY2hhbmdlZCcsIChmaWxlLCBjb250ZW50KSA9PiB7XG4gICAgICB0aGlzLnNldFRleHQoZmlsZSwgY29udGVudCk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50KGFwcC52YXVsdC5vbignY3JlYXRlJywgdGhpcy5xdWV1ZVNjYW4uYmluZCh0aGlzKSkpO1xuICAgIHRoaXMucmVnaXN0ZXJFdmVudChhcHAudmF1bHQub24oJ21vZGlmeScsIHRoaXMucXVldWVTY2FuLmJpbmQodGhpcykpKTtcbiAgICB0aGlzLnJlZ2lzdGVyRXZlbnQoYXBwLnZhdWx0Lm9uKCdkZWxldGUnLCAoZmlsZSkgPT4ge1xuICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICB0aGlzLnJlbW92ZVJlY29yZChmaWxlLnBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVUcmVlKGZpbGUucGF0aCk7XG4gICAgICB9XG4gICAgfSkpO1xuICAgIHRoaXMucmVnaXN0ZXJFdmVudChhcHAudmF1bHQub24oJ3JlbmFtZScsIChmaWxlLCBvbGRQYXRoKSA9PiB7XG4gICAgICB0aGlzLnJlbmFtZShmaWxlLCBvbGRQYXRoKTtcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogUmV1c2VzIHVuY2hhbmdlZCBzYXZlZCByZWNvcmRzIGFuZCByZWFkcyBvdGhlciBmaWxlcyBvbmUgYXQgYSB0aW1lLlxuICAgKlxuICAgKiBAcmV0dXJucyBDb21wbGV0aW9uIG9mIHN0YXJ0dXAgcmVjb25jaWxpYXRpb24uXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgb25sb2FkQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCB0aGlzLm9wdGlvbnMubG9hZCgpO1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiB0aGlzLm9wdGlvbnMuYXBwLnZhdWx0LmdldEZpbGVzKCkpIHtcbiAgICAgIGlmICh0aGlzLmlzVW5sb2FkZWQoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5hY2NlcHRzKGZpbGUpIHx8IHRoaXMucmV2aXNpb25zLmhhcyhmaWxlKSB8fCB0aGlzLm9wdGlvbnMuYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgoZmlsZS5wYXRoKSAhPT0gZmlsZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVudHJ5ID0gc2F2ZWQuZ2V0KGZpbGUucGF0aCk7XG4gICAgICBpZiAoZW50cnk/Lm10aW1lID09PSBmaWxlLnN0YXQubXRpbWUgJiYgZW50cnkuc2l6ZSA9PT0gZmlsZS5zdGF0LnNpemUpIHtcbiAgICAgICAgdGhpcy5zZXRSZWNvcmQoZmlsZS5wYXRoLCBlbnRyeSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLnNjYW5GaWxlKGZpbGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBhd2FpdCB0aGlzLnJlYWRUYWlsO1xuICAgIGlmICh0aGlzLmlzVW5sb2FkZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNCdWlsdFZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLm1hcmtEaXJ0eSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbHMgdGhlIGRlYm91bmNlIGFuZCBmbHVzaGVzIGNvbXBsZXRlZCBpbmRleGVzIGJlZm9yZSBkaXNwb3NpbmcgZXZlbnQgbGlzdGVuZXJzLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9udW5sb2FkKCk6IHZvaWQge1xuICAgIHRoaXMucmVxdWVzdFNhdmUuY2FuY2VsKCk7XG4gICAgaWYgKHRoaXMuaXNCdWlsdFZhbHVlKSB7XG4gICAgICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiB0aGlzLmZsdXNoKCkpO1xuICAgIH1cbiAgICBzdXBlci5vbnVubG9hZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYnVpbGRzIHByb2plY3Rpb25zIGZvciBldmVyeSBhY2NlcHRlZCBmaWxlLCBmb3IgZXhhbXBsZSBhZnRlciBhIGNvbnN1bWVyIGxlYXJucyBuZXcgbmFtZXMgdG8gZmluZCBpbiB0ZXh0LlxuICAgKiBFdmVudHMgYXJyaXZpbmcgZHVyaW5nIHRoZSBzY2FuIHN1cGVyc2VkZSBpdHMgb2xkZXIgcmVhZHMuIENvbnN1bWVycyBjb29yZGluYXRlIGFueSBkb21haW4gc2NhbiBtYXJrZXJzLlxuICAgKlxuICAgKiBAcmV0dXJucyBDb21wbGV0aW9uIG9mIHRoZSBib3VuZGVkIGZ1bGwgc2Nhbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZXNjYW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIHRoaXMub3B0aW9ucy5hcHAudmF1bHQuZ2V0RmlsZXMoKSkge1xuICAgICAgYXdhaXQgdGhpcy5zY2FuRmlsZShmaWxlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcmtEaXJ0eSgpOiB2b2lkIHtcbiAgICB0aGlzLnJldmlzaW9uKys7XG4gICAgaWYgKHRoaXMuaXNCdWlsdFZhbHVlICYmICF0aGlzLmlzVW5sb2FkZWQoKSkge1xuICAgICAgdGhpcy5yZXF1ZXN0U2F2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcXVldWVTY2FuKGZpbGU6IFRBYnN0cmFjdEZpbGUpOiB2b2lkIHtcbiAgICBpZiAoZmlsZSBpbnN0YW5jZW9mIFRGaWxlKSB7XG4gICAgICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiB0aGlzLnNjYW5GaWxlKGZpbGUpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVJlY29yZChwYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVjb3Jkcy5kZWxldGUocGF0aCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9wdGlvbnMub25SZW1vdmUocGF0aCk7XG4gICAgdGhpcy5tYXJrRGlydHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlVHJlZShwYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLnJlY29yZHMua2V5cygpKSB7XG4gICAgICBpZiAoIShrZXkgPT09IHBhdGggfHwga2V5LnN0YXJ0c1dpdGgoYCR7cGF0aH0vYCkpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlbW92ZVJlY29yZChrZXkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuYW1lKGZpbGU6IFRBYnN0cmFjdEZpbGUsIG9sZFBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChmaWxlIGluc3RhbmNlb2YgVEZpbGUpIHtcbiAgICAgIHRoaXMucmVtb3ZlUmVjb3JkKG9sZFBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbW92ZVRyZWUob2xkUGF0aCk7XG4gICAgfVxuICAgIHRoaXMucXVldWVTY2FuKGZpbGUpO1xuICAgIGlmIChmaWxlIGluc3RhbmNlb2YgVEZvbGRlcikge1xuICAgICAgVmF1bHQucmVjdXJzZUNoaWxkcmVuKGZpbGUsIHRoaXMucXVldWVTY2FuLmJpbmQodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2F2ZUNoYW5nZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgd2hpbGUgKHRoaXMuaXNCdWlsdFZhbHVlICYmIHRoaXMuc2F2ZWRSZXZpc2lvbiAhPT0gdGhpcy5yZXZpc2lvbikge1xuICAgICAgY29uc3QgcmV2aXNpb24gPSB0aGlzLnJldmlzaW9uO1xuICAgICAgYXdhaXQgdGhpcy5vcHRpb25zLnNhdmUobmV3IE1hcCh0aGlzLnJlY29yZHMpKTtcbiAgICAgIHRoaXMuc2F2ZWRSZXZpc2lvbiA9IHJldmlzaW9uO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2NhbkZpbGUoZmlsZTogVEZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc1VubG9hZGVkKCkgfHwgIXRoaXMub3B0aW9ucy5hY2NlcHRzKGZpbGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucmVtb3ZlUmVjb3JkKGZpbGUucGF0aCk7XG4gICAgY29uc3QgdG9rZW4gPSB7fTtcbiAgICB0aGlzLnJldmlzaW9ucy5zZXQoZmlsZSwgdG9rZW4pO1xuICAgIGNvbnN0IHsgcGF0aCB9ID0gZmlsZTtcbiAgICBjb25zdCB7IG10aW1lLCBzaXplIH0gPSBmaWxlLnN0YXQ7XG4gICAgY29uc3QgaXNDdXJyZW50ID0gKCk6IGJvb2xlYW4gPT5cbiAgICAgICF0aGlzLmlzVW5sb2FkZWQoKSAmJiB0aGlzLnJldmlzaW9ucy5nZXQoZmlsZSkgPT09IHRva2VuICYmIGZpbGUucGF0aCA9PT0gcGF0aFxuICAgICAgJiYgZmlsZS5zdGF0Lm10aW1lID09PSBtdGltZSAmJiBmaWxlLnN0YXQuc2l6ZSA9PT0gc2l6ZSAmJiB0aGlzLm9wdGlvbnMuYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgocGF0aCkgPT09IGZpbGU7XG4gICAgY29uc3QgcmVhZCA9IHRoaXMucmVhZFRhaWwudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIWlzQ3VycmVudCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCB0aGlzLm9wdGlvbnMuYXBwLnZhdWx0LmNhY2hlZFJlYWQoZmlsZSk7XG4gICAgICBpZiAoIWlzQ3VycmVudCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0VGV4dChmaWxlLCBjb250ZW50KTtcbiAgICB9KTtcbiAgICB0aGlzLnJlYWRUYWlsID0gcmVhZC5jYXRjaChub29wKTtcbiAgICBhd2FpdCByZWFkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRSZWNvcmQocGF0aDogc3RyaW5nLCBlbnRyeTogSW5kZXhlZEZpbGVSZWNvcmQ8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZHMuc2V0KHBhdGgsIGVudHJ5KTtcbiAgICB0aGlzLm9wdGlvbnMub25TZXQocGF0aCwgZW50cnkucmVjb3JkKTtcbiAgICB0aGlzLm1hcmtEaXJ0eSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUZXh0KGZpbGU6IFRGaWxlLCBjb250ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJldmlzaW9ucy5zZXQoZmlsZSwge30pO1xuICAgIGlmICghdGhpcy5pc1VubG9hZGVkKCkgJiYgdGhpcy5vcHRpb25zLmFjY2VwdHMoZmlsZSkpIHtcbiAgICAgIHRoaXMuc2V0UmVjb3JkKGZpbGUucGF0aCwgeyBtdGltZTogZmlsZS5zdGF0Lm10aW1lLCByZWNvcmQ6IHRoaXMub3B0aW9ucy5pbmRleEZpbGUoeyBjb250ZW50LCBmaWxlIH0pLCBzaXplOiBmaWxlLnN0YXQuc2l6ZSB9KTtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZQSxTQUFTLHlCQUF5QjtBQUNsQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLG1CQUFtQjtBQUU1QixNQUFNLGdDQUFnQztBQWdGL0IsTUFBTSxzQ0FBeUMsWUFBWTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1oRSxJQUFXLFVBQW1CO0FBQzVCLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUttQjtBQUFBLEVBRVgsZUFBZTtBQUFBLEVBQ2YsV0FBMEIsVUFBVTtBQUFBLEVBQzNCLFVBQVUsb0JBQUksSUFBa0M7QUFBQSxFQUNoRDtBQUFBLEVBQ1QsV0FBVztBQUFBLEVBQ0YsWUFBWSxvQkFBSSxRQUF1QjtBQUFBLEVBQ2hELGdCQUFnQjtBQUFBLEVBQ2hCLGNBQW9DO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT3JDLFlBQVksUUFBMkQ7QUFDNUUs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
|
|
@@ -11,6 +11,7 @@ export * as 'disposable-component' from './disposable-component.mjs';
|
|
|
11
11
|
export * as 'embed-extensions-component' from './embed-extensions-component.mjs';
|
|
12
12
|
export * as 'file-explorer-root-menu-component' from './file-explorer-root-menu-component.mjs';
|
|
13
13
|
export * as 'generate-markdown-link-default-params-component' from './generate-markdown-link-default-params-component.mjs';
|
|
14
|
+
export * as 'incremental-file-index-component' from './incremental-file-index-component.mjs';
|
|
14
15
|
export * as 'layout-ready-component' from './layout-ready-component.mjs';
|
|
15
16
|
export * as 'menu-event-registrar-component' from './menu-event-registrar-component.mjs';
|
|
16
17
|
export * as 'monkey-around-component' from './monkey-around-component.mjs';
|
|
@@ -15,6 +15,7 @@ import * as disposable_component from "./disposable-component.mjs";
|
|
|
15
15
|
import * as embed_extensions_component from "./embed-extensions-component.mjs";
|
|
16
16
|
import * as file_explorer_root_menu_component from "./file-explorer-root-menu-component.mjs";
|
|
17
17
|
import * as generate_markdown_link_default_params_component from "./generate-markdown-link-default-params-component.mjs";
|
|
18
|
+
import * as incremental_file_index_component from "./incremental-file-index-component.mjs";
|
|
18
19
|
import * as layout_ready_component from "./layout-ready-component.mjs";
|
|
19
20
|
import * as menu_event_registrar_component from "./menu-event-registrar-component.mjs";
|
|
20
21
|
import * as monkey_around_component from "./monkey-around-component.mjs";
|
|
@@ -46,6 +47,7 @@ export {
|
|
|
46
47
|
embed_extensions_component as "embed-extensions-component",
|
|
47
48
|
file_explorer_root_menu_component as "file-explorer-root-menu-component",
|
|
48
49
|
generate_markdown_link_default_params_component as "generate-markdown-link-default-params-component",
|
|
50
|
+
incremental_file_index_component as "incremental-file-index-component",
|
|
49
51
|
layout_ready_component as "layout-ready-component",
|
|
50
52
|
menu_event_registrar_component as "menu-event-registrar-component",
|
|
51
53
|
monkey_around_component as "monkey-around-component",
|
|
@@ -65,4 +67,4 @@ export {
|
|
|
65
67
|
syntax_highlighting_component as "syntax-highlighting-component",
|
|
66
68
|
templates_language_component as "templates-language-component"
|
|
67
69
|
};
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnYWJvcnQtc2lnbmFsLWNvbXBvbmVudCcgZnJvbSAnLi9hYm9ydC1zaWduYWwtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQnIGZyb20gJy4vYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudCcgZnJvbSAnLi9hc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnYXN5bmMtZXZlbnRzLWNvbXBvbmVudCcgZnJvbSAnLi9hc3luYy1ldmVudHMtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdjYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgtY29tcG9uZW50JyBmcm9tICcuL2Nhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2NvbXBvbmVudC1leCcgZnJvbSAnLi9jb21wb25lbnQtZXgudHMnO1xuZXhwb3J0ICogYXMgJ2NvbnNvbGUtZGVidWctY29tcG9uZW50JyBmcm9tICcuL2NvbnNvbGUtZGVidWctY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdjb3JlLXBsdWdpbi10b2dnbGUtY29tcG9uZW50JyBmcm9tICcuL2NvcmUtcGx1Z2luLXRvZ2dsZS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2Rpc3Bvc2FibGUtY29tcG9uZW50JyBmcm9tICcuL2Rpc3Bvc2FibGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdlbWJlZC1leHRlbnNpb25zLWNvbXBvbmVudCcgZnJvbSAnLi9lbWJlZC1leHRlbnNpb25zLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnZmlsZS1leHBsb3Jlci1yb290LW1lbnUtY29tcG9uZW50JyBmcm9tICcuL2ZpbGUtZXhwbG9yZXItcm9vdC1tZW51LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnZ2VuZXJhdGUtbWFya2Rvd24tbGluay1kZWZhdWx0LXBhcmFtcy1jb21wb25lbnQnIGZyb20gJy4vZ2VuZXJhdGUtbWFya2Rvd24tbGluay1kZWZhdWx0LXBhcmFtcy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2luY3JlbWVudGFsLWZpbGUtaW5kZXgtY29tcG9uZW50JyBmcm9tICcuL2luY3JlbWVudGFsLWZpbGUtaW5kZXgtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdsYXlvdXQtcmVhZHktY29tcG9uZW50JyBmcm9tICcuL2xheW91dC1yZWFkeS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ21lbnUtZXZlbnQtcmVnaXN0cmFyLWNvbXBvbmVudCcgZnJvbSAnLi9tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ21vbmtleS1hcm91bmQtY29tcG9uZW50JyBmcm9tICcuL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdub3RlYm9vay1uYXZpZ2F0b3ItbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50JyBmcm9tICcuL25vdGVib29rLW5hdmlnYXRvci1tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1jb250ZXh0LWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tY29udGV4dC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1nYXRlLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tZ2F0ZS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1ub3RpY2UtY29tcG9uZW50JyBmcm9tICcuL3BsdWdpbi1ub3RpY2UtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50JyBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1zZXR0aW5ncy10YWItY29tcG9uZW50JyBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncy10YWItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tc3VnZ2VzdGlvbi1jb21wb25lbnQnIGZyb20gJy4vcGx1Z2luLXN1Z2dlc3Rpb24tY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwb2ludGVyLXBvc2l0aW9uLWNvbXBvbmVudCcgZnJvbSAnLi9wb2ludGVyLXBvc2l0aW9uLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncmVnaXN0cnktY29tcG9uZW50JyBmcm9tICcuL3JlZ2lzdHJ5LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncmVsZWFzZS1ub3Rlcy1jb21wb25lbnQnIGZyb20gJy4vcmVsZWFzZS1ub3Rlcy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3JlbmFtZS1kZWxldGUtaGFuZGxlci1jb21wb25lbnQnIGZyb20gJy4vcmVuYW1lLWRlbGV0ZS1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncm1kaXItZ3VhcmQtY29tcG9uZW50JyBmcm9tICcuL3JtZGlyLWd1YXJkLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnc2V0dGluZ3MtbWlncmF0aW9uLWNvbXBvbmVudCcgZnJvbSAnLi9zZXR0aW5ncy1taWdyYXRpb24tY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdzeW50YXgtaGlnaGxpZ2h0aW5nLWNvbXBvbmVudCcgZnJvbSAnLi9zeW50YXgtaGlnaGxpZ2h0aW5nLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAndGVtcGxhdGVzLWxhbmd1YWdlLWNvbXBvbmVudCcgZnJvbSAnLi90ZW1wbGF0ZXMtbGFuZ3VhZ2UtY29tcG9uZW50LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBRUEsWUFBWUEsNEJBQThCO0FBQzFDLFlBQVlDLGlDQUFtQztBQUMvQyxZQUFZQyxtQ0FBcUM7QUFDakQsWUFBWUMsNEJBQThCO0FBQzFDLFlBQVlDLDJDQUE2QztBQUN6RCxZQUFZQyxrQkFBb0I7QUFDaEMsWUFBWUMsNkJBQStCO0FBQzNDLFlBQVlDLGtDQUFvQztBQUNoRCxZQUFZQywwQkFBNEI7QUFDeEMsWUFBWUMsZ0NBQWtDO0FBQzlDLFlBQVlDLHVDQUF5QztBQUNyRCxZQUFZQyxxREFBdUQ7QUFDbkUsWUFBWUMsc0NBQXdDO0FBQ3BELFlBQVlDLDRCQUE4QjtBQUMxQyxZQUFZQyxvQ0FBc0M7QUFDbEQsWUFBWUMsNkJBQStCO0FBQzNDLFlBQVlDLHVEQUF5RDtBQUNyRSxZQUFZQyw4QkFBZ0M7QUFDNUMsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVlDLDZCQUErQjtBQUMzQyxZQUFZQywrQkFBaUM7QUFDN0MsWUFBWUMsbUNBQXFDO0FBQ2pELFlBQVlDLGlDQUFtQztBQUMvQyxZQUFZQyxnQ0FBa0M7QUFDOUMsWUFBWUMsd0JBQTBCO0FBQ3RDLFlBQVlDLDZCQUErQjtBQUMzQyxZQUFZQyxxQ0FBdUM7QUFDbkQsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVlDLGtDQUFvQztBQUNoRCxZQUFZQyxtQ0FBcUM7QUFDakQsWUFBWUMsa0NBQW9DOyIsCiAgIm5hbWVzIjogWyJhYm9ydC1zaWduYWwtY29tcG9uZW50IiwgImFsbC13aW5kb3dzLWV2ZW50LWNvbXBvbmVudCIsICJhc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudCIsICJhc3luYy1ldmVudHMtY29tcG9uZW50IiwgImNhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleC1jb21wb25lbnQiLCAiY29tcG9uZW50LWV4IiwgImNvbnNvbGUtZGVidWctY29tcG9uZW50IiwgImNvcmUtcGx1Z2luLXRvZ2dsZS1jb21wb25lbnQiLCAiZGlzcG9zYWJsZS1jb21wb25lbnQiLCAiZW1iZWQtZXh0ZW5zaW9ucy1jb21wb25lbnQiLCAiZmlsZS1leHBsb3Jlci1yb290LW1lbnUtY29tcG9uZW50IiwgImdlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50IiwgImluY3JlbWVudGFsLWZpbGUtaW5kZXgtY29tcG9uZW50IiwgImxheW91dC1yZWFkeS1jb21wb25lbnQiLCAibWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50IiwgIm1vbmtleS1hcm91bmQtY29tcG9uZW50IiwgIm5vdGVib29rLW5hdmlnYXRvci1tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQiLCAicGx1Z2luLWNvbnRleHQtY29tcG9uZW50IiwgInBsdWdpbi1nYXRlLWNvbXBvbmVudCIsICJwbHVnaW4tbm90aWNlLWNvbXBvbmVudCIsICJwbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50IiwgInBsdWdpbi1zZXR0aW5ncy10YWItY29tcG9uZW50IiwgInBsdWdpbi1zdWdnZXN0aW9uLWNvbXBvbmVudCIsICJwb2ludGVyLXBvc2l0aW9uLWNvbXBvbmVudCIsICJyZWdpc3RyeS1jb21wb25lbnQiLCAicmVsZWFzZS1ub3Rlcy1jb21wb25lbnQiLCAicmVuYW1lLWRlbGV0ZS1oYW5kbGVyLWNvbXBvbmVudCIsICJybWRpci1ndWFyZC1jb21wb25lbnQiLCAic2V0dGluZ3MtbWlncmF0aW9uLWNvbXBvbmVudCIsICJzeW50YXgtaGlnaGxpZ2h0aW5nLWNvbXBvbmVudCIsICJ0ZW1wbGF0ZXMtbGFuZ3VhZ2UtY29tcG9uZW50Il0KfQo=
|
|
@@ -3,7 +3,7 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
|
3
3
|
if you want to view the source, please visit the github repository of this plugin
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
const LIBRARY_VERSION = "7.
|
|
6
|
+
const LIBRARY_VERSION = "7.1.0";
|
|
7
7
|
const LIBRARY_STYLES = ".obsidian-lib.code-highlighter-component textarea, .obsidian-lib.code-highlighter-component pre, .obsidian-lib.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-lib.code-highlighter-component textarea, .obsidian-lib.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-lib.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-lib.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-lib.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-lib.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-lib.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-lib-lock-indicator {\n display: inline-flex;\n align-items: center;\n color: var(--text-muted);\n}\n.obsidian-lib-lock-indicator .svg-icon {\n width: var(--icon-s);\n height: var(--icon-s);\n}\n\n@keyframes obsidian-lib-lock-indicator-flash {\n 40% {\n color: var(--text-error);\n transform: scale(1.4);\n }\n}\n.obsidian-lib-lock-indicator-flash {\n animation: obsidian-lib-lock-indicator-flash 0.35s ease-in-out;\n}\n\n.obsidian-lib input[type=url] {\n height: var(--input-height);\n}\n.obsidian-lib input[type=month],\n.obsidian-lib input[type=tel],\n.obsidian-lib input[type=time],\n.obsidian-lib input[type=url],\n.obsidian-lib input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-lib input[type=month]:hover,\n .obsidian-lib input[type=tel]:hover,\n .obsidian-lib input[type=time]:hover,\n .obsidian-lib input[type=url]:hover,\n .obsidian-lib input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-lib input[type=month]:active, .obsidian-lib input[type=month]:focus,\n.obsidian-lib input[type=tel]:active,\n.obsidian-lib input[type=tel]:focus,\n.obsidian-lib input[type=time]:active,\n.obsidian-lib input[type=time]:focus,\n.obsidian-lib input[type=url]:active,\n.obsidian-lib input[type=url]:focus,\n.obsidian-lib input[type=week]:active,\n.obsidian-lib input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-lib input[type=month]:active, .obsidian-lib input[type=month]:focus, .obsidian-lib input[type=month]:focus-visible,\n.obsidian-lib input[type=tel]:active,\n.obsidian-lib input[type=tel]:focus,\n.obsidian-lib input[type=tel]:focus-visible,\n.obsidian-lib input[type=time]:active,\n.obsidian-lib input[type=time]:focus,\n.obsidian-lib input[type=time]:focus-visible,\n.obsidian-lib input[type=url]:active,\n.obsidian-lib input[type=url]:focus,\n.obsidian-lib input[type=url]:focus-visible,\n.obsidian-lib input[type=week]:active,\n.obsidian-lib input[type=week]:focus,\n.obsidian-lib input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-lib input[type=month]::placeholder,\n.obsidian-lib input[type=tel]::placeholder,\n.obsidian-lib input[type=time]::placeholder,\n.obsidian-lib input[type=url]::placeholder,\n.obsidian-lib input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-lib input[type=month],\n.obsidian-lib input[type=time],\n.obsidian-lib input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-lib input[type=month]::-webkit-datetime-edit-text,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-text,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-lib input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-lib input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-lib input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-lib input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-lib input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-lib input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-lib input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-lib input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-lib input[type=month], .is-rtl .obsidian-lib input[type=month], .rtl .obsidian-lib input[type=month],\n.mod-rtl .obsidian-lib input[type=time],\n.is-rtl .obsidian-lib input[type=time],\n.rtl .obsidian-lib input[type=time],\n.mod-rtl .obsidian-lib input[type=week],\n.is-rtl .obsidian-lib input[type=week],\n.rtl .obsidian-lib input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-lib input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-lib input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-lib input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-lib input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-lib input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-lib input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-lib input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-lib input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-lib input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-lib input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\nprogress.obsidian-lib.loop {\n min-width: 200px;\n}\n\n@keyframes obsidian-lib-minimized-modal-bar-pulse {\n 0%, 100% {\n box-shadow: var(--shadow-s);\n }\n 50% {\n box-shadow: 0 0 0 2px var(--interactive-accent);\n }\n}\n@keyframes obsidian-lib-minimized-modal-bar-attention {\n 0% {\n box-shadow: 0 0 0 0 var(--interactive-accent);\n }\n 40% {\n box-shadow: 0 0 0 4px var(--interactive-accent);\n }\n 100% {\n box-shadow: var(--shadow-s);\n }\n}\n.obsidian-lib.minimizable-modal .minimize-button {\n position: absolute;\n top: var(--size-4-2);\n right: calc(var(--size-4-2) + var(--size-4-9));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-lib.minimizable-modal .minimize-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n.obsidian-lib.minimized-modal-bar {\n position: fixed;\n right: var(--size-4-4);\n bottom: calc(var(--size-4-4) + var(--size-4-8));\n z-index: var(--layer-modal);\n display: flex;\n align-items: center;\n gap: var(--size-4-2);\n padding: var(--size-4-2) var(--size-4-3);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-m);\n background: var(--background-secondary);\n box-shadow: var(--shadow-s);\n cursor: pointer;\n animation: obsidian-lib-minimized-modal-bar-pulse 2s ease-in-out infinite;\n}\n.obsidian-lib.minimized-modal-bar:hover {\n background-image: linear-gradient(var(--background-modifier-hover), var(--background-modifier-hover));\n}\n.obsidian-lib.minimized-modal-bar.minimized-modal-bar-attention {\n animation: obsidian-lib-minimized-modal-bar-attention 0.35s ease-out;\n}\n.obsidian-lib.minimized-modal-bar .minimized-modal-bar-title {\n font-weight: var(--font-medium);\n}\n.obsidian-lib.minimized-modal-bar .restore-button,\n.obsidian-lib.minimized-modal-bar .cancel-button {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-lib.minimized-modal-bar .restore-button:hover,\n.obsidian-lib.minimized-modal-bar .cancel-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n\n.obsidian-lib.modal-commands {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-2-2);\n padding: var(--size-4-2) var(--size-4-3);\n border-top: 1px solid var(--background-modifier-border);\n}\n.obsidian-lib.modal-command-control {\n margin-inline-start: var(--size-2-2);\n vertical-align: middle;\n}\n.obsidian-lib.modal-command {\n display: inline-flex;\n align-items: baseline;\n gap: var(--size-2-2);\n min-height: var(--size-4-8);\n padding: var(--size-2-1) var(--size-4-2);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-s);\n background-color: var(--background-secondary);\n color: var(--text-muted);\n font-size: var(--font-ui-smaller);\n white-space: nowrap;\n cursor: pointer;\n}\n.obsidian-lib.modal-command:hover:not(:disabled) {\n background-color: var(--background-modifier-hover);\n color: var(--text-normal);\n}\n.obsidian-lib.modal-command.is-active {\n border-color: var(--interactive-accent);\n background-color: var(--interactive-accent);\n color: var(--text-on-accent);\n}\n.obsidian-lib.modal-command:disabled {\n opacity: 0.5;\n cursor: default;\n}\n.obsidian-lib.modal-command-hotkey {\n color: var(--text-faint);\n font-size: var(--font-smallest);\n}\n.modal-command.is-active .obsidian-lib.modal-command-hotkey {\n opacity: 0.7;\n color: var(--text-on-accent);\n}\n\n.obsidian-lib.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-lib.multiple-dropdown-component select,\n.obsidian-lib.multiple-dropdown-component select:focus,\n.obsidian-lib.multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-lib.multiple-dropdown-component select option:checked,\n.obsidian-lib.multiple-dropdown-component select:focus option:checked,\n.obsidian-lib.multiple-dropdown-component .dropdown option:checked {\n background-color: var(--interactive-accent);\n color: var(--text-on-accent);\n}\n\n.obsidian-lib.plugin-notice-name {\n color: var(--text-accent);\n display: inline-block;\n font-weight: var(--font-bold);\n margin-bottom: var(--size-4-2);\n}\n.obsidian-lib.plugin-notice-name code {\n color: inherit;\n}\n.obsidian-lib.plugin-notice-content {\n padding-right: var(--size-4-5);\n position: relative;\n}\n.obsidian-lib.plugin-notice-content .obsidian-lib.cancel-button {\n display: block;\n margin-top: var(--size-4-2);\n width: fit-content;\n}\n.obsidian-lib.plugin-notice-content .obsidian-lib.plugin-notice-close-button {\n position: absolute;\n right: var(--size-4-3);\n top: var(--size-4-3);\n}\n.obsidian-lib.plugin-notice-requires-explicit-close.notice {\n padding: 0;\n}\n.obsidian-lib.plugin-notice-requires-explicit-close.notice .obsidian-lib.plugin-notice-content {\n padding: var(--size-4-3) var(--size-4-4);\n}\n\n.obsidian-lib.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-lib.plugin-suggestion-banner {\n background-color: var(--background-secondary);\n border-left: var(--size-2-1) solid var(--text-accent);\n border-radius: var(--radius-s);\n display: flex;\n flex-direction: column;\n gap: var(--size-4-2);\n margin-bottom: var(--size-4-4);\n padding: var(--size-4-3) var(--size-4-4);\n}\n.obsidian-lib.plugin-suggestion-banner button {\n width: fit-content;\n}\n.obsidian-lib.plugin-suggestion-notice-buttons {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-4-2);\n margin-top: var(--size-4-2);\n}\n\n.obsidian-lib.popover {\n max-width: min(420px, 90vw);\n min-width: 320px;\n padding: var(--size-4-2) var(--size-4-3);\n position: absolute;\n z-index: var(--layer-menu);\n}\n.obsidian-lib.popover .setting-item {\n align-items: center;\n border-top: none;\n gap: var(--size-4-2);\n padding: var(--size-2-1) 0;\n}\n.obsidian-lib.popover .setting-item-info {\n margin-right: 0;\n}\n.obsidian-lib.popover .setting-item-control {\n flex-grow: 1;\n justify-content: flex-end;\n}\n.obsidian-lib.popover input[type=text] {\n width: 100%;\n}\n\n.obsidian-lib.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-lib button:not(.clickable-icon) {\n color: var(--text-color);\n}\n\n.obsidian-lib.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-lib :invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-lib input.metadata-input-text:active:invalid:not(.untouched), .obsidian-lib input.metadata-input-text:focus-visible:invalid:not(.untouched), .obsidian-lib input.metadata-input-text:focus:invalid:not(.untouched),\n.obsidian-lib input[type=date]:active:invalid:not(.untouched),\n.obsidian-lib input[type=date]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=date]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=datetime-local]:active:invalid:not(.untouched),\n.obsidian-lib input[type=datetime-local]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=datetime-local]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=email]:active:invalid:not(.untouched),\n.obsidian-lib input[type=email]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=email]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=number]:active:invalid:not(.untouched),\n.obsidian-lib input[type=number]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=number]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=password]:active:invalid:not(.untouched),\n.obsidian-lib input[type=password]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=password]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=search]:active:invalid:not(.untouched),\n.obsidian-lib input[type=search]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=search]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=text]:active:invalid:not(.untouched),\n.obsidian-lib input[type=text]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=text]:focus:invalid:not(.untouched),\n.obsidian-lib textarea:active:invalid:not(.untouched),\n.obsidian-lib textarea:focus-visible:invalid:not(.untouched),\n.obsidian-lib textarea:focus:invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-lib.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-lib.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-lib.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/editor-lock.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/minimizable-modal.scss%22,%22../src/styles/modal-commands.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/plugin-notice.scss%22,%22../src/styles/plugin-settings-tab.scss%22,%22../src/styles/plugin-suggestion.scss%22,%22../src/styles/popover.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tldraw-button-color-workaround.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACvCN;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAMJ;EACE;IACE;IACA;;;AAIJ;EACE;;;ACvBA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;AC/CK;EACP;;;ACJJ;EACE;IAEE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;EAGF;IACE;;;AAOA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AASN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAOA;EACE;;AAOF;EACE;;AAGF;EACE;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACE;EACA;;;ACpGN;EACE;EACA;EACA;EACA;EACA;;AAOF;EACE;EACA;;AAMF;EACE;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAKF;EACE;EACA;;AAIJ;EACE;EACA;;AAGA;EACE;EACA;;;ACpEF;EACE;EACA;;;ACCF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACZN;EACE;EACA;EACA;EACA;;AAGA;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAKF;EACE;EACA;EACA;;AAOJ;EACE;;AAEA;EACE;;;ACrCF;EACE;;;ACFJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKJ;EACE;EACA;EACA;EACA;;;ACjBF;EAIE;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AC9BF;EACE;;;ACUN;EACE;;;ACZE;EACE;;;ACKJ;EAPA;;AAuBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAvBJ;;AA6BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-lib%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20Lock%20indicators%20shown%20in%20the%20tab%20header%20and%20the%20status%20bar%20while%20a%20note%20is%20locked.%20These%20live%20in%5Cn//%20global%20Obsidian%20DOM%20(tab%20header%20/%20status%20bar),%20so%20they%20are%20styled%20with%20a%20global%20class%20rather%20than%5Cn//%20scoped%20under%20%60.obsidian-lib%60.%5Cn.obsidian-lib-lock-indicator%20%7B%5Cn%20%20display:%20inline-flex;%5Cn%20%20align-items:%20center;%5Cn%20%20color:%20var(--text-muted);%5Cn%5Cn%20%20.svg-icon%20%7B%5Cn%20%20%20%20width:%20var(--icon-s);%5Cn%20%20%20%20height:%20var(--icon-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn//%20Flashed%20on%20every%20lock%20indicator%20(tab%20header,%20view%20action,%20status%20bar)%20when%20the%20user%20attempts%20to%5Cn//%20type%20in%20a%20locked%20note,%20to%20make%20clear%20the%20note%20is%20read-only.%20Re-added%20per%20rejected%20keystroke.%5Cn@keyframes%20obsidian-lib-lock-indicator-flash%20%7B%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20color:%20var(--text-error);%5Cn%20%20%20%20transform:%20scale(1.4);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-lib-lock-indicator-flash%20%7B%5Cn%20%20animation:%20obsidian-lib-lock-indicator-flash%200.35s%20ease-in-out;%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20//%20Not%20%60&progress%60:%20that%20APPENDS%20the%20element%20name%20to%20the%20parent%20class,%20producing%20one%20long%20class%20that%20matches%5Cn%20%20//%20nothing.%20The%20element%20type%20has%20to%20lead%20the%20compound%20selector%20instead.%5Cn%20%20@at-root%20progress%23%7B&%7D.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@keyframes%20obsidian-lib-minimized-modal-bar-pulse%20%7B%5Cn%20%200%25,%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%5Cn%20%2050%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%202px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn@keyframes%20obsidian-lib-minimized-modal-bar-attention%20%7B%5Cn%20%200%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%200%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%204px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-lib%20%7B%5Cn%20%20//%20The%20minimize%20button%20lives%20inside%20the%20modal%20container,%20left%20of%20Obsidian's%20close%20button.%5Cn%20%20&.minimizable-modal%20%7B%5Cn%20%20%20%20.minimize-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20right:%20calc(var(--size-4-2)%20+%20var(--size-4-9));%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20The%20minimized%20bar%20is%20appended%20to%20document.body.%20It%20floats%20at%20the%20bottom-right%20while%20minimized,%5Cn%20%20//%20and%20gently%20pulses%20an%20accent%20ring%20so%20the%20user%20does%20not%20forget%20about%20the%20minimized%20operation.%5Cn%20%20//%20It%20floats%20a%20status-bar's%20height%20above%20the%20bottom%20edge%20so%20it%20never%20covers%20the%20bottom-right%5Cn%20%20//%20status-bar%20items%20(e.g.%20the%20editor-lock%20unlock%20indicator,%20which%20lives%20in%20the%20same%20corner).%5Cn%20%20&.minimized-modal-bar%20%7B%5Cn%20%20%20%20position:%20fixed;%5Cn%20%20%20%20right:%20var(--size-4-4);%5Cn%20%20%20%20bottom:%20calc(var(--size-4-4)%20+%20var(--size-4-8));%5Cn%20%20%20%20z-index:%20var(--layer-modal);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20align-items:%20center;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-m);%5Cn%20%20%20%20background:%20var(--background-secondary);%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20animation:%20obsidian-lib-minimized-modal-bar-pulse%202s%20ease-in-out%20infinite;%5Cn%5Cn%20%20%20%20//%20Layer%20the%20translucent%20hover%20tint%20over%20the%20opaque%20%60background%60%20(%60--background-secondary%60)%20via%5Cn%20%20%20%20//%20%60background-image%60%20instead%20of%20replacing%20the%20background-color.%20%60--background-modifier-hover%60%20is%5Cn%20%20%20%20//%20translucent,%20so%20setting%20it%20as%20%60background%60%20would%20let%20the%20editor%20content%20behind%20the%20floating%20bar%5Cn%20%20%20%20//%20bleed%20through%20and%20make%20the%20title%20unreadable.%20A%20gradient%20of%20the%20tint%20composited%20over%20the%20opaque%5Cn%20%20%20%20//%20base%20keeps%20the%20bar%20opaque%20while%20preserving%20the%20subtle%20hover%20highlight.%5Cn%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20background-image:%20linear-gradient(var(--background-modifier-hover),%20var(--background-modifier-hover));%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20one-shot,%20more%20pronounced%20flash%20played%20when%20the%20user%20attempts%20a%20blocked%20action%20(a%20keystroke,%5Cn%20%20%20%20//%20right-click,%20or%20opening%20another%20modal)%20while%20this%20modal%20is%20minimized,%20so%20the%20block%20is%20not%5Cn%20%20%20%20//%20silent.%20Its%20higher%20specificity%20overrides%20the%20gentle%20infinite%20idle%20pulse%20while%20it%20plays;%20the%5Cn%20%20%20%20//%20class%20is%20removed%20on%20%60animationend%60,%20restoring%20the%20idle%20pulse.%5Cn%20%20%20%20&.minimized-modal-bar-attention%20%7B%5Cn%20%20%20%20%20%20animation:%20obsidian-lib-minimized-modal-bar-attention%200.35s%20ease-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.minimized-modal-bar-title%20%7B%5Cn%20%20%20%20%20%20font-weight:%20var(--font-medium);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.restore-button,%5Cn%20%20%20%20.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20//%20The%20strip%20of%20commands%20along%20the%20bottom%20of%20a%20modal.%5Cn%20%20//%5Cn%20%20//%20In%20%60Instructions%60%20render%20mode%20it%20also%20carries%20Obsidian's%20own%20%60.prompt-instructions%60%20%E2%80%94%20whose%20rule%20is%5Cn%20%20//%20unscoped,%20so%20it%20applies%20to%20a%20plain%20%60Modal%60%20too%20%E2%80%94%20and%20this%20one%20only%20re-tunes%20that%20rule's%20%60gap%60%20and%5Cn%20%20//%20%60padding%60%20and%20adds%20the%20separator;%20in%20%60Buttons%60%20mode%20it%20is%20the%20whole%20strip.%5Cn%20%20&.modal-commands%20%7B%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-wrap:%20wrap;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border-top:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%7D%5Cn%5Cn%20%20//%20A%20control%20the%20%60Instructions%60%20renderer%20injects%20into%20an%20instruction's%20purpose%20text%20%E2%80%94%20a%20checkbox,%20a%5Cn%20%20//%20dropdown.%20Obsidian%20styles%20the%20instruction%20bar%20itself,%20but%20its%20own%20bar%20never%20contains%20a%20control,%20so%5Cn%20%20//%20nothing%20upstream%20separates%20one%20from%20the%20label%20it%20belongs%20to.%20Sits%20on%20the%20control%20rather%20than%20on%20the%5Cn%20%20//%20strip,%20so%20it%20reaches%20a%20%60SuggestModal%60's%20native%20bar%20as%20well%20as%20a%20self-created%20one.%5Cn%20%20&.modal-command-control%20%7B%5Cn%20%20%20%20margin-inline-start:%20var(--size-2-2);%5Cn%20%20%20%20vertical-align:%20middle;%5Cn%20%20%7D%5Cn%5Cn%20%20//%20One%20command%20button.%20Replaces%20the%20instruction%20bar%20rather%20than%20supplementing%20it:%20the%20bar%20can%20only%20ever%5Cn%20%20//%20say%20which%20key%20to%20press,%20and%20on%20a%20phone%20there%20is%20no%20modifier%20key%20to%20press,%20so%20every%20control%20it%20names%5Cn%20%20//%20is%20unreachable%20there.%5Cn%20%20&.modal-command%20%7B%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%20%20align-items:%20baseline;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%5Cn%20%20%20%20//%20Comfortably%20tappable%20on%20a%20phone,%20where%20this%20strip%20is%20the%20only%20way%20in.%5Cn%20%20%20%20min-height:%20var(--size-4-8);%5Cn%20%20%20%20padding:%20var(--size-2-1)%20var(--size-4-2);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20color:%20var(--text-muted);%5Cn%20%20%20%20font-size:%20var(--font-ui-smaller);%5Cn%20%20%20%20white-space:%20nowrap;%5Cn%20%20%20%20cursor:%20pointer;%5Cn%5Cn%20%20%20%20&:hover:not(:disabled)%20%7B%5Cn%20%20%20%20%20%20background-color:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20toggle%20that%20is%20ON.%20An%20action%20never%20carries%20it%20%E2%80%94%20it%20does%20something%20and%20is%20done,%20so%20there%20is%20no%5Cn%20%20%20%20//%20state%20for%20it%20to%20show.%5Cn%20%20%20%20&.is-active%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20background-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20Disabled%20rather%20than%20removed:%20a%20strip%20that%20lost%20buttons%20as%20modes%20change%20would%20reflow%20under%20the%5Cn%20%20%20%20//%20pointer,%20which%20on%20a%20phone%20means%20a%20mis-tap.%5Cn%20%20%20%20&:disabled%20%7B%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%20%20cursor:%20default;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.modal-command-hotkey%20%7B%5Cn%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20font-size:%20var(--font-smallest);%5Cn%5Cn%20%20%20%20//%20Faint%20against%20the%20surface%20is%20right;%20faint%20against%20the%20accent%20fill%20is%20invisible.%5Cn%20%20%20%20.modal-command.is-active%20&%20%7B%5Cn%20%20%20%20%20%20opacity:%200.7;%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20//%20Compound,%20not%20nested:%20%60addPluginCssClasses%60%20puts%20%60obsidian-lib%60%20and%20%60multiple-dropdown-component%60%20on%20the%5Cn%20%20//%20SAME%20element%20(the%20setting's%20control%20container),%20so%20a%20descendant%20selector%20matched%20nothing%20and%20every%20multiple%5Cn%20%20//%20dropdown%20rendered%20one%20row%20tall%20%E2%80%94%20Obsidian's%20%60.dropdown%60%20height,%20with%20no%20popup%20behind%20it%20to%20pick%20from.%5Cn%20%20&.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.plugin-notice-name%20%7B%5Cn%20%20%20%20color:%20var(--text-accent);%5Cn%20%20%20%20display:%20inline-block;%5Cn%20%20%20%20font-weight:%20var(--font-bold);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-2);%5Cn%5Cn%20%20%20%20//%20The%20name%20is%20inline%20code;%20it%20keeps%20the%20code%20background%20and%20font%20but%20takes%20the%20prefix's%20accent%20color.%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20color:%20inherit;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.plugin-notice-content%20%7B%5Cn%20%20%20%20padding-right:%20var(--size-4-5);%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20.obsidian-lib.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20margin-top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20The%20close%20button%20reuses%20Obsidian's%20%60modal-header-button%60%20+%20%60clickable-icon%60%20classes%20so%20it%20matches%5Cn%20%20%20%20//%20The%20native%20modal%20close%20button%20(box%20+%20hover);%20only%20its%20corner%20position%20is%20set%20here.%5Cn%20%20%20%20.obsidian-lib.plugin-notice-close-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20right:%20var(--size-4-3);%5Cn%20%20%20%20%20%20top:%20var(--size-4-3);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20Move%20the%20notice's%20own%20padding%20onto%20the%20content%20wrapper%20so%20the%20wrapper%20covers%20the%20whole%20clickable%5Cn%20%20//%20Area%20%E2%80%94%20otherwise%20a%20click%20landing%20on%20the%20notice's%20bare%20padding%20(outside%20the%20wrapper)%20would%20bypass%20the%5Cn%20%20//%20Stop-propagation%20guard%20and%20dismiss%20the%20hard-to-close%20notice.%5Cn%20%20&.plugin-notice-requires-explicit-close.notice%20%7B%5Cn%20%20%20%20padding:%200;%5Cn%5Cn%20%20%20%20.obsidian-lib.plugin-notice-content%20%7B%5Cn%20%20%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.plugin-suggestion-banner%20%7B%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20border-left:%20var(--size-2-1)%20solid%20var(--text-accent);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-direction:%20column;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-4);%5Cn%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%5Cn%20%20%20%20button%20%7B%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20A%20notice%20lays%20its%20buttons%20out%20inline%20with%20no%20spacing,%20so%20the%20action%20button%20would%20touch%20the%20decline%20button.%5Cn%20%20&.plugin-suggestion-notice-buttons%20%7B%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-wrap:%20wrap;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20margin-top:%20var(--size-4-2);%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20A%20popover%20is%20anchored%20at%20a%20point%20and%20appended%20to%20the%20document%20body,%20outside%20any%20plugin-scoped%5Cn//%20container,%20so%20it%20is%20positioned%20absolutely%20at%20the%20top%20level.%20It%20borrows%20Obsidian's%20%60.menu%60%20look,%5Cn//%20which%20already%20carries%20the%20popup%20background,%20border%20and%20shadow%20%E2%80%94%20only%20layout%20is%20set%20here.%5Cn.obsidian-lib%20%7B%5Cn%20%20&.popover%20%7B%5Cn%20%20%20%20//%20Deliberately%20not%20%60calc(100vw%20-%2016px)%60:%20the%20SCSS%20compiler%20strips%20the%20%60calc(%60%20wrapper%20inside%5Cn%20%20%20%20//%20%60min()%60,%20which%20yields%20invalid%20CSS.%20A%20viewport%20percentage%20keeps%20a%20narrow%20window's%20popover%20on%5Cn%20%20%20%20//%20screen.%5Cn%20%20%20%20max-width:%20min(420px,%2090vw);%5Cn%20%20%20%20min-width:%20320px;%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20z-index:%20var(--layer-menu);%5Cn%5Cn%20%20%20%20//%20Setting%20rows%20are%20built%20for%20a%20full-width%20settings%20tab;%20compact%20them%20for%20a%20popover.%5Cn%20%20%20%20.setting-item%20%7B%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20border-top:%20none;%5Cn%20%20%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20%20%20padding:%20var(--size-2-1)%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-info%20%7B%5Cn%20%20%20%20%20%20margin-right:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-control%20%7B%5Cn%20%20%20%20%20%20flex-grow:%201;%5Cn%20%20%20%20%20%20justify-content:%20flex-end;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20input%5Btype='text'%5D%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20The%20tldraw%20Obsidian%20plugin%20(tldraw/obsidian-plugin)%20ships%20an%20unscoped%20global%20rule%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20currentColor%20%7D%60%20that%20overrides%20Obsidian's%20own%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20var(--text-color)%20%7D%60%20app-wide.%20Obsidian%20sets%5Cn//%20%60--text-color%60%20contextually%20per%20button%20variant%20(%60--text-normal%60%20by%20default,%5Cn//%20%60--text-on-accent%60%20for%20%60.mod-cta%60,%20%60--text-error%60%20for%20%60.mod-warning%60),%20so%20tldraw's%5Cn//%20%60currentColor%60%20discards%20that%20and%20breaks%20button%20contrast%20outside%20tldraw%20%E2%80%94%20e.g.%5Cn//%20White-on-white%20action%20buttons%20inside%20a%20Notice.%20Re-assert%20Obsidian's%20own%20value%20inside%20the%5Cn//%20Library's%20own%20UI%20(specificity%200,2,1),%20which%20wins%20over%20tldraw's%20(0,1,1)%20while%20staying%20correct%5Cn//%20For%20every%20button%20variant%20(it%20reuses%20the%20same%20contextual%20%60--text-color%60).%5Cn//%20It%20MUST%20stay%20scoped%20to%20%60.obsidian-lib%60:%20an%20unscoped%20re-assert%20(it%20was%20%60body%20button%E2%80%A6%60,%5Cn//%200,1,2)%20lands%20on%20every%20button%20in%20the%20app%20and%20beats%20any%20other%20plugin's%20own%20button%20color%5Cn//%20Written%20at%200,1,1,%20which%20Obsidian's%20own%20rule%20used%20to%20lose%20to%20(obsidian-custom-attachment-location%2395).%5Cn//%20Defensive%20workaround%20%E2%80%94%20remove%20once%20the%20upstream%20fix%20ships%20(tldraw/obsidian-plugin%23210).%5Cn.obsidian-lib%20button:not(.clickable-icon)%20%7B%5Cn%20%20color:%20var(--text-color);%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn//%20An%20input%20the%20user%20has%20not%20interacted%20with%20yet%20carries%20%60.untouched%60%20(set%20by%20%60PromptModal%60),%20so%20a%20modal%20that%5Cn//%20opens%20invalid%20by%20design%20does%20not%20greet%20the%20user%20in%20red.%20Both%20blocks%20below%20must%20be%20gated:%20the%20input%20is%5Cn//%20focused%20on%20open,%20so%20the%20focus%20block%20alone%20would%20keep%20painting%20it.%5Cn.obsidian-lib%20%7B%5Cn%20%20:invalid:not(.untouched)%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid:not(.untouched)%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
|
|
8
8
|
export {
|
|
9
9
|
LIBRARY_STYLES,
|
package/dist/lib/esm/index.d.mts
CHANGED
|
@@ -69,6 +69,7 @@ export * as 'notebook-navigator' from './notebook-navigator.mjs';
|
|
|
69
69
|
export * as 'obsidian-lib-state' from './obsidian-lib-state.mjs';
|
|
70
70
|
export * as 'obsidian-protocol-handler-registrar' from './obsidian-protocol-handler-registrar.mjs';
|
|
71
71
|
export * as 'obsidian-settings' from './obsidian-settings.mjs';
|
|
72
|
+
export * as 'obsidian-word-characters' from './obsidian-word-characters.mjs';
|
|
72
73
|
export * as 'parse-link' from './parse-link.mjs';
|
|
73
74
|
export * as 'path-settings' from './path-settings.mjs';
|
|
74
75
|
export * as 'pdf' from './pdf.mjs';
|
package/dist/lib/esm/index.mjs
CHANGED
|
@@ -73,6 +73,7 @@ import * as notebook_navigator from "./notebook-navigator.mjs";
|
|
|
73
73
|
import * as obsidian_lib_state from "./obsidian-lib-state.mjs";
|
|
74
74
|
import * as obsidian_protocol_handler_registrar from "./obsidian-protocol-handler-registrar.mjs";
|
|
75
75
|
import * as obsidian_settings from "./obsidian-settings.mjs";
|
|
76
|
+
import * as obsidian_word_characters from "./obsidian-word-characters.mjs";
|
|
76
77
|
import * as parse_link from "./parse-link.mjs";
|
|
77
78
|
import * as path_settings from "./path-settings.mjs";
|
|
78
79
|
import * as pdf from "./pdf.mjs";
|
|
@@ -170,6 +171,7 @@ export {
|
|
|
170
171
|
obsidian_lib_state as "obsidian-lib-state",
|
|
171
172
|
obsidian_protocol_handler_registrar as "obsidian-protocol-handler-registrar",
|
|
172
173
|
obsidian_settings as "obsidian-settings",
|
|
174
|
+
obsidian_word_characters as "obsidian-word-characters",
|
|
173
175
|
parse_link as "parse-link",
|
|
174
176
|
path_settings as "path-settings",
|
|
175
177
|
pdf,
|
|
@@ -197,4 +199,4 @@ export {
|
|
|
197
199
|
view_registrar as "view-registrar",
|
|
198
200
|
workspace
|
|
199
201
|
};
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ19fbWVyZ2VkJyBmcm9tICcuL19fbWVyZ2VkLnRzJztcbmV4cG9ydCAqIGFzICdhY3RpdmUtZmlsZS1wcm92aWRlcicgZnJvbSAnLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5leHBvcnQgKiBhcyAnYXBwJyBmcm9tICcuL2FwcC50cyc7XG5leHBvcnQgKiBhcyAnYXN5bmMtd2l0aC1ub3RpY2UnIGZyb20gJy4vYXN5bmMtd2l0aC1ub3RpY2UudHMnO1xuZXhwb3J0ICogYXMgJ2F0dGFjaG1lbnQtcGF0aCcgZnJvbSAnLi9hdHRhY2htZW50LXBhdGgudHMnO1xuZXhwb3J0ICogYXMgJ2F0dGFjaG1lbnQtdW5pdC1mb2xkZXInIGZyb20gJy4vYXR0YWNobWVudC11bml0LWZvbGRlci50cyc7XG5leHBvcnQgKiBhcyAnYmFja2xpbmstaW5kZXgnIGZyb20gJy4vYmFja2xpbmstaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ2JhY2tsaW5rJyBmcm9tICcuL2JhY2tsaW5rLnRzJztcbmV4cG9ydCAqIGFzICdiYXNlcy12aWV3LXJlZ2lzdHJhcicgZnJvbSAnLi9iYXNlcy12aWV3LXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnY2FsbG91dCcgZnJvbSAnLi9jYWxsb3V0LnRzJztcbmV4cG9ydCAqIGFzICdjYW52YXMnIGZyb20gJy4vY2FudmFzLnRzJztcbmV4cG9ydCAqIGFzICdjYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgnIGZyb20gJy4vY2FzZS1pbnNlbnNpdGl2ZS1maWxlLWluZGV4LnRzJztcbmV4cG9ydCAqIGFzICdjb2RlLWJsb2NrLW1hcmtkb3duLWluZm9ybWF0aW9uJyBmcm9tICcuL2NvZGUtYmxvY2stbWFya2Rvd24taW5mb3JtYXRpb24udHMnO1xuZXhwb3J0ICogYXMgJ2NvZGUtYmxvY2stcmVnLWV4cCcgZnJvbSAnLi9jb2RlLWJsb2NrLXJlZy1leHAudHMnO1xuZXhwb3J0ICogYXMgJ2NvZGVtaXJyb3InIGZyb20gJy4vY29kZW1pcnJvci9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnY29tbWFuZC1oYW5kbGVycycgZnJvbSAnLi9jb21tYW5kLWhhbmRsZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdjb21tYW5kLXJlZ2lzdHJhcicgZnJvbSAnLi9jb21tYW5kLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnY29tbXVuaXR5LXBsdWdpbnMnIGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbnMudHMnO1xuZXhwb3J0ICogYXMgJ2NvbXBvbmVudHMnIGZyb20gJy4vY29tcG9uZW50cy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnY29uc3RydWN0b3JzJyBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnY3NzLWNsYXNzJyBmcm9tICcuL2Nzcy1jbGFzcy50cyc7XG5leHBvcnQgKiBhcyAnZGF0YS1oYW5kbGVyJyBmcm9tICcuL2RhdGEtaGFuZGxlci50cyc7XG5leHBvcnQgKiBhcyAnZGF0YS1zdG9yZXMnIGZyb20gJy4vZGF0YS1zdG9yZXMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ2RhdGF2aWV3LWxpbmsnIGZyb20gJy4vZGF0YXZpZXctbGluay50cyc7XG5leHBvcnQgKiBhcyAnZGF0YXZpZXcnIGZyb20gJy4vZGF0YXZpZXcudHMnO1xuZXhwb3J0ICogYXMgJ2RlYnVnJyBmcm9tICcuL2RlYnVnLnRzJztcbmV4cG9ydCAqIGFzICdkZW1vLXZhdWx0LWhlbHBlci1zZXR0aW5ncycgZnJvbSAnLi9kZW1vLXZhdWx0LWhlbHBlci1zZXR0aW5ncy50cyc7XG5leHBvcnQgKiBhcyAnZGVtby12YXVsdC1oZWxwZXInIGZyb20gJy4vZGVtby12YXVsdC1oZWxwZXIudHMnO1xuZXhwb3J0ICogYXMgJ2RlbW8tdmF1bHQtbmFtaW5nJyBmcm9tICcuL2RlbW8tdmF1bHQtbmFtaW5nLnRzJztcbmV4cG9ydCAqIGFzICdkZXNrdG9wLWRlbW8tdmF1bHQtb3BlbmVyJyBmcm9tICcuL2Rlc2t0b3AtZGVtby12YXVsdC1vcGVuZXIudHMnO1xuZXhwb3J0ICogYXMgJ2Rlc2t0b3AtdHJ1c3RlZC1pbnB1dCcgZnJvbSAnLi9kZXNrdG9wLXRydXN0ZWQtaW5wdXQudHMnO1xuZXhwb3J0ICogYXMgJ2VkaXRvci1leHRlbnNpb24tcmVnaXN0cmFyJyBmcm9tICcuL2VkaXRvci1leHRlbnNpb24tcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdlZGl0b3Itc3VnZ2VzdC1yZWdpc3RyYXInIGZyb20gJy4vZWRpdG9yLXN1Z2dlc3QtcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdlZGl0b3InIGZyb20gJy4vZWRpdG9yLnRzJztcbmV4cG9ydCAqIGFzICdldmVudHMnIGZyb20gJy4vZXZlbnRzLnRzJztcbmV4cG9ydCAqIGFzICdleHRlbnNpb25zLXJlZ2lzdHJhcicgZnJvbSAnLi9leHRlbnNpb25zLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnZmlsZS1jaGFuZ2UnIGZyb20gJy4vZmlsZS1jaGFuZ2UudHMnO1xuZXhwb3J0ICogYXMgJ2ZpbGUtZXhwbG9yZXInIGZyb20gJy4vZmlsZS1leHBsb3Jlci50cyc7XG5leHBvcnQgKiBhcyAnZmlsZS1tYW5hZ2VyJyBmcm9tICcuL2ZpbGUtbWFuYWdlci50cyc7XG5leHBvcnQgKiBhcyAnZmlsZS1zeXN0ZW0nIGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuZXhwb3J0ICogYXMgJ2ZvbGRlci1ub3RlJyBmcm9tICcuL2ZvbGRlci1ub3RlLnRzJztcbmV4cG9ydCAqIGFzICdmcm9udG1hdHRlci1mb3JtYXR0aW5nJyBmcm9tICcuL2Zyb250bWF0dGVyLWZvcm1hdHRpbmcudHMnO1xuZXhwb3J0ICogYXMgJ2Zyb250bWF0dGVyLWxpbmstY2FjaGUtd2l0aC1vZmZzZXRzJyBmcm9tICcuL2Zyb250bWF0dGVyLWxpbmstY2FjaGUtd2l0aC1vZmZzZXRzLnRzJztcbmV4cG9ydCAqIGFzICdmcm9udG1hdHRlcicgZnJvbSAnLi9mcm9udG1hdHRlci50cyc7XG5leHBvcnQgKiBhcyAnZ2VuZXJhdGVkLWR1cmluZy1idWlsZCcgZnJvbSAnLi9nZW5lcmF0ZWQtZHVyaW5nLWJ1aWxkLnRzJztcbmV4cG9ydCAqIGFzICdob3Zlci1saW5rLXNvdXJjZS1yZWdpc3RyYXInIGZyb20gJy4vaG92ZXItbGluay1zb3VyY2UtcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdodG1sLWVsZW1lbnQnIGZyb20gJy4vaHRtbC1lbGVtZW50LnRzJztcbmV4cG9ydCAqIGFzICdpMThuJyBmcm9tICcuL2kxOG4vaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ2lzLWluLW9ic2lkaWFuJyBmcm9tICcuL2lzLWluLW9ic2lkaWFuLnRzJztcbmV4cG9ydCAqIGFzICdsaWJyYXJ5LXN0eWxlcycgZnJvbSAnLi9saWJyYXJ5LXN0eWxlcy50cyc7XG5leHBvcnQgKiBhcyAnbGlicmFyeScgZnJvbSAnLi9saWJyYXJ5LnRzJztcbmV4cG9ydCAqIGFzICdsaW5rLW5hbWUnIGZyb20gJy4vbGluay1uYW1lLnRzJztcbmV4cG9ydCAqIGFzICdsaW5rLXVwZGF0ZS1wcm9ncmVzcycgZnJvbSAnLi9saW5rLXVwZGF0ZS1wcm9ncmVzcy50cyc7XG5leHBvcnQgKiBhcyAnbGluaycgZnJvbSAnLi9saW5rLnRzJztcbmV4cG9ydCAqIGFzICdsb2dnZXInIGZyb20gJy4vbG9nZ2VyLnRzJztcbmV4cG9ydCAqIGFzICdsb29wJyBmcm9tICcuL2xvb3AudHMnO1xuZXhwb3J0ICogYXMgJ21hcmtkb3duLWNvZGUtYmxvY2stcHJvY2Vzc29yLXJlZ2lzdHJhcicgZnJvbSAnLi9tYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci1yZWdpc3RyYXIudHMnO1xuZXhwb3J0ICogYXMgJ21hcmtkb3duLWNvZGUtYmxvY2stcHJvY2Vzc29yJyBmcm9tICcuL21hcmtkb3duLWNvZGUtYmxvY2stcHJvY2Vzc29yLnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bi1wb3N0LXByb2Nlc3Nvci1yZWdpc3RyYXInIGZyb20gJy4vbWFya2Rvd24tcG9zdC1wcm9jZXNzb3ItcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bi12aWV3JyBmcm9tICcuL21hcmtkb3duLXZpZXcudHMnO1xuZXhwb3J0ICogYXMgJ21hcmtkb3duJyBmcm9tICcuL21hcmtkb3duLnRzJztcbmV4cG9ydCAqIGFzICdtZW51LWV2ZW50LXJlZ2lzdHJhcicgZnJvbSAnLi9tZW51LWV2ZW50LXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnbWV0YWRhdGEtY2FjaGUnIGZyb20gJy4vbWV0YWRhdGEtY2FjaGUudHMnO1xuZXhwb3J0ICogYXMgJ21vYmlsZS10cnVzdGVkLWlucHV0JyBmcm9tICcuL21vYmlsZS10cnVzdGVkLWlucHV0LnRzJztcbmV4cG9ydCAqIGFzICdtb2RhbHMnIGZyb20gJy4vbW9kYWxzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdub3RlLXByaW9yaXR5JyBmcm9tICcuL25vdGUtcHJpb3JpdHkudHMnO1xuZXhwb3J0ICogYXMgJ25vdGVib29rLW5hdmlnYXRvcicgZnJvbSAnLi9ub3RlYm9vay1uYXZpZ2F0b3IudHMnO1xuZXhwb3J0ICogYXMgJ29ic2lkaWFuLWxpYi1zdGF0ZScgZnJvbSAnLi9vYnNpZGlhbi1saWItc3RhdGUudHMnO1xuZXhwb3J0ICogYXMgJ29ic2lkaWFuLXByb3RvY29sLWhhbmRsZXItcmVnaXN0cmFyJyBmcm9tICcuL29ic2lkaWFuLXByb3RvY29sLWhhbmRsZXItcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdvYnNpZGlhbi1zZXR0aW5ncycgZnJvbSAnLi9vYnNpZGlhbi1zZXR0aW5ncy50cyc7XG5leHBvcnQgKiBhcyAncGFyc2UtbGluaycgZnJvbSAnLi9wYXJzZS1saW5rLnRzJztcbmV4cG9ydCAqIGFzICdwYXRoLXNldHRpbmdzJyBmcm9tICcuL3BhdGgtc2V0dGluZ3MudHMnO1xuZXhwb3J0ICogYXMgJ3BkZicgZnJvbSAnLi9wZGYudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbicgZnJvbSAnLi9wbHVnaW4vaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1jbGktaGFuZGxlci1yZWdpc3RyYXInIGZyb20gJy4vcGx1Z2luLWNsaS1oYW5kbGVyLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAncG9wb3ZlcnMnIGZyb20gJy4vcG9wb3ZlcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3Byb3BlcnR5LWVudHJ5JyBmcm9tICcuL3Byb3BlcnR5LWVudHJ5LnRzJztcbmV4cG9ydCAqIGFzICdxdWV1ZScgZnJvbSAnLi9xdWV1ZS50cyc7XG5leHBvcnQgKiBhcyAncmVhY3QnIGZyb20gJy4vcmVhY3QvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3JlZmVyZW5jZScgZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuZXhwb3J0ICogYXMgJ3Jlc291cmNlLWxvY2snIGZyb20gJy4vcmVzb3VyY2UtbG9jay50cyc7XG5leHBvcnQgKiBhcyAncmVzb3VyY2UtdXJsJyBmcm9tICcuL3Jlc291cmNlLXVybC50cyc7XG5leHBvcnQgKiBhcyAncmliYm9uLWljb24tcmVnaXN0cmFyJyBmcm9tICcuL3JpYmJvbi1pY29uLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnc2V0dGluZy1jb21wb25lbnRzJyBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnc2V0dGluZy1leCcgZnJvbSAnLi9zZXR0aW5nLWV4LnRzJztcbmV4cG9ydCAqIGFzICdzZXR0aW5nLWdyb3VwLWV4JyBmcm9tICcuL3NldHRpbmctZ3JvdXAtZXgudHMnO1xuZXhwb3J0ICogYXMgJ3N0YXR1cy1iYXItaXRlbS1yZWdpc3RyYXInIGZyb20gJy4vc3RhdHVzLWJhci1pdGVtLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAndGVtcGxhdGVyJyBmcm9tICcuL3RlbXBsYXRlci50cyc7XG5leHBvcnQgKiBhcyAndHJhbnNmb3JtZXJzJyBmcm9tICcuL3RyYW5zZm9ybWVycy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAndHJ1c3RlZC1pbnB1dCcgZnJvbSAnLi90cnVzdGVkLWlucHV0LnRzJztcbmV4cG9ydCAqIGFzICd2YWxpZGF0aW9uJyBmcm9tICcuL3ZhbGlkYXRpb24udHMnO1xuZXhwb3J0ICogYXMgJ3ZhdWx0LWRlbGV0ZScgZnJvbSAnLi92YXVsdC1kZWxldGUudHMnO1xuZXhwb3J0ICogYXMgJ3ZhdWx0LXRyYW5zYWN0aW9uJyBmcm9tICcuL3ZhdWx0LXRyYW5zYWN0aW9uLnRzJztcbmV4cG9ydCAqIGFzICd2YXVsdCcgZnJvbSAnLi92YXVsdC50cyc7XG5leHBvcnQgKiBhcyAndmlldy1yZWdpc3RyYXInIGZyb20gJy4vdmlldy1yZWdpc3RyYXIudHMnO1xuZXhwb3J0ICogYXMgJ3dvcmtzcGFjZScgZnJvbSAnLi93b3Jrc3BhY2UudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7QUFFQSxZQUFZLGNBQWdCO0FBQzVCLFlBQVlBLDBCQUE0QjtBQUN4QyxZQUFZLFNBQVc7QUFDdkIsWUFBWUMsdUJBQXlCO0FBQ3JDLFlBQVlDLHFCQUF1QjtBQUNuQyxZQUFZQyw0QkFBOEI7QUFDMUMsWUFBWUMsb0JBQXNCO0FBQ2xDLFlBQVksY0FBZ0I7QUFDNUIsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVksYUFBZTtBQUMzQixZQUFZLFlBQWM7QUFDMUIsWUFBWUMsaUNBQW1DO0FBQy9DLFlBQVlDLHFDQUF1QztBQUNuRCxZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWSxnQkFBa0I7QUFDOUIsWUFBWUMsc0JBQXdCO0FBQ3BDLFlBQVlDLHVCQUF5QjtBQUNyQyxZQUFZQyx1QkFBeUI7QUFDckMsWUFBWSxnQkFBa0I7QUFDOUIsWUFBWSxrQkFBb0I7QUFDaEMsWUFBWUMsZUFBaUI7QUFDN0IsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLGlCQUFtQjtBQUMvQixZQUFZQyxtQkFBcUI7QUFDakMsWUFBWSxjQUFnQjtBQUM1QixZQUFZLFdBQWE7QUFDekIsWUFBWUMsZ0NBQWtDO0FBQzlDLFlBQVlDLHVCQUF5QjtBQUNyQyxZQUFZQyx1QkFBeUI7QUFDckMsWUFBWUMsK0JBQWlDO0FBQzdDLFlBQVlDLDJCQUE2QjtBQUN6QyxZQUFZQyxnQ0FBa0M7QUFDOUMsWUFBWUMsOEJBQWdDO0FBQzVDLFlBQVksWUFBYztBQUMxQixZQUFZLFlBQWM7QUFDMUIsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVlDLGlCQUFtQjtBQUMvQixZQUFZQyxtQkFBcUI7QUFDakMsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLGlCQUFtQjtBQUMvQixZQUFZQyxpQkFBbUI7QUFDL0IsWUFBWUMsNEJBQThCO0FBQzFDLFlBQVlDLHlDQUEyQztBQUN2RCxZQUFZLGlCQUFtQjtBQUMvQixZQUFZQyw0QkFBOEI7QUFDMUMsWUFBWUMsaUNBQW1DO0FBQy9DLFlBQVlDLGtCQUFvQjtBQUNoQyxZQUFZLFVBQVk7QUFDeEIsWUFBWUMsb0JBQXNCO0FBQ2xDLFlBQVlDLG9CQUFzQjtBQUNsQyxZQUFZLGFBQWU7QUFDM0IsWUFBWUMsZUFBaUI7QUFDN0IsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVksVUFBWTtBQUN4QixZQUFZLFlBQWM7QUFDMUIsWUFBWSxVQUFZO0FBQ3hCLFlBQVlDLDZDQUErQztBQUMzRCxZQUFZQyxtQ0FBcUM7QUFDakQsWUFBWUMsdUNBQXlDO0FBQ3JELFlBQVlDLG1CQUFxQjtBQUNqQyxZQUFZLGNBQWdCO0FBQzVCLFlBQVlDLDBCQUE0QjtBQUN4QyxZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVksWUFBYztBQUMxQixZQUFZQyxtQkFBcUI7QUFDakMsWUFBWUMsd0JBQTBCO0FBQ3RDLFlBQVlDLHdCQUEwQjtBQUN0QyxZQUFZQyx5Q0FBMkM7QUFDdkQsWUFBWUMsdUJBQXlCO0FBQ3JDLFlBQVlDLGdCQUFrQjtBQUM5QixZQUFZQyxtQkFBcUI7QUFDakMsWUFBWSxTQUFXO0FBQ3ZCLFlBQVksWUFBYztBQUMxQixZQUFZQyxrQ0FBb0M7QUFDaEQsWUFBWSxjQUFnQjtBQUM1QixZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWSxXQUFhO0FBQ3pCLFlBQVksV0FBYTtBQUN6QixZQUFZLGVBQWlCO0FBQzdCLFlBQVlDLG1CQUFxQjtBQUNqQyxZQUFZQyxrQkFBb0I7QUFDaEMsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVlDLHdCQUEwQjtBQUN0QyxZQUFZQyxnQkFBa0I7QUFDOUIsWUFBWUMsc0JBQXdCO0FBQ3BDLFlBQVlDLCtCQUFpQztBQUM3QyxZQUFZLGVBQWlCO0FBQzdCLFlBQVksa0JBQW9CO0FBQ2hDLFlBQVlDLG1CQUFxQjtBQUNqQyxZQUFZLGdCQUFrQjtBQUM5QixZQUFZQyxrQkFBb0I7QUFDaEMsWUFBWUMsdUJBQXlCO0FBQ3JDLFlBQVksV0FBYTtBQUN6QixZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWSxlQUFpQjsiLAogICJuYW1lcyI6IFsiYWN0aXZlLWZpbGUtcHJvdmlkZXIiLCAiYXN5bmMtd2l0aC1ub3RpY2UiLCAiYXR0YWNobWVudC1wYXRoIiwgImF0dGFjaG1lbnQtdW5pdC1mb2xkZXIiLCAiYmFja2xpbmstaW5kZXgiLCAiYmFzZXMtdmlldy1yZWdpc3RyYXIiLCAiY2FzZS1pbnNlbnNpdGl2ZS1maWxlLWluZGV4IiwgImNvZGUtYmxvY2stbWFya2Rvd24taW5mb3JtYXRpb24iLCAiY29kZS1ibG9jay1yZWctZXhwIiwgImNvbW1hbmQtaGFuZGxlcnMiLCAiY29tbWFuZC1yZWdpc3RyYXIiLCAiY29tbXVuaXR5LXBsdWdpbnMiLCAiY3NzLWNsYXNzIiwgImRhdGEtaGFuZGxlciIsICJkYXRhLXN0b3JlcyIsICJkYXRhdmlldy1saW5rIiwgImRlbW8tdmF1bHQtaGVscGVyLXNldHRpbmdzIiwgImRlbW8tdmF1bHQtaGVscGVyIiwgImRlbW8tdmF1bHQtbmFtaW5nIiwgImRlc2t0b3AtZGVtby12YXVsdC1vcGVuZXIiLCAiZGVza3RvcC10cnVzdGVkLWlucHV0IiwgImVkaXRvci1leHRlbnNpb24tcmVnaXN0cmFyIiwgImVkaXRvci1zdWdnZXN0LXJlZ2lzdHJhciIsICJleHRlbnNpb25zLXJlZ2lzdHJhciIsICJmaWxlLWNoYW5nZSIsICJmaWxlLWV4cGxvcmVyIiwgImZpbGUtbWFuYWdlciIsICJmaWxlLXN5c3RlbSIsICJmb2xkZXItbm90ZSIsICJmcm9udG1hdHRlci1mb3JtYXR0aW5nIiwgImZyb250bWF0dGVyLWxpbmstY2FjaGUtd2l0aC1vZmZzZXRzIiwgImdlbmVyYXRlZC1kdXJpbmctYnVpbGQiLCAiaG92ZXItbGluay1zb3VyY2UtcmVnaXN0cmFyIiwgImh0bWwtZWxlbWVudCIsICJpcy1pbi1vYnNpZGlhbiIsICJsaWJyYXJ5LXN0eWxlcyIsICJsaW5rLW5hbWUiLCAibGluay11cGRhdGUtcHJvZ3Jlc3MiLCAibWFya2Rvd24tY29kZS1ibG9jay1wcm9jZXNzb3ItcmVnaXN0cmFyIiwgIm1hcmtkb3duLWNvZGUtYmxvY2stcHJvY2Vzc29yIiwgIm1hcmtkb3duLXBvc3QtcHJvY2Vzc29yLXJlZ2lzdHJhciIsICJtYXJrZG93bi12aWV3IiwgIm1lbnUtZXZlbnQtcmVnaXN0cmFyIiwgIm1ldGFkYXRhLWNhY2hlIiwgIm1vYmlsZS10cnVzdGVkLWlucHV0IiwgIm5vdGUtcHJpb3JpdHkiLCAibm90ZWJvb2stbmF2aWdhdG9yIiwgIm9ic2lkaWFuLWxpYi1zdGF0ZSIsICJvYnNpZGlhbi1wcm90b2NvbC1oYW5kbGVyLXJlZ2lzdHJhciIsICJvYnNpZGlhbi1zZXR0aW5ncyIsICJwYXJzZS1saW5rIiwgInBhdGgtc2V0dGluZ3MiLCAicGx1Z2luLWNsaS1oYW5kbGVyLXJlZ2lzdHJhciIsICJwcm9wZXJ0eS1lbnRyeSIsICJyZXNvdXJjZS1sb2NrIiwgInJlc291cmNlLXVybCIsICJyaWJib24taWNvbi1yZWdpc3RyYXIiLCAic2V0dGluZy1jb21wb25lbnRzIiwgInNldHRpbmctZXgiLCAic2V0dGluZy1ncm91cC1leCIsICJzdGF0dXMtYmFyLWl0ZW0tcmVnaXN0cmFyIiwgInRydXN0ZWQtaW5wdXQiLCAidmF1bHQtZGVsZXRlIiwgInZhdWx0LXRyYW5zYWN0aW9uIiwgInZpZXctcmVnaXN0cmFyIl0KfQo=
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ19fbWVyZ2VkJyBmcm9tICcuL19fbWVyZ2VkLnRzJztcbmV4cG9ydCAqIGFzICdhY3RpdmUtZmlsZS1wcm92aWRlcicgZnJvbSAnLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5leHBvcnQgKiBhcyAnYXBwJyBmcm9tICcuL2FwcC50cyc7XG5leHBvcnQgKiBhcyAnYXN5bmMtd2l0aC1ub3RpY2UnIGZyb20gJy4vYXN5bmMtd2l0aC1ub3RpY2UudHMnO1xuZXhwb3J0ICogYXMgJ2F0dGFjaG1lbnQtcGF0aCcgZnJvbSAnLi9hdHRhY2htZW50LXBhdGgudHMnO1xuZXhwb3J0ICogYXMgJ2F0dGFjaG1lbnQtdW5pdC1mb2xkZXInIGZyb20gJy4vYXR0YWNobWVudC11bml0LWZvbGRlci50cyc7XG5leHBvcnQgKiBhcyAnYmFja2xpbmstaW5kZXgnIGZyb20gJy4vYmFja2xpbmstaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ2JhY2tsaW5rJyBmcm9tICcuL2JhY2tsaW5rLnRzJztcbmV4cG9ydCAqIGFzICdiYXNlcy12aWV3LXJlZ2lzdHJhcicgZnJvbSAnLi9iYXNlcy12aWV3LXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnY2FsbG91dCcgZnJvbSAnLi9jYWxsb3V0LnRzJztcbmV4cG9ydCAqIGFzICdjYW52YXMnIGZyb20gJy4vY2FudmFzLnRzJztcbmV4cG9ydCAqIGFzICdjYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgnIGZyb20gJy4vY2FzZS1pbnNlbnNpdGl2ZS1maWxlLWluZGV4LnRzJztcbmV4cG9ydCAqIGFzICdjb2RlLWJsb2NrLW1hcmtkb3duLWluZm9ybWF0aW9uJyBmcm9tICcuL2NvZGUtYmxvY2stbWFya2Rvd24taW5mb3JtYXRpb24udHMnO1xuZXhwb3J0ICogYXMgJ2NvZGUtYmxvY2stcmVnLWV4cCcgZnJvbSAnLi9jb2RlLWJsb2NrLXJlZy1leHAudHMnO1xuZXhwb3J0ICogYXMgJ2NvZGVtaXJyb3InIGZyb20gJy4vY29kZW1pcnJvci9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnY29tbWFuZC1oYW5kbGVycycgZnJvbSAnLi9jb21tYW5kLWhhbmRsZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdjb21tYW5kLXJlZ2lzdHJhcicgZnJvbSAnLi9jb21tYW5kLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnY29tbXVuaXR5LXBsdWdpbnMnIGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbnMudHMnO1xuZXhwb3J0ICogYXMgJ2NvbXBvbmVudHMnIGZyb20gJy4vY29tcG9uZW50cy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnY29uc3RydWN0b3JzJyBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnY3NzLWNsYXNzJyBmcm9tICcuL2Nzcy1jbGFzcy50cyc7XG5leHBvcnQgKiBhcyAnZGF0YS1oYW5kbGVyJyBmcm9tICcuL2RhdGEtaGFuZGxlci50cyc7XG5leHBvcnQgKiBhcyAnZGF0YS1zdG9yZXMnIGZyb20gJy4vZGF0YS1zdG9yZXMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ2RhdGF2aWV3LWxpbmsnIGZyb20gJy4vZGF0YXZpZXctbGluay50cyc7XG5leHBvcnQgKiBhcyAnZGF0YXZpZXcnIGZyb20gJy4vZGF0YXZpZXcudHMnO1xuZXhwb3J0ICogYXMgJ2RlYnVnJyBmcm9tICcuL2RlYnVnLnRzJztcbmV4cG9ydCAqIGFzICdkZW1vLXZhdWx0LWhlbHBlci1zZXR0aW5ncycgZnJvbSAnLi9kZW1vLXZhdWx0LWhlbHBlci1zZXR0aW5ncy50cyc7XG5leHBvcnQgKiBhcyAnZGVtby12YXVsdC1oZWxwZXInIGZyb20gJy4vZGVtby12YXVsdC1oZWxwZXIudHMnO1xuZXhwb3J0ICogYXMgJ2RlbW8tdmF1bHQtbmFtaW5nJyBmcm9tICcuL2RlbW8tdmF1bHQtbmFtaW5nLnRzJztcbmV4cG9ydCAqIGFzICdkZXNrdG9wLWRlbW8tdmF1bHQtb3BlbmVyJyBmcm9tICcuL2Rlc2t0b3AtZGVtby12YXVsdC1vcGVuZXIudHMnO1xuZXhwb3J0ICogYXMgJ2Rlc2t0b3AtdHJ1c3RlZC1pbnB1dCcgZnJvbSAnLi9kZXNrdG9wLXRydXN0ZWQtaW5wdXQudHMnO1xuZXhwb3J0ICogYXMgJ2VkaXRvci1leHRlbnNpb24tcmVnaXN0cmFyJyBmcm9tICcuL2VkaXRvci1leHRlbnNpb24tcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdlZGl0b3Itc3VnZ2VzdC1yZWdpc3RyYXInIGZyb20gJy4vZWRpdG9yLXN1Z2dlc3QtcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdlZGl0b3InIGZyb20gJy4vZWRpdG9yLnRzJztcbmV4cG9ydCAqIGFzICdldmVudHMnIGZyb20gJy4vZXZlbnRzLnRzJztcbmV4cG9ydCAqIGFzICdleHRlbnNpb25zLXJlZ2lzdHJhcicgZnJvbSAnLi9leHRlbnNpb25zLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnZmlsZS1jaGFuZ2UnIGZyb20gJy4vZmlsZS1jaGFuZ2UudHMnO1xuZXhwb3J0ICogYXMgJ2ZpbGUtZXhwbG9yZXInIGZyb20gJy4vZmlsZS1leHBsb3Jlci50cyc7XG5leHBvcnQgKiBhcyAnZmlsZS1tYW5hZ2VyJyBmcm9tICcuL2ZpbGUtbWFuYWdlci50cyc7XG5leHBvcnQgKiBhcyAnZmlsZS1zeXN0ZW0nIGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuZXhwb3J0ICogYXMgJ2ZvbGRlci1ub3RlJyBmcm9tICcuL2ZvbGRlci1ub3RlLnRzJztcbmV4cG9ydCAqIGFzICdmcm9udG1hdHRlci1mb3JtYXR0aW5nJyBmcm9tICcuL2Zyb250bWF0dGVyLWZvcm1hdHRpbmcudHMnO1xuZXhwb3J0ICogYXMgJ2Zyb250bWF0dGVyLWxpbmstY2FjaGUtd2l0aC1vZmZzZXRzJyBmcm9tICcuL2Zyb250bWF0dGVyLWxpbmstY2FjaGUtd2l0aC1vZmZzZXRzLnRzJztcbmV4cG9ydCAqIGFzICdmcm9udG1hdHRlcicgZnJvbSAnLi9mcm9udG1hdHRlci50cyc7XG5leHBvcnQgKiBhcyAnZ2VuZXJhdGVkLWR1cmluZy1idWlsZCcgZnJvbSAnLi9nZW5lcmF0ZWQtZHVyaW5nLWJ1aWxkLnRzJztcbmV4cG9ydCAqIGFzICdob3Zlci1saW5rLXNvdXJjZS1yZWdpc3RyYXInIGZyb20gJy4vaG92ZXItbGluay1zb3VyY2UtcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdodG1sLWVsZW1lbnQnIGZyb20gJy4vaHRtbC1lbGVtZW50LnRzJztcbmV4cG9ydCAqIGFzICdpMThuJyBmcm9tICcuL2kxOG4vaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ2lzLWluLW9ic2lkaWFuJyBmcm9tICcuL2lzLWluLW9ic2lkaWFuLnRzJztcbmV4cG9ydCAqIGFzICdsaWJyYXJ5LXN0eWxlcycgZnJvbSAnLi9saWJyYXJ5LXN0eWxlcy50cyc7XG5leHBvcnQgKiBhcyAnbGlicmFyeScgZnJvbSAnLi9saWJyYXJ5LnRzJztcbmV4cG9ydCAqIGFzICdsaW5rLW5hbWUnIGZyb20gJy4vbGluay1uYW1lLnRzJztcbmV4cG9ydCAqIGFzICdsaW5rLXVwZGF0ZS1wcm9ncmVzcycgZnJvbSAnLi9saW5rLXVwZGF0ZS1wcm9ncmVzcy50cyc7XG5leHBvcnQgKiBhcyAnbGluaycgZnJvbSAnLi9saW5rLnRzJztcbmV4cG9ydCAqIGFzICdsb2dnZXInIGZyb20gJy4vbG9nZ2VyLnRzJztcbmV4cG9ydCAqIGFzICdsb29wJyBmcm9tICcuL2xvb3AudHMnO1xuZXhwb3J0ICogYXMgJ21hcmtkb3duLWNvZGUtYmxvY2stcHJvY2Vzc29yLXJlZ2lzdHJhcicgZnJvbSAnLi9tYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci1yZWdpc3RyYXIudHMnO1xuZXhwb3J0ICogYXMgJ21hcmtkb3duLWNvZGUtYmxvY2stcHJvY2Vzc29yJyBmcm9tICcuL21hcmtkb3duLWNvZGUtYmxvY2stcHJvY2Vzc29yLnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bi1wb3N0LXByb2Nlc3Nvci1yZWdpc3RyYXInIGZyb20gJy4vbWFya2Rvd24tcG9zdC1wcm9jZXNzb3ItcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bi12aWV3JyBmcm9tICcuL21hcmtkb3duLXZpZXcudHMnO1xuZXhwb3J0ICogYXMgJ21hcmtkb3duJyBmcm9tICcuL21hcmtkb3duLnRzJztcbmV4cG9ydCAqIGFzICdtZW51LWV2ZW50LXJlZ2lzdHJhcicgZnJvbSAnLi9tZW51LWV2ZW50LXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnbWV0YWRhdGEtY2FjaGUnIGZyb20gJy4vbWV0YWRhdGEtY2FjaGUudHMnO1xuZXhwb3J0ICogYXMgJ21vYmlsZS10cnVzdGVkLWlucHV0JyBmcm9tICcuL21vYmlsZS10cnVzdGVkLWlucHV0LnRzJztcbmV4cG9ydCAqIGFzICdtb2RhbHMnIGZyb20gJy4vbW9kYWxzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdub3RlLXByaW9yaXR5JyBmcm9tICcuL25vdGUtcHJpb3JpdHkudHMnO1xuZXhwb3J0ICogYXMgJ25vdGVib29rLW5hdmlnYXRvcicgZnJvbSAnLi9ub3RlYm9vay1uYXZpZ2F0b3IudHMnO1xuZXhwb3J0ICogYXMgJ29ic2lkaWFuLWxpYi1zdGF0ZScgZnJvbSAnLi9vYnNpZGlhbi1saWItc3RhdGUudHMnO1xuZXhwb3J0ICogYXMgJ29ic2lkaWFuLXByb3RvY29sLWhhbmRsZXItcmVnaXN0cmFyJyBmcm9tICcuL29ic2lkaWFuLXByb3RvY29sLWhhbmRsZXItcmVnaXN0cmFyLnRzJztcbmV4cG9ydCAqIGFzICdvYnNpZGlhbi1zZXR0aW5ncycgZnJvbSAnLi9vYnNpZGlhbi1zZXR0aW5ncy50cyc7XG5leHBvcnQgKiBhcyAnb2JzaWRpYW4td29yZC1jaGFyYWN0ZXJzJyBmcm9tICcuL29ic2lkaWFuLXdvcmQtY2hhcmFjdGVycy50cyc7XG5leHBvcnQgKiBhcyAncGFyc2UtbGluaycgZnJvbSAnLi9wYXJzZS1saW5rLnRzJztcbmV4cG9ydCAqIGFzICdwYXRoLXNldHRpbmdzJyBmcm9tICcuL3BhdGgtc2V0dGluZ3MudHMnO1xuZXhwb3J0ICogYXMgJ3BkZicgZnJvbSAnLi9wZGYudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbicgZnJvbSAnLi9wbHVnaW4vaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1jbGktaGFuZGxlci1yZWdpc3RyYXInIGZyb20gJy4vcGx1Z2luLWNsaS1oYW5kbGVyLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAncG9wb3ZlcnMnIGZyb20gJy4vcG9wb3ZlcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3Byb3BlcnR5LWVudHJ5JyBmcm9tICcuL3Byb3BlcnR5LWVudHJ5LnRzJztcbmV4cG9ydCAqIGFzICdxdWV1ZScgZnJvbSAnLi9xdWV1ZS50cyc7XG5leHBvcnQgKiBhcyAncmVhY3QnIGZyb20gJy4vcmVhY3QvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3JlZmVyZW5jZScgZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuZXhwb3J0ICogYXMgJ3Jlc291cmNlLWxvY2snIGZyb20gJy4vcmVzb3VyY2UtbG9jay50cyc7XG5leHBvcnQgKiBhcyAncmVzb3VyY2UtdXJsJyBmcm9tICcuL3Jlc291cmNlLXVybC50cyc7XG5leHBvcnQgKiBhcyAncmliYm9uLWljb24tcmVnaXN0cmFyJyBmcm9tICcuL3JpYmJvbi1pY29uLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAnc2V0dGluZy1jb21wb25lbnRzJyBmcm9tICcuL3NldHRpbmctY29tcG9uZW50cy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnc2V0dGluZy1leCcgZnJvbSAnLi9zZXR0aW5nLWV4LnRzJztcbmV4cG9ydCAqIGFzICdzZXR0aW5nLWdyb3VwLWV4JyBmcm9tICcuL3NldHRpbmctZ3JvdXAtZXgudHMnO1xuZXhwb3J0ICogYXMgJ3N0YXR1cy1iYXItaXRlbS1yZWdpc3RyYXInIGZyb20gJy4vc3RhdHVzLWJhci1pdGVtLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgKiBhcyAndGVtcGxhdGVyJyBmcm9tICcuL3RlbXBsYXRlci50cyc7XG5leHBvcnQgKiBhcyAndHJhbnNmb3JtZXJzJyBmcm9tICcuL3RyYW5zZm9ybWVycy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAndHJ1c3RlZC1pbnB1dCcgZnJvbSAnLi90cnVzdGVkLWlucHV0LnRzJztcbmV4cG9ydCAqIGFzICd2YWxpZGF0aW9uJyBmcm9tICcuL3ZhbGlkYXRpb24udHMnO1xuZXhwb3J0ICogYXMgJ3ZhdWx0LWRlbGV0ZScgZnJvbSAnLi92YXVsdC1kZWxldGUudHMnO1xuZXhwb3J0ICogYXMgJ3ZhdWx0LXRyYW5zYWN0aW9uJyBmcm9tICcuL3ZhdWx0LXRyYW5zYWN0aW9uLnRzJztcbmV4cG9ydCAqIGFzICd2YXVsdCcgZnJvbSAnLi92YXVsdC50cyc7XG5leHBvcnQgKiBhcyAndmlldy1yZWdpc3RyYXInIGZyb20gJy4vdmlldy1yZWdpc3RyYXIudHMnO1xuZXhwb3J0ICogYXMgJ3dvcmtzcGFjZScgZnJvbSAnLi93b3Jrc3BhY2UudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7QUFFQSxZQUFZLGNBQWdCO0FBQzVCLFlBQVlBLDBCQUE0QjtBQUN4QyxZQUFZLFNBQVc7QUFDdkIsWUFBWUMsdUJBQXlCO0FBQ3JDLFlBQVlDLHFCQUF1QjtBQUNuQyxZQUFZQyw0QkFBOEI7QUFDMUMsWUFBWUMsb0JBQXNCO0FBQ2xDLFlBQVksY0FBZ0I7QUFDNUIsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVksYUFBZTtBQUMzQixZQUFZLFlBQWM7QUFDMUIsWUFBWUMsaUNBQW1DO0FBQy9DLFlBQVlDLHFDQUF1QztBQUNuRCxZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWSxnQkFBa0I7QUFDOUIsWUFBWUMsc0JBQXdCO0FBQ3BDLFlBQVlDLHVCQUF5QjtBQUNyQyxZQUFZQyx1QkFBeUI7QUFDckMsWUFBWSxnQkFBa0I7QUFDOUIsWUFBWSxrQkFBb0I7QUFDaEMsWUFBWUMsZUFBaUI7QUFDN0IsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLGlCQUFtQjtBQUMvQixZQUFZQyxtQkFBcUI7QUFDakMsWUFBWSxjQUFnQjtBQUM1QixZQUFZLFdBQWE7QUFDekIsWUFBWUMsZ0NBQWtDO0FBQzlDLFlBQVlDLHVCQUF5QjtBQUNyQyxZQUFZQyx1QkFBeUI7QUFDckMsWUFBWUMsK0JBQWlDO0FBQzdDLFlBQVlDLDJCQUE2QjtBQUN6QyxZQUFZQyxnQ0FBa0M7QUFDOUMsWUFBWUMsOEJBQWdDO0FBQzVDLFlBQVksWUFBYztBQUMxQixZQUFZLFlBQWM7QUFDMUIsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVlDLGlCQUFtQjtBQUMvQixZQUFZQyxtQkFBcUI7QUFDakMsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLGlCQUFtQjtBQUMvQixZQUFZQyxpQkFBbUI7QUFDL0IsWUFBWUMsNEJBQThCO0FBQzFDLFlBQVlDLHlDQUEyQztBQUN2RCxZQUFZLGlCQUFtQjtBQUMvQixZQUFZQyw0QkFBOEI7QUFDMUMsWUFBWUMsaUNBQW1DO0FBQy9DLFlBQVlDLGtCQUFvQjtBQUNoQyxZQUFZLFVBQVk7QUFDeEIsWUFBWUMsb0JBQXNCO0FBQ2xDLFlBQVlDLG9CQUFzQjtBQUNsQyxZQUFZLGFBQWU7QUFDM0IsWUFBWUMsZUFBaUI7QUFDN0IsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVksVUFBWTtBQUN4QixZQUFZLFlBQWM7QUFDMUIsWUFBWSxVQUFZO0FBQ3hCLFlBQVlDLDZDQUErQztBQUMzRCxZQUFZQyxtQ0FBcUM7QUFDakQsWUFBWUMsdUNBQXlDO0FBQ3JELFlBQVlDLG1CQUFxQjtBQUNqQyxZQUFZLGNBQWdCO0FBQzVCLFlBQVlDLDBCQUE0QjtBQUN4QyxZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVksWUFBYztBQUMxQixZQUFZQyxtQkFBcUI7QUFDakMsWUFBWUMsd0JBQTBCO0FBQ3RDLFlBQVlDLHdCQUEwQjtBQUN0QyxZQUFZQyx5Q0FBMkM7QUFDdkQsWUFBWUMsdUJBQXlCO0FBQ3JDLFlBQVlDLDhCQUFnQztBQUM1QyxZQUFZQyxnQkFBa0I7QUFDOUIsWUFBWUMsbUJBQXFCO0FBQ2pDLFlBQVksU0FBVztBQUN2QixZQUFZLFlBQWM7QUFDMUIsWUFBWUMsa0NBQW9DO0FBQ2hELFlBQVksY0FBZ0I7QUFDNUIsWUFBWUMsb0JBQXNCO0FBQ2xDLFlBQVksV0FBYTtBQUN6QixZQUFZLFdBQWE7QUFDekIsWUFBWSxlQUFpQjtBQUM3QixZQUFZQyxtQkFBcUI7QUFDakMsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLDJCQUE2QjtBQUN6QyxZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWUMsZ0JBQWtCO0FBQzlCLFlBQVlDLHNCQUF3QjtBQUNwQyxZQUFZQywrQkFBaUM7QUFDN0MsWUFBWSxlQUFpQjtBQUM3QixZQUFZLGtCQUFvQjtBQUNoQyxZQUFZQyxtQkFBcUI7QUFDakMsWUFBWSxnQkFBa0I7QUFDOUIsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLHVCQUF5QjtBQUNyQyxZQUFZLFdBQWE7QUFDekIsWUFBWUMsb0JBQXNCO0FBQ2xDLFlBQVksZUFBaUI7IiwKICAibmFtZXMiOiBbImFjdGl2ZS1maWxlLXByb3ZpZGVyIiwgImFzeW5jLXdpdGgtbm90aWNlIiwgImF0dGFjaG1lbnQtcGF0aCIsICJhdHRhY2htZW50LXVuaXQtZm9sZGVyIiwgImJhY2tsaW5rLWluZGV4IiwgImJhc2VzLXZpZXctcmVnaXN0cmFyIiwgImNhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleCIsICJjb2RlLWJsb2NrLW1hcmtkb3duLWluZm9ybWF0aW9uIiwgImNvZGUtYmxvY2stcmVnLWV4cCIsICJjb21tYW5kLWhhbmRsZXJzIiwgImNvbW1hbmQtcmVnaXN0cmFyIiwgImNvbW11bml0eS1wbHVnaW5zIiwgImNzcy1jbGFzcyIsICJkYXRhLWhhbmRsZXIiLCAiZGF0YS1zdG9yZXMiLCAiZGF0YXZpZXctbGluayIsICJkZW1vLXZhdWx0LWhlbHBlci1zZXR0aW5ncyIsICJkZW1vLXZhdWx0LWhlbHBlciIsICJkZW1vLXZhdWx0LW5hbWluZyIsICJkZXNrdG9wLWRlbW8tdmF1bHQtb3BlbmVyIiwgImRlc2t0b3AtdHJ1c3RlZC1pbnB1dCIsICJlZGl0b3ItZXh0ZW5zaW9uLXJlZ2lzdHJhciIsICJlZGl0b3Itc3VnZ2VzdC1yZWdpc3RyYXIiLCAiZXh0ZW5zaW9ucy1yZWdpc3RyYXIiLCAiZmlsZS1jaGFuZ2UiLCAiZmlsZS1leHBsb3JlciIsICJmaWxlLW1hbmFnZXIiLCAiZmlsZS1zeXN0ZW0iLCAiZm9sZGVyLW5vdGUiLCAiZnJvbnRtYXR0ZXItZm9ybWF0dGluZyIsICJmcm9udG1hdHRlci1saW5rLWNhY2hlLXdpdGgtb2Zmc2V0cyIsICJnZW5lcmF0ZWQtZHVyaW5nLWJ1aWxkIiwgImhvdmVyLWxpbmstc291cmNlLXJlZ2lzdHJhciIsICJodG1sLWVsZW1lbnQiLCAiaXMtaW4tb2JzaWRpYW4iLCAibGlicmFyeS1zdHlsZXMiLCAibGluay1uYW1lIiwgImxpbmstdXBkYXRlLXByb2dyZXNzIiwgIm1hcmtkb3duLWNvZGUtYmxvY2stcHJvY2Vzc29yLXJlZ2lzdHJhciIsICJtYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3NvciIsICJtYXJrZG93bi1wb3N0LXByb2Nlc3Nvci1yZWdpc3RyYXIiLCAibWFya2Rvd24tdmlldyIsICJtZW51LWV2ZW50LXJlZ2lzdHJhciIsICJtZXRhZGF0YS1jYWNoZSIsICJtb2JpbGUtdHJ1c3RlZC1pbnB1dCIsICJub3RlLXByaW9yaXR5IiwgIm5vdGVib29rLW5hdmlnYXRvciIsICJvYnNpZGlhbi1saWItc3RhdGUiLCAib2JzaWRpYW4tcHJvdG9jb2wtaGFuZGxlci1yZWdpc3RyYXIiLCAib2JzaWRpYW4tc2V0dGluZ3MiLCAib2JzaWRpYW4td29yZC1jaGFyYWN0ZXJzIiwgInBhcnNlLWxpbmsiLCAicGF0aC1zZXR0aW5ncyIsICJwbHVnaW4tY2xpLWhhbmRsZXItcmVnaXN0cmFyIiwgInByb3BlcnR5LWVudHJ5IiwgInJlc291cmNlLWxvY2siLCAicmVzb3VyY2UtdXJsIiwgInJpYmJvbi1pY29uLXJlZ2lzdHJhciIsICJzZXR0aW5nLWNvbXBvbmVudHMiLCAic2V0dGluZy1leCIsICJzZXR0aW5nLWdyb3VwLWV4IiwgInN0YXR1cy1iYXItaXRlbS1yZWdpc3RyYXIiLCAidHJ1c3RlZC1pbnB1dCIsICJ2YXVsdC1kZWxldGUiLCAidmF1bHQtdHJhbnNhY3Rpb24iLCAidmlldy1yZWdpc3RyYXIiXQp9Cg==
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/// <reference path="./library-references.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* How Obsidian decides where a name may match as an unlinked mention, restated so the index can find the same
|
|
6
|
+
* matches without running a regular expression per name over every note.
|
|
7
|
+
*
|
|
8
|
+
* Obsidian 1.14.4 builds one `RegExp(source, 'gi')` per name of the target note. A name whose first character is
|
|
9
|
+
* a WORD character must be preceded by a non-word character or the start of the file, and one whose last
|
|
10
|
+
* character is a word character must not be followed by one. The word characters are a fixed table of Unicode
|
|
11
|
+
* letters and digits, copied below. This is not a Unicode letter classification: for example, a name such as
|
|
12
|
+
* 東京 has no word character at all and matches inside any run of text. There is no `u` flag, so case is folded
|
|
13
|
+
* the way a non-Unicode `i` regex folds it, one UTF-16
|
|
14
|
+
* code unit at a time, and diacritics are not folded at all.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Canonicalizes text for Obsidian Search and unlinked mentions' non-Unicode ignore-case regex matching.
|
|
18
|
+
*
|
|
19
|
+
* Preserves UTF-16 length, lone surrogates and accents. This is not Unicode or locale case folding:
|
|
20
|
+
* Greek final sigma folds to sigma's uppercase, but Kelvin sign, long s and dotless i do not fold to ASCII.
|
|
21
|
+
* Verified against core Search's `gmi` expressions in Obsidian 1.14.5 and 1.15.0.
|
|
22
|
+
*
|
|
23
|
+
* @param text - The literal text, not a regular expression source.
|
|
24
|
+
* @returns Its ECMAScript non-Unicode ignore-case canonical form.
|
|
25
|
+
*/
|
|
26
|
+
export declare function canonicalizeObsidianText(text: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Builds the regular expression Obsidian matches a name with, one per name, exactly as its own `recomputeUnlinked`
|
|
29
|
+
* builds it. Group 1 is the name itself.
|
|
30
|
+
*
|
|
31
|
+
* @param name - A basename or an alias.
|
|
32
|
+
* @returns The expression, global and case-insensitive.
|
|
33
|
+
*/
|
|
34
|
+
export declare function createObsidianMentionRegExp(name: string): RegExp;
|
|
35
|
+
/**
|
|
36
|
+
* Splits a name into the canonical word tokens the index keys it by.
|
|
37
|
+
*
|
|
38
|
+
* @param name - A basename or an alias.
|
|
39
|
+
* @returns The tokens, or `null` when the name cannot be indexed: it has no word character, or it holds a
|
|
40
|
+
* character whose case folding crosses between word and non-word characters.
|
|
41
|
+
*/
|
|
42
|
+
export declare function getObsidianNameTokens(name: string): null | string[];
|
|
43
|
+
/**
|
|
44
|
+
* Whether a UTF-16 code unit is one of Obsidian's word characters.
|
|
45
|
+
*
|
|
46
|
+
* @param charCode - The code unit; `NaN`, as `charCodeAt` returns past the end, is not one.
|
|
47
|
+
* @returns Whether it is.
|
|
48
|
+
*/
|
|
49
|
+
export declare function isObsidianWordCharacter(charCode: number): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Splits text into its maximal runs of word characters, each folded to its canonical case.
|
|
52
|
+
*
|
|
53
|
+
* Every match Obsidian finds for an indexable name covers whole runs of this split, in order and with nothing
|
|
54
|
+
* between them, which is what lets the index find candidates without the regular expression.
|
|
55
|
+
*
|
|
56
|
+
* @param text - The text.
|
|
57
|
+
* @returns The canonical tokens, in order.
|
|
58
|
+
*/
|
|
59
|
+
export declare function tokenizeObsidianWords(text: string): string[];
|