@mnaoumov/obsidian-lib 10.4.1 → 10.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/codemirror/incremental-parse-state-field/package.json +6 -0
- package/codemirror/markdown-editor-views/package.json +6 -0
- package/codemirror/range-set/package.json +6 -0
- package/command-handlers/open-bug-report-command-handler/package.json +6 -0
- package/components/embeddable-markdown-editor-component/package.json +6 -0
- package/components/reconfigurable-editor-extension-component/package.json +6 -0
- package/dist/lib/cjs/__merged.cjs +54 -1
- package/dist/lib/cjs/__merged.d.cts +14 -3
- package/dist/lib/cjs/attachment-path.cjs +3 -2
- package/dist/lib/cjs/backlink-index.cjs +44 -8
- package/dist/lib/cjs/backlink-index.d.cts +23 -0
- package/dist/lib/cjs/bug-report.cjs +241 -0
- package/dist/lib/cjs/bug-report.d.cts +161 -0
- package/dist/lib/cjs/bulk-operation-progress.cjs +16 -1
- package/dist/lib/cjs/bulk-operation-progress.d.cts +22 -0
- package/dist/lib/cjs/case-insensitive-file-index.cjs +9 -1
- package/dist/lib/cjs/codemirror/incremental-parse-state-field.cjs +162 -0
- package/dist/lib/cjs/codemirror/incremental-parse-state-field.d.cts +37 -0
- package/dist/lib/cjs/codemirror/index.cjs +10 -1
- package/dist/lib/cjs/codemirror/index.d.cts +3 -0
- package/dist/lib/cjs/codemirror/markdown-editor-views.cjs +142 -0
- package/dist/lib/cjs/codemirror/markdown-editor-views.d.cts +34 -0
- package/dist/lib/cjs/codemirror/range-set.cjs +106 -0
- package/dist/lib/cjs/codemirror/range-set.d.cts +35 -0
- package/dist/lib/cjs/command-handlers/index.cjs +4 -1
- package/dist/lib/cjs/command-handlers/index.d.cts +1 -0
- package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.cjs +139 -0
- package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.d.cts +53 -0
- package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +6 -3
- package/dist/lib/cjs/community-plugins.cjs +19 -2
- package/dist/lib/cjs/community-plugins.d.cts +14 -0
- package/dist/lib/cjs/components/bulk-operation-commit-component.cjs +5 -2
- package/dist/lib/cjs/components/embeddable-markdown-editor-component.cjs +374 -0
- package/dist/lib/cjs/components/embeddable-markdown-editor-component.d.cts +221 -0
- package/dist/lib/cjs/components/index.cjs +7 -1
- package/dist/lib/cjs/components/index.d.cts +2 -0
- package/dist/lib/cjs/components/plugin-gate-component.cjs +6 -3
- package/dist/lib/cjs/components/reconfigurable-editor-extension-component.cjs +200 -0
- package/dist/lib/cjs/components/reconfigurable-editor-extension-component.d.cts +96 -0
- package/dist/lib/cjs/components/rename-delete-handler-component.cjs +105 -2
- package/dist/lib/cjs/desktop-bulk-operation-git.cjs +38 -13
- package/dist/lib/cjs/desktop-bulk-operation-git.d.cts +21 -1
- package/dist/lib/cjs/desktop-operating-system.cjs +101 -0
- package/dist/lib/cjs/desktop-operating-system.d.cts +15 -0
- package/dist/lib/cjs/generated-during-build.cjs +1 -1
- package/dist/lib/cjs/i18n/locales/en.cjs +2 -1
- package/dist/lib/cjs/i18n/locales/en.d.cts +1 -0
- package/dist/lib/cjs/i18n/locales/translations-map.d.cts +1 -0
- package/dist/lib/cjs/index.cjs +16 -1
- package/dist/lib/cjs/index.d.cts +5 -0
- package/dist/lib/cjs/menu.cjs +118 -0
- package/dist/lib/cjs/menu.d.cts +65 -0
- package/dist/lib/cjs/mobile-app-info.cjs +167 -0
- package/dist/lib/cjs/mobile-app-info.d.cts +32 -0
- package/dist/lib/cjs/modals/modal.cjs +8 -5
- package/dist/lib/cjs/modals/modal.d.cts +4 -0
- package/dist/lib/cjs/obsidian-settings.cjs +2 -2
- package/dist/lib/cjs/plugin/plugin.cjs +5 -2
- package/dist/lib/cjs/plugin/plugin.d.cts +2 -0
- package/dist/lib/cjs/settings-modal.cjs +103 -0
- package/dist/lib/cjs/settings-modal.d.cts +33 -0
- package/dist/lib/esm/__merged.d.mts +14 -3
- package/dist/lib/esm/__merged.mjs +50 -2
- package/dist/lib/esm/attachment-path.mjs +3 -2
- package/dist/lib/esm/backlink-index.d.mts +23 -0
- package/dist/lib/esm/backlink-index.mjs +42 -7
- package/dist/lib/esm/bug-report.d.mts +161 -0
- package/dist/lib/esm/bug-report.mjs +141 -0
- package/dist/lib/esm/bulk-operation-progress.d.mts +22 -0
- package/dist/lib/esm/bulk-operation-progress.mjs +14 -1
- package/dist/lib/esm/case-insensitive-file-index.mjs +9 -1
- package/dist/lib/esm/codemirror/incremental-parse-state-field.d.mts +37 -0
- package/dist/lib/esm/codemirror/incremental-parse-state-field.mjs +74 -0
- package/dist/lib/esm/codemirror/index.d.mts +3 -0
- package/dist/lib/esm/codemirror/index.mjs +7 -1
- package/dist/lib/esm/codemirror/markdown-editor-views.d.mts +34 -0
- package/dist/lib/esm/codemirror/markdown-editor-views.mjs +53 -0
- package/dist/lib/esm/codemirror/range-set.d.mts +35 -0
- package/dist/lib/esm/codemirror/range-set.mjs +18 -0
- package/dist/lib/esm/command-handlers/index.d.mts +1 -0
- package/dist/lib/esm/command-handlers/index.mjs +3 -1
- package/dist/lib/esm/command-handlers/open-bug-report-command-handler.d.mts +53 -0
- package/dist/lib/esm/command-handlers/open-bug-report-command-handler.mjs +51 -0
- package/dist/lib/esm/command-handlers/open-settings-command-handler.mjs +6 -3
- package/dist/lib/esm/community-plugins.d.mts +14 -0
- package/dist/lib/esm/community-plugins.mjs +18 -2
- package/dist/lib/esm/components/bulk-operation-commit-component.mjs +5 -2
- package/dist/lib/esm/components/embeddable-markdown-editor-component.d.mts +221 -0
- package/dist/lib/esm/components/embeddable-markdown-editor-component.mjs +293 -0
- package/dist/lib/esm/components/index.d.mts +2 -0
- package/dist/lib/esm/components/index.mjs +5 -1
- package/dist/lib/esm/components/plugin-gate-component.mjs +6 -3
- package/dist/lib/esm/components/reconfigurable-editor-extension-component.d.mts +96 -0
- package/dist/lib/esm/components/reconfigurable-editor-extension-component.mjs +112 -0
- package/dist/lib/esm/components/rename-delete-handler-component.mjs +105 -2
- package/dist/lib/esm/desktop-bulk-operation-git.d.mts +21 -1
- package/dist/lib/esm/desktop-bulk-operation-git.mjs +38 -13
- package/dist/lib/esm/desktop-operating-system.d.mts +15 -0
- package/dist/lib/esm/desktop-operating-system.mjs +16 -0
- package/dist/lib/esm/generated-during-build.mjs +1 -1
- package/dist/lib/esm/i18n/locales/en.d.mts +1 -0
- package/dist/lib/esm/i18n/locales/en.mjs +2 -1
- package/dist/lib/esm/i18n/locales/translations-map.d.mts +1 -0
- package/dist/lib/esm/index.d.mts +5 -0
- package/dist/lib/esm/index.mjs +11 -1
- package/dist/lib/esm/menu.d.mts +65 -0
- package/dist/lib/esm/menu.mjs +30 -0
- package/dist/lib/esm/mobile-app-info.d.mts +32 -0
- package/dist/lib/esm/mobile-app-info.mjs +84 -0
- package/dist/lib/esm/modals/modal.d.mts +4 -0
- package/dist/lib/esm/modals/modal.mjs +8 -5
- package/dist/lib/esm/obsidian-settings.mjs +6 -3
- package/dist/lib/esm/plugin/plugin.d.mts +2 -0
- package/dist/lib/esm/plugin/plugin.mjs +5 -2
- package/dist/lib/esm/settings-modal.d.mts +33 -0
- package/dist/lib/esm/settings-modal.mjs +15 -0
- package/package.json +9 -8
|
@@ -0,0 +1,141 @@
|
|
|
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 {
|
|
34
|
+
apiVersion,
|
|
35
|
+
Platform
|
|
36
|
+
} from "obsidian";
|
|
37
|
+
import { getMobileAppInfo } from "./mobile-app-info.mjs";
|
|
38
|
+
var BugReportIssueFormFieldId = /* @__PURE__ */ ((BugReportIssueFormFieldId2) => {
|
|
39
|
+
BugReportIssueFormFieldId2["Environment"] = "environment";
|
|
40
|
+
BugReportIssueFormFieldId2["ObsidianVersion"] = "obsidian-version";
|
|
41
|
+
BugReportIssueFormFieldId2["OperatingSystem"] = "operating-system";
|
|
42
|
+
BugReportIssueFormFieldId2["PluginVersion"] = "plugin-version";
|
|
43
|
+
return BugReportIssueFormFieldId2;
|
|
44
|
+
})(BugReportIssueFormFieldId || {});
|
|
45
|
+
const BUG_REPORT_ISSUE_FORM_TEMPLATE = "bug_report.yml";
|
|
46
|
+
const UNKNOWN = "unknown";
|
|
47
|
+
function formatBugReportEnvironment(environment) {
|
|
48
|
+
const enabledPlugins = environment.enabledPlugins.length === 0 ? "none" : environment.enabledPlugins.map((pluginInfo) => formatPluginInfo(pluginInfo)).join(", ");
|
|
49
|
+
return `- Plugin: ${formatPluginInfo(environment.plugin)}
|
|
50
|
+
- Obsidian: ${environment.obsidianVersion} (installer ${environment.installerVersion})
|
|
51
|
+
- Platform: ${environment.platform}
|
|
52
|
+
- Operating system: ${environment.operatingSystem}
|
|
53
|
+
- Other enabled plugins: ${enabledPlugins}`;
|
|
54
|
+
}
|
|
55
|
+
async function getBugReportEnvironment(params) {
|
|
56
|
+
const { app, pluginId } = params;
|
|
57
|
+
const { installerVersion, operatingSystem } = await getAppAndOperatingSystem();
|
|
58
|
+
return {
|
|
59
|
+
enabledPlugins: [...app.plugins.enabledPlugins].filter((id) => id !== pluginId).sort().map((id) => getPluginInfo(app, id)),
|
|
60
|
+
installerVersion,
|
|
61
|
+
obsidianVersion: apiVersion,
|
|
62
|
+
operatingSystem,
|
|
63
|
+
platform: getPlatformName(),
|
|
64
|
+
plugin: getPluginInfo(app, pluginId)
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
async function getBugReportIssueFormUrl(params) {
|
|
68
|
+
const environment = await getBugReportEnvironment(params);
|
|
69
|
+
return getGitHubIssueFormUrl({
|
|
70
|
+
fields: {
|
|
71
|
+
["environment" /* Environment */]: formatBugReportEnvironment(environment),
|
|
72
|
+
["obsidian-version" /* ObsidianVersion */]: environment.obsidianVersion,
|
|
73
|
+
["operating-system" /* OperatingSystem */]: environment.operatingSystem,
|
|
74
|
+
["plugin-version" /* PluginVersion */]: environment.plugin.version ?? UNKNOWN
|
|
75
|
+
},
|
|
76
|
+
gitHubRepo: params.gitHubRepo,
|
|
77
|
+
template: BUG_REPORT_ISSUE_FORM_TEMPLATE,
|
|
78
|
+
...params.title !== void 0 && { title: params.title }
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
function getGitHubIssueFormUrl(params) {
|
|
82
|
+
const searchParams = new URLSearchParams({ template: params.template });
|
|
83
|
+
if (params.title !== void 0) {
|
|
84
|
+
searchParams.set("title", params.title);
|
|
85
|
+
}
|
|
86
|
+
for (const [fieldId, value] of Object.entries(params.fields ?? {})) {
|
|
87
|
+
searchParams.set(fieldId, value);
|
|
88
|
+
}
|
|
89
|
+
return `https://github.com/${params.gitHubRepo}/issues/new?${searchParams.toString()}`;
|
|
90
|
+
}
|
|
91
|
+
function formatPluginInfo(pluginInfo) {
|
|
92
|
+
return `\`${pluginInfo.id}\` ${pluginInfo.version ?? UNKNOWN}`;
|
|
93
|
+
}
|
|
94
|
+
async function getAppAndOperatingSystem() {
|
|
95
|
+
if (Platform.isMobileApp) {
|
|
96
|
+
const mobileAppInfo = await getMobileAppInfo();
|
|
97
|
+
return {
|
|
98
|
+
installerVersion: mobileAppInfo?.installerVersion ?? UNKNOWN,
|
|
99
|
+
operatingSystem: mobileAppInfo?.operatingSystem ?? UNKNOWN
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
if (!Platform.isDesktopApp) {
|
|
103
|
+
return { installerVersion: UNKNOWN, operatingSystem: UNKNOWN };
|
|
104
|
+
}
|
|
105
|
+
const { getDesktopOperatingSystem } = await import("./desktop-operating-system.mjs");
|
|
106
|
+
const build = Platform.build;
|
|
107
|
+
return {
|
|
108
|
+
installerVersion: typeof build === "string" ? build : UNKNOWN,
|
|
109
|
+
operatingSystem: getDesktopOperatingSystem()
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function getPlatformName() {
|
|
113
|
+
if (Platform.isAndroidApp) {
|
|
114
|
+
return "Android";
|
|
115
|
+
}
|
|
116
|
+
if (Platform.isIosApp) {
|
|
117
|
+
return "iOS";
|
|
118
|
+
}
|
|
119
|
+
if (Platform.isMacOS) {
|
|
120
|
+
return "macOS";
|
|
121
|
+
}
|
|
122
|
+
if (Platform.isWin) {
|
|
123
|
+
return "Windows";
|
|
124
|
+
}
|
|
125
|
+
return Platform.isLinux ? "Linux" : UNKNOWN;
|
|
126
|
+
}
|
|
127
|
+
function getPluginInfo(app, pluginId) {
|
|
128
|
+
return {
|
|
129
|
+
id: pluginId,
|
|
130
|
+
version: app.plugins.manifests[pluginId]?.version ?? null
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
export {
|
|
134
|
+
BUG_REPORT_ISSUE_FORM_TEMPLATE,
|
|
135
|
+
BugReportIssueFormFieldId,
|
|
136
|
+
formatBugReportEnvironment,
|
|
137
|
+
getBugReportEnvironment,
|
|
138
|
+
getBugReportIssueFormUrl,
|
|
139
|
+
getGitHubIssueFormUrl
|
|
140
|
+
};
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idWctcmVwb3J0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBIZWxwZXJzIGZvciBhIHBsdWdpbidzIGJ1ZyByZXBvcnRzOiB0aGUgZW52aXJvbm1lbnQgYSByZXBvcnQgbmVlZHMsIGFuZCBhIGxpbmsgdG8gYSBHaXRIdWIgaXNzdWUgZm9ybVxuICogcHJlZmlsbGVkIHdpdGggaXQuXG4gKlxuICogQ3Jvc3MtcGxhdGZvcm0tbG9hZGFibGU6IHRoZSBkZXNrdG9wIG9wZXJhdGluZy1zeXN0ZW0gbG9va3VwIHJlYWRzIGBub2RlOm9zYCwgc28gaXQgaXMgaW1wb3J0ZWRcbiAqIGR5bmFtaWNhbGx5LCBvbiBkZXNrdG9wIG9ubHkuXG4gKlxuICogVGhlIGRlc2t0b3AgaW5zdGFsbGVyIHZlcnNpb24gaXMgYFBsYXRmb3JtLmJ1aWxkYCwgd2hpY2ggbm8gcHVibGljIHR5cGluZyBkZWNsYXJlczogT2JzaWRpYW4ncyBkZXNrdG9wXG4gKiBzdGFydHVwIHNldHMgaXQgZnJvbSBFbGVjdHJvbidzIGBhcHAuZ2V0VmVyc2lvbigpYCAocmVhZCBmcm9tIE9ic2lkaWFuIGAxLjE1LjBgKSwgc28gaXQgaXMgcmVhZFxuICogc3RydWN0dXJhbGx5IGhlcmUsIGFuZCByZWFkcyBhcyBgdW5rbm93bmAgaWYgYSBsYXRlciB2ZXJzaW9uIGRyb3BzIGl0LlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBhcGlWZXJzaW9uLFxuICBQbGF0Zm9ybVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldE1vYmlsZUFwcEluZm8gfSBmcm9tICcuL21vYmlsZS1hcHAtaW5mby50cyc7XG5cbi8qKlxuICogVGhlIGlkcyBvZiB0aGUgYnVnLXJlcG9ydCBpc3N1ZSBmb3JtJ3MgZmllbGRzIHRoYXQge0BsaW5rIGdldEJ1Z1JlcG9ydElzc3VlRm9ybVVybH0gcHJlZmlsbHMuIEdpdEh1YlxuICogcHJlZmlsbHMgYSBmaWVsZCBmcm9tIGEgcXVlcnkgcGFyYW1ldGVyIG5hbWVkIGFmdGVyIHRoZSBmaWVsZCdzIGBpZGAsIHNvIGEgZm9ybSBtdXN0IGdpdmUgaXRzIGZpZWxkc1xuICogdGhlc2UgaWRzIGZvciB0aGVtIHRvIGJlIGZpbGxlZC5cbiAqL1xuZXhwb3J0IGVudW0gQnVnUmVwb3J0SXNzdWVGb3JtRmllbGRJZCB7XG4gIC8qKlxuICAgKiBUaGUgd2hvbGUgZW52aXJvbm1lbnQsIGFzIHtAbGluayBmb3JtYXRCdWdSZXBvcnRFbnZpcm9ubWVudH0gcmVuZGVycyBpdC5cbiAgICovXG4gIEVudmlyb25tZW50ID0gJ2Vudmlyb25tZW50JyxcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIHZlcnNpb24uXG4gICAqL1xuICBPYnNpZGlhblZlcnNpb24gPSAnb2JzaWRpYW4tdmVyc2lvbicsXG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpbmcgc3lzdGVtLlxuICAgKi9cbiAgT3BlcmF0aW5nU3lzdGVtID0gJ29wZXJhdGluZy1zeXN0ZW0nLFxuXG4gIC8qKlxuICAgKiBUaGUgcmVwb3J0aW5nIHBsdWdpbidzIHZlcnNpb24uXG4gICAqL1xuICBQbHVnaW5WZXJzaW9uID0gJ3BsdWdpbi12ZXJzaW9uJ1xufVxuXG4vKipcbiAqIFRoZSBmaWxlIG5hbWUgb2YgdGhlIGJ1Zy1yZXBvcnQgaXNzdWUgZm9ybSwgdW5kZXIgYC5naXRodWIvSVNTVUVfVEVNUExBVEVgLlxuICovXG5leHBvcnQgY29uc3QgQlVHX1JFUE9SVF9JU1NVRV9GT1JNX1RFTVBMQVRFID0gJ2J1Z19yZXBvcnQueW1sJztcblxuLyoqXG4gKiBUaGUgZW52aXJvbm1lbnQgYSBidWcgcmVwb3J0IG5lZWRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1Z1JlcG9ydEVudmlyb25tZW50IHtcbiAgLyoqXG4gICAqIFRoZSBvdGhlciBlbmFibGVkIHBsdWdpbnMsIHNvcnRlZCBieSBpZC5cbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWRQbHVnaW5zOiByZWFkb25seSBCdWdSZXBvcnRQbHVnaW5JbmZvW107XG5cbiAgLyoqXG4gICAqIFRoZSBpbnN0YWxsZWQgYXBwJ3MgdmVyc2lvbiwgd2hpY2ggY2FuIGxhZyBiZWhpbmQge0BsaW5rIG9ic2lkaWFuVmVyc2lvbn0uXG4gICAqL1xuICByZWFkb25seSBpbnN0YWxsZXJWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiB2ZXJzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5WZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpbmcgc3lzdGVtJ3MgbmFtZSBhbmQgdmVyc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGluZ1N5c3RlbTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGxhdGZvcm06IGBBbmRyb2lkYCwgYGlPU2AsIGBtYWNPU2AsIGBXaW5kb3dzYCwgYExpbnV4YCBvciBgdW5rbm93bmAuXG4gICAqL1xuICByZWFkb25seSBwbGF0Zm9ybTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVwb3J0aW5nIHBsdWdpbi5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbjogQnVnUmVwb3J0UGx1Z2luSW5mbztcbn1cblxuLyoqXG4gKiBBIHBsdWdpbiwgYXMgYSBidWcgcmVwb3J0IG5hbWVzIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1Z1JlcG9ydFBsdWdpbkluZm8ge1xuICAvKipcbiAgICogVGhlIHBsdWdpbidzIGlkLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBsdWdpbidzIGluc3RhbGxlZCB2ZXJzaW9uLCBvciBgbnVsbGAgd2hlbiBpdHMgbWFuaWZlc3QgaXMgbm90IGtub3duLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogbnVsbCB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QnVnUmVwb3J0RW52aXJvbm1lbnR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEJ1Z1JlcG9ydEVudmlyb25tZW50UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSByZXBvcnRpbmcgcGx1Z2luLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QnVnUmVwb3J0SXNzdWVGb3JtVXJsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRCdWdSZXBvcnRJc3N1ZUZvcm1VcmxQYXJhbXMgZXh0ZW5kcyBHZXRCdWdSZXBvcnRFbnZpcm9ubWVudFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luJ3MgR2l0SHViIHJlcG9zaXRvcnksIGFzIGBvd25lci9uYW1lYC5cbiAgICovXG4gIHJlYWRvbmx5IGdpdEh1YlJlcG86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGlzc3VlJ3MgdGl0bGUuIExlYXZlIGl0IG91dCB0byBrZWVwIHRoZSBmb3JtJ3Mgb3duIGRlZmF1bHQgdGl0bGUuXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0R2l0SHViSXNzdWVGb3JtVXJsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRHaXRIdWJJc3N1ZUZvcm1VcmxQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHZhbHVlcyB0byBwcmVmaWxsLCBrZXllZCBieSBmaWVsZCBgaWRgLlxuICAgKi9cbiAgcmVhZG9ubHkgZmllbGRzPzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG5cbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgcmVwb3NpdG9yeSwgYXMgYG93bmVyL25hbWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0SHViUmVwbzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9ybSdzIGZpbGUgbmFtZSwgdW5kZXIgYC5naXRodWIvSVNTVUVfVEVNUExBVEVgLlxuICAgKi9cbiAgcmVhZG9ubHkgdGVtcGxhdGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGlzc3VlJ3MgdGl0bGUuIExlYXZlIGl0IG91dCB0byBrZWVwIHRoZSBmb3JtJ3Mgb3duIGRlZmF1bHQgdGl0bGUuXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEFwcEFuZE9wZXJhdGluZ1N5c3RlbSB7XG4gIHJlYWRvbmx5IGluc3RhbGxlclZlcnNpb246IHN0cmluZztcbiAgcmVhZG9ubHkgb3BlcmF0aW5nU3lzdGVtOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBQbGF0Zm9ybVdpdGhCdWlsZCB7XG4gIHJlYWRvbmx5IGJ1aWxkPzogdW5rbm93bjtcbn1cblxuY29uc3QgVU5LTk9XTiA9ICd1bmtub3duJztcblxuLyoqXG4gKiBSZW5kZXJzIGEgYnVnIHJlcG9ydCdzIGVudmlyb25tZW50IGFzIGEgTWFya2Rvd24gbGlzdC5cbiAqXG4gKiBAcGFyYW0gZW52aXJvbm1lbnQgLSBUaGUgZW52aXJvbm1lbnQuXG4gKiBAcmV0dXJucyBUaGUgTWFya2Rvd24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRCdWdSZXBvcnRFbnZpcm9ubWVudChlbnZpcm9ubWVudDogQnVnUmVwb3J0RW52aXJvbm1lbnQpOiBzdHJpbmcge1xuICBjb25zdCBlbmFibGVkUGx1Z2lucyA9IGVudmlyb25tZW50LmVuYWJsZWRQbHVnaW5zLmxlbmd0aCA9PT0gMFxuICAgID8gJ25vbmUnXG4gICAgOiBlbnZpcm9ubWVudC5lbmFibGVkUGx1Z2lucy5tYXAoKHBsdWdpbkluZm8pID0+IGZvcm1hdFBsdWdpbkluZm8ocGx1Z2luSW5mbykpLmpvaW4oJywgJyk7XG5cbiAgcmV0dXJuIGAtIFBsdWdpbjogJHtmb3JtYXRQbHVnaW5JbmZvKGVudmlyb25tZW50LnBsdWdpbil9XFxuYFxuICAgICsgYC0gT2JzaWRpYW46ICR7ZW52aXJvbm1lbnQub2JzaWRpYW5WZXJzaW9ufSAoaW5zdGFsbGVyICR7ZW52aXJvbm1lbnQuaW5zdGFsbGVyVmVyc2lvbn0pXFxuYFxuICAgICsgYC0gUGxhdGZvcm06ICR7ZW52aXJvbm1lbnQucGxhdGZvcm19XFxuYFxuICAgICsgYC0gT3BlcmF0aW5nIHN5c3RlbTogJHtlbnZpcm9ubWVudC5vcGVyYXRpbmdTeXN0ZW19XFxuYFxuICAgICsgYC0gT3RoZXIgZW5hYmxlZCBwbHVnaW5zOiAke2VuYWJsZWRQbHVnaW5zfWA7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZW52aXJvbm1lbnQgYSBidWcgcmVwb3J0IG5lZWRzOiB0aGUgcGx1Z2luJ3MgdmVyc2lvbiwgdGhlIG90aGVyIGVuYWJsZWQgcGx1Z2lucywgdGhlXG4gKiBPYnNpZGlhbiBhbmQgaW5zdGFsbGVyIHZlcnNpb25zLCB0aGUgcGxhdGZvcm0gYW5kIHRoZSBvcGVyYXRpbmcgc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIFRoZSBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJ1Z1JlcG9ydEVudmlyb25tZW50KHBhcmFtczogR2V0QnVnUmVwb3J0RW52aXJvbm1lbnRQYXJhbXMpOiBQcm9taXNlPEJ1Z1JlcG9ydEVudmlyb25tZW50PiB7XG4gIGNvbnN0IHsgYXBwLCBwbHVnaW5JZCB9ID0gcGFyYW1zO1xuICBjb25zdCB7IGluc3RhbGxlclZlcnNpb24sIG9wZXJhdGluZ1N5c3RlbSB9ID0gYXdhaXQgZ2V0QXBwQW5kT3BlcmF0aW5nU3lzdGVtKCk7XG5cbiAgcmV0dXJuIHtcbiAgICBlbmFibGVkUGx1Z2luczogWy4uLmFwcC5wbHVnaW5zLmVuYWJsZWRQbHVnaW5zXVxuICAgICAgLmZpbHRlcigoaWQpID0+IGlkICE9PSBwbHVnaW5JZClcbiAgICAgIC5zb3J0KClcbiAgICAgIC5tYXAoKGlkKSA9PiBnZXRQbHVnaW5JbmZvKGFwcCwgaWQpKSxcbiAgICBpbnN0YWxsZXJWZXJzaW9uLFxuICAgIG9ic2lkaWFuVmVyc2lvbjogYXBpVmVyc2lvbixcbiAgICBvcGVyYXRpbmdTeXN0ZW0sXG4gICAgcGxhdGZvcm06IGdldFBsYXRmb3JtTmFtZSgpLFxuICAgIHBsdWdpbjogZ2V0UGx1Z2luSW5mbyhhcHAsIHBsdWdpbklkKVxuICB9O1xufVxuXG4vKipcbiAqIEdldHMgYSBsaW5rIHRvIGEgcGx1Z2luJ3MgYnVnLXJlcG9ydCBpc3N1ZSBmb3JtICh7QGxpbmsgQlVHX1JFUE9SVF9JU1NVRV9GT1JNX1RFTVBMQVRFfSksIHByZWZpbGxlZCB3aXRoXG4gKiB0aGUgZW52aXJvbm1lbnQsIGluIHRoZSBmaWVsZHMge0BsaW5rIEJ1Z1JlcG9ydElzc3VlRm9ybUZpZWxkSWR9IG5hbWVzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIFRoZSBsaW5rLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QnVnUmVwb3J0SXNzdWVGb3JtVXJsKHBhcmFtczogR2V0QnVnUmVwb3J0SXNzdWVGb3JtVXJsUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZW52aXJvbm1lbnQgPSBhd2FpdCBnZXRCdWdSZXBvcnRFbnZpcm9ubWVudChwYXJhbXMpO1xuXG4gIHJldHVybiBnZXRHaXRIdWJJc3N1ZUZvcm1Vcmwoe1xuICAgIGZpZWxkczoge1xuICAgICAgW0J1Z1JlcG9ydElzc3VlRm9ybUZpZWxkSWQuRW52aXJvbm1lbnRdOiBmb3JtYXRCdWdSZXBvcnRFbnZpcm9ubWVudChlbnZpcm9ubWVudCksXG4gICAgICBbQnVnUmVwb3J0SXNzdWVGb3JtRmllbGRJZC5PYnNpZGlhblZlcnNpb25dOiBlbnZpcm9ubWVudC5vYnNpZGlhblZlcnNpb24sXG4gICAgICBbQnVnUmVwb3J0SXNzdWVGb3JtRmllbGRJZC5PcGVyYXRpbmdTeXN0ZW1dOiBlbnZpcm9ubWVudC5vcGVyYXRpbmdTeXN0ZW0sXG4gICAgICBbQnVnUmVwb3J0SXNzdWVGb3JtRmllbGRJZC5QbHVnaW5WZXJzaW9uXTogZW52aXJvbm1lbnQucGx1Z2luLnZlcnNpb24gPz8gVU5LTk9XTlxuICAgIH0sXG4gICAgZ2l0SHViUmVwbzogcGFyYW1zLmdpdEh1YlJlcG8sXG4gICAgdGVtcGxhdGU6IEJVR19SRVBPUlRfSVNTVUVfRk9STV9URU1QTEFURSxcbiAgICAuLi5wYXJhbXMudGl0bGUgIT09IHVuZGVmaW5lZCAmJiB7IHRpdGxlOiBwYXJhbXMudGl0bGUgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgbGluayB0aGF0IG9wZW5zIGEgR2l0SHViIGlzc3VlIGZvcm0gd2l0aCBmaWVsZHMgcHJlZmlsbGVkLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIFRoZSBsaW5rLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2l0SHViSXNzdWVGb3JtVXJsKHBhcmFtczogR2V0R2l0SHViSXNzdWVGb3JtVXJsUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7IHRlbXBsYXRlOiBwYXJhbXMudGVtcGxhdGUgfSk7XG4gIGlmIChwYXJhbXMudGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHNlYXJjaFBhcmFtcy5zZXQoJ3RpdGxlJywgcGFyYW1zLnRpdGxlKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgW2ZpZWxkSWQsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbXMuZmllbGRzID8/IHt9KSkge1xuICAgIHNlYXJjaFBhcmFtcy5zZXQoZmllbGRJZCwgdmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIGBodHRwczovL2dpdGh1Yi5jb20vJHtwYXJhbXMuZ2l0SHViUmVwb30vaXNzdWVzL25ldz8ke3NlYXJjaFBhcmFtcy50b1N0cmluZygpfWA7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFBsdWdpbkluZm8ocGx1Z2luSW5mbzogQnVnUmVwb3J0UGx1Z2luSW5mbyk6IHN0cmluZyB7XG4gIHJldHVybiBgXFxgJHtwbHVnaW5JbmZvLmlkfVxcYCAke3BsdWdpbkluZm8udmVyc2lvbiA/PyBVTktOT1dOfWA7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFwcEFuZE9wZXJhdGluZ1N5c3RlbSgpOiBQcm9taXNlPEFwcEFuZE9wZXJhdGluZ1N5c3RlbT4ge1xuICBpZiAoUGxhdGZvcm0uaXNNb2JpbGVBcHApIHtcbiAgICBjb25zdCBtb2JpbGVBcHBJbmZvID0gYXdhaXQgZ2V0TW9iaWxlQXBwSW5mbygpO1xuICAgIHJldHVybiB7XG4gICAgICBpbnN0YWxsZXJWZXJzaW9uOiBtb2JpbGVBcHBJbmZvPy5pbnN0YWxsZXJWZXJzaW9uID8/IFVOS05PV04sXG4gICAgICBvcGVyYXRpbmdTeXN0ZW06IG1vYmlsZUFwcEluZm8/Lm9wZXJhdGluZ1N5c3RlbSA/PyBVTktOT1dOXG4gICAgfTtcbiAgfVxuXG4gIGlmICghUGxhdGZvcm0uaXNEZXNrdG9wQXBwKSB7XG4gICAgcmV0dXJuIHsgaW5zdGFsbGVyVmVyc2lvbjogVU5LTk9XTiwgb3BlcmF0aW5nU3lzdGVtOiBVTktOT1dOIH07XG4gIH1cblxuICAvLyBDb25kaXRpb25hbCBpbXBvcnQgb2YgdGhlIGRlc2t0b3Atb25seSBsb29rdXAsIHdoaWNoIHJlYWRzIGBub2RlOm9zYDsgdGhpcyBicmFuY2ggcnVucyBvbmx5IG9uIGRlc2t0b3AuXG4gIGNvbnN0IHsgZ2V0RGVza3RvcE9wZXJhdGluZ1N5c3RlbSB9ID0gYXdhaXQgaW1wb3J0KCcuL2Rlc2t0b3Atb3BlcmF0aW5nLXN5c3RlbS50cycpO1xuICBjb25zdCBidWlsZCA9IChQbGF0Zm9ybSBhcyBQbGF0Zm9ybVdpdGhCdWlsZCkuYnVpbGQ7XG4gIHJldHVybiB7XG4gICAgaW5zdGFsbGVyVmVyc2lvbjogdHlwZW9mIGJ1aWxkID09PSAnc3RyaW5nJyA/IGJ1aWxkIDogVU5LTk9XTixcbiAgICBvcGVyYXRpbmdTeXN0ZW06IGdldERlc2t0b3BPcGVyYXRpbmdTeXN0ZW0oKVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRQbGF0Zm9ybU5hbWUoKTogc3RyaW5nIHtcbiAgaWYgKFBsYXRmb3JtLmlzQW5kcm9pZEFwcCkge1xuICAgIHJldHVybiAnQW5kcm9pZCc7XG4gIH1cbiAgaWYgKFBsYXRmb3JtLmlzSW9zQXBwKSB7XG4gICAgcmV0dXJuICdpT1MnO1xuICB9XG4gIGlmIChQbGF0Zm9ybS5pc01hY09TKSB7XG4gICAgcmV0dXJuICdtYWNPUyc7XG4gIH1cbiAgaWYgKFBsYXRmb3JtLmlzV2luKSB7XG4gICAgcmV0dXJuICdXaW5kb3dzJztcbiAgfVxuICByZXR1cm4gUGxhdGZvcm0uaXNMaW51eCA/ICdMaW51eCcgOiBVTktOT1dOO1xufVxuXG5mdW5jdGlvbiBnZXRQbHVnaW5JbmZvKGFwcDogQXBwLCBwbHVnaW5JZDogc3RyaW5nKTogQnVnUmVwb3J0UGx1Z2luSW5mbyB7XG4gIHJldHVybiB7XG4gICAgaWQ6IHBsdWdpbklkLFxuICAgIHZlcnNpb246IGFwcC5wbHVnaW5zLm1hbmlmZXN0c1twbHVnaW5JZF0/LnZlcnNpb24gPz8gbnVsbFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsd0JBQXdCO0FBTzFCLElBQUssNEJBQUwsa0JBQUtBLCtCQUFMO0FBSUwsRUFBQUEsMkJBQUEsaUJBQWM7QUFLZCxFQUFBQSwyQkFBQSxxQkFBa0I7QUFLbEIsRUFBQUEsMkJBQUEscUJBQWtCO0FBS2xCLEVBQUFBLDJCQUFBLG1CQUFnQjtBQW5CTixTQUFBQTtBQUFBLEdBQUE7QUF5QkwsTUFBTSxpQ0FBaUM7QUFvSDlDLE1BQU0sVUFBVTtBQVFULFNBQVMsMkJBQTJCLGFBQTJDO0FBQ3BGLFFBQU0saUJBQWlCLFlBQVksZUFBZSxXQUFXLElBQ3pELFNBQ0EsWUFBWSxlQUFlLElBQUksQ0FBQyxlQUFlLGlCQUFpQixVQUFVLENBQUMsRUFBRSxLQUFLLElBQUk7QUFFMUYsU0FBTyxhQUFhLGlCQUFpQixZQUFZLE1BQU0sQ0FBQztBQUFBLGNBQ3JDLFlBQVksZUFBZSxlQUFlLFlBQVksZ0JBQWdCO0FBQUEsY0FDdEUsWUFBWSxRQUFRO0FBQUEsc0JBQ1osWUFBWSxlQUFlO0FBQUEsMkJBQ3RCLGNBQWM7QUFDaEQ7QUFTQSxlQUFzQix3QkFBd0IsUUFBc0U7QUFDbEgsUUFBTSxFQUFFLEtBQUssU0FBUyxJQUFJO0FBQzFCLFFBQU0sRUFBRSxrQkFBa0IsZ0JBQWdCLElBQUksTUFBTSx5QkFBeUI7QUFFN0UsU0FBTztBQUFBLElBQ0wsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLFFBQVEsY0FBYyxFQUMzQyxPQUFPLENBQUMsT0FBTyxPQUFPLFFBQVEsRUFDOUIsS0FBSyxFQUNMLElBQUksQ0FBQyxPQUFPLGNBQWMsS0FBSyxFQUFFLENBQUM7QUFBQSxJQUNyQztBQUFBLElBQ0EsaUJBQWlCO0FBQUEsSUFDakI7QUFBQSxJQUNBLFVBQVUsZ0JBQWdCO0FBQUEsSUFDMUIsUUFBUSxjQUFjLEtBQUssUUFBUTtBQUFBLEVBQ3JDO0FBQ0Y7QUFTQSxlQUFzQix5QkFBeUIsUUFBeUQ7QUFDdEcsUUFBTSxjQUFjLE1BQU0sd0JBQXdCLE1BQU07QUFFeEQsU0FBTyxzQkFBc0I7QUFBQSxJQUMzQixRQUFRO0FBQUEsTUFDTixDQUFDLCtCQUFxQyxHQUFHLDJCQUEyQixXQUFXO0FBQUEsTUFDL0UsQ0FBQyx3Q0FBeUMsR0FBRyxZQUFZO0FBQUEsTUFDekQsQ0FBQyx3Q0FBeUMsR0FBRyxZQUFZO0FBQUEsTUFDekQsQ0FBQyxvQ0FBdUMsR0FBRyxZQUFZLE9BQU8sV0FBVztBQUFBLElBQzNFO0FBQUEsSUFDQSxZQUFZLE9BQU87QUFBQSxJQUNuQixVQUFVO0FBQUEsSUFDVixHQUFHLE9BQU8sVUFBVSxVQUFhLEVBQUUsT0FBTyxPQUFPLE1BQU07QUFBQSxFQUN6RCxDQUFDO0FBQ0g7QUFRTyxTQUFTLHNCQUFzQixRQUE2QztBQUNqRixRQUFNLGVBQWUsSUFBSSxnQkFBZ0IsRUFBRSxVQUFVLE9BQU8sU0FBUyxDQUFDO0FBQ3RFLE1BQUksT0FBTyxVQUFVLFFBQVc7QUFDOUIsaUJBQWEsSUFBSSxTQUFTLE9BQU8sS0FBSztBQUFBLEVBQ3hDO0FBRUEsYUFBVyxDQUFDLFNBQVMsS0FBSyxLQUFLLE9BQU8sUUFBUSxPQUFPLFVBQVUsQ0FBQyxDQUFDLEdBQUc7QUFDbEUsaUJBQWEsSUFBSSxTQUFTLEtBQUs7QUFBQSxFQUNqQztBQUVBLFNBQU8sc0JBQXNCLE9BQU8sVUFBVSxlQUFlLGFBQWEsU0FBUyxDQUFDO0FBQ3RGO0FBRUEsU0FBUyxpQkFBaUIsWUFBeUM7QUFDakUsU0FBTyxLQUFLLFdBQVcsRUFBRSxNQUFNLFdBQVcsV0FBVyxPQUFPO0FBQzlEO0FBRUEsZUFBZSwyQkFBMkQ7QUFDeEUsTUFBSSxTQUFTLGFBQWE7QUFDeEIsVUFBTSxnQkFBZ0IsTUFBTSxpQkFBaUI7QUFDN0MsV0FBTztBQUFBLE1BQ0wsa0JBQWtCLGVBQWUsb0JBQW9CO0FBQUEsTUFDckQsaUJBQWlCLGVBQWUsbUJBQW1CO0FBQUEsSUFDckQ7QUFBQSxFQUNGO0FBRUEsTUFBSSxDQUFDLFNBQVMsY0FBYztBQUMxQixXQUFPLEVBQUUsa0JBQWtCLFNBQVMsaUJBQWlCLFFBQVE7QUFBQSxFQUMvRDtBQUdBLFFBQU0sRUFBRSwwQkFBMEIsSUFBSSxNQUFNLE9BQU8sK0JBQStCO0FBQ2xGLFFBQU0sUUFBUyxTQUErQjtBQUM5QyxTQUFPO0FBQUEsSUFDTCxrQkFBa0IsT0FBTyxVQUFVLFdBQVcsUUFBUTtBQUFBLElBQ3RELGlCQUFpQiwwQkFBMEI7QUFBQSxFQUM3QztBQUNGO0FBRUEsU0FBUyxrQkFBMEI7QUFDakMsTUFBSSxTQUFTLGNBQWM7QUFDekIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJLFNBQVMsVUFBVTtBQUNyQixXQUFPO0FBQUEsRUFDVDtBQUNBLE1BQUksU0FBUyxTQUFTO0FBQ3BCLFdBQU87QUFBQSxFQUNUO0FBQ0EsTUFBSSxTQUFTLE9BQU87QUFDbEIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxTQUFPLFNBQVMsVUFBVSxVQUFVO0FBQ3RDO0FBRUEsU0FBUyxjQUFjLEtBQVUsVUFBdUM7QUFDdEUsU0FBTztBQUFBLElBQ0wsSUFBSTtBQUFBLElBQ0osU0FBUyxJQUFJLFFBQVEsVUFBVSxRQUFRLEdBQUcsV0FBVztBQUFBLEVBQ3ZEO0FBQ0Y7IiwibmFtZXMiOlsiQnVnUmVwb3J0SXNzdWVGb3JtRmllbGRJZCJdfQ==
|
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
* {@link loop} reports after every item it processes. Code that drives a bulk operation without `loop()` calls
|
|
11
11
|
* {@link reportBulkOperationProgress} itself.
|
|
12
12
|
*
|
|
13
|
+
* An operation waiting on the user (a confirmation, a picker) makes no progress, yet it is not hung. While such a
|
|
14
|
+
* dialog is open, {@link holdBulkOperationWhile} reports on an interval, scoped to that one promise: the timer
|
|
15
|
+
* stops the moment the dialog settles, so a hung operation outside a dialog still goes stale. Every modal helper of
|
|
16
|
+
* this library already holds through `showModal`.
|
|
17
|
+
*
|
|
13
18
|
* The listener set lives in the shared-state bag under a versioned key, so a `loop()` bundled by one plugin's copy
|
|
14
19
|
* of this library reaches a listener registered by another's. Its shape is a cross-copy wire format: a `Set` of
|
|
15
20
|
* plain functions, read structurally.
|
|
@@ -18,6 +23,23 @@
|
|
|
18
23
|
* A listener notified whenever a bulk operation makes progress.
|
|
19
24
|
*/
|
|
20
25
|
export type BulkOperationProgressListener = () => void;
|
|
26
|
+
/**
|
|
27
|
+
* How often {@link holdBulkOperationWhile} reports progress while its promise is pending, well inside the lock's
|
|
28
|
+
* staleness window.
|
|
29
|
+
*/
|
|
30
|
+
export declare const BULK_OPERATION_HOLD_INTERVAL_IN_MILLISECONDS = 10000;
|
|
31
|
+
/**
|
|
32
|
+
* Keeps a bulk operation's lease lock fresh while it waits on something that is not progress but not a hang either,
|
|
33
|
+
* such as a dialog waiting for the user.
|
|
34
|
+
*
|
|
35
|
+
* Reports progress at once, then every {@link BULK_OPERATION_HOLD_INTERVAL_IN_MILLISECONDS} while the promise is
|
|
36
|
+
* pending, and once more when it settles. Outside a bulk operation it costs one interval and nothing else.
|
|
37
|
+
*
|
|
38
|
+
* @typeParam T - The type of the promise's value.
|
|
39
|
+
* @param promise - The promise to wait for.
|
|
40
|
+
* @returns The promise's value.
|
|
41
|
+
*/
|
|
42
|
+
export declare function holdBulkOperationWhile<T>(promise: Promise<T>): Promise<T>;
|
|
21
43
|
/**
|
|
22
44
|
* Subscribes to bulk-operation progress.
|
|
23
45
|
*
|
|
@@ -5,6 +5,17 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
5
5
|
|
|
6
6
|
import { getObsidianLibState } from "./obsidian-lib-state.mjs";
|
|
7
7
|
const BULK_OPERATION_PROGRESS_STATE_KEY = "bulkOperationProgressV1";
|
|
8
|
+
const BULK_OPERATION_HOLD_INTERVAL_IN_MILLISECONDS = 1e4;
|
|
9
|
+
async function holdBulkOperationWhile(promise) {
|
|
10
|
+
reportBulkOperationProgress();
|
|
11
|
+
const intervalId = window.setInterval(reportBulkOperationProgress, BULK_OPERATION_HOLD_INTERVAL_IN_MILLISECONDS);
|
|
12
|
+
try {
|
|
13
|
+
return await promise;
|
|
14
|
+
} finally {
|
|
15
|
+
window.clearInterval(intervalId);
|
|
16
|
+
reportBulkOperationProgress();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
8
19
|
function registerBulkOperationProgressListener(listener) {
|
|
9
20
|
const listeners = getListeners();
|
|
10
21
|
listeners.add(listener);
|
|
@@ -25,7 +36,9 @@ function getListeners() {
|
|
|
25
36
|
return getObsidianLibState(BULK_OPERATION_PROGRESS_STATE_KEY, /* @__PURE__ */ new Set()).value;
|
|
26
37
|
}
|
|
27
38
|
export {
|
|
39
|
+
BULK_OPERATION_HOLD_INTERVAL_IN_MILLISECONDS,
|
|
40
|
+
holdBulkOperationWhile,
|
|
28
41
|
registerBulkOperationProgressListener,
|
|
29
42
|
reportBulkOperationProgress
|
|
30
43
|
};
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2J1bGstb3BlcmF0aW9uLXByb2dyZXNzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQSByZWFsbS13aWRlIHByb2dyZXNzIHNpZ25hbCBmb3IgYnVsayBvcGVyYXRpb25zLlxuICpcbiAqIEEgYnVsayBvcGVyYXRpb24gd3JhcHBlZCBpbiBnaXQgY29tbWl0cyBob2xkcyBhIGxlYXNlIGxvY2sgd2hvc2UgaGVhcnRiZWF0IG11c3QgYmUgcmVmcmVzaGVkIGJ5IHRoZSBvcGVyYXRpb24nc1xuICogb3duIHByb2dyZXNzLCBuZXZlciBieSBhIGZyZWUtcnVubmluZyB0aW1lciwgc28gYSBodW5nIG9wZXJhdGlvbiBnb2VzIHN0YWxlIGxpa2UgYSBjcmFzaGVkIG9uZS4gUmF0aGVyIHRoYW5cbiAqIHRocmVhZGluZyBhIGNhbGxiYWNrIHRocm91Z2ggZXZlcnkgcGx1Z2luJ3MgY2FsbCBjaGFpbiwgdGhlIHdyYXBwZXIgc3Vic2NyaWJlcyBoZXJlIHdoaWxlIGl0IHJ1bnMsIGFuZFxuICoge0BsaW5rIGxvb3B9IHJlcG9ydHMgYWZ0ZXIgZXZlcnkgaXRlbSBpdCBwcm9jZXNzZXMuIENvZGUgdGhhdCBkcml2ZXMgYSBidWxrIG9wZXJhdGlvbiB3aXRob3V0IGBsb29wKClgIGNhbGxzXG4gKiB7QGxpbmsgcmVwb3J0QnVsa09wZXJhdGlvblByb2dyZXNzfSBpdHNlbGYuXG4gKlxuICogQW4gb3BlcmF0aW9uIHdhaXRpbmcgb24gdGhlIHVzZXIgKGEgY29uZmlybWF0aW9uLCBhIHBpY2tlcikgbWFrZXMgbm8gcHJvZ3Jlc3MsIHlldCBpdCBpcyBub3QgaHVuZy4gV2hpbGUgc3VjaCBhXG4gKiBkaWFsb2cgaXMgb3Blbiwge0BsaW5rIGhvbGRCdWxrT3BlcmF0aW9uV2hpbGV9IHJlcG9ydHMgb24gYW4gaW50ZXJ2YWwsIHNjb3BlZCB0byB0aGF0IG9uZSBwcm9taXNlOiB0aGUgdGltZXJcbiAqIHN0b3BzIHRoZSBtb21lbnQgdGhlIGRpYWxvZyBzZXR0bGVzLCBzbyBhIGh1bmcgb3BlcmF0aW9uIG91dHNpZGUgYSBkaWFsb2cgc3RpbGwgZ29lcyBzdGFsZS4gRXZlcnkgbW9kYWwgaGVscGVyIG9mXG4gKiB0aGlzIGxpYnJhcnkgYWxyZWFkeSBob2xkcyB0aHJvdWdoIGBzaG93TW9kYWxgLlxuICpcbiAqIFRoZSBsaXN0ZW5lciBzZXQgbGl2ZXMgaW4gdGhlIHNoYXJlZC1zdGF0ZSBiYWcgdW5kZXIgYSB2ZXJzaW9uZWQga2V5LCBzbyBhIGBsb29wKClgIGJ1bmRsZWQgYnkgb25lIHBsdWdpbidzIGNvcHlcbiAqIG9mIHRoaXMgbGlicmFyeSByZWFjaGVzIGEgbGlzdGVuZXIgcmVnaXN0ZXJlZCBieSBhbm90aGVyJ3MuIEl0cyBzaGFwZSBpcyBhIGNyb3NzLWNvcHkgd2lyZSBmb3JtYXQ6IGEgYFNldGAgb2ZcbiAqIHBsYWluIGZ1bmN0aW9ucywgcmVhZCBzdHJ1Y3R1cmFsbHkuXG4gKi9cblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJTdGF0ZSB9IGZyb20gJy4vb2JzaWRpYW4tbGliLXN0YXRlLnRzJztcblxuLyoqXG4gKiBBIGxpc3RlbmVyIG5vdGlmaWVkIHdoZW5ldmVyIGEgYnVsayBvcGVyYXRpb24gbWFrZXMgcHJvZ3Jlc3MuXG4gKi9cbmV4cG9ydCB0eXBlIEJ1bGtPcGVyYXRpb25Qcm9ncmVzc0xpc3RlbmVyID0gKCkgPT4gdm9pZDtcblxuY29uc3QgQlVMS19PUEVSQVRJT05fUFJPR1JFU1NfU1RBVEVfS0VZID0gJ2J1bGtPcGVyYXRpb25Qcm9ncmVzc1YxJztcblxuLyoqXG4gKiBIb3cgb2Z0ZW4ge0BsaW5rIGhvbGRCdWxrT3BlcmF0aW9uV2hpbGV9IHJlcG9ydHMgcHJvZ3Jlc3Mgd2hpbGUgaXRzIHByb21pc2UgaXMgcGVuZGluZywgd2VsbCBpbnNpZGUgdGhlIGxvY2snc1xuICogc3RhbGVuZXNzIHdpbmRvdy5cbiAqL1xuZXhwb3J0IGNvbnN0IEJVTEtfT1BFUkFUSU9OX0hPTERfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTID0gMTBfMDAwO1xuXG4vKipcbiAqIEtlZXBzIGEgYnVsayBvcGVyYXRpb24ncyBsZWFzZSBsb2NrIGZyZXNoIHdoaWxlIGl0IHdhaXRzIG9uIHNvbWV0aGluZyB0aGF0IGlzIG5vdCBwcm9ncmVzcyBidXQgbm90IGEgaGFuZyBlaXRoZXIsXG4gKiBzdWNoIGFzIGEgZGlhbG9nIHdhaXRpbmcgZm9yIHRoZSB1c2VyLlxuICpcbiAqIFJlcG9ydHMgcHJvZ3Jlc3MgYXQgb25jZSwgdGhlbiBldmVyeSB7QGxpbmsgQlVMS19PUEVSQVRJT05fSE9MRF9JTlRFUlZBTF9JTl9NSUxMSVNFQ09ORFN9IHdoaWxlIHRoZSBwcm9taXNlIGlzXG4gKiBwZW5kaW5nLCBhbmQgb25jZSBtb3JlIHdoZW4gaXQgc2V0dGxlcy4gT3V0c2lkZSBhIGJ1bGsgb3BlcmF0aW9uIGl0IGNvc3RzIG9uZSBpbnRlcnZhbCBhbmQgbm90aGluZyBlbHNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBwcm9taXNlJ3MgdmFsdWUuXG4gKiBAcGFyYW0gcHJvbWlzZSAtIFRoZSBwcm9taXNlIHRvIHdhaXQgZm9yLlxuICogQHJldHVybnMgVGhlIHByb21pc2UncyB2YWx1ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhvbGRCdWxrT3BlcmF0aW9uV2hpbGU8VD4ocHJvbWlzZTogUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICByZXBvcnRCdWxrT3BlcmF0aW9uUHJvZ3Jlc3MoKTtcbiAgY29uc3QgaW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChyZXBvcnRCdWxrT3BlcmF0aW9uUHJvZ3Jlc3MsIEJVTEtfT1BFUkFUSU9OX0hPTERfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgcHJvbWlzZTtcbiAgfSBmaW5hbGx5IHtcbiAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICByZXBvcnRCdWxrT3BlcmF0aW9uUHJvZ3Jlc3MoKTtcbiAgfVxufVxuXG4vKipcbiAqIFN1YnNjcmliZXMgdG8gYnVsay1vcGVyYXRpb24gcHJvZ3Jlc3MuXG4gKlxuICogQHBhcmFtIGxpc3RlbmVyIC0gVGhlIGxpc3RlbmVyIHRvIG5vdGlmeSBvbiBldmVyeSBwcm9ncmVzcyByZXBvcnQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdW5zdWJzY3JpYmVzIHRoZSBsaXN0ZW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQnVsa09wZXJhdGlvblByb2dyZXNzTGlzdGVuZXIobGlzdGVuZXI6IEJ1bGtPcGVyYXRpb25Qcm9ncmVzc0xpc3RlbmVyKTogKCkgPT4gdm9pZCB7XG4gIGNvbnN0IGxpc3RlbmVycyA9IGdldExpc3RlbmVycygpO1xuICBsaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBsaXN0ZW5lcnMuZGVsZXRlKGxpc3RlbmVyKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXBvcnRzIHRoYXQgYSBidWxrIG9wZXJhdGlvbiBoYXMgbWFkZSBwcm9ncmVzcywgc3VjaCBhcyBmaW5pc2hpbmcgb25lIGl0ZW0uXG4gKlxuICogQSBsaXN0ZW5lciB0aGF0IHRocm93cyBpcyBza2lwcGVkLCBzbyBhIHByb2dyZXNzIHJlcG9ydCBjYW4gbmV2ZXIgZmFpbCB0aGUgb3BlcmF0aW9uIHJlcG9ydGluZyBpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcG9ydEJ1bGtPcGVyYXRpb25Qcm9ncmVzcygpOiB2b2lkIHtcbiAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBnZXRMaXN0ZW5lcnMoKSkge1xuICAgIHRyeSB7XG4gICAgICBsaXN0ZW5lcigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdCdWxrIG9wZXJhdGlvbiBwcm9ncmVzcyBsaXN0ZW5lciBmYWlsZWQnLCBlcnJvcik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldExpc3RlbmVycygpOiBTZXQ8QnVsa09wZXJhdGlvblByb2dyZXNzTGlzdGVuZXI+IHtcbiAgcmV0dXJuIGdldE9ic2lkaWFuTGliU3RhdGUoQlVMS19PUEVSQVRJT05fUFJPR1JFU1NfU1RBVEVfS0VZLCBuZXcgU2V0PEJ1bGtPcGVyYXRpb25Qcm9ncmVzc0xpc3RlbmVyPigpKS52YWx1ZTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBcUJBLFNBQVMsMkJBQTJCO0FBT3BDLE1BQU0sb0NBQW9DO0FBTW5DLE1BQU0sK0NBQStDO0FBYTVELGVBQXNCLHVCQUEwQixTQUFpQztBQUMvRSw4QkFBNEI7QUFDNUIsUUFBTSxhQUFhLE9BQU8sWUFBWSw2QkFBNkIsNENBQTRDO0FBQy9HLE1BQUk7QUFDRixXQUFPLE1BQU07QUFBQSxFQUNmLFVBQUU7QUFDQSxXQUFPLGNBQWMsVUFBVTtBQUMvQixnQ0FBNEI7QUFBQSxFQUM5QjtBQUNGO0FBUU8sU0FBUyxzQ0FBc0MsVUFBcUQ7QUFDekcsUUFBTSxZQUFZLGFBQWE7QUFDL0IsWUFBVSxJQUFJLFFBQVE7QUFDdEIsU0FBTyxNQUFNO0FBQ1gsY0FBVSxPQUFPLFFBQVE7QUFBQSxFQUMzQjtBQUNGO0FBT08sU0FBUyw4QkFBb0M7QUFDbEQsYUFBVyxZQUFZLGFBQWEsR0FBRztBQUNyQyxRQUFJO0FBQ0YsZUFBUztBQUFBLElBQ1gsU0FBUyxPQUFPO0FBQ2QsY0FBUSxNQUFNLDJDQUEyQyxLQUFLO0FBQUEsSUFDaEU7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxTQUFTLGVBQW1EO0FBQzFELFNBQU8sb0JBQW9CLG1DQUFtQyxvQkFBSSxJQUFtQyxDQUFDLEVBQUU7QUFDMUc7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -31,6 +31,7 @@ ensureBrowserProcess();
|
|
|
31
31
|
})();
|
|
32
32
|
|
|
33
33
|
import { snapshot } from "@mnaoumov/typescript-lib/array";
|
|
34
|
+
import { TFolder } from "obsidian";
|
|
34
35
|
import { getObsidianLibState } from "./obsidian-lib-state.mjs";
|
|
35
36
|
const STATE_KEY = "caseInsensitiveFileIndex";
|
|
36
37
|
class CaseInsensitiveFileIndex {
|
|
@@ -60,7 +61,11 @@ class CaseInsensitiveFileIndex {
|
|
|
60
61
|
*/
|
|
61
62
|
delete(path) {
|
|
62
63
|
const key = path.toLowerCase();
|
|
64
|
+
const abstractFile = this.map.get(key);
|
|
63
65
|
this.map.delete(key);
|
|
66
|
+
if (abstractFile && !(abstractFile instanceof TFolder)) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
64
69
|
const descendantPrefix = `${key}/`;
|
|
65
70
|
for (const existingKey of snapshot(this.map.keys())) {
|
|
66
71
|
if (existingKey.startsWith(descendantPrefix)) {
|
|
@@ -102,6 +107,9 @@ class CaseInsensitiveFileIndex {
|
|
|
102
107
|
const newKey = newAbstractFile.path.toLowerCase();
|
|
103
108
|
this.map.delete(oldKey);
|
|
104
109
|
this.map.set(newKey, newAbstractFile);
|
|
110
|
+
if (!(newAbstractFile instanceof TFolder)) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
105
113
|
const oldDescendantPrefix = `${oldKey}/`;
|
|
106
114
|
const newDescendantPrefix = `${newKey}/`;
|
|
107
115
|
for (const [existingKey, existingValue] of snapshot(this.map)) {
|
|
@@ -132,4 +140,4 @@ export {
|
|
|
132
140
|
setCaseInsensitiveFileIndex,
|
|
133
141
|
unsetCaseInsensitiveFileIndex
|
|
134
142
|
};
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIGFuIG9wdC1pbiBPKDEpIGNhc2UtaW5zZW5zaXRpdmUgcmVzb2x2ZXIgZm9yIE9ic2lkaWFuIHZhdWx0cy5cbiAqXG4gKiBPYnNpZGlhbidzIG5hdGl2ZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLm9ic2lkaWFuLm1kL1JlZmVyZW5jZS9UeXBlU2NyaXB0K0FQSS9WYXVsdCB8IFZhdWx0fSByZXNvbHZlc1xuICogYSBzdHJpbmcgcGF0aCBjYXNlLWluc2Vuc2l0aXZlbHkgKHRoZSBXaW5kb3dzL21hY09TIGRlZmF1bHQpIGluIE8oMSkgb24gYSBoaXQgYnV0IHdpdGggYW5cbiAqIE8odmF1bHQpIHNjYW4gb24gYSBtaXNzLiBUaGUgbWlzcyBjYXNlIGlzIHRoZSBob3Qgb25lIGR1cmluZyBkZWxldGlvbiBjYXNjYWRlcywgd2hlcmUgZXh0ZW5zaW9uXG4gKiBjaGVja3MgYW5kIGNhY2hlIGxvb2t1cHMgYXJlIHBlcmZvcm1lZCBvbiBhbHJlYWR5LXJlbW92ZWQgcGF0aHMuIFRoaXMgbW9kdWxlIGJhY2tzIHRoZVxuICogY2FzZS1pbnNlbnNpdGl2ZSBsb29rdXAgd2l0aCBhIGBsb3dlcmNhc2UtcGF0aCDihpIgVEFic3RyYWN0RmlsZWAgaW5kZXggc28gbWlzc2VzIGFyZSBPKDEpIHRvby5cbiAqXG4gKiBUaGUgaW5kZXggaXMgZXhwbGljaXRseSBvcHQtaW46IGEgY29uc3VtZXIgaW5zdGFsbHMgaXQgYnkgbG9hZGluZyBhXG4gKiB7QGxpbmsgaHR0cHM6Ly9kb2NzLm9ic2lkaWFuLm1kL1JlZmVyZW5jZS9UeXBlU2NyaXB0K0FQSS9Db21wb25lbnQgfCBDb21wb25lbnR9IHRoYXQga2VlcHMgaXQgaW5cbiAqIHN5bmMgd2l0aCBgY3JlYXRlYC9gZGVsZXRlYC9gcmVuYW1lYCBldmVudHMgKHNlZSBgQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4Q29tcG9uZW50YCkuIFVudGlsIHRoZW4sXG4gKiB0aGUgcmVzb2x1dGlvbiBsYXllciBmYWxscyBiYWNrIHRvIHRoZSBuYXRpdmUgKE8odmF1bHQpLW9uLW1pc3MpIGxvb2t1cCwgc28gYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBUQWJzdHJhY3RGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgc25hcHNob3QgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXJyYXknO1xuXG5pbXBvcnQgeyBnZXRPYnNpZGlhbkxpYlN0YXRlIH0gZnJvbSAnLi9vYnNpZGlhbi1saWItc3RhdGUudHMnO1xuXG5jb25zdCBTVEFURV9LRVkgPSAnY2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4JztcblxuLyoqXG4gKiBBbiBPKDEpIGNhc2UtaW5zZW5zaXRpdmUgaW5kZXggb2YgdGhlIGxvYWRlZCBmaWxlcyBhbmQgZm9sZGVycyBvZiBhIHNpbmdsZSB2YXVsdC5cbiAqXG4gKiBUaGUgaW5kZXggbWFwcyB0aGUgbG93ZXJjYXNlZCBwYXRoIG9mIGVhY2ggYWJzdHJhY3QgZmlsZSB0byB0aGUgYWJzdHJhY3QgZmlsZSBpdHNlbGYuIEl0IGlzIGtlcHRcbiAqIGluIHN5bmMgYnkgYW4gb3duaW5nIGNvbXBvbmVudCB0aGF0IGZvcndhcmRzIGBjcmVhdGVgL2BkZWxldGVgL2ByZW5hbWVgIHZhdWx0IGV2ZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWFwID0gbmV3IE1hcDxzdHJpbmcsIFRBYnN0cmFjdEZpbGU+KCk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIGluZGV4LlxuICAgKlxuICAgKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlIHdob3NlIHZhdWx0IHRoaXMgaW5kZXggbWlycm9ycy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwOiBBcHApIHt9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gYWJzdHJhY3QgZmlsZSB0byB0aGUgaW5kZXguXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkKGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZSk6IHZvaWQge1xuICAgIHRoaXMubWFwLnNldChhYnN0cmFjdEZpbGUucGF0aC50b0xvd2VyQ2FzZSgpLCBhYnN0cmFjdEZpbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGFic3RyYWN0IGZpbGUgYXQgdGhlIGdpdmVuIHBhdGggZnJvbSB0aGUgaW5kZXgsIGFsb25nIHdpdGggYWxsIG9mIGl0cyBkZXNjZW5kYW50c1xuICAgKiAoZm9yIGZvbGRlciBkZWxldGlvbnMsIHdoZXJlIE9ic2lkaWFuIHJlbW92ZXMgdGhlIHdob2xlIHN1YnRyZWUpLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBhYnN0cmFjdCBmaWxlIHRvIHJlbW92ZS5cbiAgICovXG4gIHB1YmxpYyBkZWxldGUocGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gcGF0aC50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMubWFwLmRlbGV0ZShrZXkpO1xuICAgIGNvbnN0IGRlc2NlbmRhbnRQcmVmaXggPSBgJHtrZXl9L2A7XG4gICAgZm9yIChjb25zdCBleGlzdGluZ0tleSBvZiBzbmFwc2hvdCh0aGlzLm1hcC5rZXlzKCkpKSB7XG4gICAgICBpZiAoZXhpc3RpbmdLZXkuc3RhcnRzV2l0aChkZXNjZW5kYW50UHJlZml4KSkge1xuICAgICAgICB0aGlzLm1hcC5kZWxldGUoZXhpc3RpbmdLZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbiBhYnN0cmFjdCBmaWxlIGJ5IGl0cyBwYXRoLCBjYXNlLWluc2Vuc2l0aXZlbHksIGluIE8oMSkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gcmVzb2x2ZS5cbiAgICogQHJldHVybnMgVGhlIGFic3RyYWN0IGZpbGUgaWYgZm91bmQsIG90aGVyd2lzZSBgbnVsbGAuXG4gICAqL1xuICBwdWJsaWMgZ2V0KHBhdGg6IHN0cmluZyk6IG51bGwgfCBUQWJzdHJhY3RGaWxlIHtcbiAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KHBhdGgudG9Mb3dlckNhc2UoKSkgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGlzIGluZGV4IG1pcnJvcnMgdGhlIGdpdmVuIGFwcGxpY2F0aW9uJ3MgdmF1bHQuXG4gICAqXG4gICAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UgdG8gY2hlY2sgYWdhaW5zdC5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoaXMgaW5kZXggYmVsb25ncyB0byB0aGUgZ2l2ZW4gYXBwbGljYXRpb24sIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIG93bnNBcHAoYXBwOiBBcHApOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hcHAgPT09IGFwcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZS1rZXlzIGFuIGFic3RyYWN0IGZpbGUgKGFuZCwgZm9yIGZvbGRlcnMsIGFsbCBvZiBpdHMgZGVzY2VuZGFudHMpIGFmdGVyIGEgcmVuYW1lLlxuICAgKlxuICAgKiBPYnNpZGlhbiBmaXJlcyBhIHNpbmdsZSBgcmVuYW1lYCBldmVudCBmb3IgdGhlIHJlbmFtZWQgYWJzdHJhY3QgZmlsZSBhbmQgdXBkYXRlcyBpdHNcbiAgICogZGVzY2VuZGFudHMnIHBhdGhzIGluIHBsYWNlIHdpdGhvdXQgZmlyaW5nIHBlci1kZXNjZW5kYW50IGV2ZW50cywgc28gZGVzY2VuZGFudCBrZXlzIGFyZVxuICAgKiByZWNvbXB1dGVkIGhlcmUgYnkgc3dhcHBpbmcgdGhlIG9sZCBwYXRoIHByZWZpeCBmb3IgdGhlIG5ldyBvbmUuIEhhbmRsZXMgY2FzZS1vbmx5IHJlbmFtZXMgKHRoZVxuICAgKiBvbGQgYW5kIG5ldyBrZXlzIGNvaW5jaWRlKS5cbiAgICpcbiAgICogQHBhcmFtIG9sZFBhdGggLSBUaGUgcGF0aCB0aGUgYWJzdHJhY3QgZmlsZSBoYWQgYmVmb3JlIHRoZSByZW5hbWUuXG4gICAqIEBwYXJhbSBuZXdBYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB3aXRoIGl0cyB1cGRhdGVkIChwb3N0LXJlbmFtZSkgcGF0aC5cbiAgICovXG4gIHB1YmxpYyByZW5hbWUob2xkUGF0aDogc3RyaW5nLCBuZXdBYnN0cmFjdEZpbGU6IFRBYnN0cmFjdEZpbGUpOiB2b2lkIHtcbiAgICBjb25zdCBvbGRLZXkgPSBvbGRQYXRoLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgbmV3S2V5ID0gbmV3QWJzdHJhY3RGaWxlLnBhdGgudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLm1hcC5kZWxldGUob2xkS2V5KTtcbiAgICB0aGlzLm1hcC5zZXQobmV3S2V5LCBuZXdBYnN0cmFjdEZpbGUpO1xuXG4gICAgY29uc3Qgb2xkRGVzY2VuZGFudFByZWZpeCA9IGAke29sZEtleX0vYDtcbiAgICBjb25zdCBuZXdEZXNjZW5kYW50UHJlZml4ID0gYCR7bmV3S2V5fS9gO1xuICAgIGZvciAoY29uc3QgW2V4aXN0aW5nS2V5LCBleGlzdGluZ1ZhbHVlXSBvZiBzbmFwc2hvdCh0aGlzLm1hcCkpIHtcbiAgICAgIGlmICghZXhpc3RpbmdLZXkuc3RhcnRzV2l0aChvbGREZXNjZW5kYW50UHJlZml4KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5tYXAuZGVsZXRlKGV4aXN0aW5nS2V5KTtcbiAgICAgIHRoaXMubWFwLnNldChuZXdEZXNjZW5kYW50UHJlZml4ICsgZXhpc3RpbmdLZXkuc2xpY2Uob2xkRGVzY2VuZGFudFByZWZpeC5sZW5ndGgpLCBleGlzdGluZ1ZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGluc3RhbGxlZCBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgaW5kZXggZm9yIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiwgaWYgYW55LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2Ugd2hvc2UgaW5kZXggdG8gcmV0cmlldmUuXG4gKiBAcmV0dXJucyBUaGUgaW5kZXggaWYgb25lIGlzIGluc3RhbGxlZCBmb3IgdGhpcyBhcHBsaWNhdGlvbiwgb3RoZXJ3aXNlIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleChhcHA6IEFwcCk6IENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCB8IG51bGwge1xuICBjb25zdCBpbmRleCA9IGdldE9ic2lkaWFuTGliU3RhdGU8Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4IHwgbnVsbD4oU1RBVEVfS0VZLCBudWxsKS52YWx1ZTtcbiAgcmV0dXJuIGluZGV4Py5vd25zQXBwKGFwcCkgPyBpbmRleCA6IG51bGw7XG59XG5cbi8qKlxuICogSW5zdGFsbHMgYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgaW5kZXggYXMgdGhlIGFjdGl2ZSByZXNvbHZlci5cbiAqXG4gKiBAcGFyYW0gaW5kZXggLSBUaGUgaW5kZXggdG8gaW5zdGFsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleChpbmRleDogQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4KTogdm9pZCB7XG4gIGdldE9ic2lkaWFuTGliU3RhdGU8Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4IHwgbnVsbD4oU1RBVEVfS0VZLCBudWxsKS52YWx1ZSA9IGluZGV4O1xufVxuXG4vKipcbiAqIFVuaW5zdGFsbHMgYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgaW5kZXgsIGJ1dCBvbmx5IGlmIGl0IGlzIHRoZSBjdXJyZW50bHktaW5zdGFsbGVkIG9uZS5cbiAqXG4gKiBAcGFyYW0gaW5kZXggLSBUaGUgaW5kZXggdG8gdW5pbnN0YWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5zZXRDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgoaW5kZXg6IENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCk6IHZvaWQge1xuICBjb25zdCB3cmFwcGVyID0gZ2V0T2JzaWRpYW5MaWJTdGF0ZTxDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXggfCBudWxsPihTVEFURV9LRVksIG51bGwpO1xuICBpZiAod3JhcHBlci52YWx1ZSA9PT0gaW5kZXgpIHtcbiAgICB3cmFwcGVyLnZhbHVlID0gbnVsbDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQSxTQUFTLGdCQUFnQjtBQUV6QixTQUFTLDJCQUEyQjtBQUVwQyxNQUFNLFlBQVk7QUFRWCxNQUFNLHlCQUF5QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVE3QixZQUErQixLQUFVO0FBQVY7QUFBQSxFQUFXO0FBQUEsRUFBWDtBQUFBLEVBUHJCLE1BQU0sb0JBQUksSUFBMkI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFjL0MsSUFBSSxjQUFtQztBQUM1QyxTQUFLLElBQUksSUFBSSxhQUFhLEtBQUssWUFBWSxHQUFHLFlBQVk7QUFBQSxFQUM1RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sT0FBTyxNQUFvQjtBQUNoQyxVQUFNLE1BQU0sS0FBSyxZQUFZO0FBQzdCLFNBQUssSUFBSSxPQUFPLEdBQUc7QUFDbkIsVUFBTSxtQkFBbUIsR0FBRyxHQUFHO0FBQy9CLGVBQVcsZUFBZSxTQUFTLEtBQUssSUFBSSxLQUFLLENBQUMsR0FBRztBQUNuRCxVQUFJLFlBQVksV0FBVyxnQkFBZ0IsR0FBRztBQUM1QyxhQUFLLElBQUksT0FBTyxXQUFXO0FBQUEsTUFDN0I7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sSUFBSSxNQUFvQztBQUM3QyxXQUFPLEtBQUssSUFBSSxJQUFJLEtBQUssWUFBWSxDQUFDLEtBQUs7QUFBQSxFQUM3QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sUUFBUSxLQUFtQjtBQUNoQyxXQUFPLEtBQUssUUFBUTtBQUFBLEVBQ3RCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBYU8sT0FBTyxTQUFpQixpQkFBc0M7QUFDbkUsVUFBTSxTQUFTLFFBQVEsWUFBWTtBQUNuQyxVQUFNLFNBQVMsZ0JBQWdCLEtBQUssWUFBWTtBQUNoRCxTQUFLLElBQUksT0FBTyxNQUFNO0FBQ3RCLFNBQUssSUFBSSxJQUFJLFFBQVEsZUFBZTtBQUVwQyxVQUFNLHNCQUFzQixHQUFHLE1BQU07QUFDckMsVUFBTSxzQkFBc0IsR0FBRyxNQUFNO0FBQ3JDLGVBQVcsQ0FBQyxhQUFhLGFBQWEsS0FBSyxTQUFTLEtBQUssR0FBRyxHQUFHO0FBQzdELFVBQUksQ0FBQyxZQUFZLFdBQVcsbUJBQW1CLEdBQUc7QUFDaEQ7QUFBQSxNQUNGO0FBRUEsV0FBSyxJQUFJLE9BQU8sV0FBVztBQUMzQixXQUFLLElBQUksSUFBSSxzQkFBc0IsWUFBWSxNQUFNLG9CQUFvQixNQUFNLEdBQUcsYUFBYTtBQUFBLElBQ2pHO0FBQUEsRUFDRjtBQUNGO0FBUU8sU0FBUyw0QkFBNEIsS0FBMkM7QUFDckYsUUFBTSxRQUFRLG9CQUFxRCxXQUFXLElBQUksRUFBRTtBQUNwRixTQUFPLE9BQU8sUUFBUSxHQUFHLElBQUksUUFBUTtBQUN2QztBQU9PLFNBQVMsNEJBQTRCLE9BQXVDO0FBQ2pGLHNCQUFxRCxXQUFXLElBQUksRUFBRSxRQUFRO0FBQ2hGO0FBT08sU0FBUyw4QkFBOEIsT0FBdUM7QUFDbkYsUUFBTSxVQUFVLG9CQUFxRCxXQUFXLElBQUk7QUFDcEYsTUFBSSxRQUFRLFVBQVUsT0FBTztBQUMzQixZQUFRLFFBQVE7QUFBQSxFQUNsQjtBQUNGOyIsIm5hbWVzIjpbXX0=
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIGFuIG9wdC1pbiBPKDEpIGNhc2UtaW5zZW5zaXRpdmUgcmVzb2x2ZXIgZm9yIE9ic2lkaWFuIHZhdWx0cy5cbiAqXG4gKiBPYnNpZGlhbidzIG5hdGl2ZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLm9ic2lkaWFuLm1kL1JlZmVyZW5jZS9UeXBlU2NyaXB0K0FQSS9WYXVsdCB8IFZhdWx0fSByZXNvbHZlc1xuICogYSBzdHJpbmcgcGF0aCBjYXNlLWluc2Vuc2l0aXZlbHkgKHRoZSBXaW5kb3dzL21hY09TIGRlZmF1bHQpIGluIE8oMSkgb24gYSBoaXQgYnV0IHdpdGggYW5cbiAqIE8odmF1bHQpIHNjYW4gb24gYSBtaXNzLiBUaGUgbWlzcyBjYXNlIGlzIHRoZSBob3Qgb25lIGR1cmluZyBkZWxldGlvbiBjYXNjYWRlcywgd2hlcmUgZXh0ZW5zaW9uXG4gKiBjaGVja3MgYW5kIGNhY2hlIGxvb2t1cHMgYXJlIHBlcmZvcm1lZCBvbiBhbHJlYWR5LXJlbW92ZWQgcGF0aHMuIFRoaXMgbW9kdWxlIGJhY2tzIHRoZVxuICogY2FzZS1pbnNlbnNpdGl2ZSBsb29rdXAgd2l0aCBhIGBsb3dlcmNhc2UtcGF0aCDihpIgVEFic3RyYWN0RmlsZWAgaW5kZXggc28gbWlzc2VzIGFyZSBPKDEpIHRvby5cbiAqXG4gKiBUaGUgaW5kZXggaXMgZXhwbGljaXRseSBvcHQtaW46IGEgY29uc3VtZXIgaW5zdGFsbHMgaXQgYnkgbG9hZGluZyBhXG4gKiB7QGxpbmsgaHR0cHM6Ly9kb2NzLm9ic2lkaWFuLm1kL1JlZmVyZW5jZS9UeXBlU2NyaXB0K0FQSS9Db21wb25lbnQgfCBDb21wb25lbnR9IHRoYXQga2VlcHMgaXQgaW5cbiAqIHN5bmMgd2l0aCBgY3JlYXRlYC9gZGVsZXRlYC9gcmVuYW1lYCBldmVudHMgKHNlZSBgQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4Q29tcG9uZW50YCkuIFVudGlsIHRoZW4sXG4gKiB0aGUgcmVzb2x1dGlvbiBsYXllciBmYWxscyBiYWNrIHRvIHRoZSBuYXRpdmUgKE8odmF1bHQpLW9uLW1pc3MpIGxvb2t1cCwgc28gYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBUQWJzdHJhY3RGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgc25hcHNob3QgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXJyYXknO1xuaW1wb3J0IHsgVEZvbGRlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJTdGF0ZSB9IGZyb20gJy4vb2JzaWRpYW4tbGliLXN0YXRlLnRzJztcblxuY29uc3QgU1RBVEVfS0VZID0gJ2Nhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCc7XG5cbi8qKlxuICogQW4gTygxKSBjYXNlLWluc2Vuc2l0aXZlIGluZGV4IG9mIHRoZSBsb2FkZWQgZmlsZXMgYW5kIGZvbGRlcnMgb2YgYSBzaW5nbGUgdmF1bHQuXG4gKlxuICogVGhlIGluZGV4IG1hcHMgdGhlIGxvd2VyY2FzZWQgcGF0aCBvZiBlYWNoIGFic3RyYWN0IGZpbGUgdG8gdGhlIGFic3RyYWN0IGZpbGUgaXRzZWxmLiBJdCBpcyBrZXB0XG4gKiBpbiBzeW5jIGJ5IGFuIG93bmluZyBjb21wb25lbnQgdGhhdCBmb3J3YXJkcyBgY3JlYXRlYC9gZGVsZXRlYC9gcmVuYW1lYCB2YXVsdCBldmVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgge1xuICBwcml2YXRlIHJlYWRvbmx5IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBUQWJzdHJhY3RGaWxlPigpO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBpbmRleC5cbiAgICpcbiAgICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZSB3aG9zZSB2YXVsdCB0aGlzIGluZGV4IG1pcnJvcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IGFwcDogQXBwKSB7fVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGFic3RyYWN0IGZpbGUgdG8gdGhlIGluZGV4LlxuICAgKlxuICAgKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFkZChhYnN0cmFjdEZpbGU6IFRBYnN0cmFjdEZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLm1hcC5zZXQoYWJzdHJhY3RGaWxlLnBhdGgudG9Mb3dlckNhc2UoKSwgYWJzdHJhY3RGaWxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBhYnN0cmFjdCBmaWxlIGF0IHRoZSBnaXZlbiBwYXRoIGZyb20gdGhlIGluZGV4LCBhbG9uZyB3aXRoIGFsbCBvZiBpdHMgZGVzY2VuZGFudHNcbiAgICogKGZvciBmb2xkZXIgZGVsZXRpb25zLCB3aGVyZSBPYnNpZGlhbiByZW1vdmVzIHRoZSB3aG9sZSBzdWJ0cmVlKS5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgYWJzdHJhY3QgZmlsZSB0byByZW1vdmUuXG4gICAqL1xuICBwdWJsaWMgZGVsZXRlKHBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGtleSA9IHBhdGgudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBhYnN0cmFjdEZpbGUgPSB0aGlzLm1hcC5nZXQoa2V5KTtcbiAgICB0aGlzLm1hcC5kZWxldGUoa2V5KTtcbiAgICAvLyBPbmx5IGEgZm9sZGVyIGhhcyBkZXNjZW5kYW50czsgc2Nhbm5pbmcgdGhlIHdob2xlIGluZGV4IGZvciBhIGZpbGUncyBtYWRlIGV2ZXJ5IGRlbGV0ZSBPKHZhdWx0KS5cbiAgICBpZiAoYWJzdHJhY3RGaWxlICYmICEoYWJzdHJhY3RGaWxlIGluc3RhbmNlb2YgVEZvbGRlcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGVzY2VuZGFudFByZWZpeCA9IGAke2tleX0vYDtcbiAgICBmb3IgKGNvbnN0IGV4aXN0aW5nS2V5IG9mIHNuYXBzaG90KHRoaXMubWFwLmtleXMoKSkpIHtcbiAgICAgIGlmIChleGlzdGluZ0tleS5zdGFydHNXaXRoKGRlc2NlbmRhbnRQcmVmaXgpKSB7XG4gICAgICAgIHRoaXMubWFwLmRlbGV0ZShleGlzdGluZ0tleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGFuIGFic3RyYWN0IGZpbGUgYnkgaXRzIHBhdGgsIGNhc2UtaW5zZW5zaXRpdmVseSwgaW4gTygxKS5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byByZXNvbHZlLlxuICAgKiBAcmV0dXJucyBUaGUgYWJzdHJhY3QgZmlsZSBpZiBmb3VuZCwgb3RoZXJ3aXNlIGBudWxsYC5cbiAgICovXG4gIHB1YmxpYyBnZXQocGF0aDogc3RyaW5nKTogbnVsbCB8IFRBYnN0cmFjdEZpbGUge1xuICAgIHJldHVybiB0aGlzLm1hcC5nZXQocGF0aC50b0xvd2VyQ2FzZSgpKSA/PyBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoaXMgaW5kZXggbWlycm9ycyB0aGUgZ2l2ZW4gYXBwbGljYXRpb24ncyB2YXVsdC5cbiAgICpcbiAgICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZSB0byBjaGVjayBhZ2FpbnN0LlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhpcyBpbmRleCBiZWxvbmdzIHRvIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgb3duc0FwcChhcHA6IEFwcCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwcCA9PT0gYXBwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlLWtleXMgYW4gYWJzdHJhY3QgZmlsZSAoYW5kLCBmb3IgZm9sZGVycywgYWxsIG9mIGl0cyBkZXNjZW5kYW50cykgYWZ0ZXIgYSByZW5hbWUuXG4gICAqXG4gICAqIE9ic2lkaWFuIGZpcmVzIGEgc2luZ2xlIGByZW5hbWVgIGV2ZW50IGZvciB0aGUgcmVuYW1lZCBhYnN0cmFjdCBmaWxlIGFuZCB1cGRhdGVzIGl0c1xuICAgKiBkZXNjZW5kYW50cycgcGF0aHMgaW4gcGxhY2Ugd2l0aG91dCBmaXJpbmcgcGVyLWRlc2NlbmRhbnQgZXZlbnRzLCBzbyBkZXNjZW5kYW50IGtleXMgYXJlXG4gICAqIHJlY29tcHV0ZWQgaGVyZSBieSBzd2FwcGluZyB0aGUgb2xkIHBhdGggcHJlZml4IGZvciB0aGUgbmV3IG9uZS4gSGFuZGxlcyBjYXNlLW9ubHkgcmVuYW1lcyAodGhlXG4gICAqIG9sZCBhbmQgbmV3IGtleXMgY29pbmNpZGUpLlxuICAgKlxuICAgKiBAcGFyYW0gb2xkUGF0aCAtIFRoZSBwYXRoIHRoZSBhYnN0cmFjdCBmaWxlIGhhZCBiZWZvcmUgdGhlIHJlbmFtZS5cbiAgICogQHBhcmFtIG5ld0Fic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHdpdGggaXRzIHVwZGF0ZWQgKHBvc3QtcmVuYW1lKSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHJlbmFtZShvbGRQYXRoOiBzdHJpbmcsIG5ld0Fic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZSk6IHZvaWQge1xuICAgIGNvbnN0IG9sZEtleSA9IG9sZFBhdGgudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBuZXdLZXkgPSBuZXdBYnN0cmFjdEZpbGUucGF0aC50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMubWFwLmRlbGV0ZShvbGRLZXkpO1xuICAgIHRoaXMubWFwLnNldChuZXdLZXksIG5ld0Fic3RyYWN0RmlsZSk7XG4gICAgLy8gT25seSBhIGZvbGRlciBoYXMgZGVzY2VuZGFudHM7IHNjYW5uaW5nIHRoZSB3aG9sZSBpbmRleCBmb3IgYSBmaWxlJ3MgbWFkZSBldmVyeSByZW5hbWUgTyh2YXVsdCkuXG4gICAgaWYgKCEobmV3QWJzdHJhY3RGaWxlIGluc3RhbmNlb2YgVEZvbGRlcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvbGREZXNjZW5kYW50UHJlZml4ID0gYCR7b2xkS2V5fS9gO1xuICAgIGNvbnN0IG5ld0Rlc2NlbmRhbnRQcmVmaXggPSBgJHtuZXdLZXl9L2A7XG4gICAgZm9yIChjb25zdCBbZXhpc3RpbmdLZXksIGV4aXN0aW5nVmFsdWVdIG9mIHNuYXBzaG90KHRoaXMubWFwKSkge1xuICAgICAgaWYgKCFleGlzdGluZ0tleS5zdGFydHNXaXRoKG9sZERlc2NlbmRhbnRQcmVmaXgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm1hcC5kZWxldGUoZXhpc3RpbmdLZXkpO1xuICAgICAgdGhpcy5tYXAuc2V0KG5ld0Rlc2NlbmRhbnRQcmVmaXggKyBleGlzdGluZ0tleS5zbGljZShvbGREZXNjZW5kYW50UHJlZml4Lmxlbmd0aCksIGV4aXN0aW5nVmFsdWUpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgaW5zdGFsbGVkIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBpbmRleCBmb3IgdGhlIGdpdmVuIGFwcGxpY2F0aW9uLCBpZiBhbnkuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZSB3aG9zZSBpbmRleCB0byByZXRyaWV2ZS5cbiAqIEByZXR1cm5zIFRoZSBpbmRleCBpZiBvbmUgaXMgaW5zdGFsbGVkIGZvciB0aGlzIGFwcGxpY2F0aW9uLCBvdGhlcndpc2UgYG51bGxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4KGFwcDogQXBwKTogQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4IHwgbnVsbCB7XG4gIGNvbnN0IGluZGV4ID0gZ2V0T2JzaWRpYW5MaWJTdGF0ZTxDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXggfCBudWxsPihTVEFURV9LRVksIG51bGwpLnZhbHVlO1xuICByZXR1cm4gaW5kZXg/Lm93bnNBcHAoYXBwKSA/IGluZGV4IDogbnVsbDtcbn1cblxuLyoqXG4gKiBJbnN0YWxscyBhIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBpbmRleCBhcyB0aGUgYWN0aXZlIHJlc29sdmVyLlxuICpcbiAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCB0byBpbnN0YWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4KGluZGV4OiBDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgpOiB2b2lkIHtcbiAgZ2V0T2JzaWRpYW5MaWJTdGF0ZTxDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXggfCBudWxsPihTVEFURV9LRVksIG51bGwpLnZhbHVlID0gaW5kZXg7XG59XG5cbi8qKlxuICogVW5pbnN0YWxscyBhIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBpbmRleCwgYnV0IG9ubHkgaWYgaXQgaXMgdGhlIGN1cnJlbnRseS1pbnN0YWxsZWQgb25lLlxuICpcbiAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCB0byB1bmluc3RhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnNldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleChpbmRleDogQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4KTogdm9pZCB7XG4gIGNvbnN0IHdyYXBwZXIgPSBnZXRPYnNpZGlhbkxpYlN0YXRlPENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCB8IG51bGw+KFNUQVRFX0tFWSwgbnVsbCk7XG4gIGlmICh3cmFwcGVyLnZhbHVlID09PSBpbmRleCkge1xuICAgIHdyYXBwZXIudmFsdWUgPSBudWxsO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JBLFNBQVMsZ0JBQWdCO0FBQ3pCLFNBQVMsZUFBZTtBQUV4QixTQUFTLDJCQUEyQjtBQUVwQyxNQUFNLFlBQVk7QUFRWCxNQUFNLHlCQUF5QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVE3QixZQUErQixLQUFVO0FBQVY7QUFBQSxFQUFXO0FBQUEsRUFBWDtBQUFBLEVBUHJCLE1BQU0sb0JBQUksSUFBMkI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFjL0MsSUFBSSxjQUFtQztBQUM1QyxTQUFLLElBQUksSUFBSSxhQUFhLEtBQUssWUFBWSxHQUFHLFlBQVk7QUFBQSxFQUM1RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sT0FBTyxNQUFvQjtBQUNoQyxVQUFNLE1BQU0sS0FBSyxZQUFZO0FBQzdCLFVBQU0sZUFBZSxLQUFLLElBQUksSUFBSSxHQUFHO0FBQ3JDLFNBQUssSUFBSSxPQUFPLEdBQUc7QUFFbkIsUUFBSSxnQkFBZ0IsRUFBRSx3QkFBd0IsVUFBVTtBQUN0RDtBQUFBLElBQ0Y7QUFDQSxVQUFNLG1CQUFtQixHQUFHLEdBQUc7QUFDL0IsZUFBVyxlQUFlLFNBQVMsS0FBSyxJQUFJLEtBQUssQ0FBQyxHQUFHO0FBQ25ELFVBQUksWUFBWSxXQUFXLGdCQUFnQixHQUFHO0FBQzVDLGFBQUssSUFBSSxPQUFPLFdBQVc7QUFBQSxNQUM3QjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxJQUFJLE1BQW9DO0FBQzdDLFdBQU8sS0FBSyxJQUFJLElBQUksS0FBSyxZQUFZLENBQUMsS0FBSztBQUFBLEVBQzdDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxRQUFRLEtBQW1CO0FBQ2hDLFdBQU8sS0FBSyxRQUFRO0FBQUEsRUFDdEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFhTyxPQUFPLFNBQWlCLGlCQUFzQztBQUNuRSxVQUFNLFNBQVMsUUFBUSxZQUFZO0FBQ25DLFVBQU0sU0FBUyxnQkFBZ0IsS0FBSyxZQUFZO0FBQ2hELFNBQUssSUFBSSxPQUFPLE1BQU07QUFDdEIsU0FBSyxJQUFJLElBQUksUUFBUSxlQUFlO0FBRXBDLFFBQUksRUFBRSwyQkFBMkIsVUFBVTtBQUN6QztBQUFBLElBQ0Y7QUFFQSxVQUFNLHNCQUFzQixHQUFHLE1BQU07QUFDckMsVUFBTSxzQkFBc0IsR0FBRyxNQUFNO0FBQ3JDLGVBQVcsQ0FBQyxhQUFhLGFBQWEsS0FBSyxTQUFTLEtBQUssR0FBRyxHQUFHO0FBQzdELFVBQUksQ0FBQyxZQUFZLFdBQVcsbUJBQW1CLEdBQUc7QUFDaEQ7QUFBQSxNQUNGO0FBRUEsV0FBSyxJQUFJLE9BQU8sV0FBVztBQUMzQixXQUFLLElBQUksSUFBSSxzQkFBc0IsWUFBWSxNQUFNLG9CQUFvQixNQUFNLEdBQUcsYUFBYTtBQUFBLElBQ2pHO0FBQUEsRUFDRjtBQUNGO0FBUU8sU0FBUyw0QkFBNEIsS0FBMkM7QUFDckYsUUFBTSxRQUFRLG9CQUFxRCxXQUFXLElBQUksRUFBRTtBQUNwRixTQUFPLE9BQU8sUUFBUSxHQUFHLElBQUksUUFBUTtBQUN2QztBQU9PLFNBQVMsNEJBQTRCLE9BQXVDO0FBQ2pGLHNCQUFxRCxXQUFXLElBQUksRUFBRSxRQUFRO0FBQ2hGO0FBT08sU0FBUyw4QkFBOEIsT0FBdUM7QUFDbkYsUUFBTSxVQUFVLG9CQUFxRCxXQUFXLElBQUk7QUFDcEYsTUFBSSxRQUFRLFVBQVUsT0FBTztBQUMzQixZQUFRLFFBQVE7QUFBQSxFQUNsQjtBQUNGOyIsIm5hbWVzIjpbXX0=
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* A {@link StateField} holding a Lezer syntax tree of the whole document, parsed again incrementally on every change.
|
|
6
|
+
*
|
|
7
|
+
* Each change maps the previous parse's {@link TreeFragment}s through the changed ranges and hands them to the
|
|
8
|
+
* parser, which reuses every fragment the change did not touch. The parse is synchronous and runs to the end of
|
|
9
|
+
* the document, so it suits a grammar a plugin owns (a markup extension, a small DSL) rather than a full language
|
|
10
|
+
* on a large document, where `@codemirror/language`'s time-sliced parser is the better tool.
|
|
11
|
+
*
|
|
12
|
+
* `@lezer/common` is in the module map Obsidian hands to plugins, so this costs a consuming plugin no bundle.
|
|
13
|
+
*/
|
|
14
|
+
import type { Parser, Tree } from '@lezer/common';
|
|
15
|
+
import { StateField } from '@codemirror/state';
|
|
16
|
+
import { TreeFragment } from '@lezer/common';
|
|
17
|
+
/**
|
|
18
|
+
* The value of an incremental parse state field.
|
|
19
|
+
*/
|
|
20
|
+
export interface IncrementalParse {
|
|
21
|
+
/**
|
|
22
|
+
* The fragments of {@link IncrementalParse.tree} that the next parse may reuse.
|
|
23
|
+
*/
|
|
24
|
+
readonly fragments: readonly TreeFragment[];
|
|
25
|
+
/**
|
|
26
|
+
* The syntax tree of the whole document.
|
|
27
|
+
*/
|
|
28
|
+
readonly tree: Tree;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates a state field that parses the document with the given parser when the state is created, and parses it again
|
|
32
|
+
* incrementally on every document change, reusing the fragments the change left intact.
|
|
33
|
+
*
|
|
34
|
+
* @param parser - The Lezer parser to parse the document with.
|
|
35
|
+
* @returns The state field. Add it to the editor's extensions and read it with `state.field(field).tree`.
|
|
36
|
+
*/
|
|
37
|
+
export declare function createIncrementalParseStateField(parser: Parser): StateField<IncrementalParse>;
|
|
@@ -0,0 +1,74 @@
|
|
|
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 { StateField } from "@codemirror/state";
|
|
34
|
+
import { TreeFragment } from "@lezer/common";
|
|
35
|
+
function createIncrementalParseStateField(parser) {
|
|
36
|
+
return StateField.define({
|
|
37
|
+
create(state) {
|
|
38
|
+
const tree = parser.parse(createTextInput(state.doc));
|
|
39
|
+
return { fragments: TreeFragment.addTree(tree), tree };
|
|
40
|
+
},
|
|
41
|
+
update(value, transaction) {
|
|
42
|
+
if (!transaction.docChanged) {
|
|
43
|
+
return value;
|
|
44
|
+
}
|
|
45
|
+
const changedRanges = [];
|
|
46
|
+
transaction.changes.iterChangedRanges((fromA, toA, fromB, toB) => {
|
|
47
|
+
changedRanges.push({ fromA, fromB, toA, toB });
|
|
48
|
+
});
|
|
49
|
+
const reusableFragments = TreeFragment.applyChanges(value.fragments, changedRanges);
|
|
50
|
+
const tree = parser.parse(createTextInput(transaction.newDoc), reusableFragments);
|
|
51
|
+
return { fragments: TreeFragment.addTree(tree, reusableFragments), tree };
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function createTextInput(text) {
|
|
56
|
+
return {
|
|
57
|
+
chunk(from) {
|
|
58
|
+
const line = text.lineAt(from);
|
|
59
|
+
if (from < line.to) {
|
|
60
|
+
return text.sliceString(from, line.to);
|
|
61
|
+
}
|
|
62
|
+
return line.number < text.lines ? "\n" : "";
|
|
63
|
+
},
|
|
64
|
+
length: text.length,
|
|
65
|
+
lineChunks: true,
|
|
66
|
+
read(from, to) {
|
|
67
|
+
return text.sliceString(from, to);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export {
|
|
72
|
+
createIncrementalParseStateField
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2RlbWlycm9yL2luY3JlbWVudGFsLXBhcnNlLXN0YXRlLWZpZWxkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBBIHtAbGluayBTdGF0ZUZpZWxkfSBob2xkaW5nIGEgTGV6ZXIgc3ludGF4IHRyZWUgb2YgdGhlIHdob2xlIGRvY3VtZW50LCBwYXJzZWQgYWdhaW4gaW5jcmVtZW50YWxseSBvbiBldmVyeSBjaGFuZ2UuXG4gKlxuICogRWFjaCBjaGFuZ2UgbWFwcyB0aGUgcHJldmlvdXMgcGFyc2UncyB7QGxpbmsgVHJlZUZyYWdtZW50fXMgdGhyb3VnaCB0aGUgY2hhbmdlZCByYW5nZXMgYW5kIGhhbmRzIHRoZW0gdG8gdGhlXG4gKiBwYXJzZXIsIHdoaWNoIHJldXNlcyBldmVyeSBmcmFnbWVudCB0aGUgY2hhbmdlIGRpZCBub3QgdG91Y2guIFRoZSBwYXJzZSBpcyBzeW5jaHJvbm91cyBhbmQgcnVucyB0byB0aGUgZW5kIG9mXG4gKiB0aGUgZG9jdW1lbnQsIHNvIGl0IHN1aXRzIGEgZ3JhbW1hciBhIHBsdWdpbiBvd25zIChhIG1hcmt1cCBleHRlbnNpb24sIGEgc21hbGwgRFNMKSByYXRoZXIgdGhhbiBhIGZ1bGwgbGFuZ3VhZ2VcbiAqIG9uIGEgbGFyZ2UgZG9jdW1lbnQsIHdoZXJlIGBAY29kZW1pcnJvci9sYW5ndWFnZWAncyB0aW1lLXNsaWNlZCBwYXJzZXIgaXMgdGhlIGJldHRlciB0b29sLlxuICpcbiAqIGBAbGV6ZXIvY29tbW9uYCBpcyBpbiB0aGUgbW9kdWxlIG1hcCBPYnNpZGlhbiBoYW5kcyB0byBwbHVnaW5zLCBzbyB0aGlzIGNvc3RzIGEgY29uc3VtaW5nIHBsdWdpbiBubyBidW5kbGUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBUZXh0IH0gZnJvbSAnQGNvZGVtaXJyb3Ivc3RhdGUnO1xuaW1wb3J0IHR5cGUge1xuICBDaGFuZ2VkUmFuZ2UsXG4gIElucHV0LFxuICBQYXJzZXIsXG4gIFRyZWVcbn0gZnJvbSAnQGxlemVyL2NvbW1vbic7XG5cbmltcG9ydCB7IFN0YXRlRmllbGQgfSBmcm9tICdAY29kZW1pcnJvci9zdGF0ZSc7XG5pbXBvcnQgeyBUcmVlRnJhZ21lbnQgfSBmcm9tICdAbGV6ZXIvY29tbW9uJztcblxuLyoqXG4gKiBUaGUgdmFsdWUgb2YgYW4gaW5jcmVtZW50YWwgcGFyc2Ugc3RhdGUgZmllbGQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5jcmVtZW50YWxQYXJzZSB7XG4gIC8qKlxuICAgKiBUaGUgZnJhZ21lbnRzIG9mIHtAbGluayBJbmNyZW1lbnRhbFBhcnNlLnRyZWV9IHRoYXQgdGhlIG5leHQgcGFyc2UgbWF5IHJldXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJhZ21lbnRzOiByZWFkb25seSBUcmVlRnJhZ21lbnRbXTtcblxuICAvKipcbiAgICogVGhlIHN5bnRheCB0cmVlIG9mIHRoZSB3aG9sZSBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IHRyZWU6IFRyZWU7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0YXRlIGZpZWxkIHRoYXQgcGFyc2VzIHRoZSBkb2N1bWVudCB3aXRoIHRoZSBnaXZlbiBwYXJzZXIgd2hlbiB0aGUgc3RhdGUgaXMgY3JlYXRlZCwgYW5kIHBhcnNlcyBpdCBhZ2FpblxuICogaW5jcmVtZW50YWxseSBvbiBldmVyeSBkb2N1bWVudCBjaGFuZ2UsIHJldXNpbmcgdGhlIGZyYWdtZW50cyB0aGUgY2hhbmdlIGxlZnQgaW50YWN0LlxuICpcbiAqIEBwYXJhbSBwYXJzZXIgLSBUaGUgTGV6ZXIgcGFyc2VyIHRvIHBhcnNlIHRoZSBkb2N1bWVudCB3aXRoLlxuICogQHJldHVybnMgVGhlIHN0YXRlIGZpZWxkLiBBZGQgaXQgdG8gdGhlIGVkaXRvcidzIGV4dGVuc2lvbnMgYW5kIHJlYWQgaXQgd2l0aCBgc3RhdGUuZmllbGQoZmllbGQpLnRyZWVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW5jcmVtZW50YWxQYXJzZVN0YXRlRmllbGQocGFyc2VyOiBQYXJzZXIpOiBTdGF0ZUZpZWxkPEluY3JlbWVudGFsUGFyc2U+IHtcbiAgcmV0dXJuIFN0YXRlRmllbGQuZGVmaW5lPEluY3JlbWVudGFsUGFyc2U+KHtcbiAgICBjcmVhdGUoc3RhdGUpIHtcbiAgICAgIGNvbnN0IHRyZWUgPSBwYXJzZXIucGFyc2UoY3JlYXRlVGV4dElucHV0KHN0YXRlLmRvYykpO1xuICAgICAgcmV0dXJuIHsgZnJhZ21lbnRzOiBUcmVlRnJhZ21lbnQuYWRkVHJlZSh0cmVlKSwgdHJlZSB9O1xuICAgIH0sXG4gICAgdXBkYXRlKHZhbHVlLCB0cmFuc2FjdGlvbikge1xuICAgICAgaWYgKCF0cmFuc2FjdGlvbi5kb2NDaGFuZ2VkKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2hhbmdlZFJhbmdlczogQ2hhbmdlZFJhbmdlW10gPSBbXTtcbiAgICAgIHRyYW5zYWN0aW9uLmNoYW5nZXMuaXRlckNoYW5nZWRSYW5nZXMoKGZyb21BLCB0b0EsIGZyb21CLCB0b0IpID0+IHtcbiAgICAgICAgY2hhbmdlZFJhbmdlcy5wdXNoKHsgZnJvbUEsIGZyb21CLCB0b0EsIHRvQiB9KTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmV1c2FibGVGcmFnbWVudHMgPSBUcmVlRnJhZ21lbnQuYXBwbHlDaGFuZ2VzKHZhbHVlLmZyYWdtZW50cywgY2hhbmdlZFJhbmdlcyk7XG4gICAgICBjb25zdCB0cmVlID0gcGFyc2VyLnBhcnNlKGNyZWF0ZVRleHRJbnB1dCh0cmFuc2FjdGlvbi5uZXdEb2MpLCByZXVzYWJsZUZyYWdtZW50cyk7XG4gICAgICByZXR1cm4geyBmcmFnbWVudHM6IFRyZWVGcmFnbWVudC5hZGRUcmVlKHRyZWUsIHJldXNhYmxlRnJhZ21lbnRzKSwgdHJlZSB9O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogUmVhZHMgYSBDb2RlTWlycm9yIGRvY3VtZW50IGFzIGEgTGV6ZXIge0BsaW5rIElucHV0fSBvbmUgbGluZSBhdCBhIHRpbWUsIHNvIGEgcGFyc2UgbmV2ZXIgY29waWVzIHRoZSB3aG9sZSBkb2N1bWVudFxuICogaW50byBvbmUgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB0ZXh0IC0gVGhlIGRvY3VtZW50IHRvIHJlYWQuXG4gKiBAcmV0dXJucyBUaGUgaW5wdXQuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVRleHRJbnB1dCh0ZXh0OiBUZXh0KTogSW5wdXQge1xuICByZXR1cm4ge1xuICAgIGNodW5rKGZyb206IG51bWJlcik6IHN0cmluZyB7XG4gICAgICBjb25zdCBsaW5lID0gdGV4dC5saW5lQXQoZnJvbSk7XG4gICAgICBpZiAoZnJvbSA8IGxpbmUudG8pIHtcbiAgICAgICAgcmV0dXJuIHRleHQuc2xpY2VTdHJpbmcoZnJvbSwgbGluZS50byk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGluZS5udW1iZXIgPCB0ZXh0LmxpbmVzID8gJ1xcbicgOiAnJztcbiAgICB9LFxuICAgIGxlbmd0aDogdGV4dC5sZW5ndGgsXG4gICAgbGluZUNodW5rczogdHJ1ZSxcbiAgICByZWFkKGZyb206IG51bWJlciwgdG86IG51bWJlcik6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGV4dC5zbGljZVN0cmluZyhmcm9tLCB0byk7XG4gICAgfVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQSxTQUFTLGtCQUFrQjtBQUMzQixTQUFTLG9CQUFvQjtBQXdCdEIsU0FBUyxpQ0FBaUMsUUFBOEM7QUFDN0YsU0FBTyxXQUFXLE9BQXlCO0FBQUEsSUFDekMsT0FBTyxPQUFPO0FBQ1osWUFBTSxPQUFPLE9BQU8sTUFBTSxnQkFBZ0IsTUFBTSxHQUFHLENBQUM7QUFDcEQsYUFBTyxFQUFFLFdBQVcsYUFBYSxRQUFRLElBQUksR0FBRyxLQUFLO0FBQUEsSUFDdkQ7QUFBQSxJQUNBLE9BQU8sT0FBTyxhQUFhO0FBQ3pCLFVBQUksQ0FBQyxZQUFZLFlBQVk7QUFDM0IsZUFBTztBQUFBLE1BQ1Q7QUFFQSxZQUFNLGdCQUFnQyxDQUFDO0FBQ3ZDLGtCQUFZLFFBQVEsa0JBQWtCLENBQUMsT0FBTyxLQUFLLE9BQU8sUUFBUTtBQUNoRSxzQkFBYyxLQUFLLEVBQUUsT0FBTyxPQUFPLEtBQUssSUFBSSxDQUFDO0FBQUEsTUFDL0MsQ0FBQztBQUNELFlBQU0sb0JBQW9CLGFBQWEsYUFBYSxNQUFNLFdBQVcsYUFBYTtBQUNsRixZQUFNLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixZQUFZLE1BQU0sR0FBRyxpQkFBaUI7QUFDaEYsYUFBTyxFQUFFLFdBQVcsYUFBYSxRQUFRLE1BQU0saUJBQWlCLEdBQUcsS0FBSztBQUFBLElBQzFFO0FBQUEsRUFDRixDQUFDO0FBQ0g7QUFTQSxTQUFTLGdCQUFnQixNQUFtQjtBQUMxQyxTQUFPO0FBQUEsSUFDTCxNQUFNLE1BQXNCO0FBQzFCLFlBQU0sT0FBTyxLQUFLLE9BQU8sSUFBSTtBQUM3QixVQUFJLE9BQU8sS0FBSyxJQUFJO0FBQ2xCLGVBQU8sS0FBSyxZQUFZLE1BQU0sS0FBSyxFQUFFO0FBQUEsTUFDdkM7QUFDQSxhQUFPLEtBQUssU0FBUyxLQUFLLFFBQVEsT0FBTztBQUFBLElBQzNDO0FBQUEsSUFDQSxRQUFRLEtBQUs7QUFBQSxJQUNiLFlBQVk7QUFBQSxJQUNaLEtBQUssTUFBYyxJQUFvQjtBQUNyQyxhQUFPLEtBQUssWUFBWSxNQUFNLEVBQUU7QUFBQSxJQUNsQztBQUFBLEVBQ0Y7QUFDRjsiLCJuYW1lcyI6W119
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
/// <reference path="../library-references.d.mts" />
|
|
2
|
+
export * as 'incremental-parse-state-field' from './incremental-parse-state-field.mjs';
|
|
3
|
+
export * as 'markdown-editor-views' from './markdown-editor-views.mjs';
|
|
4
|
+
export * as 'range-set' from './range-set.mjs';
|
|
2
5
|
export * as 'state-field-spec' from './state-field-spec.mjs';
|
|
@@ -3,8 +3,14 @@ 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
|
+
import * as incremental_parse_state_field from "./incremental-parse-state-field.mjs";
|
|
7
|
+
import * as markdown_editor_views from "./markdown-editor-views.mjs";
|
|
8
|
+
import * as range_set from "./range-set.mjs";
|
|
6
9
|
import * as state_field_spec from "./state-field-spec.mjs";
|
|
7
10
|
export {
|
|
11
|
+
incremental_parse_state_field as "incremental-parse-state-field",
|
|
12
|
+
markdown_editor_views as "markdown-editor-views",
|
|
13
|
+
range_set as "range-set",
|
|
8
14
|
state_field_spec as "state-field-spec"
|
|
9
15
|
};
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvZGVtaXJyb3IvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnaW5jcmVtZW50YWwtcGFyc2Utc3RhdGUtZmllbGQnIGZyb20gJy4vaW5jcmVtZW50YWwtcGFyc2Utc3RhdGUtZmllbGQudHMnO1xuZXhwb3J0ICogYXMgJ21hcmtkb3duLWVkaXRvci12aWV3cycgZnJvbSAnLi9tYXJrZG93bi1lZGl0b3Itdmlld3MudHMnO1xuZXhwb3J0ICogYXMgJ3JhbmdlLXNldCcgZnJvbSAnLi9yYW5nZS1zZXQudHMnO1xuZXhwb3J0ICogYXMgJ3N0YXRlLWZpZWxkLXNwZWMnIGZyb20gJy4vc3RhdGUtZmllbGQtc3BlYy50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQUVBLFlBQVlBLG1DQUFxQztBQUNqRCxZQUFZQywyQkFBNkI7QUFDekMsWUFBWUMsZUFBaUI7QUFDN0IsWUFBWUMsc0JBQXdCOyIsCiAgIm5hbWVzIjogWyJpbmNyZW1lbnRhbC1wYXJzZS1zdGF0ZS1maWVsZCIsICJtYXJrZG93bi1lZGl0b3Itdmlld3MiLCAicmFuZ2Utc2V0IiwgInN0YXRlLWZpZWxkLXNwZWMiXQp9Cg==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Reaches the CodeMirror {@link EditorView} of every open Markdown view, in every window.
|
|
6
|
+
*
|
|
7
|
+
* A Markdown view in Reading mode is included on purpose: it keeps its source editor alive while hidden, and a
|
|
8
|
+
* reconfigure or state change that skipped it would leave that editor stale when the user switches back.
|
|
9
|
+
*
|
|
10
|
+
* Only editors that live in a workspace leaf are reached. An editor Obsidian builds elsewhere (a canvas card, an
|
|
11
|
+
* editable embed, a hover popover) has no leaf, so it picks up registered extensions when it is created rather
|
|
12
|
+
* than through these helpers.
|
|
13
|
+
*/
|
|
14
|
+
import type { TransactionSpec } from '@codemirror/state';
|
|
15
|
+
import type { EditorView } from '@codemirror/view';
|
|
16
|
+
import type { App } from 'obsidian';
|
|
17
|
+
/**
|
|
18
|
+
* Dispatches the given transaction specs to the editor of every open Markdown view, in every window.
|
|
19
|
+
*
|
|
20
|
+
* Each editor receives its own transaction built from the same specs, so a spec must not carry positions that
|
|
21
|
+
* only make sense in one document. Annotations and state effects (such as a compartment reconfigure) are the
|
|
22
|
+
* intended payload.
|
|
23
|
+
*
|
|
24
|
+
* @param app - The Obsidian app instance.
|
|
25
|
+
* @param specs - The transaction specs to dispatch to every editor.
|
|
26
|
+
*/
|
|
27
|
+
export declare function dispatchToAllMarkdownEditorViews(app: App, ...specs: TransactionSpec[]): void;
|
|
28
|
+
/**
|
|
29
|
+
* Gets the editor of every open Markdown view, in every window, Reading mode included.
|
|
30
|
+
*
|
|
31
|
+
* @param app - The Obsidian app instance.
|
|
32
|
+
* @returns The CodeMirror editor views.
|
|
33
|
+
*/
|
|
34
|
+
export declare function getAllMarkdownEditorViews(app: App): EditorView[];
|
|
@@ -0,0 +1,53 @@
|
|
|
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 { ViewType } from "@obsidian-typings/obsidian-public-latest/implementations";
|
|
34
|
+
import { MarkdownView } from "obsidian";
|
|
35
|
+
function dispatchToAllMarkdownEditorViews(app, ...specs) {
|
|
36
|
+
for (const editorView of getAllMarkdownEditorViews(app)) {
|
|
37
|
+
editorView.dispatch(...specs);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function getAllMarkdownEditorViews(app) {
|
|
41
|
+
const editorViews = [];
|
|
42
|
+
for (const leaf of app.workspace.getLeavesOfType(ViewType.Markdown)) {
|
|
43
|
+
if (leaf.view instanceof MarkdownView) {
|
|
44
|
+
editorViews.push(leaf.view.editor.cm);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return editorViews;
|
|
48
|
+
}
|
|
49
|
+
export {
|
|
50
|
+
dispatchToAllMarkdownEditorViews,
|
|
51
|
+
getAllMarkdownEditorViews
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2RlbWlycm9yL21hcmtkb3duLWVkaXRvci12aWV3cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogUmVhY2hlcyB0aGUgQ29kZU1pcnJvciB7QGxpbmsgRWRpdG9yVmlld30gb2YgZXZlcnkgb3BlbiBNYXJrZG93biB2aWV3LCBpbiBldmVyeSB3aW5kb3cuXG4gKlxuICogQSBNYXJrZG93biB2aWV3IGluIFJlYWRpbmcgbW9kZSBpcyBpbmNsdWRlZCBvbiBwdXJwb3NlOiBpdCBrZWVwcyBpdHMgc291cmNlIGVkaXRvciBhbGl2ZSB3aGlsZSBoaWRkZW4sIGFuZCBhXG4gKiByZWNvbmZpZ3VyZSBvciBzdGF0ZSBjaGFuZ2UgdGhhdCBza2lwcGVkIGl0IHdvdWxkIGxlYXZlIHRoYXQgZWRpdG9yIHN0YWxlIHdoZW4gdGhlIHVzZXIgc3dpdGNoZXMgYmFjay5cbiAqXG4gKiBPbmx5IGVkaXRvcnMgdGhhdCBsaXZlIGluIGEgd29ya3NwYWNlIGxlYWYgYXJlIHJlYWNoZWQuIEFuIGVkaXRvciBPYnNpZGlhbiBidWlsZHMgZWxzZXdoZXJlIChhIGNhbnZhcyBjYXJkLCBhblxuICogZWRpdGFibGUgZW1iZWQsIGEgaG92ZXIgcG9wb3ZlcikgaGFzIG5vIGxlYWYsIHNvIGl0IHBpY2tzIHVwIHJlZ2lzdGVyZWQgZXh0ZW5zaW9ucyB3aGVuIGl0IGlzIGNyZWF0ZWQgcmF0aGVyXG4gKiB0aGFuIHRocm91Z2ggdGhlc2UgaGVscGVycy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFRyYW5zYWN0aW9uU3BlYyB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB0eXBlIHsgRWRpdG9yVmlldyB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdC9pbXBsZW1lbnRhdGlvbnMnO1xuaW1wb3J0IHsgTWFya2Rvd25WaWV3IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIERpc3BhdGNoZXMgdGhlIGdpdmVuIHRyYW5zYWN0aW9uIHNwZWNzIHRvIHRoZSBlZGl0b3Igb2YgZXZlcnkgb3BlbiBNYXJrZG93biB2aWV3LCBpbiBldmVyeSB3aW5kb3cuXG4gKlxuICogRWFjaCBlZGl0b3IgcmVjZWl2ZXMgaXRzIG93biB0cmFuc2FjdGlvbiBidWlsdCBmcm9tIHRoZSBzYW1lIHNwZWNzLCBzbyBhIHNwZWMgbXVzdCBub3QgY2FycnkgcG9zaXRpb25zIHRoYXRcbiAqIG9ubHkgbWFrZSBzZW5zZSBpbiBvbmUgZG9jdW1lbnQuIEFubm90YXRpb25zIGFuZCBzdGF0ZSBlZmZlY3RzIChzdWNoIGFzIGEgY29tcGFydG1lbnQgcmVjb25maWd1cmUpIGFyZSB0aGVcbiAqIGludGVuZGVkIHBheWxvYWQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gc3BlY3MgLSBUaGUgdHJhbnNhY3Rpb24gc3BlY3MgdG8gZGlzcGF0Y2ggdG8gZXZlcnkgZWRpdG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2hUb0FsbE1hcmtkb3duRWRpdG9yVmlld3MoYXBwOiBBcHAsIC4uLnNwZWNzOiBUcmFuc2FjdGlvblNwZWNbXSk6IHZvaWQge1xuICBmb3IgKGNvbnN0IGVkaXRvclZpZXcgb2YgZ2V0QWxsTWFya2Rvd25FZGl0b3JWaWV3cyhhcHApKSB7XG4gICAgZWRpdG9yVmlldy5kaXNwYXRjaCguLi5zcGVjcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBlZGl0b3Igb2YgZXZlcnkgb3BlbiBNYXJrZG93biB2aWV3LCBpbiBldmVyeSB3aW5kb3csIFJlYWRpbmcgbW9kZSBpbmNsdWRlZC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBDb2RlTWlycm9yIGVkaXRvciB2aWV3cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbE1hcmtkb3duRWRpdG9yVmlld3MoYXBwOiBBcHApOiBFZGl0b3JWaWV3W10ge1xuICBjb25zdCBlZGl0b3JWaWV3czogRWRpdG9yVmlld1tdID0gW107XG4gIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShWaWV3VHlwZS5NYXJrZG93bikpIHtcbiAgICBpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3KSB7XG4gICAgICBlZGl0b3JWaWV3cy5wdXNoKGxlYWYudmlldy5lZGl0b3IuY20pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZWRpdG9yVmlld3M7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBLFNBQVMsZ0JBQWdCO0FBQ3pCLFNBQVMsb0JBQW9CO0FBWXRCLFNBQVMsaUNBQWlDLFFBQWEsT0FBZ0M7QUFDNUYsYUFBVyxjQUFjLDBCQUEwQixHQUFHLEdBQUc7QUFDdkQsZUFBVyxTQUFTLEdBQUcsS0FBSztBQUFBLEVBQzlCO0FBQ0Y7QUFRTyxTQUFTLDBCQUEwQixLQUF3QjtBQUNoRSxRQUFNLGNBQTRCLENBQUM7QUFDbkMsYUFBVyxRQUFRLElBQUksVUFBVSxnQkFBZ0IsU0FBUyxRQUFRLEdBQUc7QUFDbkUsUUFBSSxLQUFLLGdCQUFnQixjQUFjO0FBQ3JDLGtCQUFZLEtBQUssS0FBSyxLQUFLLE9BQU8sRUFBRTtBQUFBLElBQ3RDO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDsiLCJuYW1lcyI6W119
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Helpers for CodeMirror {@link RangeSet}s.
|
|
6
|
+
*/
|
|
7
|
+
import type { RangeSet, RangeValue } from '@codemirror/state';
|
|
8
|
+
/**
|
|
9
|
+
* One range of a {@link RangeSet}, as plain data.
|
|
10
|
+
*
|
|
11
|
+
* @typeParam Value - The type of the range value.
|
|
12
|
+
*/
|
|
13
|
+
export interface RangeSetEntry<Value extends RangeValue> {
|
|
14
|
+
/**
|
|
15
|
+
* The start of the range.
|
|
16
|
+
*/
|
|
17
|
+
readonly from: number;
|
|
18
|
+
/**
|
|
19
|
+
* The end of the range.
|
|
20
|
+
*/
|
|
21
|
+
readonly to: number;
|
|
22
|
+
/**
|
|
23
|
+
* The value of the range.
|
|
24
|
+
*/
|
|
25
|
+
readonly value: Value;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Lists the ranges of a {@link RangeSet} in document order, for assertions in tests and for debugging.
|
|
29
|
+
*
|
|
30
|
+
* @typeParam Value - The type of the range values.
|
|
31
|
+
* @param rangeSet - The range set to list, e.g. a `DecorationSet`.
|
|
32
|
+
* @param from - The position to start listing from. Ranges ending before it are skipped. Defaults to `0`.
|
|
33
|
+
* @returns The ranges as plain `{ from, to, value }` objects.
|
|
34
|
+
*/
|
|
35
|
+
export declare function rangeSetToArray<Value extends RangeValue>(rangeSet: RangeSet<Value>, from?: number): RangeSetEntry<Value>[];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
function rangeSetToArray(rangeSet, from = 0) {
|
|
7
|
+
const entries = [];
|
|
8
|
+
const cursor = rangeSet.iter(from);
|
|
9
|
+
while (cursor.value !== null) {
|
|
10
|
+
entries.push({ from: cursor.from, to: cursor.to, value: cursor.value });
|
|
11
|
+
cursor.next();
|
|
12
|
+
}
|
|
13
|
+
return entries;
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
rangeSetToArray
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvZGVtaXJyb3IvcmFuZ2Utc2V0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogSGVscGVycyBmb3IgQ29kZU1pcnJvciB7QGxpbmsgUmFuZ2VTZXR9cy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIFJhbmdlU2V0LFxuICBSYW5nZVZhbHVlXG59IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcblxuLyoqXG4gKiBPbmUgcmFuZ2Ugb2YgYSB7QGxpbmsgUmFuZ2VTZXR9LCBhcyBwbGFpbiBkYXRhLlxuICpcbiAqIEB0eXBlUGFyYW0gVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgcmFuZ2UgdmFsdWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmFuZ2VTZXRFbnRyeTxWYWx1ZSBleHRlbmRzIFJhbmdlVmFsdWU+IHtcbiAgLyoqXG4gICAqIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAqL1xuICByZWFkb25seSBmcm9tOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgKi9cbiAgcmVhZG9ubHkgdG86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSByYW5nZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBWYWx1ZTtcbn1cblxuLyoqXG4gKiBMaXN0cyB0aGUgcmFuZ2VzIG9mIGEge0BsaW5rIFJhbmdlU2V0fSBpbiBkb2N1bWVudCBvcmRlciwgZm9yIGFzc2VydGlvbnMgaW4gdGVzdHMgYW5kIGZvciBkZWJ1Z2dpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSByYW5nZSB2YWx1ZXMuXG4gKiBAcGFyYW0gcmFuZ2VTZXQgLSBUaGUgcmFuZ2Ugc2V0IHRvIGxpc3QsIGUuZy4gYSBgRGVjb3JhdGlvblNldGAuXG4gKiBAcGFyYW0gZnJvbSAtIFRoZSBwb3NpdGlvbiB0byBzdGFydCBsaXN0aW5nIGZyb20uIFJhbmdlcyBlbmRpbmcgYmVmb3JlIGl0IGFyZSBza2lwcGVkLiBEZWZhdWx0cyB0byBgMGAuXG4gKiBAcmV0dXJucyBUaGUgcmFuZ2VzIGFzIHBsYWluIGB7IGZyb20sIHRvLCB2YWx1ZSB9YCBvYmplY3RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZ2VTZXRUb0FycmF5PFZhbHVlIGV4dGVuZHMgUmFuZ2VWYWx1ZT4ocmFuZ2VTZXQ6IFJhbmdlU2V0PFZhbHVlPiwgZnJvbSA9IDApOiBSYW5nZVNldEVudHJ5PFZhbHVlPltdIHtcbiAgY29uc3QgZW50cmllczogUmFuZ2VTZXRFbnRyeTxWYWx1ZT5bXSA9IFtdO1xuICBjb25zdCBjdXJzb3IgPSByYW5nZVNldC5pdGVyKGZyb20pO1xuICB3aGlsZSAoY3Vyc29yLnZhbHVlICE9PSBudWxsKSB7XG4gICAgZW50cmllcy5wdXNoKHsgZnJvbTogY3Vyc29yLmZyb20sIHRvOiBjdXJzb3IudG8sIHZhbHVlOiBjdXJzb3IudmFsdWUgfSk7XG4gICAgY3Vyc29yLm5leHQoKTtcbiAgfVxuICByZXR1cm4gZW50cmllcztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBeUNPLFNBQVMsZ0JBQTBDLFVBQTJCLE9BQU8sR0FBMkI7QUFDckgsUUFBTSxVQUFrQyxDQUFDO0FBQ3pDLFFBQU0sU0FBUyxTQUFTLEtBQUssSUFBSTtBQUNqQyxTQUFPLE9BQU8sVUFBVSxNQUFNO0FBQzVCLFlBQVEsS0FBSyxFQUFFLE1BQU0sT0FBTyxNQUFNLElBQUksT0FBTyxJQUFJLE9BQU8sT0FBTyxNQUFNLENBQUM7QUFDdEUsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUNBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -6,6 +6,7 @@ export * as 'editor-command-handler' from './editor-command-handler.mjs';
|
|
|
6
6
|
export * as 'file-command-handler' from './file-command-handler.mjs';
|
|
7
7
|
export * as 'folder-command-handler' from './folder-command-handler.mjs';
|
|
8
8
|
export * as 'global-command-handler' from './global-command-handler.mjs';
|
|
9
|
+
export * as 'open-bug-report-command-handler' from './open-bug-report-command-handler.mjs';
|
|
9
10
|
export * as 'open-demo-vault-command-handler' from './open-demo-vault-command-handler.mjs';
|
|
10
11
|
export * as 'open-settings-command-handler' from './open-settings-command-handler.mjs';
|
|
11
12
|
export * as 'undo-bulk-operation-command-handler' from './undo-bulk-operation-command-handler.mjs';
|