@mnaoumov/obsidian-lib 10.6.0 → 10.8.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.
Files changed (90) hide show
  1. package/command-handlers/open-discussion-command-handler/package.json +6 -0
  2. package/command-handlers/open-feature-request-command-handler/package.json +6 -0
  3. package/command-handlers/open-git-hub-command-handler/package.json +6 -0
  4. package/components/style-sheet-component/package.json +6 -0
  5. package/data-stores/data-store-locations/package.json +6 -0
  6. package/dist/lib/cjs/__merged.cjs +45 -1
  7. package/dist/lib/cjs/__merged.d.cts +10 -0
  8. package/dist/lib/cjs/broken-link-candidates.cjs +366 -0
  9. package/dist/lib/cjs/broken-link-candidates.d.cts +181 -0
  10. package/dist/lib/cjs/command-handlers/index.cjs +10 -1
  11. package/dist/lib/cjs/command-handlers/index.d.cts +3 -0
  12. package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.cjs +9 -12
  13. package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.d.cts +6 -8
  14. package/dist/lib/cjs/command-handlers/open-discussion-command-handler.cjs +127 -0
  15. package/dist/lib/cjs/command-handlers/open-discussion-command-handler.d.cts +45 -0
  16. package/dist/lib/cjs/command-handlers/open-feature-request-command-handler.cjs +119 -0
  17. package/dist/lib/cjs/command-handlers/open-feature-request-command-handler.d.cts +33 -0
  18. package/dist/lib/cjs/command-handlers/open-git-hub-command-handler.cjs +121 -0
  19. package/dist/lib/cjs/command-handlers/open-git-hub-command-handler.d.cts +43 -0
  20. package/dist/lib/cjs/components/index.cjs +4 -1
  21. package/dist/lib/cjs/components/index.d.cts +1 -0
  22. package/dist/lib/cjs/components/style-sheet-component.cjs +198 -0
  23. package/dist/lib/cjs/components/style-sheet-component.d.cts +79 -0
  24. package/dist/lib/cjs/data-stores/data-store-locations.cjs +248 -0
  25. package/dist/lib/cjs/data-stores/data-store-locations.d.cts +60 -0
  26. package/dist/lib/cjs/data-stores/data-store-seeds.cjs +2 -2
  27. package/dist/lib/cjs/data-stores/data-store-seeds.d.cts +1 -1
  28. package/dist/lib/cjs/data-stores/data-store-transport.cjs +132 -24
  29. package/dist/lib/cjs/data-stores/data-store-transport.d.cts +39 -5
  30. package/dist/lib/cjs/data-stores/index.cjs +4 -1
  31. package/dist/lib/cjs/data-stores/index.d.cts +1 -0
  32. package/dist/lib/cjs/data-stores/shared-data-store.cjs +131 -19
  33. package/dist/lib/cjs/data-stores/shared-data-store.d.cts +54 -2
  34. package/dist/lib/cjs/desktop-git-runner.cjs +117 -0
  35. package/dist/lib/cjs/desktop-git-runner.d.cts +17 -0
  36. package/dist/lib/cjs/editor-suggest.cjs +2 -3
  37. package/dist/lib/cjs/feature-request.cjs +115 -0
  38. package/dist/lib/cjs/feature-request.d.cts +54 -0
  39. package/dist/lib/cjs/generated-during-build.cjs +1 -1
  40. package/dist/lib/cjs/git-hub-discussion.cjs +101 -0
  41. package/dist/lib/cjs/git-hub-discussion.d.cts +28 -0
  42. package/dist/lib/cjs/git-rename-history.cjs +148 -0
  43. package/dist/lib/cjs/git-rename-history.d.cts +43 -0
  44. package/dist/lib/cjs/index.cjs +16 -1
  45. package/dist/lib/cjs/index.d.cts +5 -0
  46. package/dist/lib/cjs/vault.cjs +2 -2
  47. package/dist/lib/cjs/vault.d.cts +3 -1
  48. package/dist/lib/esm/__merged.d.mts +10 -0
  49. package/dist/lib/esm/__merged.mjs +43 -1
  50. package/dist/lib/esm/broken-link-candidates.d.mts +181 -0
  51. package/dist/lib/esm/broken-link-candidates.mjs +275 -0
  52. package/dist/lib/esm/command-handlers/index.d.mts +3 -0
  53. package/dist/lib/esm/command-handlers/index.mjs +7 -1
  54. package/dist/lib/esm/command-handlers/open-bug-report-command-handler.d.mts +6 -8
  55. package/dist/lib/esm/command-handlers/open-bug-report-command-handler.mjs +9 -12
  56. package/dist/lib/esm/command-handlers/open-discussion-command-handler.d.mts +45 -0
  57. package/dist/lib/esm/command-handlers/open-discussion-command-handler.mjs +39 -0
  58. package/dist/lib/esm/command-handlers/open-feature-request-command-handler.d.mts +33 -0
  59. package/dist/lib/esm/command-handlers/open-feature-request-command-handler.mjs +31 -0
  60. package/dist/lib/esm/command-handlers/open-git-hub-command-handler.d.mts +43 -0
  61. package/dist/lib/esm/command-handlers/open-git-hub-command-handler.mjs +33 -0
  62. package/dist/lib/esm/components/index.d.mts +1 -0
  63. package/dist/lib/esm/components/index.mjs +3 -1
  64. package/dist/lib/esm/components/style-sheet-component.d.mts +79 -0
  65. package/dist/lib/esm/components/style-sheet-component.mjs +109 -0
  66. package/dist/lib/esm/data-stores/data-store-locations.d.mts +60 -0
  67. package/dist/lib/esm/data-stores/data-store-locations.mjs +160 -0
  68. package/dist/lib/esm/data-stores/data-store-seeds.d.mts +1 -1
  69. package/dist/lib/esm/data-stores/data-store-seeds.mjs +2 -2
  70. package/dist/lib/esm/data-stores/data-store-transport.d.mts +39 -5
  71. package/dist/lib/esm/data-stores/data-store-transport.mjs +132 -24
  72. package/dist/lib/esm/data-stores/index.d.mts +1 -0
  73. package/dist/lib/esm/data-stores/index.mjs +3 -1
  74. package/dist/lib/esm/data-stores/shared-data-store.d.mts +54 -2
  75. package/dist/lib/esm/data-stores/shared-data-store.mjs +131 -19
  76. package/dist/lib/esm/desktop-git-runner.d.mts +17 -0
  77. package/dist/lib/esm/desktop-git-runner.mjs +19 -0
  78. package/dist/lib/esm/editor-suggest.mjs +2 -3
  79. package/dist/lib/esm/feature-request.d.mts +54 -0
  80. package/dist/lib/esm/feature-request.mjs +25 -0
  81. package/dist/lib/esm/generated-during-build.mjs +1 -1
  82. package/dist/lib/esm/git-hub-discussion.d.mts +28 -0
  83. package/dist/lib/esm/git-hub-discussion.mjs +13 -0
  84. package/dist/lib/esm/git-rename-history.d.mts +43 -0
  85. package/dist/lib/esm/git-rename-history.mjs +59 -0
  86. package/dist/lib/esm/index.d.mts +5 -0
  87. package/dist/lib/esm/index.mjs +11 -1
  88. package/dist/lib/esm/vault.d.mts +3 -1
  89. package/dist/lib/esm/vault.mjs +2 -2
  90. package/package.json +2 -2
@@ -0,0 +1,117 @@
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 patchObsidianRequire() {
6
+ const originalRequire = require;
7
+ if (!originalRequire || originalRequire.__isPatched) {
8
+ return;
9
+ }
10
+ require = Object.assign(
11
+ (id) => requirePatched(id),
12
+ originalRequire,
13
+ {
14
+ __isPatched: true
15
+ }
16
+ );
17
+ function extractDefault($module) {
18
+ return $module && $module.__esModule && "default" in $module ? $module.default : $module;
19
+ }
20
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
21
+ "@codemirror/autocomplete",
22
+ "@codemirror/collab",
23
+ "@codemirror/commands",
24
+ "@codemirror/language",
25
+ "@codemirror/lint",
26
+ "@codemirror/search",
27
+ "@codemirror/state",
28
+ "@codemirror/text",
29
+ "@codemirror/view",
30
+ "@lezer/common",
31
+ "@lezer/highlight",
32
+ "@lezer/lr",
33
+ "obsidian"
34
+ ]);
35
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
36
+ "@codemirror/closebrackets",
37
+ "@codemirror/comment",
38
+ "@codemirror/fold",
39
+ "@codemirror/gutter",
40
+ "@codemirror/highlight",
41
+ "@codemirror/history",
42
+ "@codemirror/matchbrackets",
43
+ "@codemirror/panel",
44
+ "@codemirror/rangeset",
45
+ "@codemirror/rectangular-selection",
46
+ "@codemirror/stream-parser",
47
+ "@codemirror/tooltip"
48
+ ]);
49
+ function requirePatched(id) {
50
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
51
+ return originalRequire?.(id);
52
+ }
53
+ const app = globalThis.app;
54
+ if (app?.isMobile) {
55
+ if (id === "process" || id === "node:process") {
56
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
57
+ return process;
58
+ }
59
+ } else {
60
+ const $module = originalRequire?.(id);
61
+ if ($module) {
62
+ return extractDefault($module);
63
+ }
64
+ }
65
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
66
+ return {};
67
+ }
68
+ })();
69
+
70
+ "use strict";
71
+ var __create = Object.create;
72
+ var __defProp = Object.defineProperty;
73
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
74
+ var __getOwnPropNames = Object.getOwnPropertyNames;
75
+ var __getProtoOf = Object.getPrototypeOf;
76
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
77
+ var __export = (target, all) => {
78
+ for (var name in all)
79
+ __defProp(target, name, { get: all[name], enumerable: true });
80
+ };
81
+ var __copyProps = (to, from, except, desc) => {
82
+ if (from && typeof from === "object" || typeof from === "function") {
83
+ for (let key of __getOwnPropNames(from))
84
+ if (!__hasOwnProp.call(to, key) && key !== except)
85
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
86
+ }
87
+ return to;
88
+ };
89
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
90
+ // If the importer is in node compatibility mode or this is not an ESM
91
+ // file that has been converted to a CommonJS file using a Babel-
92
+ // compatible transform (i.e. "__esModule" has not been set), then set
93
+ // "default" to the CommonJS "module.exports" for node compatibility.
94
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
95
+ mod
96
+ ));
97
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
98
+ var desktop_git_runner_exports = {};
99
+ __export(desktop_git_runner_exports, {
100
+ createDesktopGitRunner: () => createDesktopGitRunner
101
+ });
102
+ module.exports = __toCommonJS(desktop_git_runner_exports);
103
+ const GIT_OUTPUT_LIMIT_IN_BYTES = 268435456;
104
+ function createDesktopGitRunner(cwd) {
105
+ return async (arguments_) => {
106
+ const { execFile } = await import("node:child_process");
107
+ const { promisify } = await import("node:util");
108
+ const execFileAsync = promisify(execFile);
109
+ const { stdout } = await execFileAsync("git", [...arguments_], { cwd, encoding: "utf-8", maxBuffer: GIT_OUTPUT_LIMIT_IN_BYTES, windowsHide: true });
110
+ return stdout;
111
+ };
112
+ }
113
+ // Annotate the CommonJS export names for ESM import in node:
114
+ 0 && (module.exports = {
115
+ createDesktopGitRunner
116
+ });
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXNrdG9wLWdpdC1ydW5uZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIERlc2t0b3AgZ2l0IHJ1bm5lciB3aXRoIE5vZGUgbW9kdWxlcyBsb2FkZWQgb25seSB3aGVuIGEgY29tbWFuZCBydW5zLlxuICovXG5cbmltcG9ydCB0eXBlIHsgR2l0UnVubmVyIH0gZnJvbSAnLi9naXQtcmVuYW1lLWhpc3RvcnkudHMnO1xuXG4vKipcbiAqIExhcmdlIGVub3VnaCBmb3IgdGhlIHJlbmFtZSBoaXN0b3J5IG9mIGFueSB2YXVsdDogYC0tZGlmZi1maWx0ZXI9UmAga2VlcHMgb25seSB0aGUgcmVuYW1lcy4gMjU2IE1pQi5cbiAqL1xuY29uc3QgR0lUX09VVFBVVF9MSU1JVF9JTl9CWVRFUyA9IDI2OF80MzVfNDU2O1xuXG4vKipcbiAqIENyZWF0ZXMgYSB7QGxpbmsgR2l0UnVubmVyfSBmb3IgYSBmb2xkZXIuXG4gKlxuICogQ2FsbCB0aGUgcnVubmVyIG9ubHkgb24gZGVza3RvcCwgYmVoaW5kIGBQbGF0Zm9ybS5pc0Rlc2t0b3BBcHBgLiBJbXBvcnRpbmcgdGhpcyBtb2R1bGUgYW5kIGNyZWF0aW5nIGFcbiAqIHJ1bm5lciBhcmUgc2FmZSBvbiBtb2JpbGU6IE5vZGUgbW9kdWxlcyBsb2FkIG9ubHkgd2hlbiB0aGUgcnVubmVyIGV4ZWN1dGVzIGEgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY3dkIC0gVGhlIGZvbGRlciB0byBydW4gYGdpdGAgaW4uXG4gKiBAcmV0dXJucyBUaGUgcnVubmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVza3RvcEdpdFJ1bm5lcihjd2Q6IHN0cmluZyk6IEdpdFJ1bm5lciB7XG4gIHJldHVybiBhc3luYyAoYXJndW1lbnRzXykgPT4ge1xuICAgIGNvbnN0IHsgZXhlY0ZpbGUgfSA9IGF3YWl0IGltcG9ydCgnbm9kZTpjaGlsZF9wcm9jZXNzJyk7XG4gICAgY29uc3QgeyBwcm9taXNpZnkgfSA9IGF3YWl0IGltcG9ydCgnbm9kZTp1dGlsJyk7XG4gICAgY29uc3QgZXhlY0ZpbGVBc3luYyA9IHByb21pc2lmeShleGVjRmlsZSk7XG4gICAgY29uc3QgeyBzdGRvdXQgfSA9IGF3YWl0IGV4ZWNGaWxlQXN5bmMoJ2dpdCcsIFsuLi5hcmd1bWVudHNfXSwgeyBjd2QsIGVuY29kaW5nOiAndXRmLTgnLCBtYXhCdWZmZXI6IEdJVF9PVVRQVVRfTElNSVRfSU5fQllURVMsIHdpbmRvd3NIaWRlOiB0cnVlIH0pO1xuICAgIHJldHVybiBzdGRvdXQ7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0EsTUFBTSw0QkFBNEI7QUFXM0IsU0FBUyx1QkFBdUIsS0FBd0I7QUFDN0QsU0FBTyxPQUFPLGVBQWU7QUFDM0IsVUFBTSxFQUFFLFNBQVMsSUFBSSxNQUFNLE9BQU8sb0JBQW9CO0FBQ3RELFVBQU0sRUFBRSxVQUFVLElBQUksTUFBTSxPQUFPLFdBQVc7QUFDOUMsVUFBTSxnQkFBZ0IsVUFBVSxRQUFRO0FBQ3hDLFVBQU0sRUFBRSxPQUFPLElBQUksTUFBTSxjQUFjLE9BQU8sQ0FBQyxHQUFHLFVBQVUsR0FBRyxFQUFFLEtBQUssVUFBVSxTQUFTLFdBQVcsMkJBQTJCLGFBQWEsS0FBSyxDQUFDO0FBQ2xKLFdBQU87QUFBQSxFQUNUO0FBQ0Y7IiwibmFtZXMiOltdfQ==
@@ -0,0 +1,17 @@
1
+ /// <reference path="./library-references.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Desktop git runner with Node modules loaded only when a command runs.
6
+ */
7
+ import type { GitRunner } from './git-rename-history.cjs';
8
+ /**
9
+ * Creates a {@link GitRunner} for a folder.
10
+ *
11
+ * Call the runner only on desktop, behind `Platform.isDesktopApp`. Importing this module and creating a
12
+ * runner are safe on mobile: Node modules load only when the runner executes a command.
13
+ *
14
+ * @param cwd - The folder to run `git` in.
15
+ * @returns The runner.
16
+ */
17
+ export declare function createDesktopGitRunner(cwd: string): GitRunner;
@@ -118,7 +118,6 @@ __export(editor_suggest_exports, {
118
118
  prioritizeEditorSuggest: () => prioritizeEditorSuggest
119
119
  });
120
120
  module.exports = __toCommonJS(editor_suggest_exports);
121
- var import_object_utils = require('@mnaoumov/typescript-lib/object-utils');
122
121
  var import_obsidian = require('obsidian');
123
122
  class CommandEditorSuggest extends import_obsidian.EditorSuggest {
124
123
  commandStart = null;
@@ -161,7 +160,7 @@ class CommandEditorSuggest extends import_obsidian.EditorSuggest {
161
160
  openFromCommand(params) {
162
161
  const { editor, file } = params;
163
162
  this.commandStart = editor.getCursor();
164
- if (!this.trigger(editor, (0, import_object_utils.castTo)(file), true)) {
163
+ if (!this.trigger(editor, file, true)) {
165
164
  this.commandStart = null;
166
165
  return false;
167
166
  }
@@ -195,4 +194,4 @@ function prioritizeEditorSuggest(params) {
195
194
  CommandEditorSuggest,
196
195
  prioritizeEditorSuggest
197
196
  });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lZGl0b3Itc3VnZ2VzdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogSGVscGVycyBmb3IgYEVkaXRvclN1Z2dlc3RgOiBnaXZpbmcgb25lIHByaW9yaXR5IG92ZXIgdGhlIG90aGVycywgYW5kIG9wZW5pbmcgb25lIGZyb20gYSBjb21tYW5kLlxuICpcbiAqIFJlYWQgZnJvbSBPYnNpZGlhbiBgMS4xNS4wYDogdGhlIGVkaXRvciBhc2tzIGVhY2ggc3VnZ2VzdCBpbiBgYXBwLndvcmtzcGFjZS5lZGl0b3JTdWdnZXN0LnN1Z2dlc3RzYCBpbiBvcmRlciwgYW5kIHRoZVxuICogZmlyc3Qgd2hvc2UgYHRyaWdnZXJgIGFjY2VwdHMgdGhlIGN1cnNvciB3aW5zLCBzbyByZWdpc3RyYXRpb24gb3JkZXIgZGVjaWRlcyB3aGljaCBzdWdnZXN0IG9wZW5zLiBBIHN1Z2dlc3Qgc2hvd3MgaXRzXG4gKiBsaXN0IG9ubHkgd2hlbiB0aGUgdHJpZ2dlciBpcyBleHBsaWNpdCAodGhlIHVzZXIgdHlwZWQpIG9yIGl0IGlzIGFscmVhZHkgb3Blbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRWRpdG9yLFxuICBFZGl0b3JQb3NpdGlvbixcbiAgRWRpdG9yU3VnZ2VzdFRyaWdnZXJJbmZvLFxuICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGNhc3RUbyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9vYmplY3QtdXRpbHMnO1xuaW1wb3J0IHsgRWRpdG9yU3VnZ2VzdCB9IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQ29tbWFuZEVkaXRvclN1Z2dlc3Qub3BlbkZyb21Db21tYW5kfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tYW5kRWRpdG9yU3VnZ2VzdE9wZW5Gcm9tQ29tbWFuZFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZWRpdG9yIHRvIG9wZW4gdGhlIHN1Z2dlc3QgaW4uXG4gICAqL1xuICByZWFkb25seSBlZGl0b3I6IEVkaXRvcjtcblxuICAvKipcbiAgICogVGhlIGZpbGUgb3BlbiBpbiB0aGUgZWRpdG9yLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZTogbnVsbCB8IFRGaWxlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBwcmlvcml0aXplRWRpdG9yU3VnZ2VzdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJpb3JpdGl6ZUVkaXRvclN1Z2dlc3RQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcC5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVnaXN0ZXJlZCBlZGl0b3Igc3VnZ2VzdC5cbiAgICovXG4gIHJlYWRvbmx5IGVkaXRvclN1Z2dlc3Q6IEVkaXRvclN1Z2dlc3Q8dW5rbm93bj47XG59XG5cbi8qKlxuICogQW4gZWRpdG9yIHN1Z2dlc3QgdGhhdCBhIGNvbW1hbmQgY2FuIG9wZW4gYXQgdGhlIGN1cnNvciwgd2l0aG91dCBhIHRyaWdnZXIgY2hhcmFjdGVyLlxuICpcbiAqIHtAbGluayBDb21tYW5kRWRpdG9yU3VnZ2VzdC5vcGVuRnJvbUNvbW1hbmR9IG9wZW5zIGl0IGF0IHRoZSBjdXJzb3I7IHRoZSB0ZXh0IHR5cGVkIGFmdGVyIHRoYXQgcG9pbnQsIG9uIHRoZSBzYW1lXG4gKiBsaW5lLCBpcyB0aGUgcXVlcnksIGFuZCBtb3ZpbmcgdGhlIGN1cnNvciBiZWZvcmUgdGhhdCBwb2ludCBvciBvZmYgdGhlIGxpbmUgY2xvc2VzIGl0LiBBIHN1YmNsYXNzIG1heSBzdGlsbCBvcGVuIG9uXG4gKiB0eXBlZCB0ZXh0IGJ5IG92ZXJyaWRpbmcge0BsaW5rIENvbW1hbmRFZGl0b3JTdWdnZXN0Lm9uVGV4dFRyaWdnZXJ9LlxuICpcbiAqIFJlZ2lzdGVyIGl0IGFzIHVzdWFsLCBzbyB0aGUgZWRpdG9yIGtlZXBzIGl0IHVwZGF0ZWQgd2hpbGUgdGhlIHVzZXIgdHlwZXM6XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IHN1Z2dlc3QgPSBuZXcgRW1vamlTdWdnZXN0KHRoaXMuYXBwKTtcbiAqIHRoaXMucmVnaXN0ZXJFZGl0b3JTdWdnZXN0KHN1Z2dlc3QpO1xuICogdGhpcy5hZGRDb21tYW5kKHtcbiAqICAgZWRpdG9yQ2FsbGJhY2s6IChlZGl0b3IsIGN0eCkgPT4ge1xuICogICAgIHN1Z2dlc3Qub3BlbkZyb21Db21tYW5kKHsgZWRpdG9yLCBmaWxlOiBjdHguZmlsZSB9KTtcbiAqICAgfSxcbiAqICAgaWQ6ICdpbnNlcnQtZW1vamknLFxuICogICBuYW1lOiAnSW5zZXJ0IGVtb2ppJ1xuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBhIHN1Z2dlc3Rpb24uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21tYW5kRWRpdG9yU3VnZ2VzdDxUPiBleHRlbmRzIEVkaXRvclN1Z2dlc3Q8VD4ge1xuICBwcml2YXRlIGNvbW1hbmRTdGFydDogRWRpdG9yUG9zaXRpb24gfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBzdWdnZXN0LCBlbmRpbmcgYSBjb21tYW5kLW9wZW5lZCBzZXNzaW9uLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuY29tbWFuZFN0YXJ0ID0gbnVsbDtcbiAgICBzdXBlci5jbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY2lkZXMgd2hldGhlciB0aGUgc3VnZ2VzdCBvcGVucy4gV2hpbGUgYSBjb21tYW5kLW9wZW5lZCBzZXNzaW9uIGxhc3RzLCB0aGUgcXVlcnkgaXMgdGhlIHRleHQgZnJvbSB3aGVyZSBpdCB3YXNcbiAgICogb3BlbmVkIHRvIHRoZSBjdXJzb3I7IG90aGVyd2lzZSB7QGxpbmsgQ29tbWFuZEVkaXRvclN1Z2dlc3Qub25UZXh0VHJpZ2dlcn0gZGVjaWRlcy5cbiAgICpcbiAgICogQHBhcmFtIGN1cnNvciAtIFRoZSBjdXJzb3IuXG4gICAqIEBwYXJhbSBlZGl0b3IgLSBUaGUgZWRpdG9yLlxuICAgKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIG9wZW4gaW4gdGhlIGVkaXRvci5cbiAgICogQHJldHVybnMgVGhlIHRyaWdnZXIgaW5mbywgb3IgYG51bGxgIHRvIHN0YXkgY2xvc2VkLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9uVHJpZ2dlcihjdXJzb3I6IEVkaXRvclBvc2l0aW9uLCBlZGl0b3I6IEVkaXRvciwgZmlsZTogbnVsbCB8IFRGaWxlKTogRWRpdG9yU3VnZ2VzdFRyaWdnZXJJbmZvIHwgbnVsbCB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLmNvbW1hbmRTdGFydDtcbiAgICBpZiAoc3RhcnQpIHtcbiAgICAgIGlmIChjdXJzb3IubGluZSA9PT0gc3RhcnQubGluZSAmJiBjdXJzb3IuY2ggPj0gc3RhcnQuY2gpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbmQ6IGN1cnNvcixcbiAgICAgICAgICBxdWVyeTogZWRpdG9yLmdldExpbmUoY3Vyc29yLmxpbmUpLnNsaWNlKHN0YXJ0LmNoLCBjdXJzb3IuY2gpLFxuICAgICAgICAgIHN0YXJ0XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB0aGlzLmNvbW1hbmRTdGFydCA9IG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9uVGV4dFRyaWdnZXIoY3Vyc29yLCBlZGl0b3IsIGZpbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBzdWdnZXN0IGF0IHRoZSBjdXJzb3Igb2YgYW4gZWRpdG9yLCB0eXBpY2FsbHkgZnJvbSBhIGNvbW1hbmQncyBgZWRpdG9yQ2FsbGJhY2tgLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHN1Z2dlc3QgYWNjZXB0ZWQgdGhlIGN1cnNvcjogYGZhbHNlYCB3aGVuIHRleHQgaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBwdWJsaWMgb3BlbkZyb21Db21tYW5kKHBhcmFtczogQ29tbWFuZEVkaXRvclN1Z2dlc3RPcGVuRnJvbUNvbW1hbmRQYXJhbXMpOiBib29sZWFuIHtcbiAgICBjb25zdCB7IGVkaXRvciwgZmlsZSB9ID0gcGFyYW1zO1xuICAgIHRoaXMuY29tbWFuZFN0YXJ0ID0gZWRpdG9yLmdldEN1cnNvcigpO1xuICAgIC8vIFRPRE86IFBhc3MgYGZpbGVgIHN0cmFpZ2h0IHRocm91Z2ggb25jZSBvYnNpZGlhbi10eXBpbmdzIHR5cGVzIGl0IGBURmlsZSB8IG51bGxgLlxuICAgIGlmICghdGhpcy50cmlnZ2VyKGVkaXRvciwgY2FzdFRvPFRGaWxlPihmaWxlKSwgdHJ1ZSkpIHtcbiAgICAgIHRoaXMuY29tbWFuZFN0YXJ0ID0gbnVsbDtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5hcHAud29ya3NwYWNlLmVkaXRvclN1Z2dlc3Quc2V0Q3VycmVudFN1Z2dlc3QodGhpcyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogRGVjaWRlcyB3aGV0aGVyIHRoZSBzdWdnZXN0IG9wZW5zIG9uIHR5cGVkIHRleHQsIG91dHNpZGUgYSBjb21tYW5kLW9wZW5lZCBzZXNzaW9uLiBOZXZlciwgYnkgZGVmYXVsdC5cbiAgICpcbiAgICogQHBhcmFtIF9jdXJzb3IgLSBUaGUgY3Vyc29yLlxuICAgKiBAcGFyYW0gX2VkaXRvciAtIFRoZSBlZGl0b3IuXG4gICAqIEBwYXJhbSBfZmlsZSAtIFRoZSBmaWxlIG9wZW4gaW4gdGhlIGVkaXRvci5cbiAgICogQHJldHVybnMgVGhlIHRyaWdnZXIgaW5mbywgb3IgYG51bGxgIHRvIHN0YXkgY2xvc2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIG9uVGV4dFRyaWdnZXIoX2N1cnNvcjogRWRpdG9yUG9zaXRpb24sIF9lZGl0b3I6IEVkaXRvciwgX2ZpbGU6IG51bGwgfCBURmlsZSk6IEVkaXRvclN1Z2dlc3RUcmlnZ2VySW5mbyB8IG51bGwge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogTW92ZXMgYSByZWdpc3RlcmVkIGVkaXRvciBzdWdnZXN0IHRvIHRoZSBmcm9udCBvZiB0aGUgbGlzdCB0aGUgZWRpdG9yIGFza3MsIHNvIGl0IG9wZW5zIGFoZWFkIG9mIGV2ZXJ5IG90aGVyIHN1Z2dlc3RcbiAqIHdob3NlIHRyaWdnZXIgYWNjZXB0cyB0aGUgc2FtZSB0ZXh0LCBPYnNpZGlhbidzIG93biBgW1tgIGFuZCBgI2Agc3VnZ2VzdHMgaW5jbHVkZWQuIEEgc3VnZ2VzdCBwcmlvcml0aXplZCBsYXRlciBnb2VzXG4gKiBhaGVhZCBvZiBpdCBpbiB0dXJuLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEB0aHJvd3MgSWYgdGhlIGVkaXRvciBzdWdnZXN0IGlzIG5vdCByZWdpc3RlcmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJpb3JpdGl6ZUVkaXRvclN1Z2dlc3QocGFyYW1zOiBQcmlvcml0aXplRWRpdG9yU3VnZ2VzdFBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7IGFwcCwgZWRpdG9yU3VnZ2VzdCB9ID0gcGFyYW1zO1xuICBjb25zdCBzdWdnZXN0cyA9IGFwcC53b3Jrc3BhY2UuZWRpdG9yU3VnZ2VzdC5zdWdnZXN0cztcbiAgY29uc3QgaW5kZXggPSBzdWdnZXN0cy5pbmRleE9mKGVkaXRvclN1Z2dlc3QpO1xuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZWRpdG9yIHN1Z2dlc3QgaXMgbm90IHJlZ2lzdGVyZWQuIFJlZ2lzdGVyIGl0IGJlZm9yZSBwcmlvcml0aXppbmcgaXQuJyk7XG4gIH1cbiAgc3VnZ2VzdHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgc3VnZ2VzdHMudW5zaGlmdChlZGl0b3JTdWdnZXN0KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa0JBLDBCQUF1QjtBQUN2QixzQkFBOEI7QUF1RHZCLE1BQWUsNkJBQWdDLDhCQUFpQjtBQUFBLEVBQzdELGVBQXNDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLOUIsUUFBYztBQUM1QixTQUFLLGVBQWU7QUFDcEIsVUFBTSxNQUFNO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBV2dCLFVBQVUsUUFBd0IsUUFBZ0IsTUFBcUQ7QUFDckgsVUFBTSxRQUFRLEtBQUs7QUFDbkIsUUFBSSxPQUFPO0FBQ1QsVUFBSSxPQUFPLFNBQVMsTUFBTSxRQUFRLE9BQU8sTUFBTSxNQUFNLElBQUk7QUFDdkQsZUFBTztBQUFBLFVBQ0wsS0FBSztBQUFBLFVBQ0wsT0FBTyxPQUFPLFFBQVEsT0FBTyxJQUFJLEVBQUUsTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO0FBQUEsVUFDNUQ7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUNBLFdBQUssZUFBZTtBQUFBLElBQ3RCO0FBQ0EsV0FBTyxLQUFLLGNBQWMsUUFBUSxRQUFRLElBQUk7QUFBQSxFQUNoRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sZ0JBQWdCLFFBQTREO0FBQ2pGLFVBQU0sRUFBRSxRQUFRLEtBQUssSUFBSTtBQUN6QixTQUFLLGVBQWUsT0FBTyxVQUFVO0FBRXJDLFFBQUksQ0FBQyxLQUFLLFFBQVEsWUFBUSw0QkFBYyxJQUFJLEdBQUcsSUFBSSxHQUFHO0FBQ3BELFdBQUssZUFBZTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFNBQUssSUFBSSxVQUFVLGNBQWMsa0JBQWtCLElBQUk7QUFDdkQsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFVVSxjQUFjLFNBQXlCLFNBQWlCLE9BQXNEO0FBQ3RILFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFVTyxTQUFTLHdCQUF3QixRQUE2QztBQUNuRixRQUFNLEVBQUUsS0FBSyxjQUFjLElBQUk7QUFDL0IsUUFBTSxXQUFXLElBQUksVUFBVSxjQUFjO0FBQzdDLFFBQU0sUUFBUSxTQUFTLFFBQVEsYUFBYTtBQUM1QyxNQUFJLFVBQVUsSUFBSTtBQUNoQixVQUFNLElBQUksTUFBTSwyRUFBMkU7QUFBQSxFQUM3RjtBQUNBLFdBQVMsT0FBTyxPQUFPLENBQUM7QUFDeEIsV0FBUyxRQUFRLGFBQWE7QUFDaEM7IiwibmFtZXMiOltdfQ==
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lZGl0b3Itc3VnZ2VzdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogSGVscGVycyBmb3IgYEVkaXRvclN1Z2dlc3RgOiBnaXZpbmcgb25lIHByaW9yaXR5IG92ZXIgdGhlIG90aGVycywgYW5kIG9wZW5pbmcgb25lIGZyb20gYSBjb21tYW5kLlxuICpcbiAqIFJlYWQgZnJvbSBPYnNpZGlhbiBgMS4xNS4wYDogdGhlIGVkaXRvciBhc2tzIGVhY2ggc3VnZ2VzdCBpbiBgYXBwLndvcmtzcGFjZS5lZGl0b3JTdWdnZXN0LnN1Z2dlc3RzYCBpbiBvcmRlciwgYW5kIHRoZVxuICogZmlyc3Qgd2hvc2UgYHRyaWdnZXJgIGFjY2VwdHMgdGhlIGN1cnNvciB3aW5zLCBzbyByZWdpc3RyYXRpb24gb3JkZXIgZGVjaWRlcyB3aGljaCBzdWdnZXN0IG9wZW5zLiBBIHN1Z2dlc3Qgc2hvd3MgaXRzXG4gKiBsaXN0IG9ubHkgd2hlbiB0aGUgdHJpZ2dlciBpcyBleHBsaWNpdCAodGhlIHVzZXIgdHlwZWQpIG9yIGl0IGlzIGFscmVhZHkgb3Blbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRWRpdG9yLFxuICBFZGl0b3JQb3NpdGlvbixcbiAgRWRpdG9yU3VnZ2VzdFRyaWdnZXJJbmZvLFxuICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IEVkaXRvclN1Z2dlc3QgfSBmcm9tICdvYnNpZGlhbic7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1hbmRFZGl0b3JTdWdnZXN0Lm9wZW5Gcm9tQ29tbWFuZH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZEVkaXRvclN1Z2dlc3RPcGVuRnJvbUNvbW1hbmRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGVkaXRvciB0byBvcGVuIHRoZSBzdWdnZXN0IGluLlxuICAgKi9cbiAgcmVhZG9ubHkgZWRpdG9yOiBFZGl0b3I7XG5cbiAgLyoqXG4gICAqIFRoZSBmaWxlIG9wZW4gaW4gdGhlIGVkaXRvci5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGU6IG51bGwgfCBURmlsZTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcHJpb3JpdGl6ZUVkaXRvclN1Z2dlc3R9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByaW9yaXRpemVFZGl0b3JTdWdnZXN0UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHJlZ2lzdGVyZWQgZWRpdG9yIHN1Z2dlc3QuXG4gICAqL1xuICByZWFkb25seSBlZGl0b3JTdWdnZXN0OiBFZGl0b3JTdWdnZXN0PHVua25vd24+O1xufVxuXG4vKipcbiAqIEFuIGVkaXRvciBzdWdnZXN0IHRoYXQgYSBjb21tYW5kIGNhbiBvcGVuIGF0IHRoZSBjdXJzb3IsIHdpdGhvdXQgYSB0cmlnZ2VyIGNoYXJhY3Rlci5cbiAqXG4gKiB7QGxpbmsgQ29tbWFuZEVkaXRvclN1Z2dlc3Qub3BlbkZyb21Db21tYW5kfSBvcGVucyBpdCBhdCB0aGUgY3Vyc29yOyB0aGUgdGV4dCB0eXBlZCBhZnRlciB0aGF0IHBvaW50LCBvbiB0aGUgc2FtZVxuICogbGluZSwgaXMgdGhlIHF1ZXJ5LCBhbmQgbW92aW5nIHRoZSBjdXJzb3IgYmVmb3JlIHRoYXQgcG9pbnQgb3Igb2ZmIHRoZSBsaW5lIGNsb3NlcyBpdC4gQSBzdWJjbGFzcyBtYXkgc3RpbGwgb3BlbiBvblxuICogdHlwZWQgdGV4dCBieSBvdmVycmlkaW5nIHtAbGluayBDb21tYW5kRWRpdG9yU3VnZ2VzdC5vblRleHRUcmlnZ2VyfS5cbiAqXG4gKiBSZWdpc3RlciBpdCBhcyB1c3VhbCwgc28gdGhlIGVkaXRvciBrZWVwcyBpdCB1cGRhdGVkIHdoaWxlIHRoZSB1c2VyIHR5cGVzOlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBzdWdnZXN0ID0gbmV3IEVtb2ppU3VnZ2VzdCh0aGlzLmFwcCk7XG4gKiB0aGlzLnJlZ2lzdGVyRWRpdG9yU3VnZ2VzdChzdWdnZXN0KTtcbiAqIHRoaXMuYWRkQ29tbWFuZCh7XG4gKiAgIGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yLCBjdHgpID0+IHtcbiAqICAgICBzdWdnZXN0Lm9wZW5Gcm9tQ29tbWFuZCh7IGVkaXRvciwgZmlsZTogY3R4LmZpbGUgfSk7XG4gKiAgIH0sXG4gKiAgIGlkOiAnaW5zZXJ0LWVtb2ppJyxcbiAqICAgbmFtZTogJ0luc2VydCBlbW9qaSdcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgYSBzdWdnZXN0aW9uLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29tbWFuZEVkaXRvclN1Z2dlc3Q8VD4gZXh0ZW5kcyBFZGl0b3JTdWdnZXN0PFQ+IHtcbiAgcHJpdmF0ZSBjb21tYW5kU3RhcnQ6IEVkaXRvclBvc2l0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgc3VnZ2VzdCwgZW5kaW5nIGEgY29tbWFuZC1vcGVuZWQgc2Vzc2lvbi5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbW1hbmRTdGFydCA9IG51bGw7XG4gICAgc3VwZXIuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNpZGVzIHdoZXRoZXIgdGhlIHN1Z2dlc3Qgb3BlbnMuIFdoaWxlIGEgY29tbWFuZC1vcGVuZWQgc2Vzc2lvbiBsYXN0cywgdGhlIHF1ZXJ5IGlzIHRoZSB0ZXh0IGZyb20gd2hlcmUgaXQgd2FzXG4gICAqIG9wZW5lZCB0byB0aGUgY3Vyc29yOyBvdGhlcndpc2Uge0BsaW5rIENvbW1hbmRFZGl0b3JTdWdnZXN0Lm9uVGV4dFRyaWdnZXJ9IGRlY2lkZXMuXG4gICAqXG4gICAqIEBwYXJhbSBjdXJzb3IgLSBUaGUgY3Vyc29yLlxuICAgKiBAcGFyYW0gZWRpdG9yIC0gVGhlIGVkaXRvci5cbiAgICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSBvcGVuIGluIHRoZSBlZGl0b3IuXG4gICAqIEByZXR1cm5zIFRoZSB0cmlnZ2VyIGluZm8sIG9yIGBudWxsYCB0byBzdGF5IGNsb3NlZC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBvblRyaWdnZXIoY3Vyc29yOiBFZGl0b3JQb3NpdGlvbiwgZWRpdG9yOiBFZGl0b3IsIGZpbGU6IG51bGwgfCBURmlsZSk6IEVkaXRvclN1Z2dlc3RUcmlnZ2VySW5mbyB8IG51bGwge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5jb21tYW5kU3RhcnQ7XG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICBpZiAoY3Vyc29yLmxpbmUgPT09IHN0YXJ0LmxpbmUgJiYgY3Vyc29yLmNoID49IHN0YXJ0LmNoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW5kOiBjdXJzb3IsXG4gICAgICAgICAgcXVlcnk6IGVkaXRvci5nZXRMaW5lKGN1cnNvci5saW5lKS5zbGljZShzdGFydC5jaCwgY3Vyc29yLmNoKSxcbiAgICAgICAgICBzdGFydFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgdGhpcy5jb21tYW5kU3RhcnQgPSBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vblRleHRUcmlnZ2VyKGN1cnNvciwgZWRpdG9yLCBmaWxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgc3VnZ2VzdCBhdCB0aGUgY3Vyc29yIG9mIGFuIGVkaXRvciwgdHlwaWNhbGx5IGZyb20gYSBjb21tYW5kJ3MgYGVkaXRvckNhbGxiYWNrYC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBzdWdnZXN0IGFjY2VwdGVkIHRoZSBjdXJzb3I6IGBmYWxzZWAgd2hlbiB0ZXh0IGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgcHVibGljIG9wZW5Gcm9tQ29tbWFuZChwYXJhbXM6IENvbW1hbmRFZGl0b3JTdWdnZXN0T3BlbkZyb21Db21tYW5kUGFyYW1zKTogYm9vbGVhbiB7XG4gICAgY29uc3QgeyBlZGl0b3IsIGZpbGUgfSA9IHBhcmFtcztcbiAgICB0aGlzLmNvbW1hbmRTdGFydCA9IGVkaXRvci5nZXRDdXJzb3IoKTtcbiAgICBpZiAoIXRoaXMudHJpZ2dlcihlZGl0b3IsIGZpbGUsIHRydWUpKSB7XG4gICAgICB0aGlzLmNvbW1hbmRTdGFydCA9IG51bGw7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuYXBwLndvcmtzcGFjZS5lZGl0b3JTdWdnZXN0LnNldEN1cnJlbnRTdWdnZXN0KHRoaXMpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY2lkZXMgd2hldGhlciB0aGUgc3VnZ2VzdCBvcGVucyBvbiB0eXBlZCB0ZXh0LCBvdXRzaWRlIGEgY29tbWFuZC1vcGVuZWQgc2Vzc2lvbi4gTmV2ZXIsIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIEBwYXJhbSBfY3Vyc29yIC0gVGhlIGN1cnNvci5cbiAgICogQHBhcmFtIF9lZGl0b3IgLSBUaGUgZWRpdG9yLlxuICAgKiBAcGFyYW0gX2ZpbGUgLSBUaGUgZmlsZSBvcGVuIGluIHRoZSBlZGl0b3IuXG4gICAqIEByZXR1cm5zIFRoZSB0cmlnZ2VyIGluZm8sIG9yIGBudWxsYCB0byBzdGF5IGNsb3NlZC5cbiAgICovXG4gIHByb3RlY3RlZCBvblRleHRUcmlnZ2VyKF9jdXJzb3I6IEVkaXRvclBvc2l0aW9uLCBfZWRpdG9yOiBFZGl0b3IsIF9maWxlOiBudWxsIHwgVEZpbGUpOiBFZGl0b3JTdWdnZXN0VHJpZ2dlckluZm8gfCBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIE1vdmVzIGEgcmVnaXN0ZXJlZCBlZGl0b3Igc3VnZ2VzdCB0byB0aGUgZnJvbnQgb2YgdGhlIGxpc3QgdGhlIGVkaXRvciBhc2tzLCBzbyBpdCBvcGVucyBhaGVhZCBvZiBldmVyeSBvdGhlciBzdWdnZXN0XG4gKiB3aG9zZSB0cmlnZ2VyIGFjY2VwdHMgdGhlIHNhbWUgdGV4dCwgT2JzaWRpYW4ncyBvd24gYFtbYCBhbmQgYCNgIHN1Z2dlc3RzIGluY2x1ZGVkLiBBIHN1Z2dlc3QgcHJpb3JpdGl6ZWQgbGF0ZXIgZ29lc1xuICogYWhlYWQgb2YgaXQgaW4gdHVybi5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAdGhyb3dzIElmIHRoZSBlZGl0b3Igc3VnZ2VzdCBpcyBub3QgcmVnaXN0ZXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByaW9yaXRpemVFZGl0b3JTdWdnZXN0KHBhcmFtczogUHJpb3JpdGl6ZUVkaXRvclN1Z2dlc3RQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3QgeyBhcHAsIGVkaXRvclN1Z2dlc3QgfSA9IHBhcmFtcztcbiAgY29uc3Qgc3VnZ2VzdHMgPSBhcHAud29ya3NwYWNlLmVkaXRvclN1Z2dlc3Quc3VnZ2VzdHM7XG4gIGNvbnN0IGluZGV4ID0gc3VnZ2VzdHMuaW5kZXhPZihlZGl0b3JTdWdnZXN0KTtcbiAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGVkaXRvciBzdWdnZXN0IGlzIG5vdCByZWdpc3RlcmVkLiBSZWdpc3RlciBpdCBiZWZvcmUgcHJpb3JpdGl6aW5nIGl0LicpO1xuICB9XG4gIHN1Z2dlc3RzLnNwbGljZShpbmRleCwgMSk7XG4gIHN1Z2dlc3RzLnVuc2hpZnQoZWRpdG9yU3VnZ2VzdCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtCQSxzQkFBOEI7QUF1RHZCLE1BQWUsNkJBQWdDLDhCQUFpQjtBQUFBLEVBQzdELGVBQXNDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLOUIsUUFBYztBQUM1QixTQUFLLGVBQWU7QUFDcEIsVUFBTSxNQUFNO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBV2dCLFVBQVUsUUFBd0IsUUFBZ0IsTUFBcUQ7QUFDckgsVUFBTSxRQUFRLEtBQUs7QUFDbkIsUUFBSSxPQUFPO0FBQ1QsVUFBSSxPQUFPLFNBQVMsTUFBTSxRQUFRLE9BQU8sTUFBTSxNQUFNLElBQUk7QUFDdkQsZUFBTztBQUFBLFVBQ0wsS0FBSztBQUFBLFVBQ0wsT0FBTyxPQUFPLFFBQVEsT0FBTyxJQUFJLEVBQUUsTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO0FBQUEsVUFDNUQ7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUNBLFdBQUssZUFBZTtBQUFBLElBQ3RCO0FBQ0EsV0FBTyxLQUFLLGNBQWMsUUFBUSxRQUFRLElBQUk7QUFBQSxFQUNoRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sZ0JBQWdCLFFBQTREO0FBQ2pGLFVBQU0sRUFBRSxRQUFRLEtBQUssSUFBSTtBQUN6QixTQUFLLGVBQWUsT0FBTyxVQUFVO0FBQ3JDLFFBQUksQ0FBQyxLQUFLLFFBQVEsUUFBUSxNQUFNLElBQUksR0FBRztBQUNyQyxXQUFLLGVBQWU7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxTQUFLLElBQUksVUFBVSxjQUFjLGtCQUFrQixJQUFJO0FBQ3ZELFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVVUsY0FBYyxTQUF5QixTQUFpQixPQUFzRDtBQUN0SCxXQUFPO0FBQUEsRUFDVDtBQUNGO0FBVU8sU0FBUyx3QkFBd0IsUUFBNkM7QUFDbkYsUUFBTSxFQUFFLEtBQUssY0FBYyxJQUFJO0FBQy9CLFFBQU0sV0FBVyxJQUFJLFVBQVUsY0FBYztBQUM3QyxRQUFNLFFBQVEsU0FBUyxRQUFRLGFBQWE7QUFDNUMsTUFBSSxVQUFVLElBQUk7QUFDaEIsVUFBTSxJQUFJLE1BQU0sMkVBQTJFO0FBQUEsRUFDN0Y7QUFDQSxXQUFTLE9BQU8sT0FBTyxDQUFDO0FBQ3hCLFdBQVMsUUFBUSxhQUFhO0FBQ2hDOyIsIm5hbWVzIjpbXX0=
@@ -0,0 +1,115 @@
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 patchObsidianRequire() {
6
+ const originalRequire = require;
7
+ if (!originalRequire || originalRequire.__isPatched) {
8
+ return;
9
+ }
10
+ require = Object.assign(
11
+ (id) => requirePatched(id),
12
+ originalRequire,
13
+ {
14
+ __isPatched: true
15
+ }
16
+ );
17
+ function extractDefault($module) {
18
+ return $module && $module.__esModule && "default" in $module ? $module.default : $module;
19
+ }
20
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
21
+ "@codemirror/autocomplete",
22
+ "@codemirror/collab",
23
+ "@codemirror/commands",
24
+ "@codemirror/language",
25
+ "@codemirror/lint",
26
+ "@codemirror/search",
27
+ "@codemirror/state",
28
+ "@codemirror/text",
29
+ "@codemirror/view",
30
+ "@lezer/common",
31
+ "@lezer/highlight",
32
+ "@lezer/lr",
33
+ "obsidian"
34
+ ]);
35
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
36
+ "@codemirror/closebrackets",
37
+ "@codemirror/comment",
38
+ "@codemirror/fold",
39
+ "@codemirror/gutter",
40
+ "@codemirror/highlight",
41
+ "@codemirror/history",
42
+ "@codemirror/matchbrackets",
43
+ "@codemirror/panel",
44
+ "@codemirror/rangeset",
45
+ "@codemirror/rectangular-selection",
46
+ "@codemirror/stream-parser",
47
+ "@codemirror/tooltip"
48
+ ]);
49
+ function requirePatched(id) {
50
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
51
+ return originalRequire?.(id);
52
+ }
53
+ const app = globalThis.app;
54
+ if (app?.isMobile) {
55
+ if (id === "process" || id === "node:process") {
56
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
57
+ return process;
58
+ }
59
+ } else {
60
+ const $module = originalRequire?.(id);
61
+ if ($module) {
62
+ return extractDefault($module);
63
+ }
64
+ }
65
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
66
+ return {};
67
+ }
68
+ })();
69
+
70
+ "use strict";
71
+ var __defProp = Object.defineProperty;
72
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
73
+ var __getOwnPropNames = Object.getOwnPropertyNames;
74
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
75
+ var __export = (target, all) => {
76
+ for (var name in all)
77
+ __defProp(target, name, { get: all[name], enumerable: true });
78
+ };
79
+ var __copyProps = (to, from, except, desc) => {
80
+ if (from && typeof from === "object" || typeof from === "function") {
81
+ for (let key of __getOwnPropNames(from))
82
+ if (!__hasOwnProp.call(to, key) && key !== except)
83
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
84
+ }
85
+ return to;
86
+ };
87
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
88
+ var feature_request_exports = {};
89
+ __export(feature_request_exports, {
90
+ FEATURE_REQUEST_ISSUE_FORM_TEMPLATE: () => FEATURE_REQUEST_ISSUE_FORM_TEMPLATE,
91
+ FeatureRequestIssueFormFieldId: () => FeatureRequestIssueFormFieldId,
92
+ getFeatureRequestIssueFormUrl: () => getFeatureRequestIssueFormUrl
93
+ });
94
+ module.exports = __toCommonJS(feature_request_exports);
95
+ var import_bug_report = require('./bug-report.cjs');
96
+ const FEATURE_REQUEST_ISSUE_FORM_TEMPLATE = "feature_request.yml";
97
+ var FeatureRequestIssueFormFieldId = /* @__PURE__ */ ((FeatureRequestIssueFormFieldId2) => {
98
+ FeatureRequestIssueFormFieldId2["PluginVersion"] = "plugin-version";
99
+ return FeatureRequestIssueFormFieldId2;
100
+ })(FeatureRequestIssueFormFieldId || {});
101
+ function getFeatureRequestIssueFormUrl(params) {
102
+ return (0, import_bug_report.getGitHubIssueFormUrl)({
103
+ fields: { ["plugin-version" /* PluginVersion */]: params.app.plugins.manifests[params.pluginId]?.version ?? "unknown" },
104
+ gitHubRepo: params.gitHubRepo,
105
+ template: params.template ?? FEATURE_REQUEST_ISSUE_FORM_TEMPLATE,
106
+ ...params.title !== void 0 && { title: params.title }
107
+ });
108
+ }
109
+ // Annotate the CommonJS export names for ESM import in node:
110
+ 0 && (module.exports = {
111
+ FEATURE_REQUEST_ISSUE_FORM_TEMPLATE,
112
+ FeatureRequestIssueFormFieldId,
113
+ getFeatureRequestIssueFormUrl
114
+ });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mZWF0dXJlLXJlcXVlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIExpbmtzIHRvIGEgcGx1Z2luJ3MgZmVhdHVyZS1yZXF1ZXN0IGlzc3VlIGZvcm0gd2l0aG91dCBjb2xsZWN0aW5nIGEgYnVnLXJlcG9ydCBlbnZpcm9ubWVudC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgZ2V0R2l0SHViSXNzdWVGb3JtVXJsIH0gZnJvbSAnLi9idWctcmVwb3J0LnRzJztcblxuLyoqXG4gKiBUaGUgZmVhdHVyZS1yZXF1ZXN0IGZvcm0ncyBmaWxlIG5hbWUgdW5kZXIgYC5naXRodWIvSVNTVUVfVEVNUExBVEVgLlxuICovXG5leHBvcnQgY29uc3QgRkVBVFVSRV9SRVFVRVNUX0lTU1VFX0ZPUk1fVEVNUExBVEUgPSAnZmVhdHVyZV9yZXF1ZXN0LnltbCc7XG5cbi8qKlxuICogRmllbGQgaWRzIHRoZSBmZWF0dXJlLXJlcXVlc3QgZm9ybSBtdXN0IHVzZSBmb3IgcHJlZmlsbGluZy5cbiAqL1xuZXhwb3J0IGVudW0gRmVhdHVyZVJlcXVlc3RJc3N1ZUZvcm1GaWVsZElkIHtcbiAgLyoqXG4gICAqIFRoZSByZXF1ZXN0aW5nIHBsdWdpbidzIGluc3RhbGxlZCB2ZXJzaW9uLlxuICAgKi9cbiAgUGx1Z2luVmVyc2lvbiA9ICdwbHVnaW4tdmVyc2lvbidcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0RmVhdHVyZVJlcXVlc3RJc3N1ZUZvcm1Vcmx9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEZlYXR1cmVSZXF1ZXN0SXNzdWVGb3JtVXJsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5LCBhcyBgb3duZXIvbmFtZWAuXG4gICAqL1xuICByZWFkb25seSBnaXRIdWJSZXBvOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcmVxdWVzdGluZyBwbHVnaW4ncyBpZC5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZm9ybSdzIGZpbGUgbmFtZSB1bmRlciBgLmdpdGh1Yi9JU1NVRV9URU1QTEFURWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBGRUFUVVJFX1JFUVVFU1RfSVNTVUVfRk9STV9URU1QTEFURX1cbiAgICovXG4gIHJlYWRvbmx5IHRlbXBsYXRlPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGlzc3VlJ3MgdGl0bGUuIE9taXQgdG8ga2VlcCB0aGUgZm9ybSdzIGRlZmF1bHQgdGl0bGUuXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBmZWF0dXJlLXJlcXVlc3QgZm9ybSBVUkwsIHByZWZpbGxpbmcgb25seSB7QGxpbmsgRmVhdHVyZVJlcXVlc3RJc3N1ZUZvcm1GaWVsZElkLlBsdWdpblZlcnNpb259LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIFRoZSBsaW5rLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmVhdHVyZVJlcXVlc3RJc3N1ZUZvcm1VcmwocGFyYW1zOiBHZXRGZWF0dXJlUmVxdWVzdElzc3VlRm9ybVVybFBhcmFtcyk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRHaXRIdWJJc3N1ZUZvcm1Vcmwoe1xuICAgIGZpZWxkczogeyBbRmVhdHVyZVJlcXVlc3RJc3N1ZUZvcm1GaWVsZElkLlBsdWdpblZlcnNpb25dOiBwYXJhbXMuYXBwLnBsdWdpbnMubWFuaWZlc3RzW3BhcmFtcy5wbHVnaW5JZF0/LnZlcnNpb24gPz8gJ3Vua25vd24nIH0sXG4gICAgZ2l0SHViUmVwbzogcGFyYW1zLmdpdEh1YlJlcG8sXG4gICAgdGVtcGxhdGU6IHBhcmFtcy50ZW1wbGF0ZSA/PyBGRUFUVVJFX1JFUVVFU1RfSVNTVUVfRk9STV9URU1QTEFURSxcbiAgICAuLi5wYXJhbXMudGl0bGUgIT09IHVuZGVmaW5lZCAmJiB7IHRpdGxlOiBwYXJhbXMudGl0bGUgfVxuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSx3QkFBc0M7QUFLL0IsTUFBTSxzQ0FBc0M7QUFLNUMsSUFBSyxpQ0FBTCxrQkFBS0Esb0NBQUw7QUFJTCxFQUFBQSxnQ0FBQSxtQkFBZ0I7QUFKTixTQUFBQTtBQUFBLEdBQUE7QUF5Q0wsU0FBUyw4QkFBOEIsUUFBcUQ7QUFDakcsYUFBTyx5Q0FBc0I7QUFBQSxJQUMzQixRQUFRLEVBQUUsQ0FBQyxvQ0FBNEMsR0FBRyxPQUFPLElBQUksUUFBUSxVQUFVLE9BQU8sUUFBUSxHQUFHLFdBQVcsVUFBVTtBQUFBLElBQzlILFlBQVksT0FBTztBQUFBLElBQ25CLFVBQVUsT0FBTyxZQUFZO0FBQUEsSUFDN0IsR0FBRyxPQUFPLFVBQVUsVUFBYSxFQUFFLE9BQU8sT0FBTyxNQUFNO0FBQUEsRUFDekQsQ0FBQztBQUNIOyIsIm5hbWVzIjpbIkZlYXR1cmVSZXF1ZXN0SXNzdWVGb3JtRmllbGRJZCJdfQ==
@@ -0,0 +1,54 @@
1
+ /// <reference path="./library-references.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Links to a plugin's feature-request issue form without collecting a bug-report environment.
6
+ */
7
+ import type { App } from 'obsidian' with { 'resolution-mode': 'import' };
8
+ /**
9
+ * The feature-request form's file name under `.github/ISSUE_TEMPLATE`.
10
+ */
11
+ export declare const FEATURE_REQUEST_ISSUE_FORM_TEMPLATE = "feature_request.yml";
12
+ /**
13
+ * Field ids the feature-request form must use for prefilling.
14
+ */
15
+ export declare enum FeatureRequestIssueFormFieldId {
16
+ /**
17
+ * The requesting plugin's installed version.
18
+ */
19
+ PluginVersion = "plugin-version"
20
+ }
21
+ /**
22
+ * Parameters for {@link getFeatureRequestIssueFormUrl}.
23
+ */
24
+ export interface GetFeatureRequestIssueFormUrlParams {
25
+ /**
26
+ * The Obsidian app instance.
27
+ */
28
+ readonly app: App;
29
+ /**
30
+ * The repository, as `owner/name`.
31
+ */
32
+ readonly gitHubRepo: string;
33
+ /**
34
+ * The requesting plugin's id.
35
+ */
36
+ readonly pluginId: string;
37
+ /**
38
+ * The form's file name under `.github/ISSUE_TEMPLATE`.
39
+ *
40
+ * @default {@link FEATURE_REQUEST_ISSUE_FORM_TEMPLATE}
41
+ */
42
+ readonly template?: string;
43
+ /**
44
+ * The issue's title. Omit to keep the form's default title.
45
+ */
46
+ readonly title?: string;
47
+ }
48
+ /**
49
+ * Gets the feature-request form URL, prefilling only {@link FeatureRequestIssueFormFieldId.PluginVersion}.
50
+ *
51
+ * @param params - The parameters.
52
+ * @returns The link.
53
+ */
54
+ export declare function getFeatureRequestIssueFormUrl(params: GetFeatureRequestIssueFormUrlParams): string;
@@ -91,7 +91,7 @@ __export(generated_during_build_exports, {
91
91
  LIBRARY_VERSION: () => LIBRARY_VERSION
92
92
  });
93
93
  module.exports = __toCommonJS(generated_during_build_exports);
94
- const LIBRARY_VERSION = "10.6.0";
94
+ const LIBRARY_VERSION = "10.8.0";
95
95
  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.foldable-markdown .collapse-indicator {\n cursor: var(--cursor);\n display: inline-flex;\n position: absolute;\n user-select: none;\n}\n.obsidian-lib.foldable-markdown .collapse-indicator .svg-icon {\n vertical-align: middle;\n}\n.obsidian-lib.foldable-markdown .heading-collapse-indicator {\n margin-inline-start: -22px;\n padding: 0 6px;\n}\n.obsidian-lib.foldable-markdown .list-collapse-indicator {\n margin-inline-start: -2.65em;\n padding-inline-end: 2em;\n}\n.obsidian-lib.foldable-markdown li.is-collapsed > ul,\n.obsidian-lib.foldable-markdown li.is-collapsed > ol {\n display: none;\n}\n\n.obsidian-lib.hotkey-component button.is-placeholder {\n color: var(--text-faint);\n}\n.obsidian-lib.hotkey-component button.is-active {\n color: var(--text-accent);\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\n.obsidian-lib.list-component {\n display: flex;\n flex-direction: column;\n gap: var(--size-4-1);\n min-width: 12em;\n}\n.obsidian-lib.list-component .list-component-items {\n display: flex;\n flex-direction: column;\n gap: var(--size-2-1);\n}\n.obsidian-lib.list-component .list-component-item,\n.obsidian-lib.list-component .list-component-new-item {\n align-items: center;\n display: flex;\n gap: var(--size-2-1);\n}\n.obsidian-lib.list-component .list-component-item-text {\n flex-grow: 1;\n overflow-wrap: anywhere;\n}\n.obsidian-lib.list-component .list-component-new-item input {\n flex-grow: 1;\n}\n.obsidian-lib.list-component .list-component-empty {\n color: var(--text-faint);\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):not(.is-active) {\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.settings-tabs .settings-tabs-bar {\n border-bottom: var(--border-width) solid var(--background-modifier-border);\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-2-1);\n margin-bottom: var(--size-4-3);\n}\n.obsidian-lib.settings-tabs .settings-tabs-button {\n align-items: center;\n background: none;\n border-bottom: 2px solid transparent;\n border-radius: 0;\n box-shadow: none;\n color: var(--text-muted);\n display: flex;\n gap: var(--size-2-2);\n}\n.obsidian-lib.settings-tabs .settings-tabs-button.is-active {\n border-bottom-color: var(--interactive-accent);\n color: var(--text-normal);\n}\n.obsidian-lib.settings-tabs .settings-tabs-icon {\n display: flex;\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/foldable-markdown.scss%22,%22../src/styles/hotkey-component.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/list-component.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/settings-tabs.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;;;AClBE;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;;AAGF;AAAA;EAEE;;;AC3BF;EACE;;AAGF;EACE;;;ACNJ;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;;;ACjDJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;AAAA;EAEE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;;AC3BK;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;;AAGA;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAKF;EACE;EACA;;AAIJ;EACE;EACA;;AAGA;EACE;EACA;;;ACrEF;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;;;ACDF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;;;ACdN;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//%20Obsidian%20lays%20its%20collapse%20indicators%20out%20only%20inside%20%60.markdown-preview-view%60%20(and%20the%20list%20one%20inside%5Cn//%20%60.markdown-rendered%60),%20so%20markdown%20rendered%20anywhere%20else%20and%20made%20foldable%20by%20%60registerFoldHandlers%60%5Cn//%20would%20get%20them%20inline,%20pushing%20the%20text%20aside.%20These%20are%20the%20Reading%20view's%20own%20rules,%20read%20from%5Cn//%20Obsidian%201.15.0.%20The%20opacity%20and%20hover%20rules%20are%20global%20in%20Obsidian%20and%20need%20no%20copy.%5Cn.obsidian-lib%20%7B%5Cn%20%20&.foldable-markdown%20%7B%5Cn%20%20%20%20.collapse-indicator%20%7B%5Cn%20%20%20%20%20%20cursor:%20var(--cursor);%5Cn%20%20%20%20%20%20display:%20inline-flex;%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20user-select:%20none;%5Cn%5Cn%20%20%20%20%20%20.svg-icon%20%7B%5Cn%20%20%20%20%20%20%20%20vertical-align:%20middle;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.heading-collapse-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%20-22px;%5Cn%20%20%20%20%20%20padding:%200%206px;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.list-collapse-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%20-2.65em;%5Cn%20%20%20%20%20%20padding-inline-end:%202em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20li.is-collapsed%20%3E%20ul,%5Cn%20%20%20%20li.is-collapsed%20%3E%20ol%20%7B%5Cn%20%20%20%20%20%20display:%20none;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.hotkey-component%20%7B%5Cn%20%20%20%20button.is-placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20button.is-active%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-accent);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%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&.list-component%20%7B%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-direction:%20column;%5Cn%20%20%20%20gap:%20var(--size-4-1);%5Cn%20%20%20%20min-width:%2012em;%5Cn%5Cn%20%20%20%20.list-component-items%20%7B%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20flex-direction:%20column;%5Cn%20%20%20%20%20%20gap:%20var(--size-2-1);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.list-component-item,%5Cn%20%20%20%20.list-component-new-item%20%7B%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20gap:%20var(--size-2-1);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.list-component-item-text%20%7B%5Cn%20%20%20%20%20%20flex-grow:%201;%5Cn%20%20%20%20%20%20overflow-wrap:%20anywhere;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.list-component-new-item%20input%20%7B%5Cn%20%20%20%20%20%20flex-grow:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.list-component-empty%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%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//%20Touch%20can%20leave%20:hover%20latched%20until%20the%20next%20tap.%20Keep%20the%20ON%20fill%20in%20that%20state%20too.%5Cn%20%20%20%20&:hover:not(:disabled):not(.is-active)%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.obsidian-lib%20%7B%5Cn%20%20&.settings-tabs%20%7B%5Cn%20%20%20%20.settings-tabs-bar%20%7B%5Cn%20%20%20%20%20%20border-bottom:%20var(--border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20flex-wrap:%20wrap;%5Cn%20%20%20%20%20%20gap:%20var(--size-2-1);%5Cn%20%20%20%20%20%20margin-bottom:%20var(--size-4-3);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.settings-tabs-button%20%7B%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20background:%20none;%5Cn%20%20%20%20%20%20border-bottom:%202px%20solid%20transparent;%5Cn%20%20%20%20%20%20border-radius:%200;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%20%20%20%20%20%20color:%20var(--text-muted);%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20gap:%20var(--size-2-2);%5Cn%5Cn%20%20%20%20%20%20&.is-active%20%7B%5Cn%20%20%20%20%20%20%20%20border-bottom-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.settings-tabs-icon%20%7B%5Cn%20%20%20%20%20%20display:%20flex;%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";
96
96
  // Annotate the CommonJS export names for ESM import in node:
97
97
  0 && (module.exports = {
@@ -0,0 +1,101 @@
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 patchObsidianRequire() {
6
+ const originalRequire = require;
7
+ if (!originalRequire || originalRequire.__isPatched) {
8
+ return;
9
+ }
10
+ require = Object.assign(
11
+ (id) => requirePatched(id),
12
+ originalRequire,
13
+ {
14
+ __isPatched: true
15
+ }
16
+ );
17
+ function extractDefault($module) {
18
+ return $module && $module.__esModule && "default" in $module ? $module.default : $module;
19
+ }
20
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
21
+ "@codemirror/autocomplete",
22
+ "@codemirror/collab",
23
+ "@codemirror/commands",
24
+ "@codemirror/language",
25
+ "@codemirror/lint",
26
+ "@codemirror/search",
27
+ "@codemirror/state",
28
+ "@codemirror/text",
29
+ "@codemirror/view",
30
+ "@lezer/common",
31
+ "@lezer/highlight",
32
+ "@lezer/lr",
33
+ "obsidian"
34
+ ]);
35
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
36
+ "@codemirror/closebrackets",
37
+ "@codemirror/comment",
38
+ "@codemirror/fold",
39
+ "@codemirror/gutter",
40
+ "@codemirror/highlight",
41
+ "@codemirror/history",
42
+ "@codemirror/matchbrackets",
43
+ "@codemirror/panel",
44
+ "@codemirror/rangeset",
45
+ "@codemirror/rectangular-selection",
46
+ "@codemirror/stream-parser",
47
+ "@codemirror/tooltip"
48
+ ]);
49
+ function requirePatched(id) {
50
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
51
+ return originalRequire?.(id);
52
+ }
53
+ const app = globalThis.app;
54
+ if (app?.isMobile) {
55
+ if (id === "process" || id === "node:process") {
56
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
57
+ return process;
58
+ }
59
+ } else {
60
+ const $module = originalRequire?.(id);
61
+ if ($module) {
62
+ return extractDefault($module);
63
+ }
64
+ }
65
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
66
+ return {};
67
+ }
68
+ })();
69
+
70
+ "use strict";
71
+ var __defProp = Object.defineProperty;
72
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
73
+ var __getOwnPropNames = Object.getOwnPropertyNames;
74
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
75
+ var __export = (target, all) => {
76
+ for (var name in all)
77
+ __defProp(target, name, { get: all[name], enumerable: true });
78
+ };
79
+ var __copyProps = (to, from, except, desc) => {
80
+ if (from && typeof from === "object" || typeof from === "function") {
81
+ for (let key of __getOwnPropNames(from))
82
+ if (!__hasOwnProp.call(to, key) && key !== except)
83
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
84
+ }
85
+ return to;
86
+ };
87
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
88
+ var git_hub_discussion_exports = {};
89
+ __export(git_hub_discussion_exports, {
90
+ getGitHubDiscussionUrl: () => getGitHubDiscussionUrl
91
+ });
92
+ module.exports = __toCommonJS(git_hub_discussion_exports);
93
+ function getGitHubDiscussionUrl(params) {
94
+ const searchParams = new URLSearchParams({ category: params.category ?? "q-a" });
95
+ return `https://github.com/${params.gitHubRepo}/discussions/new?${searchParams.toString()}`;
96
+ }
97
+ // Annotate the CommonJS export names for ESM import in node:
98
+ 0 && (module.exports = {
99
+ getGitHubDiscussionUrl
100
+ });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9naXQtaHViLWRpc2N1c3Npb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIExpbmtzIHRvIEdpdEh1YidzIG5ldy1kaXNjdXNzaW9uIHBhZ2UuXG4gKi9cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0R2l0SHViRGlzY3Vzc2lvblVybH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0R2l0SHViRGlzY3Vzc2lvblVybFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgY2F0ZWdvcnkgc2x1Zywgc3VjaCBhcyBgcS1hYCBvciBgaWRlYXNgLiBUaGUgcmVwb3NpdG9yeSBtdXN0IGhhdmUgdGhpcyBjYXRlZ29yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgYCdxLWEnYFxuICAgKi9cbiAgcmVhZG9ubHkgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcmVwb3NpdG9yeSwgYXMgYG93bmVyL25hbWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0SHViUmVwbzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdldHMgYSBuZXctZGlzY3Vzc2lvbiBVUkwgd2l0aCBhIGNhdGVnb3J5IHNlbGVjdGVkLiBDYWxsZXJzIG11c3QgZW5hYmxlIERpc2N1c3Npb25zIGluIHRoZSByZXBvc2l0b3J5LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIFRoZSBsaW5rLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2l0SHViRGlzY3Vzc2lvblVybChwYXJhbXM6IEdldEdpdEh1YkRpc2N1c3Npb25VcmxQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCBzZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHsgY2F0ZWdvcnk6IHBhcmFtcy5jYXRlZ29yeSA/PyAncS1hJyB9KTtcbiAgcmV0dXJuIGBodHRwczovL2dpdGh1Yi5jb20vJHtwYXJhbXMuZ2l0SHViUmVwb30vZGlzY3Vzc2lvbnMvbmV3PyR7c2VhcmNoUGFyYW1zLnRvU3RyaW5nKCl9YDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTRCTyxTQUFTLHVCQUF1QixRQUE4QztBQUNuRixRQUFNLGVBQWUsSUFBSSxnQkFBZ0IsRUFBRSxVQUFVLE9BQU8sWUFBWSxNQUFNLENBQUM7QUFDL0UsU0FBTyxzQkFBc0IsT0FBTyxVQUFVLG9CQUFvQixhQUFhLFNBQVMsQ0FBQztBQUMzRjsiLCJuYW1lcyI6W119
@@ -0,0 +1,28 @@
1
+ /// <reference path="./library-references.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Links to GitHub's new-discussion page.
6
+ */
7
+ /**
8
+ * Parameters for {@link getGitHubDiscussionUrl}.
9
+ */
10
+ export interface GetGitHubDiscussionUrlParams {
11
+ /**
12
+ * The category slug, such as `q-a` or `ideas`. The repository must have this category.
13
+ *
14
+ * @default `'q-a'`
15
+ */
16
+ readonly category?: string;
17
+ /**
18
+ * The repository, as `owner/name`.
19
+ */
20
+ readonly gitHubRepo: string;
21
+ }
22
+ /**
23
+ * Gets a new-discussion URL with a category selected. Callers must enable Discussions in the repository.
24
+ *
25
+ * @param params - The parameters.
26
+ * @returns The link.
27
+ */
28
+ export declare function getGitHubDiscussionUrl(params: GetGitHubDiscussionUrlParams): string;